*****************************
*			    *
* GENERATION DES DROITS DIF *
* 			    *
* VANESSA	MAI 2005    *
*****************************

* OUVERTURE DES FICHIERS

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","DIFAIDANT" TO F.DIFAIDANT ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP

***********************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Periode=FIELD(ARGUMENTS," ",2)
W_Assoc=FIELD(ARGUMENTS," ",3)
W_Activite=FIELD(ARGUMENTS," ",4)
***********************************
W_CCN=""
iCCN=1
LISTECCN=""
LISTECONTRAT=""
LISTEABS=""
LISTEABSEN=""
LISTECONT=""
W_NbJourAbs=0
***********************************
* SELECTION DES CONVENTIONS COLLECTIVES

	W_Selection = 'SSELECT CONVENTIONCOL AVEC 41 # ""'

	EXECUTE W_Selection
	EXECUTE "SAUVE-LISTE LISTECCN"
	EXECUTE "LISTE LISTECCN" CAPTURING MSG RETURNING MSGCODE

	IF MSGCODE<1>=209 THEN
 		STOP
	END ELSE
		SELECT F.CONVENTIONCOL TO LISTECCN

		W_FINCCN="FAUX"
		LOOP 
     			READNEXT CLE FROM LISTECCN ELSE W_FINCCN="VRAI"
     		UNTIL W_FINCCN="VRAI" DO

     			READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,CLE THEN
				W_CCN<iCCN,1>=CLE
				W_CCN<iCCN,2>=ENR_CONVENTIONCOL<41>

				* modification du DA 5138-01
				* prendre en compte la maladie comme du travail effectif
				* le dossier dit "mettre 9999 dans la variable W_CCN"

				W_CCN<iCCN,3>="9999"
				* W_CCN<iCCN,3>=ENR_CONVENTIONCOL<17>

				W_CCN<iCCN,4>=ENR_CONVENTIONCOL<39>
				W_CCN<iCCN,5>=ENR_CONVENTIONCOL<40>
				iCCN=iCCN+1
			END
		REPEAT
	END

* SELECTION DES CONTRATS

	W_MoisSuiv=W_Periode[5,2]+1
	W_AnSuiv=W_Periode[1,4]
	IF W_MoisSuiv="13" THEN
		W_MoisSuiv="01"
		W_AnSuiv=W_AnSuiv+1
	END
	IF LEN(W_MoisSuiv)=1 THEN
		W_MoisSuiv="0":W_MoisSuiv
	END
	W_DateSuiv=ICONV("01/":W_MoisSuiv:"/":W_AnSuiv,"D4/")

	W_Selection = 'SSELECT CONTRAT AVEC 4 = "D" AND AVEC GestionDroitDif = "1"'

	W_Selection2 = ' AVEC 65 = "" AND AVEC 13 # "CQ" AND AVEC 2 = "':W_Assoc:'"'
	W_Selection2 = W_Selection2:' AND AVEC TypeActivite = "':W_Activite:'"'
        IF W_Activite = "P" THEN
		W_Selection2 = W_Selection2:' OR = "M" AND AVEC 1 # "02"'
        END
	W_Selection2 = W_Selection2:' AND AVEC 7 <= "':W_DateSuiv:'" AND AVEC 8 >= "':W_DateSuiv:'" OR = ""'

	W_Selection = W_Selection:' AND':W_Selection2

	IF W_Periode[5,2]="04" THEN
		W_Selection = W_Selection:' OR AVEC 4 = "I" AND AVEC GestionDroitDif = "1" AND AVEC PeriodeDif = "0"'
		W_Selection = W_Selection:' AND':W_Selection2
	END
	IF W_Periode[5,2]="12" THEN
		W_Selection = W_Selection:' OR AVEC 4 = "I" AND AVEC GestionDroitDif = "1" AND AVEC PeriodeDif = "1"'
		W_Selection = W_Selection:' AND':W_Selection2
	END

	EXECUTE W_Selection
	EXECUTE "SAUVE-LISTE LISTECONTRAT"
	EXECUTE "LISTE LISTECONTRAT" CAPTURING MSG RETURNING MSGCODE

	IF MSGCODE<1>=209 THEN
 		STOP
	END ELSE
		SELECT F.CONTRAT TO LISTECONTRAT

		W_FINCONT="FAUX"
		LOOP 
     			READNEXT CLE FROM LISTECONTRAT ELSE W_FINCONT="VRAI"
     		UNTIL W_FINCONT="VRAI" DO

     			READ ENR_CONTRAT FROM F.CONTRAT,CLE THEN

				GOSUB 10

			END
		REPEAT
	END

