***********************************************************************************
***********************************************************************************
**                                                                               **
** Gestion de l'impression du tableau des effectifs pour les statistiques SSIAD  **
**                                                                               **
**                                                                               **
**                                                                               **
**                                                                               **
**                                                                               **
** Le 27/05/04                                                  ves+           **
**                                                                               **
***********************************************************************************
***********************************************************************************



***********************************************************************************
**                                                                               **
**                       Ouverture des fichiers                                  **
**                                                                               **
***********************************************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

OPEN "", "SSIADREGIME" TO F.SSIADREGIME ELSE STOP
OPEN "", "SSIADELEMGEST" TO F.SSIADELEMGEST ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "TEMPO" TO F.TEMPO ELSE STOP
OPEN "", "SSIADACCORDS" TO F.SSIADACCORDS ELSE STOP
OPEN "", "STATAIDE" TO F.STATAIDE ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "", "RESPONSABLE" TO F.RESPONSABLE ELSE STOP

***********************************************************************************
**                                                                               **
**                      Rcupration des arguments                               **
**                                                                               **
***********************************************************************************
PROCREAD PARAMETERS ELSE STOP

! le nom de l'utilisateur
W_User = FIELD(PARAMETERS,"|",2)

! le numro de l'association
W_Ent = FIELD(PARAMETERS,"|",3)

! le numro de l'activit
W_Choix = FIELD(PARAMETERS,"|",4)

! le numro de l'activit
W_Act = FIELD(PARAMETERS,"|",5)

! le type de slection (Responsable, Secteur ou Commune)
W_Type = FIELD(PARAMETERS,"|",6)

! le code de cette slection (ou le libel pour la commune)
W_Code = FIELD(PARAMETERS,"|",7)

! le dbut de la priode de rfrence
W_Debut = FIELD(PARAMETERS,"|",8)

! la fin   de la priode de rfrence
W_Fin = FIELD(PARAMETERS,"|",9)

! le type de dcompte (soit Effectif soit  la journe)
W_Compt = FIELD(PARAMETERS,"|",10)

! le type d'dition (dans un fichier ou sur l'imprimante)
W_Edit = FIELD(PARAMETERS,"|",11)


! Chargement des rgimes
READ ENR_REGIME FROM F.SSIADREGIME,"1" ELSE STOP

! La requte dynamique cre
W_Requete=""


W_Requete = 'SELECT SSIADACCORDS AVEC 3 ="' : W_Ent : ']" AND AVEC 1 <= "':W_Fin:'" AND AVEC 2 >= "':W_Debut:'"'

IF W_Act # "" THEN
	IF W_Choix="A" THEN
   		W_Requete = W_Requete : ' AND AVEC 3 = "' : W_Ent : W_Act : '"'
	END ELSE
		IF W_Choix="S" THEN
   			W_Requete = W_Requete : ' AND AVEC CodeService = "' : W_Act : '"'
		END
	END
END


***********************************************************************************
**                                                                               **
**                     Voici le format envoy par VB                             **
**                                                                               **
**               SSIADEFFECTIF |YVES|001|R||T||12452|12452|J|S                   **
**                                                                               **
***********************************************************************************

IF W_Type = "R" THEN
   IF W_Code # "" THEN

      W_Requete = W_Requete : ' AND AVEC CodeResponsable ="' : W_Code : '"'
   END ELSE

      W_Requete = W_Requete : ' PAR LibResponsable'
   END
END

IF W_Type = "S" THEN
   IF W_Code # "" THEN

      W_Requete = W_Requete : ' AND AVEC CodeSecteur ="' : W_Code : '"'
   END ELSE

      W_Requete = W_Requete : ' PAR LibSecteur'
   END
END

IF W_Type = "C" THEN
   IF W_Code # "" THEN

      W_Requete = W_Requete : ' AND AVEC Commune ="' : W_Code : '"'
   END ELSE

      W_Requete = W_Requete : ' PAR Commune'
   END

END

IF W_Compt # "A" THEN
   W_Requete = W_Requete : ' PAR CodeAide PAR 1'
END ELSE
   W_Requete = W_Requete : ' PAR NomPrenomAide PAR CodeAide PAR 1'
END 


EXECUTE W_Requete
W_Fini = "Faux"


