*******************************************************************************************************
* Gnration d'un fichier excel pour rcuprer des infos sur les aidants et leurs contrats de travail
* spcif Evreux
* vanessa - mars 2003
*******************************************************************************************************

OPEN "","AIDANTSARCHIVEBULL" TO F.AIDANTSARCHIVEBULL ELSE PRINT "OUVERTURE AIDANTSARCHIVEBULL" ;* en lecture
OPEN "","ARCHIVEBULL" TO F.ARCHIVEBULL ELSE PRINT "OUVERTURE ARCHIVEBULL" ;* en lecture
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE PRINT "OUVERTURE CIVILAIDANT" ;* en lecture
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en lecture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL" ;* en lecture
OPEN "","FORMEXPAIDANT" TO F.FORMEXPAIDANT ELSE PRINT "OUVERTURE FORMEXPAIDANT" ;* en lecture
OPEN "","FUSION" TO F.FUSION ELSE PRINT "OUVERTURE FUSION" ;* en lecture criture

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

*******************************************************************************************************

PRINT "Date de slection des contrats de travail (JJ/MM/AAAA) : "
INPUT W_Date 

0
PRINT "Priode de dbut d'extraction des heures effectues (AAAAMM) : "
INPUT W_PerDeb 
IF W_PerDeb MATCH "6N" ELSE GOSUB 0

1
PRINT "Priode de fin d'extraction des heures effectues (AAAAMM) : "
INPUT W_PerFin 
IF W_PerFin MATCH "6N" ELSE GOSUB 1

   W_Date = ICONV(W_Date,"D4/")
   W_Temp = 'SELECT CONTRAT AVEC 65 # "O" AND AVEC 5 = "H" AND AVEC 6 = "P"'

   W_Temp=W_Temp:' AND AVEC 7 <= "':W_Date:'" AND AVEC 8 >= "':W_Date:'" OR = "" AND AVEC 2 = "001" AND AVEC 1 # "02"'

   W_Temp=W_Temp:' PAR NomPrenomAidantContrat'

   EXECUTE W_Temp

   W_End="FAUX"
   W_Tab=""
   W_Temp=""

   GOSUB 10

   W_Ligne=2

   LOOP
      READNEXT W_Cle ELSE W_End = "VRAI"
   WHILE W_End = "FAUX" DO
      READ ENR_CONTRAT FROM F.CONTRAT,W_Cle ELSE ENR_CONTRAT=""

* infos de l'aidant
      READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_Cle[1,5] ELSE ENR_CIVILAIDANT=""

      W_Age=INT((W_Date-ENR_CIVILAIDANT<26>)/365)

      W_Tab<W_Ligne>=W_Cle[1,5]:";":ENR_CIVILAIDANT<2>:";":ENR_CIVILAIDANT<3>:";":W_Age:";":ENR_CIVILAIDANT<31>:";"

* infos du contrat
      W_PA = 0
      W_Aux = 0
      W_AMF = 0

      W_Count=DCOUNT(ENR_CONTRAT<36>,CHAR(253))
      FOR i=1 TO W_Count
         IF ENR_CONTRAT<36,i>="001001" THEN
            W_PA = 1
         END ELSE
            IF ENR_CONTRAT<36,i>="001005" THEN
               W_Aux = 1
            END ELSE
               IF ENR_CONTRAT<36,i>="001003" THEN
                  W_AMF = 1
               END 
            END
         END
      NEXT i
      W_Tab<W_Ligne>=W_Tab<W_Ligne>:W_PA:";":W_Aux:";":W_AMF:";"
      W_Tab<W_Ligne>=W_Tab<W_Ligne>:OCONV(ENR_CONTRAT<7>,"D4/"):";"
      IF ENR_CONTRAT<4>="D" THEN
         W_Tab<W_Ligne>=W_Tab<W_Ligne>:"1;0;"
      END ELSE
         W_Tab<W_Ligne>=W_Tab<W_Ligne>:"0;1;"
      END
      