STOP

*****************************************************************************
* DIFFERENTS CAS
10

	W_PeriodeRef=""
	W_Contrat=""

	* priode de dbut (-12 mois)
	W_MoisPrec=W_Periode[5,2]+1
	W_AnPrec=W_Periode[1,4]-1
	IF W_MoisPrec="13" THEN
		W_MoisPrec="01"
		W_AnPrec=W_AnPrec+1
	END
	IF LEN(W_MoisPrec)=1 THEN
		W_MoisPrec="0":W_MoisPrec
	END
	W_PeriodeDeb=W_AnPrec:W_MoisPrec
	W_DateDebPeriode=ICONV("01/":W_MoisPrec:"/":W_AnPrec,"D4/")
	
	* priode de fin
	W_Mois=W_Periode[5,2]+1
	W_An=W_Periode[1,4]
	IF W_Mois="13" THEN
		W_Mois="01"
		W_An=W_An+1
	END
	W_DateFinPeriode=ICONV("01/":W_Mois:"/":W_An,"D4/")-1

	iCCN=1
	LOOP
	UNTIL ENR_CONTRAT<1>=W_CCN<iCCN,1> OR W_CCN<iCCN,1>=""
		iCCN=iCCN+1
	REPEAT

* CAS 1 = contrat CDI + CCN avec calcul DIF au 7 mai + cloture avril 
	IF ENR_CONTRAT<4>="I" AND W_CCN<iCCN,2>="0" AND W_Periode[5,2]="04" THEN
		W_AnPrec=W_Periode[1,4]-1
		W_DatePrec=ICONV("01/05/":W_AnPrec,"D4/")

		* si date de debut de contrat <= 1er mai anne prcdente
		IF ENR_CONTRAT<7> <= W_DatePrec THEN
			W_AnPrec=W_Periode[1,4]-2
			W_DatePrec=ICONV("01/05/":W_AnPrec,"D4/")

			* si date de dbut de contrat sur l'anne prcdente
			IF ENR_CONTRAT<7> >= W_DatePrec THEN
				W_DateDebContrat=OCONV(ENR_CONTRAT<7>,"D4/")
				W_PerDebContrat=W_DateDebContrat[7,4]:W_DateDebContrat[4,2]
				W_DateTemp=W_DateDebContrat[7,4]:"12"
				* Ici on compte le nombre de mois travaill au cours de l'anne n-2
				* auquel on ajoute 4 mois (janvier  avril) pour aller au mois d'avril n-1
				* et 12 mois pour aller du mois d'avril n-1 au mois d'avril n.
				* Dans le cas ou l'anne du contrat est gale  n-1, alors il n'y
				* a pas d'anne complte pour laquelle compter 12 mois. On ajoute
				* donc 5 et non pas 17 mois au nombre de mois calcul entre le mois
				* du contrat et dcembre.
				IF W_DateDebContrat[7,4] = (W_AnPrec+1) THEN
					W_PeriodeRef=((W_DateTemp-W_PerDebContrat)+5)
				END ELSE
					W_PeriodeRef=((W_DateTemp-W_PerDebContrat)+17)
				END
			END ELSE
				W_PeriodeRef=12
			END
			GOSUB 20
		END
	END ELSE