W_AncienRSC=""
W_NouveauRSC="T"
W_Indice = 0
W_TableauGeneral = ""
W_DernierAide = 0


***********************
IF W_Compt # "A" THEN
***********************
* si on est en comptage par effectifs ou journes par regime
nbr_Jours=0
LOOP

   READNEXT W_Clef ELSE W_Fini = "Vrai"

WHILE W_Fini = "Faux"

   ! ENR_DYNA<1> = Date de debut de l'accord
   ! ENR_DYNA<2> = Date de fin   de l'accord

   READ ENR_DYNA FROM F.SSIADACCORDS,W_Clef THEN

   ENR_DYNA<4>=W_Compt
   ENR_DYNA<3>=W_Fin
   ENR_DYNA<2>=W_Debut
   ENR_DYNA<1>=W_Clef
         
   ENR_DYNA<5>=W_Choix
   IF W_Choix = "A" THEN
    	ENR_DYNA<6>=W_Ent:W_Act
   END ELSE
	ENR_DYNA<6>=W_Act
   END


   IF W_Clef[1,5] = W_DernierAide AND W_Compt = "E" AND nbr_Jours#0 THEN
      
	! il s'agit du dcompte des effectifs on ne fait donc rien

   END ELSE

      W_DernierAide = W_Clef[1,5]
      nbr_Jours=0
      ! Appel de la fonction de calcul du nombre de jour ou de la prsence (E pour Effectif & J pour journe)
      CALL SSIADPERIODEACTIVE ("",ENR_DYNA,nbr_Jours)

      IF nbr_Jours # 0 THEN

         READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Clef[1,5] THEN

         READ ENR_ELEMGEST FROM F.SSIADELEMGEST,W_Clef[1,5] THEN

            W_AncienLibelle = W_Libelle
            W_Libelle = ""

            IF W_Type = "R" THEN
               W_NouveauRSC  = ENR_CIVILAIDE<39>

               READ ENR_RESPONSABLE FROM F.RESPONSABLE,W_NouveauRSC ELSE ENR_RESPONSABLE = ""
               ! voila
               W_Libelle = ENR_RESPONSABLE<1>
               
            END

            IF W_Type = "S" THEN
               W_NouveauRSC = ENR_CIVILAIDE<40>[1,3]

               READ ENR_SECTEUR FROM F.SECTEUR,W_NouveauRSC ELSE ENR_SECTEUR = ""
               ! voili
               W_Libelle = ENR_SECTEUR<1>
               
            END

            IF W_Type = "C" THEN
               W_NouveauRSC = ENR_CIVILAIDE<11>
               W_Libelle = W_NouveauRSC
            END


            ! S'agit il d'un nouveau responsable, secteur, commune ?
            IF W_NouveauRSC # W_AncienRSC THEN

               ! si oui, est-ce notre premier passage ?
               IF W_AncienRSC # "" THEN   
   
                  i = 0
                  LOOP
                     i = i + 1
                  ! on parcourt tous les rgimes
                  WHILE i <= DCOUNT(ENR_REGIME<1>,CHAR(253))

                     j = 0
                     LOOP
                        j = j + 1
                  
                     WHILE j <= DCOUNT(ENR_REGIME<3,i>,CHAR(252))

                     IF W_Edit = "S" THEN

                        W_Indice = W_Indice + 1
                        W_TableauGeneral<W_Indice,1> = ENR_REGIME<1,i> : ENR_REGIME<2,i>
                        W_TableauGeneral<W_Indice,2> = ENR_REGIME<4,i,j>
   
                        IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1> # "" OR W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2> # "" THEN
                           
	 			IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>="" THEN
		  			W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>=0
	 			END
	 			IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>="" THEN
					W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>=0
				 END

                           W_TableauGeneral<W_Indice,3> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>
                           W_TableauGeneral<W_Indice,4> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>
                           W_TableauGeneral<W_Indice,5> = W_TableauGeneral<W_Indice,3> + W_TableauGeneral<W_Indice,4>
 
                        END ELSE
  
                           W_TableauGeneral<W_Indice,3> = 0
                           W_TableauGeneral<W_Indice,4> = 0
                           W_TableauGeneral<W_Indice,5> = 0
                        END

                     END ELSE


                        W_Indice = W_Indice + 1
                        W_TableauGeneral<W_Indice,1> = W_AncienLibelle
                        W_TableauGeneral<W_Indice,2> = ENR_REGIME<1,i> : ENR_REGIME<2,i>
                        W_TableauGeneral<W_Indice,3> = ENR_REGIME<4,i,j>
   
                        IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1> # "" OR W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2> # "" THEN
                           
			 	IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>="" THEN
					W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>=0
	 			END
	 			IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>="" THEN
					W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>=0
	 			END

                           W_TableauGeneral<W_Indice,4> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>
                           W_TableauGeneral<W_Indice,5> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>
 
                        END ELSE
  
                           W_TableauGeneral<W_Indice,4> = 0
                           W_TableauGeneral<W_Indice,5> = 0
                        END

                     END
                        
                     REPEAT
                  REPEAT
               END ELSE


                  IF W_Edit = "F" THEN
   
                     W_Indice = W_Indice + 1

                     IF W_Type = "S" THEN
                        W_TableauGeneral<W_Indice,1> = "Secteur"
                     END ELSE

                        IF W_Type = "R" THEN
                           W_TableauGeneral<W_Indice,1> = "Responsable"
                        END ELSE

                           IF W_Type = "C" THEN
                              W_TableauGeneral<W_Indice,1> = "Commune"
                           END ELSE

                              W_TableauGeneral<W_Indice,1> = "Totalit"
                           END

                        END

                     END                           

                     W_TableauGeneral<W_Indice,2> = "Rgime"
                     W_TableauGeneral<W_Indice,3> = "Sous rgime"
                     W_TableauGeneral<W_Indice,4> = "- 60 ans"
                     W_TableauGeneral<W_Indice,5> = "+ 60 ans"

                  END


               END
            
               ! on envoi le nom du secteur  VB

               IF W_Edit = "S" THEN

                  W_Indice = W_Indice + 1
                  W_TableauGeneral<W_Indice,1> = "#" : W_Libelle

               END

               ! On initialise le tableau effetif journee
               W_TableauEJ = ""

               ! il s'agit du code de Responsable, Secteur ou de libell de CCommune
               W_AncienRSC = W_NouveauRSC

            END

            !Dans tous les cas, pour le rgime en cours, qu'il soit nouveau ou pas, on s'intresse  cet accord
   
            ! premirement l'aid  t'il PLUS ou MOINS de 60 ans ?
            W_Age= (OCONV(W_Fin,"D4/"))[7,4]-(OCONV(ENR_CIVILAIDE<20>,"D4/"))[7,4]

            W_Datemp = ICONV((OCONV(W_Fin,"D4/"))[1,6] : (OCONV(ENR_CIVILAIDE<20>,"D4/"))[7,4],"D4/")
            ! l'aid  t'il ft son anniversaire pour l'anne en cours ?
            IF ENR_CIVILAIDE<20> > W_Datemp THEN
               
               ! Si ce n'est pas le cas on lui soustrait une anne
               W_Age = W_Age - 1
            END

            ! Deuximement; quel sont son rgime et son sous rgime ?
            ! Sachant que la valeur des cases du tableau sont toujours initialise  ZRO

            ! on comptabilise l'aid pour son age au jour de fin de la priode choisie
            IF W_Age < 60 THEN
            
               W_TableauEJ<ENR_ELEMGEST<1>,ENR_ELEMGEST<2>,1> = W_TableauEJ<ENR_ELEMGEST<1>,ENR_ELEMGEST<2>,1> + nbr_Jours
            END ELSE

            W_TableauEJ<ENR_ELEMGEST<1>,ENR_ELEMGEST<2>,2> = W_TableauEJ<ENR_ELEMGEST<1>,ENR_ELEMGEST<2>,2> + nbr_Jours

        END
       END
      END
     END
    END
   END