* infos de l'avenant
      W_Count=DCOUNT(ENR_CONTRAT<14>,CHAR(253))
      W_Anc=INT((W_Date-ENR_CONTRAT<21,W_Count>+(ENR_CONTRAT<70>/100))/365)
      W_Tab<W_Ligne>=W_Tab<W_Ligne>:W_Anc:";":ENR_CONTRAT<22,W_Count>/1000:";"
      BEGIN CASE
         CASE ENR_CONTRAT<25,W_Count> = "1"
            W_Tab<W_Ligne>=W_Tab<W_Ligne>:INT((ENR_CONTRAT<24,W_Count>*52/12)/100 + (1/2)):";"
      	 CASE ENR_CONTRAT<25,W_Count> = "2"
            W_Tab<W_Ligne>=W_Tab<W_Ligne>:INT((ENR_CONTRAT<24,W_Count>*26/12)/100 + (1/2)):";"
    	 CASE ENR_CONTRAT<25,W_Count> = "3"
            W_Tab<W_Ligne>=W_Tab<W_Ligne>:INT(ENR_CONTRAT<24,W_Count>/100 + (1/2)):";"
       	 CASE ENR_CONTRAT<25,W_Count> = "4"
            W_Tab<W_Ligne>=W_Tab<W_Ligne>:INT((ENR_CONTRAT<24,W_Count>/12)/100 + (1/2)):";"
      END CASE         

* total heures
      W_TabTemp=""
      W_Ind=1
      W_NbKm029 = 0
      W_NbKm038 = 0
      W_NbKm067 = 0
      W_MontKm029 = 0
      W_MontKm038 = 0
      W_MontKm067 = 0

      FOR i=W_PerDeb TO W_PerFin
         IF i[5,2]="13" THEN
            i=i[1,4]+1:"01"
         END

         W_TabTemp<W_Ind,1>=i
         W_TabTemp<W_Ind,2>=0
         W_TabTemp<W_Ind,3>=0

         READ ENR_AIDANTSARCHIVEBULL FROM F.AIDANTSARCHIVEBULL,W_Cle[1,5]:i[1,4] ELSE ENR_AIDANTSARCHIVEBULL=""
         W_Att=i[5,2]
         W_Count=DCOUNT(ENR_AIDANTSARCHIVEBULL<W_Att>,CHAR(253))

         W_NbKm029 = 0
         W_NbKm038 = 0
         W_NbKm067 = 0
         W_MontKm029 = 0
         W_MontKm038 = 0
         W_MontKm067 = 0

         FOR j = 1 TO W_Count

            READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,ENR_AIDANTSARCHIVEBULL<W_Att,j>[1,14] ELSE ENR_DETAILCALCUL=""
            IF LEN(ENR_AIDANTSARCHIVEBULL<W_Att,j>)=17 THEN
               W_TabTemp<W_Ind,2>=W_TabTemp<W_Ind,2>+ENR_DETAILCALCUL<6>
            END ELSE
               W_TabTemp<W_Ind,3>=W_TabTemp<W_Ind,3>+ENR_DETAILCALCUL<6>
            END

	    W_CountSaisie=DCOUNT(ENR_DETAILCALCUL<17>,CHAR(253))
	    * cumule rub saisie kilometre
	    FOR k = 1 TO W_CountSaisie
		IF ENR_DETAILCALCUL<17,k> = "029" THEN
			W_NbKm029 = W_NbKm029 + ENR_DETAILCALCUL<18,k>
			W_MontKm029 = W_MontKm029 + ENR_DETAILCALCUL<20,k>
		END
		IF ENR_DETAILCALCUL<17,k> = "038" THEN
			W_NbKm038 = W_NbKm038 + ENR_DETAILCALCUL<18,k>
			W_MontKm038 = W_MontKm038 + ENR_DETAILCALCUL<20,k>
		END
		IF ENR_DETAILCALCUL<17,k> = "067" THEN
			W_NbKm067 = W_NbKm067 + ENR_DETAILCALCUL<18,k>
			W_MontKm067 = W_MontKm067 + ENR_DETAILCALCUL<20,k>
		END
	    NEXT k

         NEXT j

	   W_TabTemp<W_Ind,4> = W_NbKm029
	   W_TabTemp<W_Ind,5> = W_MontKm029
	   W_TabTemp<W_Ind,6> = W_NbKm038
	   W_TabTemp<W_Ind,7> = W_MontKm038
	   W_TabTemp<W_Ind,8> = W_NbKm067
	   W_TabTemp<W_Ind,9> = W_MontKm067
		
         W_Ind=W_Ind+1
      NEXT i

      W_Count=DCOUNT(W_TabTemp,CHAR(254))
      FOR i = 1 TO W_Count
         W_Tab<W_Ligne>=W_Tab<W_Ligne>:W_TabTemp<i,2>/100:";"
      NEXT i
      FOR i = 1 TO W_Count
         W_Tab<W_Ligne>=W_Tab<W_Ligne>:W_TabTemp<i,3>/100:";"
      NEXT i
      FOR i = 1 TO W_Count
      	W_Tab<W_Ligne>=W_Tab<W_Ligne>:W_TabTemp<i,4>/100:";":W_TabTemp<i,5>/100:";":W_TabTemp<i,6>/100:";":W_TabTemp<i,7>/100:";":W_TabTemp<i,8>/100:";":W_TabTemp<i,9>/100:";"
      NEXT i
	