* CAS 2 = contrat CDI + CCN avec calcul DIF  l'anne civile + cloture dcembre

		IF ENR_CONTRAT<4>="I" AND W_CCN<iCCN,2>="1" AND W_Periode[5,2]="12" THEN
			W_AnPrec=W_Periode[1,4]
			W_DatePrec=ICONV("01/01/":W_AnPrec,"D4/")

			* si date de debut de contrat <= 1er janvier anne civile
			IF ENR_CONTRAT<7> <= W_DatePrec THEN
				W_AnPrec=W_Periode[1,4]-1
				W_DatePrec=ICONV("01/01/":W_AnPrec,"D4/")

				* si date de dbut de contrat sur l'anne prcdente
				IF ENR_CONTRAT<7> >= W_DatePrec THEN

					* si cloture de 200512
					IF W_Periode="200512" THEN
						* si date de debut de contrat >= 1er mai 2004
						IF ENR_CONTRAT<7> >= "13271" THEN
							W_DateDebContrat=OCONV(ENR_CONTRAT<7>,"D4/")
							W_PerDebContrat=W_DateDebContrat[7,4]:W_DateDebContrat[4,2]
							W_PeriodeRef=((200412-W_PerDebContrat)+1)+12
						END ELSE
							* si debut contrat < 1er mai 2004
							* 12 mois sur 2005 + 8 mois sur 2004
							W_PeriodeRef=20
						END
					END ELSE
						* si cloture au dela de dec. 2005 (2006 et +)
						W_DateDebContrat=OCONV(ENR_CONTRAT<7>,"D4/")
						W_PerDebContrat=W_DateDebContrat[7,4]:W_DateDebContrat[4,2]
						W_DateTemp=W_DateDebContrat[7,4]:"12"
						W_PeriodeRef=((W_DateTemp-W_PerDebContrat)+1)+12
					END

				END ELSE
					* si date de dbut de contrat <  anne prcdente

					* si cloture de 200512
					IF W_Periode="200512" THEN
						* 12 mois sur 2005 + 8 mois sur 2004 ( partir de 200405)
						W_PeriodeRef=20
					END ELSE
						* 12 mois de l'anne
						W_PeriodeRef=12
					END
				END

				GOSUB 20
			END

		END ELSE

* CAS 3 = contrat CDD

			IF ENR_CONTRAT<4>="D" THEN 
				W_Empl=ENR_CONTRAT<3>
				IF LEN(W_Empl)=6 THEN
					W_Empl=W_Empl[1,3]
				END

     				READ ENR_DIFAIDANT FROM F.DIFAIDANT,CLE[1,5]:W_Empl THEN
					W_PeriodeRef=1
					GOSUB 90
					* REQUETE ABSENCESAIDANT
					GOSUB 30

					GOSUB 20
				END ELSE

					W_PeriodeRef=12
					GOSUB 90
					W_PeriodeRef=""

					* REQUETE ABSENCESAIDANT
					GOSUB 30

					W_CumulJour=W_CumulJour-W_NbJourAbs

					IF W_CumulJour >= 120 THEN
						W_PeriodeRef=12
						GOSUB 20
					END
				END
			END
		END
	END

RETURN