REPEAT

! on enregistre le dernier rgime ainsi que ses sous rgimes
i = 0
LOOP
   i = i + 1
   ! on parcourt tous les rgimes
   WHILE i <= DCOUNT(ENR_REGIME<1>,CHAR(253))

   j = 0
   LOOP
      j = j + 1
                
   WHILE j <= DCOUNT(ENR_REGIME<3,i>,CHAR(252))
   
   IF W_Edit = "S" THEN

      W_Indice = W_Indice + 1
      W_TableauGeneral<W_Indice,1> = ENR_REGIME<1,i> : ENR_REGIME<2,i>
      W_TableauGeneral<W_Indice,2> = ENR_REGIME<4,i,j>
   
      IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1> # "" OR W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2> # "" THEN
                           
	 IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>="" THEN
		  W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>=0
	 END
	 IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>="" THEN
		W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>=0
	 END

         W_TableauGeneral<W_Indice,3> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>
         W_TableauGeneral<W_Indice,4> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>
         W_TableauGeneral<W_Indice,5> = W_TableauGeneral<W_Indice,3> + W_TableauGeneral<W_Indice,4>
 
      END ELSE
  
         W_TableauGeneral<W_Indice,3> = 0
         W_TableauGeneral<W_Indice,4> = 0
         W_TableauGeneral<W_Indice,5> = 0
      END

   END ELSE


      W_Indice = W_Indice + 1
      W_TableauGeneral<W_Indice,1> = W_Libelle
      W_TableauGeneral<W_Indice,2> = ENR_REGIME<1,i> : ENR_REGIME<2,i>
      W_TableauGeneral<W_Indice,3> = ENR_REGIME<4,i,j>
   
      IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1> # "" OR W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2> # "" THEN
                          
	 IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>="" THEN
		  W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>=0
	 END
	 IF W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>="" THEN
		W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>=0
	 END

         W_TableauGeneral<W_Indice,4> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,1>
         W_TableauGeneral<W_Indice,5> = W_TableauEJ<ENR_REGIME<1,i>,ENR_REGIME<3,i,j>,2>
 
      END ELSE
  
         W_TableauGeneral<W_Indice,4> = 0
         W_TableauGeneral<W_Indice,5> = 0
      END

  END
 REPEAT
