**********************************
*			    				 *
* RATRAPAGE TOTAL DES DROITS DIF *
* 			    				 *
* Mikael	Sept 2006       	 *
**********************************

* 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=""
***********************************
* 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/")
	
	* On ne prend que les contrat CDI
	
	W_Selection = 'SSELECT CONTRAT 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:' AND 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
				
				*PRINT "Je pass en 10"
				*DEBUG
				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
	PRINT "JE SUIS EN CAS 1"
		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_PeriodeRef=12
			PRINT "JE PASSE EN 20"
			DEBUG
			GOSUB 20
		END
	END ELSE
	PRINT "JE SUIS EN CAS 2"
	DEBUG
* 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
	PRINT "JE SUIS EN CAS 3"
	DEBUG
			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
	PRINT "JE SUIS EN 20 : "
	PRINT "LE CONTRAT : ":W_Contrat
	DEBUG
	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
		PRINT "CUMUL :":W_CumulAtt6
		DEBUG
	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
		PRINT "JE SUIS EN 40 :"
		PRINT "PERIODE REF :":W_PeriodeRef
		DEBUG
	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
		PRINT "W_JourRestant :" :W_JourRestant
		PRINT "Deb :" :W_Deb
		PRINT "Fin :" :W_Fin
		DEBUG
	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'

	PRINT "SELECTION :":W_Selection
	
	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
PRINT "W_CumulBrut :":W_CumulBrut
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
PRINT "W_HoraireTravail :":W_HoraireTravail
DEBUG
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
PRINT "W_NbreSemRef :":W_NbreSemRef
PRINT "W_HorRef :":W_HorRef
PRINT "W_DroitRef :":W_DroitRef
PRINT "W_DroitOuvert :":W_DroitOuvert
DEBUG

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
PRINT "ENR_DIFAIDANT :":ENR_DIFAIDANT
DEBUG
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
PRINT "ENR_DIFAIDANT :":ENR_DIFAIDANT
DEBUG
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