*****************************************************************************
* TRAITEMENT : RECHERCHE DES HEURES BRUTES SUR LES MOIS DE REFERENCE
20

	IF W_Contrat="" THEN

		W_CumulAtt6=0
		FOR j=1 TO W_PeriodeRef
			IF j=1 THEN
				READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE:W_Periode ELSE ENR_DETAILCALCUL=""

				W_DateFinPerRef=W_DateSuiv-1
				W_PerTemp=W_Periode
			END ELSE
				W_PerTemp=W_PerTemp-1
				IF W_PerTemp[5,2]="00" THEN
					W_PerTemp=W_PerTemp[1,4]-1:"12"
				END
				READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE:W_PerTemp ELSE ENR_DETAILCALCUL=""
			END
			
			IF j = W_PeriodeRef THEN

				W_DateDebPerRef=ICONV("01/":W_PerTemp[5,2]:"/":W_PerTemp[1,4],"D4/")
			END

			W_CumulAtt6=W_CumulAtt6+ENR_DETAILCALCUL<6>

		NEXT j
	END ELSE

		W_CumulAtt6=0
		W_CountContrat=DCOUNT(W_Contrat,CHAR(254))

		FOR iCont=1 TO W_CountContrat

			FOR j=1 TO W_PeriodeRef
				IF j=1 THEN
					READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_Contrat<iCont>:W_Periode ELSE ENR_DETAILCALCUL=""

					W_DateFinPerRef=W_DateSuiv-1
					W_PerTemp=W_Periode
				END ELSE
					W_PerTemp=W_PerTemp-1
					IF W_PerTemp[5,2]="00" THEN
						W_PerTemp=W_PerTemp[1,4]-1:"12"
					END
					READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_Contrat<iCont>:W_PerTemp ELSE ENR_DETAILCALCUL=""
				END

				IF j = W_PeriodeRef THEN

					W_DateDebPerRef=ICONV("01/":W_PerTemp[5,2]:"/":W_PerTemp[1,4],"D4/")
				END

				W_CumulAtt6=W_CumulAtt6+ENR_DETAILCALCUL<6>

			NEXT j
		NEXT iCont
	END

	GOSUB 40

	GOSUB 50

	GOSUB 60

	GOSUB 70

	GOSUB 80

RETURN

*****************************************************************************
* ABSENCESAIDANT
30

	W_NbJourAbs=0

	W_Selection = 'SSELECT ABSENCESAIDANT AVEC 0 = "':CLE[1,5]:'01]"'
	W_Selection = W_Selection:' AND AVEC DebAbsAidant <= "':W_DateFinPeriode:'" AND AVEC 2 >= "':W_DateDebPeriode:'"'

	EXECUTE W_Selection
	EXECUTE "SAUVE-LISTE LISTEABS"
	EXECUTE "LISTE LISTEABS" CAPTURING MSG RETURNING MSGCODE

	IF MSGCODE<1> #209 THEN

		SELECT F.ABSENCESAIDANT TO LISTEABS

		W_FINABS="FAUX"
		LOOP 
     			READNEXT CLEABS FROM LISTEABS ELSE W_FINABS="VRAI"
     		UNTIL W_FINABS="VRAI" DO

     			READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,CLEABS THEN

				IF CLEABS[8,5] > W_DateDebPeriode THEN
					W_DateDebAbs=CLEABS[8,5]
				END ELSE
					W_DateDebAbs=W_DateDebPeriode
				END

				IF ENR_ABSENCESAIDANT<2> < W_DateFinPeriode THEN
					W_DateFinAbs=ENR_ABSENCESAIDANT<2>
				END ELSE
					W_DateFinAbs=W_DateFinPeriode
				END

				W_NbJourAbs = W_NbJourAbs + (W_DateFinAbs-W_DateDebAbs+1)

			END
		REPEAT
	END

	IF W_CCN<iCCN,3> < W_NbJourAbs THEN
		W_NbJourAbs = W_NbJourAbs - W_CCN<iCCN,3>
	END ELSE
		W_NbJourAbs = 0
	END

RETURN