REPEAT


! renvoi des informations  VB
! on dition d'un fichier cls

IF W_Edit = "S" THEN

   WRITE W_TableauGeneral ON F.TEMPO,"SSIADEFFECTIF" : W_User

END ELSE

   CONVERT "" TO ";" IN W_TableauGeneral

   W_Ordre = 1
   W_Date = OCONV(DATE(),"D4/")
   W_Date = ICONV(W_Date,"MCN")
   W_Date=W_Date[5,4]:W_Date[3,2]:W_Date[1,2]

   W_ClefFichier = "SSIADEFFECTIF" : "-" : W_Ent : "-" : W_Date : "-"

   READ ENR_STATAIDE FROM F.STATAIDE,W_ClefFichier : W_Ordre : ".csv" ELSE ENR_STATAIDE = ""

   LOOP

      W_Ordre = W_Ordre + 1

   UNTIL ENR_STATAIDE = ""
      
      READ ENR_STATAIDE FROM F.STATAIDE,W_ClefFichier : W_Ordre : ".csv" ELSE ENR_STATAIDE = ""

   REPEAT

   W_Ordre = W_Ordre - 1

   WRITE W_TableauGeneral TO F.STATAIDE,W_ClefFichier : W_Ordre : ".csv"

   WRITE W_ClefFichier : W_Ordre : ".csv" ON F.TEMPO,"SSIADEFFECTIF" : W_User

END


***********
***********
END ELSE
***********
***********

*Variables
W_TableauAide = ""
W_DernierAide = ""


   BEGIN CASE
	CASE W_Type  ="R"
	   W_TableauAide = "Responsable"
      CASE W_Type ="S"
	   W_TableauAide = "Secteur"
      CASE W_Type ="C"
	   W_TableauAide = "Commune"
      CASE 1
	   W_TableauAide = "Totalit"
   END CASE

   W_TableauAide = W_TableauAide:";Code aid;Nom Prnom;Nombre journes;G.M.P."

   W_NbAide = 1

LOOP

   READNEXT W_Clef ELSE W_Fini = "Vrai"