* formations
      READ ENR_FORMEXPAIDANT FROM F.FORMEXPAIDANT,W_Cle[1,5] ELSE ENR_FORMEXPAIDANT=""

      W_Count=DCOUNT(ENR_FORMEXPAIDANT<6>,CHAR(253))
      IF W_Count > 10 THEN
         W_Count=10
      END
      FOR i = 1 TO W_Count
         W_Tab<W_Ligne>=W_Tab<W_Ligne>:ENR_FORMEXPAIDANT<6,i>:";"
      NEXT i   

      W_Ligne=W_Ligne+1

   REPEAT

   WRITE W_Tab ON F.FUSION,"AIDANTSEVREUX.csv"

STOP

*******************************************************************************************************
* ECRIT ENTETE DU TABLEAU
10

   W_Tab<1>="Code;Nom;Prenom;Age au ":OCONV(W_Date,"D4/"):";Secteur;Prestataire PA;Aux. de vie;Prestataire AMF;Date dbut contrat;"
   W_Tab<1>=W_Tab<1>:"CDD;CDI;Annes d'anciennet au ":OCONV(W_Date,"D4/"):";Coefficient;Horaire du travail mensuel;"

   FOR i=W_PerDeb TO W_PerFin
      IF i[5,2]="13" THEN
         i=i[1,4]+1:"01"
      END
      GOSUB 20
      W_Tab<1>=W_Tab<1>:"Heures brutes ":W_Temp:" Prest.;"
   NEXT i

   FOR i=W_PerDeb TO W_PerFin
      IF i[5,2]="13" THEN
         i=i[1,4]+1:"01"
      END
      GOSUB 20
      W_Tab<1>=W_Tab<1>:"Heures brutes ":W_Temp:" Mandat.;"
   NEXT i

   FOR i=W_PerDeb TO W_PerFin
      IF i[5,2]="13" THEN
         i=i[1,4]+1:"01"
      END
      GOSUB 20
      W_Tab<1>=W_Tab<1>:"NbKms029 ":W_Temp:";MontKm029 ":W_Temp:";NbKms038 ":W_Temp:";MontKm038 ":W_Temp:";NbKms067 ":W_Temp:";MontKm067 ":W_Temp:";"
   NEXT i

   FOR i = 1 TO 10
      W_Tab<1>=W_Tab<1>:"Code formation ":i:";"      
   NEXT i


RETURN

*******************************************************************************************************
* mois en lettre
20

   BEGIN CASE 
      CASE i[5,2] = "01"
         W_Temp = "janv. ":i[1,4]
      CASE i[5,2] = "02"
         W_Temp = "fv. ":i[1,4]
      CASE i[5,2] = "03"
         W_Temp = "mars ":i[1,4]
      CASE i[5,2] = "04"
	 W_Temp = "avril ":i[1,4]
      CASE i[5,2] = "05"
         W_Temp = "mai ":i[1,4]
      CASE i[5,2] = "06"
         W_Temp = "juin ":i[1,4]
      CASE i[5,2] = "07"
         W_Temp = "juil. ":i[1,4]
      CASE i[5,2] = "08"
         W_Temp = "aot ":i[1,4]
      CASE i[5,2] = "09"
         W_Temp = "sept. ":i[1,4]
      CASE i[5,2] = "10"
         W_Temp = "oct. ":i[1,4]
      CASE i[5,2] = "11"
         W_Temp = "nov. ":i[1,4]
      CASE i[5,2] = "12"
         W_Temp = "dc. ":i[1,4]
   END CASE

RETURN