*****************************************************************************
* VALORISATION DES PERIODES ASSIMILEES A DU TRAVAIL EFFECTIF
40

	W_JourAbs=0
	W_CumulBrut = 0
	IF W_PeriodeRef=12 THEN
		W_JourRestant=W_CCN<iCCN,3>
		W_Deb=W_DateDebPeriode
		W_Fin=W_DateFinPeriode
	END ELSE
		IF W_PeriodeRef > 12 THEN
			W_JourRestant=INT((W_CCN<iCCN,3>*W_PeriodeRef/12) + (1/2))
			FOR j=1 TO W_PeriodeRef
				IF j=1 THEN
					W_PerTemp=W_Periode
				END ELSE
					W_PerTemp=W_PerTemp-1
					IF W_PerTemp[5,2]="00" THEN
						W_PerTemp=W_PerTemp[1,4]-1:"12"
					END
				END
			NEXT j
			W_Deb=ICONV("01/":W_PerTemp[5,2]:"/":W_PerTemp[1,4],"D4/")
			W_Fin=W_DateFinPeriode
		END ELSE
			IF W_PeriodeRef < 12 THEN
				W_JourRestant=W_CCN<iCCN,3>
				W_Deb=W_DateDebPeriode
				W_Fin=W_DateFinPeriode
			END
		END
	END

	W_Selection = 'SSELECT ABSENCESAIDANT AVEC 0 = "':CLE[1,5]:']" AND AVEC NumMotifAidant = "01" OR = "02" OR = "03" OR = "04" OR = "05" OR = "06" OR = "12" OR = "13"'
	W_Selection = W_Selection:' AND AVEC DebAbsAidant <= "':W_Fin:'" AND AVEC 2 >= "':W_Deb:'" PAR DebAbsAidant'

	EXECUTE W_Selection
	EXECUTE "SAUVE-LISTE LISTEABSEN"
	EXECUTE "LISTE LISTEABSEN" CAPTURING MSG RETURNING MSGCODE

	IF MSGCODE<1> #209 THEN

		SELECT F.ABSENCESAIDANT TO LISTEABSEN

		W_FINABS="FAUX"
		LOOP 
     			READNEXT CLEABS FROM LISTEABSEN ELSE W_FINABS="VRAI"
     		UNTIL W_FINABS="VRAI" DO

     			READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,CLEABS THEN

			   	IF CLEABS[6,2]<="06" THEN
				   * recherche la valeur des heures de rfrence mensuelles
				   i=1
				   LOOP
				   UNTIL ENR_ABSENCESAIDANT<17,i>=CLE OR ENR_ABSENCESAIDANT<17,i>=""
					i=i+1
				   REPEAT
				   IF ENR_ABSENCESAIDANT<17,i>#"" THEN
			    		W_HreRefMens=ENR_ABSENCESAIDANT<15,i>
			   	   END
				END ELSE
				   i=DCOUNT(ENR_CONTRAT<24>,CHAR(253))
   	    			   BEGIN CASE
      	       				CASE ENR_CONTRAT<25,i> = "1"
           	  				W_HreRefMens = INT((ENR_CONTRAT<24,i>*52/12) + (1/2))
      	       				CASE ENR_CONTRAT<25,i> = "2"
          	  				W_HreRefMens = INT((ENR_CONTRAT<24,i>*26/12) + (1/2))
    	       				CASE ENR_CONTRAT<25,i> = "3"
         	  				W_HreRefMens = INT((ENR_CONTRAT<24,i>) + (1/2))
       	       				CASE ENR_CONTRAT<25,i> = "4"
           	  				W_HreRefMens = INT((ENR_CONTRAT<24,i>/12) + (1/2))
   	    			   END CASE
				END

				* limite les dates d'abs  la priode
				IF CLEABS[8,5] > W_Deb THEN
					W_DateDebAbs=CLEABS[8,5]
				END ELSE
					W_DateDebAbs=W_Deb
				END
				IF ENR_ABSENCESAIDANT<2> < W_Fin THEN
					W_DateFinAbs=ENR_ABSENCESAIDANT<2>
				END ELSE
					W_DateFinAbs=W_Fin
				END

				W_JourAbs = W_DateFinAbs-W_DateDebAbs+1

				* si maladie
				IF CLEABS[6,2]="01" THEN

					IF W_PeriodeRef < 12 THEN

						W_JourRestant=W_JourRestant-(W_NbJourAbs-W_JourAbs)

						IF W_JourRestant < 0 THEN
							W_JourRestant=0
						END
					END

					IF W_JourRestant > W_JourAbs THEN

						W_CumulBrut = W_CumulBrut + INT((W_HreRefMens * (W_JourAbs/30))+(1/2))
						W_JourRestant=W_JourRestant-W_JourAbs

					END ELSE

						IF W_JourRestant > 0 THEN
							W_CumulBrut = W_CumulBrut + INT((W_HreRefMens * (W_JourRestant/30))+(1/2))
							W_JourRestant=0
						END
					END

				END ELSE
					* si autre motif
					W_CumulBrut = W_CumulBrut + INT((W_HreRefMens * (W_JourAbs/30))+(1/2))
				END
			END

		REPEAT
	END
	
	W_CumulBrut = W_CumulBrut + W_CumulAtt6