WHILE W_Fini = "Faux"


   ! ENR_DYNA<1> = Date de debut de l'accord
   ! ENR_DYNA<2> = Date de fin   de l'accord

   READ ENR_DYNA FROM F.SSIADACCORDS,W_Clef THEN

      ENR_DYNA<4>="JA"
      ENR_DYNA<3>=W_Fin
      ENR_DYNA<2>=W_Debut
      ENR_DYNA<1>=W_Clef
         
      ENR_DYNA<5>=W_Choix
      IF W_Choix = "A" THEN
    	   ENR_DYNA<6>=W_Ent:W_Act
      END ELSE
	   ENR_DYNA<6>=W_Act
      END
   

      ! Appel de la fonction de calcul du nombre de jour ou de la prsence (E pour Effectif & J pour journe)
      CALL SSIADPERIODEACTIVE ("",ENR_DYNA,nbr_Jours)

      W_Temp = INDEX(nbr_Jours,";",1)
      W_Len=LEN(nbr_Jours)

      W_CumulPt=nbr_Jours[W_Temp+1,W_Len-W_Temp]
      nbr_Jours=nbr_Jours[1,W_Temp-1]

      IF nbr_Jours # 0 THEN

         READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Clef[1,5] THEN

            W_Libelle = ""

            IF W_Type = "R" THEN
               READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE = ""
               W_Libelle = ENR_RESPONSABLE<1>
            END

            IF W_Type = "S" THEN
               READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEUR = ""
               W_Libelle = ENR_SECTEUR<1>           
            END

            IF W_Type = "C" THEN
               W_Libelle = ENR_CIVILAIDE<11>
            END

		IF W_Clef[1,5] # W_TableauAide<W_NbAide,2> THEN

		   IF W_NbAide # 1 THEN
			W_GMP=INT((W_TableauAide<W_NbAide,5>/W_TableauAide<W_NbAide,4>)+(1/2))
		    	W_TableauAide<W_NbAide,6> = W_GMP
		   END
		   W_NbAide = W_NbAide + 1
		   W_TableauAide<W_NbAide,1> = W_Libelle
		   W_TableauAide<W_NbAide,2> = W_Clef[1,5] 
		   W_TableauAide<W_NbAide,3> = ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
		   W_TableauAide<W_NbAide,4> = nbr_Jours 
		   W_TableauAide<W_NbAide,5> = W_CumulPt
		END ELSE
		   W_TableauAide<W_NbAide,4> = W_TableauAide<W_NbAide,4> + nbr_Jours
		   W_TableauAide<W_NbAide,5> = W_TableauAide<W_NbAide,5> + W_CumulPt
		END

         END
      END
   END
   W_DernierAide = W_Clef[1,5]
REPEAT

W_GMP=INT((W_TableauAide<W_NbAide,5>/W_TableauAide<W_NbAide,4>)+(1/2))
W_TableauAide<W_NbAide,6> = W_GMP

! renvoi des informations  VB
! on dition d'un fichier cls

IF W_Edit = "S" THEN

   WRITE W_TableauAide ON F.TEMPO,"SSIADEFFECTIF" : W_User

END ELSE

   W_Count=DCOUNT(W_TableauAide,CHAR(254))
   FOR i = 1 TO W_Count
	W_TableauAide=DELETE(W_TableauAide,i,5)
   NEXT i

   CONVERT CHAR(253) TO ";" IN W_TableauAide

   W_Ordre = 1
   W_Date = OCONV(DATE(),"D4/")
   W_Date = ICONV(W_Date,"MCN")
   W_Date=W_Date[5,4]:W_Date[3,2]:W_Date[1,2]

   W_ClefFichier = "SSIADEFFECTIF" : "-" : W_Ent : "-" : W_Date : "-"

   READ ENR_STATAIDE FROM F.STATAIDE,W_ClefFichier : W_Ordre : ".csv" ELSE ENR_STATAIDE = ""

   LOOP

      W_Ordre = W_Ordre + 1

   UNTIL ENR_STATAIDE = ""

      READ ENR_STATAIDE FROM F.STATAIDE,W_ClefFichier : W_Ordre : ".csv" ELSE ENR_STATAIDE = ""

   REPEAT

   W_Ordre = W_Ordre - 1

   WRITE W_TableauAide TO F.STATAIDE,W_ClefFichier : W_Ordre : ".csv"

   WRITE W_ClefFichier : W_Ordre : ".csv" ON F.TEMPO,"SSIADEFFECTIF" : W_User

END

******
END
******
STOP