RETURN

*****************************************************************************
* DETERMINATION DE L'HORAIRE DE TRAVAIL
50

	IF ENR_CONTRAT<1> # "02" THEN
     		READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT=""
		IF ENR_ETABLISSEMENT<16> # "0" THEN
			W_HoraireTravail=ENR_ETABLISSEMENT<16>/100
		END ELSE
			IF ENR_ETABLISSEMENT<31> # "" THEN
				W_HoraireTravail=35
			END ELSE
				W_HoraireTravail=39
			END
		END
	END ELSE
		W_HoraireTravail=40
	END

RETURN

*****************************************************************************
* CALCUL DES DROITS OUVERTS
60

	W_NbreSemRef = W_PeriodeRef * 4.33
	W_HorRef = (W_HoraireTravail * W_NbreSemRef) * 100
	W_DroitRef = W_CCN<iCCN,4> * W_PeriodeRef / 12
	IF W_CumulBrut >= W_HorRef THEN
		W_DroitOuvert=INT(W_DroitRef+(1/2))
	END ELSE
		W_DroitOuvert=INT(((W_CumulBrut * W_DroitRef) / W_HorRef)+(1/2))
	END

RETURN

*****************************************************************************
* PRISE EN COMPTE DU PLAFOND D'ACQUISITION DES DROITS
70

	W_Empl=ENR_CONTRAT<3>
	IF LEN(W_Empl)=6 THEN
		W_Empl=W_Empl[1,3]
	END
	READ ENR_DIFAIDANT FROM F.DIFAIDANT,CLE[1,5]:W_Empl THEN
		W_HreRestante=ENR_DIFAIDANT<4,DCOUNT(ENR_DIFAIDANT<4>,CHAR(253))>

		W_Temp=W_HreRestante+W_DroitOuvert
		IF W_Temp > W_CCN<iCCN,5> THEN
			W_DroitOuvert=W_CCN<iCCN,5>-W_HreRestante
			IF W_DroitOuvert < 0 THEN
				W_DroitOuvert=0
			END
		END
	END ELSE
		ENR_DIFAIDANT=""
	END

RETURN

*****************************************************************************
* MAJ FICHIER DIFAIDANT
80

	IF ENR_DIFAIDANT # "" THEN
		W_Count=DCOUNT(ENR_DIFAIDANT<1>,CHAR(253))
		W_Count=W_Count+1
	END ELSE
		W_Count=1
	END

	W_Passe="FAUX"
	IF W_Count # 1 THEN
		FOR j=1 TO W_Count-1
			IF W_DateSuiv-1 = ENR_DIFAIDANT<1,j> AND ENR_DIFAIDANT<2,j> # "" THEN
				W_Passe="VRAI"
			END
		NEXT j
	END

	IF W_Passe="FAUX" THEN
		ENR_DIFAIDANT<1,W_Count>=W_DateSuiv-1
		ENR_DIFAIDANT<2,W_Count>=W_DroitOuvert
		ENR_DIFAIDANT<3,W_Count>=""
		ENR_DIFAIDANT<4,W_Count>=ENR_DIFAIDANT<4,W_Count-1>+W_DroitOuvert
		ENR_DIFAIDANT<5,W_Count>=""

		IF ENR_CONTRAT<4>="I" AND ENR_DIFAIDANT<6>="D" THEN
			ENR_DIFAIDANT<6>=""

			W_Cum=0
			FOR j=1 TO W_Count-1
				IF ENR_DIFAIDANT<1,j> >= W_DateDebPerRef THEN
					W_Cum=W_Cum+ENR_DIFAIDANT<2,j>
				END
			NEXT j
			ENR_DIFAIDANT<2,W_Count>=W_DroitOuvert-W_Cum
			IF ENR_DIFAIDANT<2,W_Count> < 0 THEN
				ENR_DIFAIDANT<2,W_Count>=0
			END
			ENR_DIFAIDANT<4,W_Count>=ENR_DIFAIDANT<4,W_Count-1>+ENR_DIFAIDANT<2,W_Count>
		END
		IF ENR_CONTRAT<4>="D" THEN 
			ENR_DIFAIDANT<6>="D"
		END ELSE
			ENR_DIFAIDANT<6>=""
		END
		WRITE ENR_DIFAIDANT ON F.DIFAIDANT,CLE[1,5]:W_Empl
	END

RETURN

*****************************************************************************
* MAJ FICHIER DIFAIDANT
90

	IF ENR_CONTRAT<4>="D" AND W_PeriodeRef="12" THEN 
		W_Deb=W_DateDebPeriode
		W_Fin=W_DateFinPeriode
	END ELSE
		W_Mois=W_Periode[5,2]
		W_An=W_Periode[1,4]
		W_Deb=ICONV("01/":W_Mois:"/":W_An,"D4/")
		W_Mois=W_Mois+1
		IF W_Mois="13" THEN
			W_Mois="01"
			W_An=W_An+1
		END
		W_Fin=ICONV("01/":W_Mois:"/":W_An,"D4/")-1
	END

	W_Contrat=""
	iCont=1
	W_CumulJour=0
	W_Selection = 'SSELECT CONTRAT AVEC 65 = "" AND AVEC 0 = "':CLE[1,5]:']" AND AVEC 3 = "':ENR_CONTRAT<3>:'"'
	W_Selection = W_Selection:' AND AVEC 7 <= "':W_Fin:'" AND AVEC 8 >= "':W_Deb:'" OR = ""'

	EXECUTE W_Selection
	EXECUTE "SAUVE-LISTE LISTECONT"
	EXECUTE "LISTE LISTECONT" CAPTURING MSG RETURNING MSGCODE

	IF MSGCODE<1> # 209 THEN

		SELECT F.CONTRAT TO LISTECONT

		W_FINCONTRAT="FAUX"
		LOOP 
     			READNEXT CLECONT FROM LISTECONT ELSE W_FINCONTRAT="VRAI"
     		UNTIL W_FINCONTRAT="VRAI" DO

     			READ ENR_CONTRAT FROM F.CONTRAT,CLECONT THEN

				IF ENR_CONTRAT<7> > W_DateDebPeriode THEN
					W_DateDebTemp=ENR_CONTRAT<7>
				END ELSE
					W_DateDebTemp=W_DateDebPeriode
				END
				IF ENR_CONTRAT<8> # "" THEN
					IF ENR_CONTRAT<8> < W_DateFinPeriode THEN
						W_DateFinTemp=ENR_CONTRAT<8>
					END ELSE
						W_DateFinTemp=W_DateFinPeriode
					END
				END ELSE
					W_DateFinTemp=W_DateFinPeriode
				END
				W_CumulJour=W_CumulJour+(W_DateFinTemp-W_DateDebTemp+1)

				W_Contrat<iCont>=CLECONT
				iCont=iCont+1

			END
		REPEAT
	END

RETURN
