
*  Affectation de l'absentisme
*  Programme chaine  partir d'un projet VB
*  Vanessa
*  Juillet 1999
*  Mikael 27/09/2012 ajout d'une variable W_DateTempo pour condition en procedure 60
**********************************************************

*    DIFFERENTES PROCEDURES

*  10   -> Boucle des ABSENCESAIDANT
*  20   -> Slection des contrats de l'aidant
*  50   -> Algo de dtermination du nombre de jours d'absence
*  60   -> Dfinition des jours fris 
*  100  -> Procdure si code absence = "07" (enfant malade)
*  150  -> Dtermine la moyenne journalire pour vnement famille
*  160  -> Recherche de l'avenant actif au dbut de l'arrt
*  200  -> Procdure si code absence = "08"  "11" (vnement famille)
*  300  -> Procdure si code absence = "12" ou "13" ou "26" (congs sans solde ou parental ou cong de solidarit familiale)
*  400  -> Procdure si code absence = "14" et "15" (congs pays ou fractionnement)
*  450  -> Recherche la moyenne journalire pour congs pays ou fractionnement
*  460  -> Gnre rubrique 821 (indemnit compensatrice de congs pays)
*  500  -> Procdure si code absence = "16" (congs anciennet)
*  600  -> Procdure si code absence = "02" ou "03" (maternit mi-temps thrapeutique)
*  650  -> Recherche de la valeur horaire en calendaire
*  700  -> Procdure si code absence = "04"  "06" (accident travail, trajet, maladie prof.) et "01" (maladie)
*  710  -> Dtermine le nombre de jours sur la priode avec IJSS  60 et 80 %
*  720  -> Dtermine le nombre de jours sur la priode avec IJSS  50 et 66 %
*  730  -> Remplit DETAILINDEM 
*  800  -> Procdure si code absence = "18" "19" "20" "21" (visites mdicales)
*  1000 -> Mise  jour des fichiers DETAIL xxx
*  1100 -> Relve le code rubrique de saisie  renseigner
*  1200 -> Mise  jour du fichier DETAILPREST
*  1300 -> Mise  jour du fichier DETAILMANDAT
*  1400 -> Mise  jour du fichier DETAILINTER
*  1500 -> Recherche le rang de la rubrique de saisie
**********************************************************

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE PRINT "OUVERTURE ABSENCESAIDANT" ;* en lecture
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE PRINT "OUVERTURE ACTIVITES" ;* en lecture
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "OUVERTURE ASSOCIATION" ;* en lecture
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE PRINT "OUVERTURE CIVILAIDANT" ;* en lecture
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE PRINT "OUVERTURE CONSTANTESPAIE" ;* en lecture 
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en lecture criture
OPEN "","CONTRATSPREV" TO F.CONTRATSPREV ELSE PRINT "OUVERTURE CONTRATSPREV" ;* en lecture
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE PRINT "OUVERTURE CONVENTIONCOL" ;* en lecture
OPEN "","DETAILADMIN" TO F.DETAILADMIN ELSE PRINT "OUVERTURE DETAILADMIN" ;* en criture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL" ;* en lecture
OPEN "","DETAILINDEM" TO F.DETAILINDEM ELSE PRINT "OUVERTURE DETAILINDEM" ;* en lecture criture
OPEN "","DETAILINTER" TO F.DETAILINTER ELSE PRINT "OUVERTURE DETAILINTER" ;* en criture
OPEN "","DETAILMANDAT" TO F.DETAILMANDAT ELSE PRINT "OUVERTURE DETAILMANDAT" ;* en criture
OPEN "","DETAILPREST" TO F.DETAILPREST ELSE PRINT "OUVERTURE DETAILPREST" ;* en criture
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE PRINT "OUVERTURE ETABLISSEMENT" ;* en criture
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE PRINT "OUVERTURE GRILLESCC" ;* en lecture
OPEN "","HISTORINDEM" TO F.HISTORINDEM ELSE PRINT "OUVERTURE HISTORINDEM" ;* en lecture criture
OPEN "","PAQUES" TO F.PAQUES ELSE PRINT "OUVERTURE PAQUES" ;* en lecture
* modif vanessa 29/04/10 - DA 10080-01
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE PRINT "OUVERTURE COMPTEUR" ;* en lecture
* modif vanessa 05/12/13 - DA 13019
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE PRINT "OUVERTURE RUBSAISIE" ;* en lecture
*********************************************************
* initialisation des variables

ENR_CONTRATSPREV=""
W_RequeteAbs=""
W_RequeteContrat=""
W_ReqDet=""
W_JourFerie=""
W_JourAIndemniser=""
W_LundiPaques=""
W_JeudiAscen=""
W_LundiPente=""
W_TabDyn=""
W_JourAbs07=0
W_NbreHreRestant=0
W_Jour=""
W_Difference=""
W_Indice =0
W_Att=0
W_AttAbs=0
W_Creer=""
W_JourRestant=0
W_Count=0
W_Temp=0
W_Diff=0
W_TabVar=""
W_JourAbsAidant=0
W_NbreHreAidant=0
W_SauveAidant=""
W_CongeP=0
W_CongeA=0
W_Euro=0
W_TabContrat=""
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Selection=FIELD(ARGUMENTS," ",2)
W_CodAssoc=FIELD(ARGUMENTS," ",3)
IF W_Selection = "T" THEN
   W_TypePerso=FIELD(ARGUMENTS," ",4)
   W_Activite=FIELD(ARGUMENTS," ",5)
   W_Periode=FIELD(ARGUMENTS," ",6)
   W_Secteur=FIELD(ARGUMENTS," ",7)
END ELSE
   W_Periode=FIELD(ARGUMENTS," ",4)
   W_CodeAidant=FIELD(ARGUMENTS," ",5)
END
*********************************************************
* PROGRAMME PRINCIPAL

   W_Mois = W_Periode[5,2]
   W_An = W_Periode[1,4]
   W_DatDeb = 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_DatFin = ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   GOSUB 15

	READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE=""
	READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CodAssoc ELSE ENR_ASSOCIATION=""
	* modif vanessa 29/04/10 - DA 10080-01
	READ ENR_COMPTEUR FROM F.COMPTEUR,"999" ELSE ENR_COMPTEUR=""
	IF ENR_COMPTEUR<31>="1" THEN
		W_GestionCongeSup="VRAI"
	END ELSE
		W_GestionCongeSup="FAUX"	
	END
   * Determination de la valeur du Smic
   GOSUB 5

   * Epuration fichier DETAILINDEM
   GOSUB 1600

   IF W_Selection = "I" THEN

      *  requete si slection individuelle
	  * modif vanessa 04/12/13 - DA 04/12/13 - tient compte du motif 24 formation
	  * modif vanessa 28/02/14 - DA 14003 ajout motif 26
      W_Temp = 'SSELECT ABSENCESAIDANT AVEC 0 = "':W_CodeAidant[1,5]:']" AND AVEC NumMotifAidant >= "01" AND AVEC NumMotifAidant <= "26" AND AVEC NumMotifAidant # "17" AND AVEC DebAbsAidant <= "':W_DatFin:'" AND AVEC 2 >= "':W_DatDeb:'" PAR CodeAidant PAR-DECR NumMotifAidant PAR DebAbsAidant'

   END ELSE

      *  requete si slection totale
	  * modif vanessa 04/12/13 - DA 04/12/13 - tient compte du motif 24 formation
	  * modif vanessa 28/02/14 - DA 14003 ajout motif 26
      W_Temp = 'SSELECT ABSENCESAIDANT AVEC NumMotifAidant >= "01" AND AVEC NumMotifAidant <= "26" AND AVEC NumMotifAidant # "17" AND AVEC DebAbsAidant <= "':W_DatFin:'" AND AVEC 2 >= "':W_DatDeb:'"'

      *  secteurs
      IF W_Secteur # "" THEN
         W_Count = LEN(W_Secteur)
         W_Temp = W_Temp:' AND AVEC CodeSectAbs = "':W_Secteur[1,3]:'"'
         IF W_Count > 2 THEN
            j=5
            LOOP
            UNTIL j >= W_Count DO
               W_Temp = W_Temp:' OR = "':W_Secteur[j,3]:'"'
               j = j + 4
            REPEAT
         END
      END
      W_Temp = W_Temp:' PAR CodeAidant PAR-DECR NumMotifAidant PAR DebAbsAidant'
   END

   EXECUTE W_Temp
   EXECUTE 'SAUVE-LISTE W_RequeteAbs'
   EXECUTE "LISTE W_RequeteAbs" RETURNING MSGCODE

   IF MSGCODE<1> = 209 THEN
      STOP
   END ELSE
      SELECT F.ABSENCESAIDANT TO W_RequeteAbs
      GOSUB 10
   END

STOP

*****************************************************************************************
* Determination de la valeur du Smic
5
    W_AnMoisSmic=W_Periode[1,4]:W_Periode[5,2]
    j = 1
    LOOP
       W_DateSmic= OCONV(EXTRACT(ENR_CONSTANTESPAIE,4, j),"D4/")
       W_DateSmic=W_DateSmic[7,4]:W_DateSmic[4,2]
    WHILE W_AnMoisSmic < W_DateSmic OR W_DateSmic=""
		
       j = j + 1
    REPEAT
    W_Smic39=EXTRACT(ENR_CONSTANTESPAIE,3, j)
    W_Smic39=W_Smic39:"0"
RETURN

*********************************************************
*  Boucle des absences aidant

10

	W_Fini = "FAUX"
	W_Verif = ""
	LOOP
		READNEXT W_CleAbs FROM W_RequeteAbs ELSE W_Fini = "VRAI"
	WHILE W_Fini = "FAUX" DO
		READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CleAbs ELSE ENR_ABSENCESAIDANT=""

		W_Difference=""
		W_SauveAbs=""

		IF W_SauveAidant=W_CleAbs[1,5] THEN
			W_SauveAidant=W_CleAbs[1,5] 
			W_JourAbsAidant=0
			W_NbreHreAidant=0
		END

		W_TotalMont=0
		W_TotalMont1=0
		W_TotalMont2=0
		W_NbreHreIndem=0
		W_NbreHreRestant=0
		W_JourRestant=0
		W_JourAIndemniser=0

		W_CodeAbs=W_CleAbs[6,2]

		IF W_Verif # W_CleAbs[1,5] THEN
			W_NouvelAidant=1
			GOSUB 20

*	IF W_RequeteContrat # "" THEN
*	 	* Epuration fichier DETAILINDEM
*	 	GOSUB 1601
*	END

			W_Verif = W_CleAbs[1,5]
			W_CongeP=0
			W_CongeA=0 
			W_TabContrat=""
		END ELSE
			W_NouvelAidant=0
		END
		
		W_CountContrat = DCOUNT(W_RequeteContrat,CHAR(254))
		
		FOR j = 1 TO W_CountContrat
* Didier 06/09/2012 : gestion mensualisation
			W_MENSUALISATION="NON"
		
			READ ENR_CONTRAT FROM F.CONTRAT,W_RequeteContrat<j> ELSE ENR_CONTRAT=""

* Didier 06/09/2012 : gestion mensualisation
			READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
			IF ENR_CONVENTIONCOL<63>#"" AND ENR_CONVENTIONCOL<64>#"" THEN W_MENSUALISATION="OUI"
			IF ENR_CONVENTIONCOL<65>#"" AND ENR_CONVENTIONCOL<66>#"" AND ENR_CONVENTIONCOL<67>#"" THEN W_MENSUALISATION="OUI"
			IF ENR_CONVENTIONCOL<68>#"" AND ENR_CONVENTIONCOL<69>#"" THEN W_MENSUALISATION="OUI"
			IF ENR_CONVENTIONCOL<70>#"" AND ENR_CONVENTIONCOL<71>#"" AND ENR_CONVENTIONCOL<72>#"" THEN W_MENSUALISATION="OUI"

			* Modif Greg - 13/05/11 - DA11032 - Gestion rcupration des congs.
			W_Reprise="NON"
			* modif vanessa 20/01/12 - DA 12005
			W_Mois = W_Periode[5,2]
			W_An = W_Periode[1,4]
			W_DatDebPeriode = ICONV("01/":W_Mois:"/":W_An,"D4/")		 
			IF ENR_CONTRAT<117> # "" THEN
				READ ENR_CONTRATREPRISE FROM F.CONTRAT, ENR_CONTRAT<117> THEN
					IF W_DatDebPeriode < ENR_CONTRATREPRISE<8> THEN
						W_Reprise="OUI"
					END
				END
			END
			* Fin modif Greg - 13/05/11
			IF ENR_CONTRAT<1> # "02" THEN
				READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT=""
				IF ENR_ETABLISSEMENT<31> # "" AND ENR_ETABLISSEMENT<31> # "0" THEN
					W_TauxPlancher=ENR_ETABLISSEMENT<31>:"0"
				END ELSE
					W_TauxPlancher=0
				END
				IF W_Smic39 < W_TauxPlancher THEN
					W_Smic=W_TauxPlancher
				END ELSE
					W_Smic=W_Smic39
				END
			* Didier 06/08/2014 : valoriser variable W_Smic pour CCN 02 car sert plus loin
			END ELSE
				W_Smic=W_Smic39
			END
		
			IF (ENR_CONTRAT<7> <= ENR_ABSENCESAIDANT<2> AND ENR_CONTRAT<8> >= W_CleAbs[8,5]) OR (ENR_CONTRAT<7> <= ENR_ABSENCESAIDANT<2> AND ENR_CONTRAT<8> = "") THEN
			
				IF W_TabContrat="" THEN
					iCont = 1
					W_TabContrat<1>=W_RequeteContrat<j>
					W_TabContrat<2>=0
					W_TabContrat<3>=0
					W_TabContrat<4>=0
					W_TabContrat<5>=0
					* Modif Greg - 13/05/11 - DA11032 - Gestion de la reprise de congs
					IF W_Reprise="OUI" THEN
						* Modif Greg - 19/05/14 - DA13073/DA14010 - On peut dsormais prendre des CA par anticipation.
						IF ENR_CONVENTIONCOL<13>="1" AND ENR_CONVENTIONCOL<28>="0" AND W_Periode[5,2]="05" THEN					
							W_CAPos=ENR_CONTRATREPRISE<48>+(ENR_CONTRATREPRISE<47>*100)
						END ELSE
							W_CAPos=ENR_CONTRATREPRISE<48>
						END
						W_CFPos=ENR_CONTRATREPRISE<41>
						W_CPrevPos=ENR_CONTRATREPRISE<110>
						W_CPPos=ENR_CONTRATREPRISE<39>
					END ELSE
						* Modif Greg - 19/05/14 - DA13073/DA14010 - On peut dsormais prendre des CA par anticipation.
						IF ENR_CONVENTIONCOL<13>="1" AND ENR_CONVENTIONCOL<28>="0" AND W_Periode[5,2]="05" THEN					
							W_CAPos=ENR_CONTRAT<48>+(ENR_CONTRAT<47>*100)
						END ELSE					
							W_CAPos=ENR_CONTRAT<48>
						END
						W_CFPos=ENR_CONTRAT<41>
						W_CPrevPos=ENR_CONTRAT<110>
						W_CPPos=ENR_CONTRAT<39>			
					END
					* Fin modif Greg - 13/05/11
				END ELSE
					iCont = 1
					LOOP
					UNTIL W_TabContrat<1,iCont> = W_RequeteContrat<j> OR W_TabContrat<1,iCont>=""
						iCont = iCont + 1
					REPEAT
					IF W_TabContrat<1,iCont>="" THEN
						W_TabContrat<1,iCont>=W_RequeteContrat<j>
						W_TabContrat<2,iCont>=0
						W_TabContrat<3,iCont>=0
						W_TabContrat<4,iCont>=0
						W_TabContrat<5,iCont>=0		
						* Modif Greg - 13/05/11 - DA11032 - Gestion de la reprise de congs
						IF W_Reprise="OUI" THEN
							* Modif Greg - 19/05/14 - DA13073/DA14010 - On peut dsormais prendre des CA par anticipation.
							IF ENR_CONVENTIONCOL<13>="1" AND ENR_CONVENTIONCOL<28>="0" AND W_Periode[5,2]="05" THEN					
								W_CAPos=ENR_CONTRATREPRISE<48>+(ENR_CONTRATREPRISE<47>*100)
							END ELSE
								W_CAPos=ENR_CONTRATREPRISE<48>
							END
							W_CFPos=ENR_CONTRATREPRISE<41>
							W_CPrevPos=ENR_CONTRATREPRISE<110>
							W_CPPos=ENR_CONTRATREPRISE<39>
						END ELSE
							* Modif Greg - 19/05/14 - DA13073/DA14010 - On peut dsormais prendre des CA par anticipation.
							IF ENR_CONVENTIONCOL<13>="1" AND ENR_CONVENTIONCOL<28>="0" AND W_Periode[5,2]="05" THEN					
								W_CAPos=ENR_CONTRAT<48>+(ENR_CONTRAT<47>*100)
							END ELSE					
								W_CAPos=ENR_CONTRAT<48>
							END
							W_CFPos=ENR_CONTRAT<41>
							W_CPrevPos=ENR_CONTRAT<110>
							W_CPPos=ENR_CONTRAT<39>			
						END
						* Fin modif Greg - 13/05/11
					END ELSE
						* Modif Greg - 13/05/11 - DA11032 - Gestion de la reprise de congs
						IF W_Reprise="OUI" THEN
							* Modif Greg - 19/05/14 - DA13073/DA14010 - On peut dsormais prendre des CA par anticipation.
							IF ENR_CONVENTIONCOL<13>="1" AND ENR_CONVENTIONCOL<28>="0" AND W_Periode[5,2]="05" THEN					
								W_CAPos=ENR_CONTRATREPRISE<48>-W_TabContrat<2,iCont>+(ENR_CONTRATREPRISE<47>*100)
							END ELSE					
								W_CAPos=ENR_CONTRATREPRISE<48>-W_TabContrat<2,iCont>
							END						
							W_CFPos=ENR_CONTRATREPRISE<41>-W_TabContrat<3,iCont>
							W_CPrevPos=ENR_CONTRATREPRISE<110>-W_TabContrat<5,iCont>
							W_CPPos=ENR_CONTRATREPRISE<39>-W_TabContrat<4,iCont>
						END ELSE
							* Modif Greg - 19/05/14 - DA13073/DA14010 - On peut dsormais prendre des CA par anticipation.
							IF ENR_CONVENTIONCOL<13>="1" AND ENR_CONVENTIONCOL<28>="0" AND W_Periode[5,2]="05" THEN					
								W_CAPos=ENR_CONTRAT<48>-W_TabContrat<2,iCont>+(ENR_CONTRAT<47>*100)
							END ELSE					
								W_CAPos=ENR_CONTRAT<48>-W_TabContrat<2,iCont>
							END						
							W_CFPos=ENR_CONTRAT<41>-W_TabContrat<3,iCont>
							W_CPrevPos=ENR_CONTRAT<110>-W_TabContrat<5,iCont>
							W_CPPos=ENR_CONTRAT<39>-W_TabContrat<4,iCont>
						END
						* Fin modif Greg - 13/05/11		
					END
				END

				ENR_CONTRATSPREV=""
				W_NbreHreIndem=0
				W_NbreHreRestant=0
				W_JourRestant=0
				W_JourAIndemniser=0
				W_JourAIndCP=0
				W_JourAIndCF=0
				W_JourAIndCA=0
				W_JourAIndCPrev=0		
				IF W_SauveAbs = W_CleAbs THEN
					W_CongeP=0
					W_CongeA=0 
				END
				W_SauveAbs=W_CleAbs 
				IF W_CodeAbs >= "01" AND W_CodeAbs <= "06" THEN
					IF ENR_CONTRAT<1> # "02" THEN
						BEGIN CASE 
							CASE W_CodeAbs = "02" OR W_CodeAbs = "03"
								GOSUB 600
								GOSUB 1000
							CASE (W_CodeAbs >= "04" AND W_CodeAbs <= "06") OR W_CodeAbs = "01"
								READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,ENR_CONTRAT<29> ELSE ENR_CONTRATSPREV=""
								ENR_CONTRATSPREVCONTRAT=ENR_CONTRATSPREV
								GOSUB 700
		   *IF W_TabVar<1>=0 AND W_TabVar<2>=0 AND W_TabVar<3>=0 AND W_TabVar<4>=0 AND W_TabVar<5>=0 AND W_TabVar<6>=0 THEN
				 ENR_CONTRATSPREV=ENR_CONTRATSPREVCONTRAT
		   *END
								GOSUB 1000
						END CASE

					END
				END ELSE
					W_IndemCompens="FAUX"
					BEGIN CASE
						CASE W_CodeAbs = "07"
							GOSUB 100 
							GOSUB 1000 
						CASE W_CodeAbs >= "08" AND W_CodeAbs <= "11"
							GOSUB 200
							GOSUB 1000 
						* modif vanessa 28/02/14 - DA 14003 ajout motif 26
						CASE W_CodeAbs = "12" OR W_CodeAbs = "13" OR W_CodeAbs = "22" OR W_CodeAbs = "23" OR W_CodeAbs = "26" 
							GOSUB 300
							GOSUB 1000 
						CASE W_CodeAbs = "14" OR W_CodeAbs = "15"
							GOSUB 400
		*                  GOSUB 1000 
						CASE W_CodeAbs = "16"
							GOSUB 500
							GOSUB 1000 
						CASE W_CodeAbs = "25"
							GOSUB 550
							GOSUB 1000 				  
						CASE W_CodeAbs >= "18" AND W_CodeAbs <= "21"
							W_Stop = "FAUX" 
							GOSUB 800
							IF W_Stop = "VRAI" THEN
								GOSUB 1000 
								EXIT
							END
						* modif vanessa 04/12/13 - DA 13019
						CASE W_CodeAbs = "24"
							IF ENR_ABSENCESAIDANT<38> # "" AND ENR_ABSENCESAIDANT<39> # "" THEN
								READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_ABSENCESAIDANT<39> ELSE ENR_RUBSAISIE=""
								* si rubrique  dduire et contrat horaire : ne rien faire
								IF ENR_RUBSAISIE<5>="-" AND ENR_CONTRAT<5>="H" THEN
									* RIEN
								END ELSE
									GOSUB 200
									GOSUB 1000
								END
							END
					END CASE
				END

			END

		NEXT j
	REPEAT

RETURN

*****************************************************************************************
* nbre de jours ouvrables et ouvrs sur le mois

15

	W_NbJourOuvrable=0
	W_NbJourOuvre=0

	W_Diff = (W_DatFin - W_DatDeb) + 1

	FOR m = 0 TO W_Diff-1

		W_Day = OCONV(W_DatDeb+m,"DWA")

      		IF W_Day = "Saturday" THEN
			W_NbJourOuvrable=W_NbJourOuvrable+1
		END ELSE
      			IF W_Day # "Sunday" THEN
				W_NbJourOuvrable=W_NbJourOuvrable+1
				W_NbJourOuvre=W_NbJourOuvre+1
			END
		END

	NEXT m

RETURN

*********************************************************
*  Slection sur les contrats de l'aidant

20

   W_RequeteContrat=""

   IF W_Selection = "T" THEN
      W_CodeAidant =W_CleAbs[1,5]

      W_Str = 'SSELECT CONTRAT AVEC 81 = "" OR = "':W_Periode:'" AND AVEC 63 = "" OR < "':W_Periode:'" AND AVEC 58 = "" OR >= "':W_Periode:'" AND AVEC 7 <= "':W_DatFin:'" AND AVEC 8 >= "':W_DatDeb:'" OR = "" AND AVEC 0 = "':W_CodeAidant:']" AND AVEC 2 = "':W_CodAssoc:'" AND AVEC 65 # "O"'

      *  activites
      IF W_TypePerso = "P" THEN
         W_Str = W_Str:' AND AVEC TypeActivite = "':W_Activite:'"'
      END

      *  type de personnel
      IF W_TypePerso = "A" OR W_TypePerso = "P" THEN
         W_Str = W_Str:' AND AVEC 6 = "':W_TypePerso:'"'
      END

      EXECUTE W_Str

   END ELSE
      W_CleContrat=W_CodeAidant
   END

   W_End = "FAUX"
   j=1

   LOOP
      IF W_Selection = "T" THEN
         READNEXT W_CleContrat ELSE W_End = "VRAI"
      END
   WHILE W_End = "FAUX" DO
      READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat ELSE ENR_CONTRAT=""

		* Modif Greg - 13/05/11 - DA11032 - Gestion rcupration des congs.
		W_Reprise="NON"
	  	IF ENR_CONTRAT<117><>"" THEN
			READ ENR_CONTRATREPRISE FROM F.CONTRAT, ENR_CONTRAT<117> THEN
				W_Reprise="OUI"
			END
		END
		* Fin modif Greg - 13/05/11
	  
      W_FiniDetailCalcul = "FAUX"
      W_CleDetailCalcul = W_CleContrat:W_Periode
      READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CleDetailCalcul ELSE W_FiniDetailCalcul = "VRAI"

      * si l'enregistrement n'existe pas dans DETAILCALCUL
      IF W_FiniDetailCalcul = "VRAI" AND W_Periode > ENR_CONTRAT<63> THEN

         * met le code contrat dans un tableau dynamique
         W_RequeteContrat=REPLACE(W_RequeteContrat,j,1;W_CleContrat)
         j = j + 1

         GOSUB 160
         * test si frquence du contrat de travail = annuelle
         IF ENR_CONTRAT<25,k> = "4" AND ENR_CONTRAT<68,k> = "1" THEN
            W_Count = DCOUNT(ENR_CONTRAT<76>,CHAR(253))
            * test si priode de paie en cours de traitement dans l'att 76 
            FOR l = 1 TO W_Count
               IF W_Periode = ENR_CONTRAT<76,l> THEN
                  ENR_CONTRAT = REPLACE(ENR_CONTRAT,78,l;"0")
                  WRITE ENR_CONTRAT ON F.CONTRAT,W_CleContrat
                  EXIT
               END
            NEXT l
         END

         READ ENR_HISTORINDEM FROM F.HISTORINDEM,W_CleContrat THEN
            W_Count = DCOUNT(ENR_HISTORINDEM<1>,CHAR(253))
            * test si priode de paie en cours de traitement dans l'att 1
            FOR l = 1 TO W_Count
               IF W_Periode = ENR_HISTORINDEM<1,l> THEN
                  ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,2,l;"0")
                  ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,3,l;"0")
                  ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,4,l;"0")
                  WRITE ENR_HISTORINDEM ON F.HISTORINDEM,W_CleContrat
                  EXIT
               END
            NEXT l
         END ELSE
            ENR_HISTORINDEM=""
         END

      END

      IF W_Selection = "I" THEN
         W_End = "VRAI"
      END
   REPEAT

RETURN

*********************************************************
*  procdure si code absence = "07"(vnement famille : enfant malade)

100

   READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL, ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
   W_An = W_Periode[1,4]
   W_DatDebAnnee = ICONV("01/01/":W_An,"D4/")
   W_DatFinAnnee = W_DatDeb-1
   W_JourAbs07=0

   EXECUTE 'SSELECT ABSENCESAIDANT AVEC 0 = "':W_CodeAidant[1,5]:'07]" AND AVEC DebAbsAidant <= "':W_DatFinAnnee:'" AND AVEC 2 >= "':W_DatDebAnnee:'"'

   W_Fini07 = "FAUX"
   LOOP 
      READNEXT W_CleAbs07 ELSE W_Fini07 = "VRAI"   
   WHILE W_Fini07 = "FAUX" DO
      READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CleAbs07 ELSE ENR_ABSENCESAIDANT=""

      IF W_CleAbs07[8,5] < W_DatDebAnnee THEN
         W_DatDebAbs=W_DatDebAnnee
      END ELSE
         W_DatDebAbs=W_CleAbs07[8,5]
      END
      IF ENR_ABSENCESAIDANT<2> > W_DatFinAnnee THEN
         W_DatFinAbs=W_DatFinAnnee
      END ELSE
         W_DatFinAbs=ENR_ABSENCESAIDANT<2>
      END

      W_CodeAbsGen=W_CleAbs07[6,2]

      W_CleAbsGen=W_CleAbs07
      W_JourAbs=0

	  W_DatDebPeriode = ICONV("01/01/":W_Periode[1,4],"D4/")
	  W_DatFinPeriode = ICONV("01/":W_Periode[5,2]:"/":W_Periode[1,4],"D4/")-1

      GOSUB 55

      W_JourAbs07=W_JourAbs07+W_JourAbs

   REPEAT

   W_CleAbsGen=W_CleAbs
   READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CleAbs ELSE ENR_ABSENCESAIDANT=""
   W_JourAbs=0
   GOSUB 50


	* Modif Greg - 12/06/14 - DA13029 - Pour le motif 07, il faut dsormais grer les jours supplmentaires.
	IF W_CodeAbs="07" THEN
		W_JourAbs=W_JourAbs * 100
		GOSUB 410
		* Modif Greg - 30/09/14 - Ticket 7128 - L'arrondi n'est pas utile et en plus provoque un bug car il est fait sur la valeur dj "formate".
		* Du coup une demi-journe d'absence est arrondie  1 journe entire.
		*W_JourAbs = INT((W_JourAbs / 100)+0.5)
		W_JourAbs = W_JourAbs / 100
	END
	* Fin modif Greg - 12/06/14	
   
    * Modif Guillaume DA12042 23/04/2012
    ENR_CONVENTIONCOL<6> = 99
   IF W_JourAbs07 < ENR_CONVENTIONCOL<6> THEN

      W_Reste=ENR_CONVENTIONCOL<6> - W_JourAbs07
      IF W_Reste >= W_JourAbs THEN
         W_JourAIndemniser = W_JourAbs * 100
      END ELSE
         W_JourAIndemniser = W_Reste * 100
         W_JourRestant = (W_JourAbs - W_Reste) * 100
      END
   END ELSE
      W_JourRestant = W_JourAbs * 100
   END

   GOSUB 150

   W_NbreHreIndem = (W_JourAIndemniser * W_ValeurHor)/100
   W_NbreHreRestant = (W_JourRestant * W_ValeurHor)/100

RETURN

*********************************************************
*  procdure si code absence = "08"  "11" (vnement famille) + rajout code absence "24" (formation)

200

	W_CleAbsGen=W_CleAbs
	W_JourAbs=0
	GOSUB 50

	* Modif Greg - 12/06/14 - DA13029 - Pour les motifs 08, 09, 10 et 11 il faut dsormais grer les jours supplmentaires.
	IF W_CodeAbs="08" OR W_CodeAbs = "09" OR W_CodeAbs = "10" OR W_CodeAbs = "11" THEN
		W_JourAbs = W_JourAbs * 100
		GOSUB 410
		
		W_JourAIndemniser = W_JourAbs
	END ELSE
		W_JourAIndemniser = W_JourAbs * 100
	END
	* Fin modif Greg - 12/06/14	

	* modif vanessa 04/12/13 - da 13019
	IF W_CodeAbs = "24" THEN
		W_ValeurHor=ENR_ABSENCESAIDANT<38>
	END ELSE
		GOSUB 150
	END
	W_NbreHreIndem = (W_JourAIndemniser * W_ValeurHor)/100
	
RETURN

*********************************************************
*  Algo de dtermination du nombre de jours d'absences

50

   W_CodeAbsGen = W_CleAbsGen[6,2]

   * recherche la date de dbut d'absence relle sur l'employeur si congs et vnement famille
   * Modif Greg - 25/03/13 - DA13026 - Il faut grer les exceptions galement pour les motifs 22, 23 et 25
   * (abs en attente, injustifie et cong dlai prvenance).   
   * modif vanessa 30/01/14 - da 13019 - rajoute motif 24 formation
   * modif vanessa 28/02/14 - DA 14003 ajout motif 26
   IF (W_CodeAbsGen >= "07" AND W_CodeAbsGen <= "16") OR W_CodeAbsGen = "22" OR W_CodeAbsGen = "23" OR W_CodeAbsGen = "25" OR W_CodeAbsGen = "24" OR W_CodeAbsGen = "26" THEN
      IF ENR_ABSENCESAIDANT<26> # "" THEN
         v=1
         LOOP
         UNTIL ENR_ABSENCESAIDANT<26,v>=W_RequeteContrat<j> OR ENR_ABSENCESAIDANT<26,v>="" DO
            v=v+1
         REPEAT
         IF ENR_ABSENCESAIDANT<26,v> # "" AND ENR_ABSENCESAIDANT<21,v> = "O" THEN
            W_DatDebAbs = ENR_ABSENCESAIDANT<22,v>
         END ELSE
            W_DatDebAbs = W_CleAbsGen[8,5]
         END
      END ELSE
         W_DatDebAbs = W_CleAbsGen[8,5]
      END
   END ELSE
      W_DatDebAbs = W_CleAbsGen[8,5]
   END

   W_Mois50 = W_Periode[5,2]
   W_An50 = W_Periode[1,4]
   W_DatDebPeriode = ICONV("01/":W_Mois50:"/":W_An50,"D4/")
   
   * Mikael 27/09/2012 ticket 1629
   W_DateTempo=W_DatDebAbs
   * Fin modification
   
   
   
   IF W_DatDebAbs < W_DatDebPeriode THEN
      W_DatDebAbs = W_DatDebPeriode
   END

   * recherche la date de fin d'absence relle sur l'employeur si congs et vnement famille
   * Modif Greg - 25/03/13 - DA13026 - Il faut grer les exceptions galement pour les motifs 22, 23 et 25
   * (abs en attente, injustifie et cong dlai prvenance).
   * modif vanessa 30/01/14 - da 13019 - rajoute motif 24 formation
   * modif vanessa 28/02/14 - DA 14003 ajout motif 26
   IF (W_CodeAbsGen >= "07" AND W_CodeAbsGen <= "16") OR W_CodeAbsGen = "22" OR W_CodeAbsGen = "23" OR W_CodeAbsGen = "25" OR W_CodeAbsGen = "24" OR W_CodeAbsGen = "26" THEN
      IF ENR_ABSENCESAIDANT<26> # "" THEN
         IF ENR_ABSENCESAIDANT<26,v> # "" AND ENR_ABSENCESAIDANT<21,v> = "O" THEN
            W_DatFinAbs = ENR_ABSENCESAIDANT<24,v>
         END ELSE
            W_DatFinAbs = ENR_ABSENCESAIDANT<2>
         END
      END ELSE
         W_DatFinAbs = ENR_ABSENCESAIDANT<2>
      END
   END ELSE
      W_DatFinAbs = ENR_ABSENCESAIDANT<2>
   END

   W_Mois50 = W_Mois50 + 1
   IF W_Mois50 = "13" THEN
      W_Mois50 = "01" 
      W_An50 = W_An50 + 1
   END
   W_DatFinPeriode = ICONV("01/":W_Mois50:"/":W_An50,"D4/")-1
   IF W_DatFinAbs > W_DatFinPeriode THEN
      W_DatFinAbs = W_DatFinPeriode
   END

	IF ENR_CONTRAT<8> # "" THEN
		IF W_DatFinAbs > ENR_CONTRAT<8> THEN
      		W_DatFinAbs = ENR_CONTRAT<8>
		END
	END
	* Modif Greg - 13/05/11 - Vieux bug vu pendant les tests pour le DA11032.
	* On faisait attention  la date de fin du contrat mais pas  la date de
	* dbut. du coup si l'absence dbutait avant le contrat, on comptait quand
	* mme les jours avant le contrat. Par exemple une absence du 12 au 14 avec
	* un contrat dbutant le 13, on comptait 3 jours d'abs au lieu de 2.
	IF ENR_CONTRAT<7>>W_DatDebAbs THEN W_DatDebAbs=ENR_CONTRAT<7>

   GOSUB 55

RETURN

*********************************************************
*  Algo de dtermination du nombre de jours d'absences (suite)

55
   W_Jour = "" 

   BEGIN CASE
      CASE W_CodeAbsGen = "14"
         READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL, ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
         IF ENR_CONVENTIONCOL<2> = "1" THEN
            W_Jour = "OUVRE"
         END ELSE
            W_Jour = "OUVRABLE"
         END
	CASE W_CodeAbsGen = "15"
         READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL, ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
         IF ENR_CONVENTIONCOL<42> = "1" THEN
            W_Jour = "OUVRE"
         END ELSE
            W_Jour = "OUVRABLE"
         END
      CASE W_CodeAbsGen = "16"
         READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL, ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
         IF ENR_CONVENTIONCOL<12> = "1" THEN
            W_Jour = "OUVRE"
         END ELSE
            W_Jour = "OUVRABLE"
         END
      CASE W_CodeAbsGen = "25"
         READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL, ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
         IF ENR_CONVENTIONCOL<76> = "1" THEN
            W_Jour = "OUVRE"
         END ELSE
            W_Jour = "OUVRABLE"
         END		 
		 * modif vanessa 30/01/14 - da 13019 - rajoute motif 24 formation
		 * modif vanessa 28/02/14 - DA 14003 ajout motif 26
      CASE (W_CodeAbsGen >= "07" AND W_CodeAbsGen <= "12") OR W_CodeAbsGen = "22" OR W_CodeAbsGen = "23" OR W_CodeAbsGen = "24" OR W_CodeAbsGen = "26"
         W_Jour = "OUVRE"
   END CASE

   IF W_JourFerie<1> = "" THEN
      GOSUB 70
   END

	W_Diff = (W_DatFinAbs - W_DatDebAbs) + 1
	* modif vanessa 14/06/10 - DA 10125-01 - ne pas retirer une 1/2 journe de cong si le premier ou dernier jour de l'absence est un samedi, dimanche ou JF
	W_PremierJour="NON"
	W_DernierJour="NON"
	
   FOR m = 0 TO W_Diff-1

      W_Day = OCONV(W_DatDebAbs+m,"DWA")
      IF W_Jour = "OUVRABLE" THEN
         IF W_Day # "Sunday" THEN
            GOSUB 60
         END
      END ELSE
         IF W_Jour = "OUVRE" THEN
			* modif vanessa 15/12/10 DA 10153-01
			IF W_Day # "Saturday" AND W_Day # "Sunday" THEN		 
			*IF (W_Day # "Saturday" AND W_Day # "Sunday") OR (W_CodeAbsGen >= "07" AND W_CodeAbsGen <= "11" AND W_Day # "Sunday") THEN
               GOSUB 60
            END
         END ELSE
            W_JourAbs = W_JourAbs + 1
			IF m=0 THEN
	  			W_PremierJour="OUI"
			END
			IF m=W_Diff-1 THEN
	  			W_DernierJour="OUI"
			END			
         END
      END

   NEXT m

   * enlve une demi-journe d'absence sur l'employeur si congs et vnement famille
   * Modif Greg - 25/03/13 - DA13026 - Il faut grer les exceptions galement pour les motifs 22, 23 et 25
   * (abs en attente, injustifie et cong dlai prvenance).
   * modif vanessa 30/01/14 - da 13019 - rajoute motif 24 formation
   * modif vanessa 28/02/14 - DA 14003 ajout motif 26
	IF (W_CodeAbsGen >= "07" AND W_CodeAbsGen <= "16") OR W_CodeAbsGen = "22" OR W_CodeAbsGen = "23" OR W_CodeAbsGen = "25" OR W_CodeAbsGen = "24" OR W_CodeAbsGen = "26" THEN
		IF ENR_ABSENCESAIDANT<26> # "" THEN
			IF ENR_ABSENCESAIDANT<26,v> # "" AND ENR_ABSENCESAIDANT<21,v> = "O" THEN
				IF W_DernierJour="OUI" THEN
					IF ENR_ABSENCESAIDANT<25,v> = "M" AND ENR_ABSENCESAIDANT<24,v> <= W_DatFinPeriode AND ENR_ABSENCESAIDANT<24,v> >= W_DatDebPeriode THEN
						W_JourAbs = W_JourAbs - (1/2)
					END
				END
				IF W_PremierJour="OUI" THEN
					IF ENR_ABSENCESAIDANT<23,v> = "A" AND ENR_ABSENCESAIDANT<22,v> <= W_DatFinPeriode AND ENR_ABSENCESAIDANT<22,v> >= W_DatDebPeriode THEN
						W_JourAbs = W_JourAbs - (1/2)
					END
				END
			END ELSE
				IF W_DernierJour="OUI" THEN
					IF ENR_ABSENCESAIDANT<3> = "1" AND ENR_ABSENCESAIDANT<2> <= W_DatFinPeriode AND ENR_ABSENCESAIDANT<2> >= W_DatDebPeriode THEN
						W_JourAbs = W_JourAbs - (1/2)
					END
				END
				IF W_PremierJour="OUI" THEN				
					IF ENR_ABSENCESAIDANT<1> = "2" AND W_CleAbsGen[8,5] <= W_DatFinPeriode AND W_CleAbsGen[8,5] >= W_DatDebPeriode THEN
						W_JourAbs = W_JourAbs - (1/2)
					END
				END
			END
		END ELSE
			IF W_DernierJour="OUI" THEN		
				IF ENR_ABSENCESAIDANT<3> = "1" AND ENR_ABSENCESAIDANT<2> <= W_DatFinPeriode AND ENR_ABSENCESAIDANT<2> >= W_DatDebPeriode THEN
					W_JourAbs = W_JourAbs - (1/2)
				END
			END
			IF W_PremierJour="OUI" THEN				
				IF ENR_ABSENCESAIDANT<1> = "2" AND W_CleAbsGen[8,5] <= W_DatFinPeriode AND W_CleAbsGen[8,5] >= W_DatDebPeriode THEN
					W_JourAbs = W_JourAbs - (1/2)
				END
			END
		END
	END ELSE
		IF W_DernierJour="OUI" THEN		
			IF ENR_ABSENCESAIDANT<3> = "1" AND ENR_ABSENCESAIDANT<2> <= W_DatFinPeriode AND ENR_ABSENCESAIDANT<2> >= W_DatDebPeriode THEN
				W_JourAbs = W_JourAbs - (1/2)
			END
		END
		IF W_PremierJour="OUI" THEN			
			IF ENR_ABSENCESAIDANT<1> = "2" AND W_CleAbsGen[8,5] <= W_DatFinPeriode AND W_CleAbsGen[8,5] >= W_DatDebPeriode THEN
				W_JourAbs = W_JourAbs - (1/2)
			END
		END
	END
	
   * Modif Greg - 25/03/13 - DA13026 - Il faut grer les exceptions galement pour les motifs 22, 23 et 25
   * (abs en attente, injustifie et cong dlai prvenance).	
   * modif vanessa 30/01/14 - da 13019 - rajoute motif 24 formation
   * modif vanessa 28/02/14 - DA 14003 ajout motif 26
   IF (W_CodeAbsGen >= "07" AND W_CodeAbsGen <= "16") OR W_CodeAbsGen = "22" OR W_CodeAbsGen = "23" OR W_CodeAbsGen = "25" OR W_CodeAbsGen = "24" OR W_CodeAbsGen = "26" THEN
      IF ENR_ABSENCESAIDANT<26> # "" THEN
         IF ENR_ABSENCESAIDANT<26,v> # "" AND ENR_ABSENCESAIDANT<21,v> = "N" THEN
            W_JourAbs = 0
         END
      END
   END
	
RETURN

*********************************************************
*  Dfinition des jours fris

60

	W_Ferie = "FAUX"
	FOR n = 1 TO 11
		IF W_DatDebAbs+m = W_JourFerie<n> THEN
			W_Ferie = "VRAI"
			EXIT
		END
	NEXT n
	IF W_Ferie = "FAUX" THEN
		*Anthony 14/05/12 DA11100-01
		IF m=0 AND W_Day = "Saturday" THEN
			* Modification mikael le 27/09/2012 ticket 1629
				IF W_DateTempo # W_DatDebAbs THEN
					W_JourAbs = W_JourAbs +1
				END ELSE
					* modif vanessa 17/05/13 - DA 13053
					IF W_DatFinAbs-W_DatDebAbs+1 <= 7 THEN
						W_JourAbs = W_JourAbs +1
					END ELSE
						*Si date dbut est un samedi et jour ouvrable, alors samedi n'est pas  compter
					END
				END
				* Fin modification

			
		END ELSE
			W_JourAbs = W_JourAbs +1
		END
		*W_JourAbs = W_JourAbs +1
		*Fin Anthony
		
		IF m=0 THEN
			W_PremierJour="OUI"
		END
		IF m=W_Diff-1 THEN
			W_DernierJour="OUI"
		END		  
	END
	
RETURN

*********************************************************
*  Dfinition des jours fris

70

   W_An = W_Periode[1,4]
   W_JourAn = ICONV("01/01/":W_An,"D4/")
   W_1Mai = ICONV("01/05/":W_An,"D4/")
   W_8Mai = ICONV("08/05/":W_An,"D4/")
   W_14Jui = ICONV("14/07/":W_An,"D4/")
   W_15Aout = ICONV("15/08/":W_An,"D4/")
   W_1Nov = ICONV("01/11/":W_An,"D4/")
   W_11Nov = ICONV("11/11/":W_An,"D4/")
   W_25Dec = ICONV("25/12/":W_An,"D4/")

   READ ENR_PAQUES FROM F.PAQUES,W_An THEN
      W_JourPaques = ENR_PAQUES<1>
      W_Paques = ICONV(W_JourPaques[1,2]:"/":W_JourPaques[3,2]:"/":W_An,"D4/")
      W_LundiPaques = W_Paques + 1
      W_JeudiAscen = W_Paques + 39
      W_LundiPente = W_JeudiAscen + 11
   END ELSE
      ENR_PAQUES=""
   END

   IF ENR_CONTRAT<1>="02" THEN
	W_JourSol=""
   END ELSE
	W_JourSol=ENR_ASSOCIATION<42>
   END

   *remplit tableau dynamique
   IF W_JourSol="01JAN" THEN
   	W_JourFerie = REPLACE(W_JourFerie,1;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,1;W_JourAn)
   END
   W_JourFerie = REPLACE(W_JourFerie,2;W_1Mai)
   IF W_JourSol="08MAI" THEN
   	W_JourFerie = REPLACE(W_JourFerie,3;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,3;W_8Mai)
   END
   IF W_JourSol="14JUI" THEN
   	W_JourFerie = REPLACE(W_JourFerie,4;"")
   END ELSE
      	W_JourFerie = REPLACE(W_JourFerie,4;W_14Jui)
   END
   IF W_JourSol="15AOU" THEN
   	W_JourFerie = REPLACE(W_JourFerie,5;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,5;W_15Aout)
   END
   IF W_JourSol="01NOV" THEN
   	W_JourFerie = REPLACE(W_JourFerie,6;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,6;W_1Nov)
   END
   IF W_JourSol="11NOV" THEN
   	W_JourFerie = REPLACE(W_JourFerie,7;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,7;W_11Nov)
   END
   IF W_JourSol="25DEC" THEN
   	W_JourFerie = REPLACE(W_JourFerie,8;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,8;W_25Dec)
   END
   IF W_JourSol="LUPAQ" THEN
   	W_JourFerie = REPLACE(W_JourFerie,9;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,9;W_LundiPaques)
   END
   IF W_JourSol="JEASC" THEN
   	W_JourFerie = REPLACE(W_JourFerie,10;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,10;W_JeudiAscen)
   END
   IF W_JourSol="LUPEN" THEN
   	W_JourFerie = REPLACE(W_JourFerie,11;"")
   END ELSE
   	W_JourFerie = REPLACE(W_JourFerie,11;W_LundiPente)
   END

RETURN

*********************************************************
*  Dtermine la valeur horaire pour vnement famille

150

   GOSUB 160

   * si aidant mensualis ou frquence de travail annuelle
   * Didier 06/09/2012 : gestion mensualisation
   IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
      GOSUB 360
   END ELSE
      IF ENR_CONTRAT<42> # "0" THEN
         W_ValeurHor =INT((ENR_CONTRAT<42> * (6/5)) + (1/2))
      END ELSE
	   W_ValeurHor="0"
      END
   END

   * si valeur horaire gale  0
   IF W_ValeurHor = "0" THEN
      W_Temp=(ENR_CONTRAT<45> / ENR_CONTRAT<44>) * 100
      IF W_Temp # "0" THEN
         W_ValeurHor =INT((W_Temp * (6/5)) + (1/2))
      END
   END

   * si valeur horaire toujours gale  0
   IF W_ValeurHor = "0" THEN
      GOSUB 360
   END

RETURN

*********************************************************
   * recherche de l'avenant actif  la fin de la priode
160

   W_ValeurHor = 0
**   W_DebAbs = W_CleAbs[8,5]

   * recherche de l'avenant actif au dbut de l'arrt
   k = DCOUNT(ENR_CONTRAT<14>,CHAR(253))

   LOOP 
   WHILE ENR_CONTRAT<15,k> > W_DatFin  DO
      k=k-1
   REPEAT

RETURN
*********************************************************
*  procdure si code absence = "12" et "13" et "26" (congs sans solde ou parental ou solidarit familiale)

300

   GOSUB 160

   * si aidant mensualis ou frquence de travail annuelle
   * Didier 06/09/2012 : gestion mensualisation
   IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
      IF W_CodeAbs="13" THEN
         GOSUB 650
      END ELSE
         GOSUB 360
      END

      W_JourAbs = 0
      W_CleAbsGen = W_CleAbs
      GOSUB 50
	  
		* Modif Greg - 12/06/14 - DA13029 - Pour les motifs 12, 23 et 26, il faut dsormais grer les jours supplmentaires.
		IF W_CodeAbs="12" OR W_CodeAbs = "23" OR W_CodeAbs = "26" THEN
			W_JourAbs = W_JourAbs * 100
			GOSUB 410
			
			W_JourRestant = W_JourAbs
		END ELSE
			W_JourRestant = W_JourAbs * 100
		END
		* Fin modif Greg - 12/06/14
	  
	  
	  
      W_NbreHreRestant = INT(((W_ValeurHor * W_JourRestant)/100) + (1/2))
	  * modif vanessa 28/02/14 - DA 14003 ajout motif 26
      IF W_CodeAbs="12" OR W_CodeAbs = "22" OR W_CodeAbs = "23" OR W_CodeAbs = "26" THEN
		
		* modif vanessa 15/12/10 - DA 10162-01
		IF ENR_CONTRAT<7> > W_DatDebPeriode THEN
			W_DatDebPerTemp=ENR_CONTRAT<7>
		END ELSE
			W_DatDebPerTemp=W_DatDebPeriode	
		END
		
		IF ENR_CONTRAT<8># "" AND ENR_CONTRAT<8> < W_DatFinPeriode THEN
			W_DatFinPerTemp=ENR_CONTRAT<8>
		END ELSE
			W_DatFinPerTemp=W_DatFinPeriode	
		END
		* modif vanessa 13/01/11 - appel caen n 0111670 - si pas de jour d'absence car abs en exception, ne pas recalculer le nbre de jour restant
		*IF (W_DatFinAbs-W_DatDebAbs+1) = (W_DatFinPeriode-W_DatDebPeriode+1) AND W_JourAbs # 0 THEN		
		IF (W_DatFinAbs-W_DatDebAbs+1) >= (W_DatFinPerTemp-W_DatDebPerTemp+1) AND W_JourAbs # 0 THEN
		
            W_JourRestant =(W_DatFinPerTemp-W_DatDebPerTemp+1)*100
			
	   	    BEGIN CASE
	      	    CASE ENR_CONTRAT<25,k> = "1"
					W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
	      	    CASE ENR_CONTRAT<25,k> = "2"
					W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
	    	    CASE ENR_CONTRAT<25,k> = "3"
					W_NbreHreRestant = INT((ENR_CONTRAT<24,k>) + (1/2))
	       	    CASE ENR_CONTRAT<25,k> = "4"
					W_NbreHreRestant = INT((ENR_CONTRAT<24,k>/12) + (1/2))
	   	    END CASE
			
			* modif vanessa 15/12/10 - DA 10162-01	
			W_NbJourMois = ((W_DatFin - W_DatDeb) + 1)*100
			W_NbreHreRestant=W_NbreHreRestant/W_NbJourMois*W_JourRestant
			W_NbreHreRestant = INT(W_NbreHreRestant + (1/2))	
			
        END
      END
      W_JourAbsAidant = W_JourAbsAidant + W_JourRestant
      W_NbreHreAidant = W_NbreHreAidant + W_NbreHreRestant 
   END

RETURN

*********************************************************
*  Recherche de la valeur horaire en ouvr

360

	READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""

	IF ENR_CONVENTIONCOL<38>="1" THEN
		BEGIN CASE
			CASE ENR_CONTRAT<25,k> = "1"
				W_ValeurHor = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
			CASE ENR_CONTRAT<25,k> = "2"
				W_ValeurHor = INT((ENR_CONTRAT<24,k>*27/12) + (1/2))
			CASE ENR_CONTRAT<25,k> = "3"
				W_ValeurHor = ENR_CONTRAT<24,k>
			CASE ENR_CONTRAT<25,k> = "4"
				W_ValeurHor = INT((ENR_CONTRAT<24,k>/12) + (1/2))
		END CASE
		W_ValeurHor=INT(W_ValeurHor/W_NbJourOuvre + (1/2))
	END ELSE
		BEGIN CASE
			CASE ENR_CONTRAT<25,k> = "1"
				W_ValeurHor = INT((ENR_CONTRAT<24,k>/5) + (1/2))
			CASE ENR_CONTRAT<25,k> = "2"
				W_ValeurHor = INT((ENR_CONTRAT<24,k>/10) + (1/2))
			CASE ENR_CONTRAT<25,k> = "3"
				W_ValeurHor = INT((ENR_CONTRAT<24,k>*12/260) + (1/2))
			CASE ENR_CONTRAT<25,k> = "4"
				W_ValeurHor = INT((ENR_CONTRAT<24,k>/260) + (1/2))
		END CASE
	END

RETURN

*********************************************************
*  procdure si code absence = "14" et "15" (congs pays ou fractionnement)

400

   READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""

	IF ENR_CONTRAT<31> = "0" OR (ENR_CONTRAT<1> = "02" AND ENR_CONTRAT<31> = "1" AND ENR_CONVENTIONCOL<35> = "1") THEN
	    W_JourAbs = 0
	    W_CleAbsGen = W_CleAbs
	    GOSUB 50
	    W_JourAbs = W_JourAbs * 100
		
		* modif vanessa 30/03/10 - DA 10080-01
		GOSUB 410
		
		IF W_CodeAbs = "14" THEN
			IF W_CPPos < W_JourAbs THEN
			
				W_Temp = W_JourAbs - W_CPPos
				W_JourAIndCP= W_CPPos
				W_TabContrat<4,iCont>=W_TabContrat<4,iCont>+W_JourAIndCP
				
				IF W_Temp > 0 THEN
					IF W_CFPos < W_Temp THEN
						W_JourAIndCF=W_CFPos
					END ELSE
						W_JourAIndCF=W_Temp
					END  
					W_TabContrat<3,iCont>=W_TabContrat<3,iCont>+W_JourAIndCF
					W_Temp=W_Temp - W_CFPos
					
				END
				IF W_Temp > 0 THEN
					IF W_CAPos < W_Temp THEN
						W_JourAIndCA=W_CAPos
					END ELSE
						W_JourAIndCA=W_Temp
					END 
					W_TabContrat<2,iCont>=W_TabContrat<2,iCont>+W_JourAIndCA
					W_Temp=W_Temp - W_CAPos
				END
				
				IF W_Temp > 0 THEN
					IF W_CPrevPos < W_Temp THEN
						W_JourAIndCPrev=W_CPrevPos
					END ELSE
						W_JourAIndCPrev=W_Temp
					END 
					W_TabContrat<5,iCont>=W_TabContrat<5,iCont>+W_JourAIndCPrev
					W_Temp=W_Temp - W_CPrevPos
				END	
				
				* si anticipation possible
				IF ENR_CONVENTIONCOL<60>="1" THEN
					W_Passe="FAUX"
					* calcul si on fait de l'anticipation selon le nombre de mois enregistr dans la CCN
					IF ENR_CONVENTIONCOL<61>="12" THEN
						W_Passe="VRAI"
					END ELSE
						IF ENR_CONVENTIONCOL<28> = "0" THEN
							W_MoisDeb=6
						END ELSE
							W_MoisDeb=1						
						END
						W_MoisTest=W_MoisDeb
						FOR iMois=1 TO ENR_CONVENTIONCOL<61>
							W_MoisTest=W_MoisTest-1
							IF W_MoisTest=0 THEN
								W_MoisTest=12
							END
							IF INT(W_Periode[5,2]) = W_MoisTest THEN
								W_Passe="VRAI"
								EXIT
							END
						NEXT iMois
					END
					* prise par anticipation si test ok
					IF W_Passe="VRAI" THEN
						IF W_Temp > 0 THEN
							* modif vanessa 26/10/10 - DA 10250-01
							*Modif Greg - 13/05/11 - DA11032 - Gestion de reprise des congs.
							IF W_Reprise="NON" THEN
								W_JourEnCoursAcq=ENR_CONTRAT<44>
								W_JourAnticip=ENR_CONTRAT<83>
							END ELSE
								W_JourEnCoursAcq=ENR_CONTRATREPRISE<44>
								W_JourAnticip=ENR_CONTRATREPRISE<83>
							END
							
							IF ENR_CONVENTIONCOL<2> = "1" THEN
								W_JourEnCoursAcq=INT(W_JourEnCoursAcq*5/6)
							END
							IF W_JourEnCoursAcq[LEN(W_JourEnCoursAcq)-1,2] # "00" AND W_JourEnCoursAcq[LEN(W_JourEnCoursAcq)-1,2] # "50" THEN
								IF W_JourEnCoursAcq[LEN(W_JourEnCoursAcq)-1,2] >= "51" AND W_JourEnCoursAcq[LEN(W_JourEnCoursAcq)-1,2] <= "99" THEN
									W_JourEnCoursAcq=W_JourEnCoursAcq[1,LEN(W_JourEnCoursAcq)-2]:"50"
								END ELSE
									W_JourEnCoursAcq=W_JourEnCoursAcq[1,LEN(W_JourEnCoursAcq)-2]:"00"
								END
							END
							IF W_JourAnticip[LEN(W_JourAnticip)-1,2] # "00" AND W_JourAnticip[LEN(W_JourAnticip)-1,2] # "50" THEN
								IF W_JourAnticip[LEN(W_JourAnticip)-1,2] >= "51" AND W_JourAnticip[LEN(W_JourAnticip)-1,2] <= "99" THEN
									W_JourAnticip=W_JourAnticip[1,LEN(W_JourAnticip)-2]:"50"
								END ELSE
									W_JourAnticip=W_JourAnticip[1,LEN(W_JourAnticip)-2]:"00"
								END
								ENR_CONTRAT<83>=W_JourAnticip
								WRITE ENR_CONTRAT ON F.CONTRAT,W_RequeteContrat<j>
							END
							
							IF W_JourEnCoursAcq - W_JourAnticip < W_Temp THEN
								W_JourAIndCP=W_JourAIndCP + W_JourEnCoursAcq - W_JourAnticip
							END ELSE
								W_JourAIndCP=W_JourAIndCP + W_Temp
							END
							W_Temp=W_Temp - (W_JourEnCoursAcq - W_JourAnticip)
						END
					END
				END
				
				
	            IF W_Temp > 0 THEN
					W_JourRestant= W_Temp
					W_JourAIndemniser  = W_JourAbs - W_Temp
	            END ELSE
					W_JourAIndemniser = W_JourAbs
	            END
			END ELSE
				W_JourAIndCP = W_JourAbs
				W_TabContrat<4,iCont>=W_TabContrat<4,iCont>+W_JourAIndCP
			END
			
			W_Pos = W_CPPos + W_CFPos + W_CAPos + W_CPrevPos
			
			* si anticipation possible
			* Modif Greg - 13/05/11 - DA11032 - Reprise de congs. Il faut forcer la prise par anticipation.
			* Les compteurs seront automatiquement rgulariss lors de la cloture du contrat de rfrence.
			IF ENR_CONVENTIONCOL<60>="1" THEN
				W_Passe="FAUX"
				* calcul si on fait de l'anticipation selon le nombre de mois enregistr dans la CCN
				IF ENR_CONVENTIONCOL<61>="12" THEN
					W_Passe="VRAI"
				END ELSE
					IF ENR_CONVENTIONCOL<28> = "0" THEN
						W_MoisDeb=6
					END ELSE
						W_MoisDeb=1						
					END
					W_MoisTest=W_MoisDeb
					FOR iMois=1 TO ENR_CONVENTIONCOL<61>
						W_MoisTest=W_MoisTest-1
						IF W_MoisTest=0 THEN
							W_MoisTest=12
						END
						IF INT(W_Periode[5,2]) = W_MoisTest THEN
							W_Passe="VRAI"
							EXIT
						END
					NEXT iMois
				END
				* prise par anticpation si test ok
				IF W_Passe="VRAI" THEN
					* modif vanessa 26/10/10 - DA 10250-01
					W_Pos=W_Pos + (W_JourEnCoursAcq - W_JourAnticip)
				END
			END 
			
			IF W_CongeP # "0" THEN
*            	W_Var=W_Pos - W_CongeP     
*            	W_JourRestant=W_JourRestant + (W_JourAIndemniser-W_Var)
				
				W_Var=W_JourAIndemniser-W_Pos 
				W_JourRestant=W_JourRestant + W_Var
				
	            IF W_JourRestant < 0 THEN
					W_JourRestant=0
	            END ELSE
					W_JourAIndemniser= W_Var
	            END
			END
			W_CongeP=W_CongeP + W_JourAIndemniser  
			
		END ELSE
			IF W_CFPos < W_JourAbs THEN
				W_JourAIndemniser = W_CFPos
				W_JourRestant = W_JourAbs - W_CFPos
			END ELSE
				W_JourAIndemniser = W_JourAbs
			END
			
			W_TabContrat<3,iCont>=W_TabContrat<3,iCont>+W_JourAIndemniser
			
			W_Pos=W_CFPos
		END
		
		IF W_CodeAbs = "15" THEN
		
	      	GOSUB 450
	      	W_NbreHreIndem = (W_JourAIndemniser * W_ValeurHor) / 100
	      	W_NbreHreRestant = (W_JourRestant * W_ValeurHor) / 100
			GOSUB 1000
			
		END ELSE
		
			IF W_JourAIndCPrev # 0 THEN
				W_IndemCompens="VRAI"
				W_CodeAbs="25"
	      		GOSUB 450
	      		W_NbreHreIndem = (W_JourAIndCPrev * W_ValeurHor) / 100
				W_JourAIndemniser=W_JourAIndCPrev
				GOSUB 1000
				W_NouvelAidant=0
			END		
			
			IF W_JourAIndCA # 0 THEN
				W_IndemCompens="VRAI"
				W_CodeAbs="16"
	      		GOSUB 450
	      		W_NbreHreIndem = (W_JourAIndCA * W_ValeurHor) / 100
				W_JourAIndemniser=W_JourAIndCA
				GOSUB 1000
				W_NouvelAidant=0
			END
			
			IF W_JourAIndCF # 0 THEN
				W_IndemCompens="VRAI"
				W_CodeAbs="15"
	      		GOSUB 450
	      		W_NbreHreIndem = (W_JourAIndCF * W_ValeurHor) / 100
				W_JourAIndemniser=W_JourAIndCF
				GOSUB 1000
	         	W_NouvelAidant=0
			END
			
			IF W_JourAIndCP # 0 THEN
				W_IndemCompens="FAUX"
				W_CodeAbs="14"
	      		GOSUB 450
	      		W_NbreHreIndem = (W_JourAIndCP * W_ValeurHor) / 100
	      		W_NbreHreRestant = (W_JourRestant * W_ValeurHor) / 100
				W_JourAIndemniser=W_JourAIndCP
				GOSUB 1000
			END ELSE
				W_IndemCompens="FAUX"
				W_CodeAbs="14"
	      		GOSUB 450
	      		W_NbreHreRestant = (W_JourRestant * W_ValeurHor) / 100
	      		W_NbreHreIndem =0
				W_JourAIndemniser=0
				GOSUB 1000
			END
			
		END
		
	END
	
RETURN

*********************************************************
*  modif vanessa 30/03/10 - DA 10080-01
*  ajout des jours supplmentaires  dcompter

410


	IF W_GestionCongeSup="VRAI" AND ENR_ABSENCESAIDANT<34> # "" THEN
		W_CongeSuppl=0
		W_Ind400=1
		LOOP
		UNTIL ENR_ABSENCESAIDANT<26,W_Ind400> = W_RequeteContrat<j> OR ENR_ABSENCESAIDANT<26,W_Ind400> = "" DO
			W_Ind400=W_Ind400+1
		REPEAT
		IF ENR_ABSENCESAIDANT<26,W_Ind400> = W_RequeteContrat<j> THEN
			W_IndSV=1
			LOOP
			UNTIL ENR_ABSENCESAIDANT<34,W_Ind400,W_IndSV> = W_Periode OR ENR_ABSENCESAIDANT<34,W_Ind400,W_IndSV>="" DO
				W_IndSV=W_IndSV+1
			REPEAT
			IF ENR_ABSENCESAIDANT<34,W_Ind400,W_IndSV> = W_Periode THEN
				W_CongeSuppl=W_CongeSuppl+ENR_ABSENCESAIDANT<35,W_Ind400,W_IndSV>
			END
		END
		W_JourAbs=W_JourAbs+W_CongeSuppl
		IF W_JourAbs < 0 THEN
			W_JourAbs=0
		END
	END
RETURN

*********************************************************
*  recherche la valeur horaire pour congs pays ou fractionnement

450

   GOSUB 160

   W_PARAMS=""
   W_SORTIE=""
   W_PARAMS<1>=W_RequeteContrat<j>
   W_PARAMS<2>=k
   W_PARAMS<3>=W_Periode

   CALL CALCCOEFFTXHOR("",W_PARAMS,W_SORTIE)

   W_COEFF=W_SORTIE<1>
   W_TAUXHOR=W_SORTIE<2>

   IF ENR_CONTRAT<20,k> # "" THEN
      READ ENR_GRILLESCC FROM F.GRILLESCC,ENR_CONTRAT<20,k> ELSE ENR_GRILLESCC=""
      IF ENR_GRILLESCC<5> = "C" THEN
         ENR_CONTRAT<22,k>=W_COEFF
      END
   END
   ENR_CONTRAT<23,k>=W_TAUXHOR
   WRITE ENR_CONTRAT ON F.CONTRAT,W_RequeteContrat<j>

   READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""

   IF W_CodeAbs = "16" THEN
      W_ConvCol = ENR_CONVENTIONCOL<12>
   END ELSE
	IF W_CodeAbs = "15" THEN
		W_ConvCol = ENR_CONVENTIONCOL<42>
	END ELSE
		IF W_CodeAbs = "25" THEN
			W_ConvCol = ENR_CONVENTIONCOL<76>
			IF W_ConvCol="" THEN
				W_ConvCol = ENR_CONVENTIONCOL<2>
			END
		END ELSE
			W_ConvCol = ENR_CONVENTIONCOL<2>
		END
	END
   END

* Didier 06/09/2012 : gestion mensualisation
   IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
      W_Difference=""
      IF W_ConvCol = "2" THEN
		
         IF ENR_CONVENTIONCOL<38>="1" THEN
		
            BEGIN CASE
               CASE ENR_CONTRAT<25,k> = "1"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
               CASE ENR_CONTRAT<25,k> = "2"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>*27/12) + (1/2))
               CASE ENR_CONTRAT<25,k> = "3"
                  W_MoyJour = ENR_CONTRAT<24,k>
               CASE ENR_CONTRAT<25,k> = "4"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/12) + (1/2))
            END CASE
            W_MoyJour=INT(W_MoyJour/W_NbJourOuvrable + (1/2))
         END ELSE
		
            BEGIN CASE
               CASE ENR_CONTRAT<25,k> = "1"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/6) + (1/2))
               CASE ENR_CONTRAT<25,k> = "2"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/12) + (1/2))
               CASE ENR_CONTRAT<25,k> = "3"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>*12/312) + (1/2))
               CASE ENR_CONTRAT<25,k> = "4"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/312) + (1/2))
            END CASE
			
         END
***************

         IF ENR_CONTRAT<23,k> < W_Smic THEN
            W_TXHORAIRE=W_Smic
         END ELSE
            W_TXHORAIRE=ENR_CONTRAT<23,k>
         END
         W_MoyJourMontDiff = INT(((W_MoyJour * W_TXHORAIRE)/1000) + (1/2))

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

*         W_MoyJourMont = INT(((W_MoyJour * ENR_CONTRAT<23,k>)/1000) + (1/2))

         IF W_MoyJourMontDiff >= ENR_CONTRAT<43> THEN
            W_ValeurHor = W_MoyJour
         END ELSE
            W_ValeurHor = W_MoyJour
            W_Difference = ENR_CONTRAT<43> - W_MoyJourMontDiff
*            W_Difference = ENR_CONTRAT<43> - W_MoyJourMont
         END
      END ELSE

         IF ENR_CONVENTIONCOL<38>="1" THEN
		
            BEGIN CASE
               CASE ENR_CONTRAT<25,k> = "1"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
               CASE ENR_CONTRAT<25,k> = "2"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>*27/12) + (1/2))
               CASE ENR_CONTRAT<25,k> = "3"
                  W_MoyJour = ENR_CONTRAT<24,k>
               CASE ENR_CONTRAT<25,k> = "4"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/12) + (1/2))
            END CASE
            W_MoyJour=INT(W_MoyJour/W_NbJourOuvre + (1/2))
         END ELSE
		
            BEGIN CASE
               CASE ENR_CONTRAT<25,k> = "1"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/5) + (1/2))
               CASE ENR_CONTRAT<25,k> = "2"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/10) + (1/2))
               CASE ENR_CONTRAT<25,k> = "3"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>*12/260) + (1/2))
               CASE ENR_CONTRAT<25,k> = "4"
                  W_MoyJour = INT((ENR_CONTRAT<24,k>/260) + (1/2))
            END CASE
         END
         W_Att42 = INT((ENR_CONTRAT<42>*6/5) + (1/2))
         W_Att43 = INT((ENR_CONTRAT<43>*6/5) + (1/2))

*************
         IF ENR_CONTRAT<23,k> < W_Smic THEN
            W_TXHORAIRE=W_Smic
         END ELSE
            W_TXHORAIRE=ENR_CONTRAT<23,k>
         END
         W_MoyJourMontDiff = INT(((W_MoyJour * W_TXHORAIRE)/1000) + (1/2))
**************

*         W_MoyJourMont = INT(((W_MoyJour * ENR_CONTRAT<23,k>)/1000) + (1/2))

         IF W_MoyJourMontDiff >= W_Att43 THEN
            W_ValeurHor = W_MoyJour
         END ELSE
            W_ValeurHor = W_MoyJour
*            W_ValeurHor = W_Att42
            W_Difference = W_Att43 - W_MoyJourMontDiff
*            W_Difference = W_Att43 - W_MoyJourMont
         END
      END
   END ELSE
                * Didier 07/09/2012 : gestion taux horaire et SMIC
                IF ENR_CONTRAT<23,k> < W_Smic THEN
                   W_TXHORAIRE=W_Smic
                END ELSE
                   W_TXHORAIRE=ENR_CONTRAT<23,k>
                END
                * Didier 07/09/2012 : remplacement ENR_CONTRAT<23,k> par W_TXHORAIRE
 		* modif vanessa 03/02/10 - DA 10033-01
		IF ENR_CONTRAT<31> = "0" THEN
			* modif vanessa 17/09/09
			IF ENR_CONTRAT<43> # 0 THEN
				IF W_ConvCol = "2" THEN
*					W_Valeur1 = ENR_CONTRAT<42>*ENR_CONTRAT<23,k>
					W_Valeur1 = ENR_CONTRAT<42>*W_TXHORAIRE
				END ELSE
*					W_Valeur1 = INT((ENR_CONTRAT<42>*6/5) + (1/2))*ENR_CONTRAT<23,k>
					W_Valeur1 = INT((ENR_CONTRAT<42>*6/5) + (1/2))*W_TXHORAIRE
				END
				W_Valeur1=INT((W_Valeur1/1000)+1/2)
				
				IF W_ConvCol = "2" THEN
					W_Valeur2 = ENR_CONTRAT<43>
				END ELSE
					W_Valeur2 = INT((ENR_CONTRAT<43>*6/5) + (1/2))
				END
				
				IF W_Valeur2 > W_Valeur1 THEN
					IF W_ConvCol = "2" THEN
						W_ValeurHor = ENR_CONTRAT<43>
					END ELSE
						W_ValeurHor = INT((ENR_CONTRAT<43>*6/5) + (1/2))
					END
*					W_ValeurHor=((W_ValeurHor*10)/ENR_CONTRAT<23,k>)*100
					W_ValeurHor=((W_ValeurHor*10)/W_TXHORAIRE)*100
					W_ValeurHor=INT(W_ValeurHor+1/2)
				END ELSE
					IF W_ConvCol = "2" THEN
						W_ValeurHor=ENR_CONTRAT<42>
					END ELSE
						W_ValeurHor=INT((ENR_CONTRAT<42>*6/5) + (1/2))
					END
				END
			END ELSE
				W_ValeurHor=(ENR_CONTRAT<46>/ENR_CONTRAT<44>)*100
				W_ValeurHor=INT(W_ValeurHor+1/2)
*				W_ValeurHor=((W_ValeurHor*10)/ENR_CONTRAT<23,k>)*100
				W_ValeurHor=((W_ValeurHor*10)/W_TXHORAIRE)*100
				W_ValeurHor=INT(W_ValeurHor+1/2)
				IF W_ConvCol = "1" THEN
					W_ValeurHor=INT((W_ValeurHor*6/5) + (1/2))
				END
			END
			*fin modif
		END ELSE
			W_ValeurHor=0
		END
   END
	
RETURN

*********************************************************
*  gnre la rubrique 821 (indemnit compensatrice de congs pays)

460
	*PG 30.01.09 ajout de W_JourAbsAidant (correspond au cong dlai prevenance)
	* Modif Greg - 01/04/09 - Erreur variable de cong dlai de prvenance
   W_JourAIndemniser=W_JourAIndemniser+W_JourAIndCA+W_JourAIndCF+W_JourAIndCPrev
   W_MontantIndemComp = INT(((W_JourAIndemniser * W_Difference) / 100)+(1/2))
   W_Cle = W_RequeteContrat<j>:W_Periode
   W_CodeRub = "821"
   
   IF W_MontantIndemComp >= 1 THEN
	   IF ENR_CONTRAT<6> = "A" THEN
		  READ ENR_DETAILADMIN FROM F.DETAILADMIN,W_Cle ELSE 
			 W_Creer = "VRAI"
			 ENR_DETAILADMIN = ""
		  END
		  W_TabDyn=""
		  W_TabDyn = ENR_DETAILADMIN
		  W_Att = 1
		  W_AttAbs = 7
		  W_Indice=0
		  GOSUB 1500
		  IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,4,W_Indice;ENR_DETAILADMIN<4,W_Indice>+W_MontantIndemComp)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,6,W_Indice;ENR_DETAILADMIN<6,W_Indice>+W_JourAbs)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,2,W_Indice;"0")
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")   
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
			 WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
			 W_Creer = "FAUX"
		  END ELSE
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,4,W_Indice;W_MontantIndemComp)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,6,W_Indice;W_JourAbs)
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,2,W_Indice;"0")
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")   
			 ENR_DETAILADMIN = REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
			 WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
			 W_Creer = "FAUX"
		  END
	   END ELSE

		  READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_CONTRAT<36,1> ELSE ENR_ACTIVITES=""
		  BEGIN CASE 
			 CASE ENR_ACTIVITES<12> = "P"
				GOSUB 470
			 CASE ENR_ACTIVITES<12> = "M"
				GOSUB 480
			 CASE ENR_ACTIVITES<12> = "I"
				GOSUB 490
		  END CASE

	   END
   END

RETURN

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

470

   READ ENR_DETAILPREST FROM F.DETAILPREST,W_Cle ELSE 
      W_Creer = "VRAI"
      ENR_DETAILPREST = ""
   END
   W_TabDyn=""
   W_TabDyn = ENR_DETAILPREST
   W_Att = 5
   W_AttAbs = 15
   W_Indice = 0
   GOSUB 1500

   IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,8,W_Indice;ENR_DETAILPREST<8,W_Indice>+W_MontantIndemComp)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,14,W_Indice;ENR_DETAILPREST<14,W_Indice>+W_JourAbs)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,6,W_Indice;"0")
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
      WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
      W_Creer = "FAUX"
   END ELSE
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,8,W_Indice;W_MontantIndemComp)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,14,W_Indice;W_JourAbs)
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,6,W_Indice;"0")
      ENR_DETAILPREST = REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
      WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
      W_Creer = "FAUX"
   END

RETURN

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

480

   READ ENR_DETAILMANDAT FROM F.DETAILMANDAT,W_Cle ELSE 
      W_Creer = "VRAI"
      ENR_DETAILMANDAT = ""
   END
   W_TabDyn=""
   W_TabDyn = ENR_DETAILMANDAT
   W_Att = 1
   W_AttAbs = 7
   W_Indice = 0
   GOSUB 1500
   IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,4,W_Indice;ENR_DETAILMANDAT<4,W_Indice>+W_MontantIndemComp)
	ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,6,W_Indice;ENR_DETAILMANDAT<6,W_Indice>+W_JourAbs)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,2,W_Indice;"0")
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
      WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
      W_Creer = "FAUX"
   END ELSE
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,4,W_Indice;W_MontantIndemComp)
	ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,6,W_Indice;W_JourAbs)
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,2,W_Indice;"0")
      ENR_DETAILMANDAT = REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
      WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
      W_Creer = "FAUX"
   END

RETURN

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

490

   READ ENR_DETAILINTER FROM F.DETAILINTER,W_Cle ELSE 
      W_Creer = "VRAI"
      ENR_DETAILINTER = ""
   END
   W_TabDyn=""
   W_TabDyn = ENR_DETAILINTER
   W_Att = 8
   W_AttAbs = 14
   W_Indice = 0
   GOSUB 1500
   IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,11,W_Indice;ENR_DETAILINTER<11,W_Indice>+W_MontantIndemComp)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,13,W_Indice;ENR_DETAILINTER<13,W_Indice>+W_JourAbs)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,9,W_Indice;"0")
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
      WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
      W_Creer = "FAUX"
   END ELSE
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,11,W_Indice;W_MontantIndemComp)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,13,W_Indice;W_JourAbs)
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,9,W_Indice;"0")
      ENR_DETAILINTER = REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
      WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
      W_Creer = "FAUX"
   END
RETURN

*********************************************************
*  procdure si code absence = "16" (congs anciennet)

500

   W_CleAbsGen = W_CleAbs
   W_JourAbs = 0
   GOSUB 50
   W_JourAbs = W_JourAbs * 100
   
	* modif vanessa 30/03/10 - DA 10080-01
	GOSUB 410
   
   IF W_CAPos < W_JourAbs THEN
      W_JourAIndemniser = W_CAPos
      W_JourRestant = W_JourAbs - W_CAPos
   END ELSE
      W_JourAIndemniser = W_JourAbs
      W_JourRestant=0
   END
   
   W_TabContrat<2,iCont>=W_TabContrat<2,iCont>+W_JourAIndemniser

*   IF W_CongeA # "0" THEN
*      W_Var = W_CAPos - W_CongeA     
*      W_JourRestant=W_JourRestant + (W_JourAIndemniser-W_Var)
*      IF W_JourRestant < 0 THEN
*         W_JourRestant=0
*      END ELSE
*         W_JourAIndemniser= W_Var
*      END
*   END
*   W_CongeA=W_CongeA + W_JourAIndemniser  

   GOSUB 450

   W_NbreHreIndem = (W_JourAIndemniser * W_ValeurHor)/100
   W_NbreHreRestant = (W_JourRestant * W_ValeurHor)/100

   W_JourAbsAidant = W_JourAbsAidant + W_JourRestant 
   W_NbreHreAidant = W_NbreHreAidant + W_NbreHreRestant 
	
RETURN

*********************************************************
*  procdure si code absence = "25" (congs prvenance)

550

   W_CleAbsGen = W_CleAbs
   W_JourAbs = 0
   GOSUB 50
   W_JourAbs = W_JourAbs * 100
   
	* modif vanessa 30/03/10 - DA 10080-01
	GOSUB 410	
	
   IF W_CPrevPos < W_JourAbs THEN
      W_JourAIndemniser = W_CPrevPos
      W_JourRestant = W_JourAbs - W_CPrevPos
   END ELSE
      W_JourAIndemniser = W_JourAbs
      W_JourRestant=0
   END
	
   W_TabContrat<5,iCont>=W_TabContrat<5,iCont>+W_JourAIndemniser
	
   GOSUB 450
	
   W_NbreHreIndem = (W_JourAIndemniser * W_ValeurHor)/100
   W_NbreHreRestant = (W_JourRestant * W_ValeurHor)/100
	
   W_JourAbsAidant = W_JourAbsAidant + W_JourRestant 
   W_NbreHreAidant = W_NbreHreAidant + W_NbreHreRestant 
	
RETURN

*********************************************************
*  procdure si code absence = "02" ou "03" (maternit mi-temps thrapeutique)

600

   GOSUB 160

* Didier 06/09/2012 : gestion mensualisation
   IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
      W_CleAbsGen = W_CleAbs
      W_JourAbs = 0
      GOSUB 50

      W_JourRestant = W_JourAbs * 100

      GOSUB 650

      W_NbreHreRestant = INT(((W_JourRestant * W_ValeurHor)/100) + (1/2))

      IF W_CodeAbs = "03" THEN
         W_NbreHreRestant = INT((W_NbreHreRestant /2) + (1/2))
      END
      W_JourAbsAidant = W_JourAbsAidant + W_JourRestant
      W_NbreHreAidant = W_NbreHreAidant + W_NbreHreRestant 
   END

RETURN 

*********************************************************
*  Recherche de la valeur horaire en calendaire

650

   BEGIN CASE
      CASE ENR_CONTRAT<25,k> = "1"
         W_ValeurHor = INT((ENR_CONTRAT<24,k>/7) + (1/2))
      CASE ENR_CONTRAT<25,k> = "2"
         W_ValeurHor = INT((ENR_CONTRAT<24,k>/14) + (1/2))
      CASE ENR_CONTRAT<25,k> = "3"
         W_ValeurHor = INT((ENR_CONTRAT<24,k>/30) + (1/2))
      CASE ENR_CONTRAT<25,k> = "4"
         W_ValeurHor = INT((ENR_CONTRAT<24,k>/360) + (1/2))
   END CASE

RETURN

*********************************************************
*  procdure si code absence = "04"  "06" (accident travail, trajet, maladie prof.)
*  et "01" (maladie)

700

   ENR_DETAILINDEM=""
   W_TotalMont = 0
   W_TotalMont1 = 0
   W_TotalMont2 = 0
   W_SauveJourCouv1=0
   W_SauveJourCouv2=0
   W_SauveJourCouv3=0

   * recherche le nombre de jours d'absences sur la priode
   W_CleAbsGen = W_CleAbs
   W_JourAbs = 0
   GOSUB 50

   GOSUB 160

   W_Mois = W_Periode[5,2]
   W_An = W_Periode[1,4]
   W_DatDebPeriode = 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_DatFinPeriode = ICONV("01/":W_Mois:"/":W_An,"D4/")-1
   W_DatDebAbs = W_CleAbs[8,5]
   W_DatFinAbs = ENR_ABSENCESAIDANT<2>

	IF W_CleAbs[6,2]="04" OR W_CleAbs[6,2]="05" THEN
		IF W_DatDebAbs <= W_DatFinPeriode AND W_DatDebAbs >= W_DatDebPeriode THEN
		    * modif vanessa 08/11/12 DA 12092
			IF W_CleAbs[6,2]="04" AND ENR_ABSENCESAIDANT<36>= "1" THEN
				* si acc de travail et rechute coche dans l'absence alors indemnisation ds le 1er jour
			END ELSE
				* Le jour de l'accident est  la charge de l'employeur.
				W_JourAbs = W_JourAbs - 1
			END
		END 
	END

   * recherche la valeur horaire pour passer en heures d'absence
   * Didier 06/09/2012 : gestion mensualisation
   IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
      GOSUB 650
      W_JourRestant = W_JourAbs*100
      W_NbreHreRestant = (W_JourRestant * W_ValeurHor)/100
      W_JourAbsAidant = W_JourAbsAidant + W_JourRestant 
      W_NbreHreAidant = W_NbreHreAidant + W_NbreHreRestant 
   END

   * recherche le nombre de jours d'absence de l'arrt bloqu  la fin de priode
   IF W_DatFinAbs < W_DatFinPeriode THEN
      W_JourAbsArret = W_DatFinAbs - W_DatDebAbs + 1
   END ELSE
      W_JourAbsArret = W_DatFinPeriode - W_DatDebAbs + 1
   END

   * calcul le nombre de jour d'absence sur la priode antrieure
   W_JourAbsPeriodeAnt = W_DatDebPeriode - W_DatDebAbs
   IF W_JourAbsPeriodeAnt < 0 THEN
      W_JourAbsPeriodeAnt = 0
   END  

   IF W_CodeAbs = "01" THEN
      IF W_JourAbsPeriodeAnt < ENR_CONTRATSPREV<18> THEN
         IF W_JourAbs + W_JourAbsPeriodeAnt - ENR_CONTRATSPREV<18> <= 0 THEN
*         IF W_JourAbs - ENR_CONTRATSPREV<18> < 0 THEN
            RETURN
         END
      END
   END

   * recherche la date de dbut d'anciennet du contrat
   l = 1
   LOOP
   UNTIL ENR_ABSENCESAIDANT<13,l> = W_CodAssoc OR ENR_ABSENCESAIDANT<13,l> = "" DO
      l=l+1
   REPEAT

   * recherche l'anciennet de l'aidant
   * modif vanessa 16/07/10 - calcul de l'anciennet des droits prvoyance, rajoute la recherche sur att 97 de CONTRAT (date de dpart anciennet)
	IF ENR_ABSENCESAIDANT<27,l> # "" AND ENR_ABSENCESAIDANT<27,l> # "0" THEN
		* modif vanessa 13/12/10 - DA 10158-01
		* modif vanessa 14/02/13 - da 13017
		IF INT(ENR_CONTRAT<7>) < INT(ENR_ABSENCESAIDANT<27,l>) THEN
			W_AncienneteMois = (W_DatDebAbs - ENR_CONTRAT<7>)/30		
		END ELSE
			W_AncienneteMois = (W_DatDebAbs - ENR_ABSENCESAIDANT<27,l>)/30
		END
	END ELSE
		IF ENR_CONTRAT<97># "" THEN
			IF INT(ENR_CONTRAT<7>) < INT(ENR_CONTRAT<97>) THEN
				W_AncienneteMois = (W_DatDebAbs - ENR_CONTRAT<7>)/30	
			END ELSE
				W_AncienneteMois = (W_DatDebAbs - ENR_CONTRAT<97>)/30
			END
		END ELSE
			W_AncienneteMois = (W_DatDebAbs - ENR_CONTRAT<7>)/30
		END
	END
   W_AncienneteAnnee = W_AncienneteMois/12
   W_AncienneteAnnee = INT(W_AncienneteAnnee * 10 ) / 10

   * recherche le nombre de jours  indemniser sur la periode
   IF W_CodeAbs = "01" THEN
 		* MODIF VANESSA 22/12/09 - Pas de carence si moins de 6 mois d'anciennet et CCN 01
		IF ENR_CONTRAT<1> = "01" AND INT(W_AncienneteAnnee*100) < 50 THEN
			* MODIF VANESSA 07/01/10
			* W_NbreJourAIndemniser = W_JourAbs - W_JourAbsPeriodeAnt
			W_NbreJourAIndemniser = W_JourAbs			
		END ELSE  
			IF W_JourAbsPeriodeAnt < ENR_CONTRATSPREV<18> THEN
				W_NbreJourAIndemniser = W_JourAbs - (ENR_CONTRATSPREV<18> - W_JourAbsPeriodeAnt)
			END ELSE
				W_NbreJourAIndemniser = W_JourAbs
			END
		END
   END ELSE
      W_NbreJourAIndemniser = W_JourAbs
   END

   IF ENR_CONTRAT<29> # "" THEN
   * CALCUL DU COMPLEMENT MALADIE QUE SI LE CONTRAT DE PREVOYANCE EST RENSEIGNE DANS LE CONTRAT

   FOR z = 1 TO 2
   	W_TotalMont = 0

      IF z = 2 THEN
         READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,"99" ELSE ENR_CONTRATSPREV="" 
			
         h=1
         LOOP 
         UNTIL ENR_CONTRATSPREV<22,h>=ENR_CONTRAT<1> OR ENR_CONTRATSPREV<22,h>=""
            h=h+1
         REPEAT
			
         IF ENR_CONTRATSPREV<22,h>="" THEN
            EXIT 
         END 
			
      END
      W_JourCouv1 = 0
      W_JourCouv2 = 0
      W_JourCouv3 = 0
	  
		* modif vanessa 27/01/12 - si les contrats avec ccn 01 ou 06 et arret travail avant le 01/01/12, prendre les anciens paramtrages de prvoyance
		IF z = 1 THEN
                        * Didier 05/07/2012 : suite passage de CCN 08  01 pour BEAUVAIS, alors exclusion dpartement 60
			IF W_CleAbs[8,5] < ICONV("01/01/2012","D4/") AND (ENR_CONTRAT<1>="01" OR ENR_CONTRAT<1>="06") AND ENR_ASSOCIATION<8>[1,2]#"60" THEN
				ENR_CONTRATSPREV<27,2> = "100"
				ENR_CONTRATSPREV<23> = "2"
				* Nb : pas de WRITE sur CONTRATSPREV !!! 
			END	
		END
		
	  * MODIF VANESSA 30/09/09 - DA9145-01
      IF ENR_CONTRAT<1> = "01" AND INT(W_AncienneteAnnee*100) < 50 THEN
		IF W_DatDebAbs < W_DatDebPeriode THEN
			* modif vanessa 22/12/09 - Pas de carence si moins de 6 mois d'anciennet et CCN 01
			W_DatDebAbsCarence=W_DatDebAbs
			*W_DatDebAbsCarence=W_DatDebAbs+ENR_CONTRATSPREV<18>
			W_JourCouv1=((W_DatDebPeriode-1)-W_DatDebAbsCarence)+1
			IF W_JourCouv1 > ENR_CONTRATSPREV<26,1> THEN
				W_JourCouv2=W_JourCouv1-ENR_CONTRATSPREV<26,1>
				W_JourCouv1=ENR_CONTRATSPREV<26,1>
			END
			IF z=2 AND W_JourCouv1 # 0 THEN
				W_JourCouv1=W_JourCouv1+W_JourCouv1IJSS1+W_JourCouv1IJSS2
				W_JourCouv2=W_JourCouv2+W_JourCouv2IJSS1+W_JourCouv2IJSS1
			END
		END ELSE
			IF z=2 THEN
				W_JourCouv1=W_JourCouv1+W_JourCouv1IJSS1+W_JourCouv1IJSS2
				W_JourCouv2=W_JourCouv2+W_JourCouv2IJSS1+W_JourCouv2IJSS1
			END		
		END
	  END ELSE
	      READ ENR_HISTORINDEM FROM F.HISTORINDEM,W_RequeteContrat<j> THEN
	         * compte sur les 12 mois prcdents l'arrt le nbre de jour indemniss pour chaque couverture
			 W_DateDebutAbsence=OCONV(W_DatDebAbs,"D4/")
			 W_An = W_DateDebutAbsence[7,4]
			 W_Mois = W_DateDebutAbsence[4,2]			 
	         W_An = W_An - 1 
	         l=1

	         LOOP
	         UNTIL ENR_HISTORINDEM<1,l> < W_An:W_Mois OR ENR_HISTORINDEM<1,l> = "" DO
	            W_JourCouv1 = W_JourCouv1 + ENR_HISTORINDEM<2,l>
	            W_JourCouv2 = W_JourCouv2 + ENR_HISTORINDEM<3,l>
	            W_JourCouv3 = W_JourCouv3 + ENR_HISTORINDEM<4,l>
	            l=l+1
	         REPEAT
	      END
	  END

      * recherche la tranche des couvertures dans CONTRATSPREV
      m = 1
      LOOP
      UNTIL INT(W_AncienneteAnnee*100) >= INT(ENR_CONTRATSPREV<24,m>) AND INT(W_AncienneteAnnee*100) < INT(ENR_CONTRATSPREV<25,m>) OR ENR_CONTRATSPREV<24,m> = "" DO
         m=m+1
      REPEAT

      W_JourPosCouv1 = 0
      W_JourPosCouv2 = 0
      W_JourPosCouv3 = 0

      * recherche droit  consommer pour chaque couverture
      IF z=2 THEN

		* MODIF VANESSA 30/09/09 - DA9145-01
		*IF ENR_CONTRATSPREV<27,m> # 0 THEN
			W_JourPosCouv1 = ENR_CONTRATSPREV<26,m> - W_JourCouv1
		*END
		*IF ENR_CONTRATSPREV<29,m> # 0 THEN
			W_JourPosCouv2 = ENR_CONTRATSPREV<28,m> - W_JourCouv2
		*END
		*IF ENR_CONTRATSPREV<31,m> # 0 THEN
			W_JourPosCouv3 = ENR_CONTRATSPREV<30,m> - W_JourCouv3
		*END

      END ELSE
         W_JourPosCouv1 = ENR_CONTRATSPREV<26,m> - W_JourCouv1
         W_JourPosCouv2 = ENR_CONTRATSPREV<28,m> - W_JourCouv2
         W_JourPosCouv3 = ENR_CONTRATSPREV<30,m> - W_JourCouv3
      END

      IF W_JourPosCouv1 < 0 THEN
	   W_JourPosCouv1=0
      END
      IF W_JourPosCouv2 < 0 THEN
	   W_JourPosCouv2=0
      END
      IF W_JourPosCouv3 < 0 THEN
	   W_JourPosCouv3=0
      END
	  
      * recherche le salaire de rfrence journalier
      l = 1
      LOOP
      UNTIL ENR_ABSENCESAIDANT<13,l> = W_CodAssoc OR ENR_ABSENCESAIDANT<13,l> = "" DO
         l=l+1
      REPEAT
      W_SalRefBrut = ENR_ABSENCESAIDANT<14,l>
	  * modif vanessa 21/05/13 - DA 13053
	  
	  * modif vanessa 27/01/14 - DA 14002 - si date de dbut abs >= 01/01/14
	  IF W_DatDebAbs >= "16803" THEN
		W_SalRef = INT(((ENR_ABSENCESAIDANT<14,l>/30.42)*100) + (1/2))	  
	  END ELSE
		W_SalRef = INT(((ENR_ABSENCESAIDANT<14,l>/30)*100) + (1/2))
	  END
	  
      * rpartit le nombre de jour dans les # couvertures
      IF W_JourPosCouv1 >= W_NbreJourAIndemniser THEN
         W_JourCouv1 = W_NbreJourAIndemniser
         W_JourCouv2 = 0
         W_JourCouv3 = 0
      END ELSE

         W_JourCouv1 = W_JourPosCouv1

         W_Diff = W_NbreJourAIndemniser - W_JourCouv1
         IF W_JourPosCouv2 >= W_Diff THEN
            W_JourCouv2 = W_Diff
            W_JourCouv3 = 0
         END ELSE
            W_JourCouv2 = W_JourPosCouv2
            W_Diff = W_NbreJourAIndemniser - W_JourCouv1 - W_JourCouv2
            IF W_JourPosCouv3 >= W_Diff THEN
               W_JourCouv3 = W_Diff
            END ELSE
               W_JourCouv3 = W_JourPosCouv3
            END
         END
      END

      IF W_CodeAbs = "01" THEN
         GOSUB 720
      END ELSE
         GOSUB 710
      END

      IF z=2 THEN
         W_NbreJourIJSS1 = W_NbreJourIJSS1 - (W_JourCouv1IJSS1 + W_JourCouv2IJSS1 + W_JourCouv3IJSS1)
         W_NbreJourIJSS2 = W_NbreJourIJSS2 - (W_JourCouv1IJSS2 + W_JourCouv2IJSS2 + W_JourCouv3IJSS2)
      END

      * remise  zro des variables
      W_JourCouv1IJSS1 = 0
      W_JourCouv2IJSS1 = 0
      W_JourCouv3IJSS1 = 0
      W_JourCouv1IJSS2 = 0
      W_JourCouv2IJSS2 = 0
      W_JourCouv3IJSS2 = 0
      * rpartit le nombre de jours IJSS 1 et 2 dans les diffrentes couvertures prvoyance

      IF W_JourCouv1 >= W_NbreJourIJSS1 THEN
         W_JourCouv1IJSS1 = W_NbreJourIJSS1 
         W_Couv1Pos = W_JourCouv1 - W_NbreJourIJSS1
         IF W_Couv1Pos >= W_NbreJourIJSS2 THEN
            W_JourCouv1IJSS2 = W_NbreJourIJSS2
         END ELSE
            W_JourCouv1IJSS2 = W_Couv1Pos
            W_Reste = W_NbreJourIJSS2 - W_Couv1Pos
            IF W_Reste <= W_JourCouv2 THEN
               W_JourCouv2IJSS2 = W_Reste
            END ELSE
               W_JourCouv2IJSS2 = W_JourCouv2
               W_Diff = W_Reste - W_JourCouv2
               IF W_Diff <= W_JourCouv3 THEN
                  W_JourCouv3IJSS2 = W_Diff
               END ELSE
                  W_JourCouv3IJSS2 = W_JourCouv3
               END
            END
         END
      END ELSE

         W_JourCouv1IJSS1 = W_JourCouv1
         W_Reste = W_NbreJourIJSS1 - W_JourCouv1
         IF W_Reste <= W_JourCouv2 THEN
            W_JourCouv2IJSS1 = W_Reste
            W_Couv2Pos = W_JourCouv2 - W_JourCouv2IJSS1
            IF W_NbreJourIJSS2 <= W_Couv2Pos THEN
               W_JourCouv2IJSS2 = W_NbreJourIJSS2
            END ELSE
               W_JourCouv2IJSS2 = W_Couv2Pos
               W_Reste = W_NbreJourIJSS2 - W_JourCouv2IJSS2
               IF W_Reste <= W_JourCouv3 THEN
                  W_JourCouv3IJSS2 = W_Reste
               END ELSE
                  W_JourCouv3IJSS2 = W_JourCouv3
               END
            END
         END ELSE
            W_JourCouv2IJSS1 = W_JourCouv2
            W_Diff = W_Reste - W_JourCouv2
            IF W_Diff <= W_JourCouv3 THEN
               W_JourCouv3IJSS1 = W_Diff
            END ELSE
               W_JourCouv3IJSS1 = W_JourCouv3
            END
         END
      END    

      W_SauveJourCouv1=W_JourCouv1IJSS1 + W_JourCouv1IJSS2
      W_SauveJourCouv2=W_JourCouv2IJSS1 + W_JourCouv2IJSS2
      W_SauveJourCouv3=W_JourCouv3IJSS1 + W_JourCouv3IJSS2

      * rajuste le nombre de jour IJSS1 selon la carence
      IF W_CodeAbs = "01" THEN
         IF ENR_CONTRATSPREV<18> < 3 THEN
            IF W_JourAbsArret - W_JourAbs < 3 THEN
   *            IF W_JourCouv1IJSS1 # 0 THEN
                  W_Sauv1IJSS1 = W_JourCouv1IJSS1
                  W_JourCouv1IJSS1 = W_JourCouv1IJSS1 - (3-(W_JourAbsArret - W_JourAbs))
                  W_CarenceIJSS = 3 - W_Sauv1IJSS1
                  IF W_JourCouv1IJSS1 < 0 THEN
                     W_JourCouv1IJSS1 = 0
                     IF W_CarenceIJSS > 0 AND W_JourCouv2IJSS1 # 0 THEN
                        W_Sauv2IJSS1 = W_JourCouv2IJSS1
                        W_JourCouv2IJSS1 = W_JourCouv2IJSS1 - (W_CarenceIJSS - (W_JourAbsArret - W_JourAbs))
                        W_CarenceIJSS = W_CarenceIJSS - W_Sauv2IJSS1
                        IF W_JourCouv2IJSS1 < 0 THEN
                           W_JourCouv2IJSS1 = 0
                           IF W_CarenceIJSS > 0 AND W_JourCouv3IJSS1 # 0 THEN
                              W_JourCouv3IJSS1 = W_JourCouv3IJSS1 - (W_CarenceIJSS - (W_JourAbsArret - W_JourAbs))
                              IF W_JourCouv3IJSS1 < 0 THEN
                                 W_JourCouv3IJSS1 = 0
                              END
                           END
                        END
                     END
                  END
   *            END
            END
         END
      END

      * calculer montant IJSS
      IF ENR_ABSENCESAIDANT<20,l>="" OR ENR_ABSENCESAIDANT<20,l>=0 THEN
         IF W_CodeAbs = "01" THEN
            W_MontantIJSS1 = INT((W_SalRef * TauxIJSS1 / 100) + (1/2))
            W_MontantIJSS2 = INT((W_SalRef * TauxIJSS2 / 100) + (1/2))
         END ELSE
            W_MontantIJSS1 = INT((W_SalRef * 60 / 100) + (1/2))
            W_MontantIJSS2 = INT((W_SalRef * 80 / 100) + (1/2))
         END
      END ELSE
         IF W_CodeAbs = "01" THEN
			IF TauxIJSS1 = 50 THEN
	            	W_MontantIJSS1 = ENR_ABSENCESAIDANT<20,l>
	            	W_MontantIJSS2 = INT(((ENR_ABSENCESAIDANT<20,l> * TauxIJSS2) / TauxIJSS1) + (1/2))
			END ELSE
				W_MontantIJSS1 = INT(ENR_ABSENCESAIDANT<20,l>/50 * TauxIJSS1 + 1/2)
	            	W_MontantIJSS2 = INT(((ENR_ABSENCESAIDANT<20,l> * TauxIJSS2) / 50) + (1/2))
			END
         END ELSE
            W_MontantIJSS1 = ENR_ABSENCESAIDANT<20,l>
            W_MontantIJSS2 = INT(((ENR_ABSENCESAIDANT<20,l> * 0.80) / 0.60) + (1/2))
         END
      END
	
      * remplit un tableau dynamique avec les # variables
	  
	  * MODIF VANESSA 22/12/09 - dduit carence si moins de 6 mois d'anciennet et CCN 01
      IF W_CodeAbs = "01" AND ENR_CONTRAT<1> = "01" AND INT(W_AncienneteAnnee*100) < 50 THEN
		IF W_JourAbsPeriodeAnt < ENR_CONTRATSPREV<18> THEN
			W_SauveJourCouv1IJSS1=W_JourCouv1IJSS1-(ENR_CONTRATSPREV<18> - W_JourAbsPeriodeAnt)
		END ELSE
			W_SauveJourCouv1IJSS1=W_JourCouv1IJSS1
		END
	  END ELSE
			W_SauveJourCouv1IJSS1=W_JourCouv1IJSS1
	  END
	  IF W_SauveJourCouv1IJSS1<0 THEN
		W_SauveJourCouv1IJSS1=0
	  END
	  
	  W_TabVar = REPLACE(W_TabVar,1;W_SauveJourCouv1IJSS1)
      W_TabVar = REPLACE(W_TabVar,2;W_JourCouv2IJSS1)
      W_TabVar = REPLACE(W_TabVar,3;W_JourCouv3IJSS1)
      W_TabVar = REPLACE(W_TabVar,4;W_JourCouv1IJSS2)
      W_TabVar = REPLACE(W_TabVar,5;W_JourCouv2IJSS2)
      W_TabVar = REPLACE(W_TabVar,6;W_JourCouv3IJSS2)

      IF ENR_CONTRATSPREV<40>="1" THEN
         * remplit le fichier DETAILINDEM
         GOSUB 730
      END
	  
      * remplit le fichier HISTORINDEM
      READ ENR_HISTORINDEM FROM F.HISTORINDEM,W_RequeteContrat<j> THEN
         W_Count = DCOUNT(ENR_HISTORINDEM<1>,CHAR(253))
		 
		* MODIF VANESSA 30/09/09 - DA9145-01
		IF ENR_CONTRAT<1> = "01" AND INT(W_AncienneteAnnee*100) < 50 AND W_SauveJourCouv1 # 0 THEN
			W_SauveJourCouv1=0
		END
		
         W_Trouve = "FAUX"
         FOR l = 1 TO W_Count
            IF W_Periode = ENR_HISTORINDEM<1,l> THEN
               ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,2,l;ENR_HISTORINDEM<2,l>+W_SauveJourCouv1)
               ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,3,l;ENR_HISTORINDEM<3,l>+W_SauveJourCouv2)
               ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,4,l;ENR_HISTORINDEM<4,l>+W_SauveJourCouv3)
               W_Trouve = "VRAI"
               EXIT
            END
         NEXT l

         IF W_Trouve = "FAUX" THEN
            FOR l = 1 TO W_Count
               IF ENR_HISTORINDEM<1,l> > W_Periode AND W_Periode > ENR_HISTORINDEM<1,l+1> THEN
                  ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,1,l+1;W_Periode)
                  ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,2,l+1;W_SauveJourCouv1)
                  ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,3,l+1;W_SauveJourCouv2)
                  ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,4,l+1;W_SauveJourCouv3)
                  W_Trouve = "VRAI"
                  EXIT
               END
            NEXT l
         END
         IF W_Trouve = "FAUX" THEN
            ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,1,1;W_Periode)
            ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,2,1;W_SauveJourCouv1)
            ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,3,1;W_SauveJourCouv2)
            ENR_HISTORINDEM = INSERT(ENR_HISTORINDEM,4,1;W_SauveJourCouv3)
         END

      END ELSE
		* MODIF VANESSA 30/09/09 - DA9145-01
		IF ENR_CONTRAT<1> = "01" AND INT(W_AncienneteAnnee*100) < 50 AND W_SauveJourCouv1 # 0 THEN
			W_SauveJourCouv1=0
		END	  
	  
         ENR_HISTORINDEM = ""
         ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,1,1;W_Periode)
         ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,2,1;W_SauveJourCouv1)
         ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,3,1;W_SauveJourCouv2)
         ENR_HISTORINDEM = REPLACE(ENR_HISTORINDEM,4,1;W_SauveJourCouv3)
      END
      WRITE ENR_HISTORINDEM ON F.HISTORINDEM,W_RequeteContrat<j>
	
      IF W_CodeAbs = "01" THEN
	   	* MODIF VANESSA 22/12/09 - Pas de carence si moins de 6 mois d'anciennet et CCN 01
		*IF ENR_CONTRAT<1> = "01" AND INT(W_AncienneteAnnee*100) < 50 THEN
		*	W_NbreJourAIndemniser = W_JourAbs-ENR_DETAILINDEM<6>
		*END ELSE
			IF W_JourAbsPeriodeAnt < ENR_CONTRATSPREV<18> THEN
				W_NbreJourAIndemniser = (W_JourAbs - (ENR_CONTRATSPREV<18> - W_JourAbsPeriodeAnt))-ENR_DETAILINDEM<6>
			END ELSE
				W_NbreJourAIndemniser = W_JourAbs-ENR_DETAILINDEM<6>
			END
		*END
      END ELSE
         W_NbreJourAIndemniser = W_JourAbs-ENR_DETAILINDEM<6>
      END

      	IF z=1 THEN
			W_TotalMont1=W_TotalMont
      	END ELSE
			W_TotalMont2=W_TotalMont
      	END
		
   NEXT z
   END

RETURN

*********************************************************
*  dtermine le nombre de jours sur la priode avec IJSS  60 et 80 %

710

   W_Mois = W_Periode[5,2]
   W_An = W_Periode[1,4]
   W_DatDebPeriode = 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_DatFinPeriode = ICONV("01/":W_Mois:"/":W_An,"D4/")-1

   IF W_DatFinPeriode > ENR_ABSENCESAIDANT<2> THEN
      W_Temp = ENR_ABSENCESAIDANT<2> - W_DatDebAbs + 1
   END ELSE
      W_Temp = W_DatFinPeriode - W_DatDebAbs + 1
   END

   * Didier 28/05/2013 : DA13061 --> remplacer 28 par 29 sauf si accident du travail et rechute
   * Donc gestion variable W_LIMITEJRS
   W_LIMITEJRS=28
   IF W_CodeAbs="04" AND ENR_ABSENCESAIDANT<36> # "1" THEN W_LIMITEJRS=29
	   
   IF W_Temp > W_LIMITEJRS THEN
      W_NbreJourIJSS60 = W_LIMITEJRS
      W_NbreJourIJSS80 = W_Temp - W_LIMITEJRS
   END ELSE
      W_NbreJourIJSS60 = W_Temp
      W_NbreJourIJSS80 = 0
   END

   IF W_DatDebAbs < W_DatDebPeriode THEN
      W_Diff = W_DatDebPeriode - W_DatDebAbs 

      IF W_Diff >= W_NbreJourIJSS60 THEN
         W_NbreJourIJSS60 = 0
         W_NbreJourIJSS80 = W_NbreJourIJSS80 - (W_Diff - W_LIMITEJRS)
      END ELSE
         W_NbreJourIJSS60 = W_LIMITEJRS - W_Diff
      END
   END

*   IF W_DatFinPeriode - W_DatDebPeriode + 1 < W_NbreJourIJSS80 THEN
*      W_NbreJourIJSS80 = W_DatFinPeriode - W_DatDebPeriode + 1
*   END ELSE
*      IF W_DatFinPeriode < ENR_ABSENCESAIDANT<2> THEN
*         IF W_Diff <= W_NbreJourIJSS60 THEN
*            W_NbreJourIJSS60 = W_Diff
*            W_NbreJourIJSS80 = 0
*         END ELSE
*            W_NbreJourIJSS80 = (W_DatFinPeriode - W_DatDebAbs + 1) - 28
*         END
*      END
*   END

   W_NbreJourIJSS1 = W_NbreJourIJSS60
   W_NbreJourIJSS2 = W_NbreJourIJSS80

RETURN

*********************************************************
*  dtermine le nombre de jours sur la priode avec IJSS  50 et 66 %

720

      W_Aidant = W_CleAbs[1,5]
      READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_Aidant ELSE ENR_CIVILAIDANT=""
      W_Count = DCOUNT(ENR_CIVILAIDANT<25>,CHAR(253))
      W_Enfant = 0
      FOR s = 1 TO W_Count
         IF ENR_CIVILAIDANT<25,s> = "1" THEN
            W_DateDebArret = OCONV(W_DatDebAbs,"D4/")
            W_DateNais = OCONV(ENR_CIVILAIDANT<24,s>,"D4/")
            W_AnneeFaite = W_DateDebArret[7,4] - W_DateNais[7,4]
            W_MoisFait = W_DateDebArret[4,2] - W_DateNais[4,2]
            W_JourFait = W_DateDebArret[1,2] - W_DateNais[1,2]
            IF W_JourFait < 0 THEN
               W_MoisFait = W_MoisFait - 1
            END
            IF W_MoisFait < 0 THEN
               W_AnneeFaite = W_AnneeFaite - 1
            END
            IF W_AnneeFaite < 26 THEN
               W_Enfant = W_Enfant + 1
            END
         END
      NEXT s 

      W_DatDebIJSSMaj = W_DatDebAbs + 180
      IF W_Enfant >= 3 THEN
         W_DatDebIJSS66 = W_DatDebAbs + 30
         IF W_DatDebIJSS66 < W_DatDebPeriode THEN
            W_NbreJourIJSS50 = 0
            W_NbreJourIJSS66 = W_JourAbs
         END ELSE
            IF W_DatDebIJSS66 > W_DatFinPeriode THEN
               W_NbreJourIJSS50 = W_JourAbs
               W_NbreJourIJSS66 = 0
            END ELSE
               W_NbreJourIJSS50 = 30 - W_JourAbsPeriodeAnt
               W_NbreJourIJSS66 = W_JourAbs - W_NbreJourIJSS50
            END
         END
	   IF W_NbreJourIJSS50 # 0 THEN
		* S'il y a des jourts  50 %, c'est que l'on est moins d'un mois aprs le dbut de l'arrt...
		* Donc largement avant les 7 mois...
		TauxIJSS1 = 50
		TauxIJSS2 = 66.66
	   END ELSE
		TauxIJSS1 = 66.66
* Didier - 24/03/2011 - suppression majoration
*		TauxIJSS2 = 68.66
		TauxIJSS2 = 66.66
		IF W_DatDebIJSSMaj <= W_DatDebPeriode THEN
			* Tous les jours  indemniser sont bien en IJSS 2
		END ELSE
			W_NbreJourIJSS50 = W_DatDebIJSSMaj - W_DatDebPeriode
	            W_NbreJourIJSS66 = W_JourAbs - W_NbreJourIJSS50
			IF W_NbreJourIJSS66 < 0 THEN
				W_NbreJourIJSS66 = 0
				W_NbreJourIJSS50 = W_JourAbs
			END
		END
	   END
      END ELSE
	   TauxIJSS1 = 50
* Didier - 24/03/2011 - suppression majoration
*	   TauxIJSS2 = 51.49
	   TauxIJSS2 = 50.00
	   IF W_DatDebIJSSMaj <= W_DatDebPeriode THEN
		   W_NbreJourIJSS50 = 0
      	   W_NbreJourIJSS66 = W_JourAbs	
	   END ELSE
	         IF W_DatDebIJSSMaj <= W_DatFinPeriode THEN
			W_NbreJourIJSS50 = W_DatDebIJSSMaj - W_DatDebPeriode
	      	W_NbreJourIJSS66 = W_JourAbs - W_NbreJourIJSS50
			IF W_NbreJourIJSS66 < 0 THEN
				W_NbreJourIJSS66 = 0
				W_NbreJourIJSS50 = W_JourAbs
			END
		   END ELSE
			W_NbreJourIJSS50 = W_JourAbs
	      	W_NbreJourIJSS66 = 0
		   END		   
	   END
      END

   W_NbreJourIJSS1 = W_NbreJourIJSS50
   W_NbreJourIJSS2 = W_NbreJourIJSS66

   RETURN

********************************************************************
*  Mise  jour fichiers DETAILINDEM

730

	W_Count = DCOUNT(ENR_DETAILINDEM<1>,CHAR(253))
	
	READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
	W_CleDetailIndem=W_RequeteContrat<j>:W_Periode:W_CodeAbs:W_DatDebAbs
	READ ENR_DETAILINDEM FROM F.DETAILINDEM,W_CleDetailIndem ELSE ENR_DETAILINDEM=""
	
	FOR l = 1 TO 6
		IF z = 2 AND (l=1 OR l=4) THEN
			* rien
		END ELSE      
			IF W_TabVar<l> > 0 THEN
				W_Count = W_Count + 1
				IF l <= 3 THEN
				
					IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
						W_Euro = W_MontantIJSS1 / (ENR_CONSTANTESPAIE<7>/100000)
						W_Euro = INT(W_Euro + (1/2))
						ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,1,W_Count;W_Euro) 
					END ELSE
						ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,1,W_Count;W_MontantIJSS1) 
					END
					
					W_Temp = W_TabVar<1> + W_TabVar<2> + W_TabVar<3> 
				END ELSE
				
					IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
						W_Euro = W_MontantIJSS2 / (ENR_CONSTANTESPAIE<7>/100000)
						W_Euro = INT(W_Euro + (1/2))
						ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,1,W_Count;W_Euro) 
					END ELSE
						ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,1,W_Count;W_MontantIJSS2) 
					END
					
					W_Temp = W_TabVar<4> + W_TabVar<5> + W_TabVar<6>  
				END
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,2,W_Count;W_Temp) 
				BEGIN CASE
					CASE l = 1 OR l = 4
						ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,3,W_Count;ENR_CONTRATSPREV<27,m>)
					CASE l = 2 OR l = 5
						ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,3,W_Count;ENR_CONTRATSPREV<29,m>)
					CASE l = 3 OR l = 6
						ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,3,W_Count;ENR_CONTRATSPREV<31,m>)
				END CASE
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,4,W_Count;W_TabVar<l>) 
				IF ENR_CONTRATSPREV<23> = "1" THEN
					IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
						* PLUS UTILISE CAR PLUS D'ABS QUI DATE D'AVANT LE PASSAGE A L'EURO
						* modif vanessa 13/02/13 - DA 13016 - arrondi
						W_MontantTemp=W_SalRef * ENR_DETAILINDEM<3,W_Count>/100
						W_MontantTemp=INT(W_MontantTemp + (1/2))
						IF l<=3 THEN
							W_MontantTemp = W_MontantTemp - W_MontantIJSS1
						END ELSE
							W_MontantTemp = W_MontantTemp - W_MontantIJSS2
						END
						W_Montant=W_MontantTemp * ENR_DETAILINDEM<4,W_Count>
					END ELSE
						* modif vanessa 13/02/13 - DA 13016 - arrondi
						W_MontantTemp=W_SalRef * ENR_DETAILINDEM<3,W_Count>/100
						W_MontantTemp=INT(W_MontantTemp + (1/2))	
						* modif vanessa 22/05/13 - DA 13053
						W_MontantTemp = W_MontantTemp - (ENR_DETAILINDEM<1,W_Count>*100)
						* modif vanessa 22/05/13 - DA 13053
						W_MontantTemp=W_MontantTemp/100
						W_MontantTemp=INT(W_MontantTemp+(1/2))	
						W_Montant = W_MontantTemp * ENR_DETAILINDEM<4,W_Count>
						
					END
					IF W_Montant < 0 THEN
						W_Montant = 0
					END
				END ELSE
				
					W_SalRefNet = INT(((W_SalRef * (100 - (ENR_CONTRATSPREV<38>/1000)))/100) + (1/2))
					IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
						* PLUS UTILISE CAR PLUS D'ABS QUI DATE D'AVANT LE PASSAGE A L'EURO
						* modif vanessa 13/02/13 - DA 13016 - arrondi
						W_MontantTemp=W_SalRefNet * ENR_DETAILINDEM<3,W_Count>/100
						W_MontantTemp=INT(W_MontantTemp + (1/2))
						IF l <= 3 THEN
							W_ComplementNet = W_MontantTemp - W_MontantIJSS1
						END ELSE
							W_ComplementNet = W_MontantTemp - W_MontantIJSS2
						END
					END ELSE
						IF ENR_CONTRATSPREV<43>="" THEN
							ENR_CONTRATSPREV<43>=0
						END
						* modif vanessa 22/05/13 - DA 13053
						W_Var = ENR_DETAILINDEM<1,W_Count> - (ENR_DETAILINDEM<1,W_Count> * ENR_CONTRATSPREV<43>/100000)
						W_Var=W_Var*100
						W_Var=INT(W_Var+(1/2))
						* modif vanessa 13/02/13 - DA 13016 - arrondi
						W_MontantTemp=W_SalRefNet * ENR_DETAILINDEM<3,W_Count>/100
						W_MontantTemp=INT(W_MontantTemp + (1/2))						
						W_ComplementNet = W_MontantTemp - W_Var
					END
					W_Montant = (W_ComplementNet/(100 - ((ENR_CONTRATSPREV<38>/1000) * (ENR_CONTRATSPREV<39>/1000)/100))*100)
					* modif vanessa 22/05/13 - DA 13053
					W_Montant=W_Montant/100
					W_Montant=INT(W_Montant+(1/2))					
					W_Montant = W_Montant * W_TabVar<l>
					IF W_Montant < 0 THEN
						W_Montant = 0
					END
					
				END
				
				W_Euro=0
				IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
					W_Euro = INT(W_Montant + (1/2)) / (ENR_CONSTANTESPAIE<7>/100000)
					W_Euro = INT(W_Euro + (1/2))
					ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;W_Euro)
					W_TotalMont = W_TotalMont + W_Euro
				END ELSE
					ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;INT(W_Montant + (1/2)))
					W_TotalMont = W_TotalMont + INT(W_Montant + (1/2))
				END
				
			END
		END
	NEXT l
	
	IF W_CodeAbs = "01" THEN
		* recherche si des jours en couverture 1 n'ont pas d'indemnisation IJSS 

		IF W_JourCouv1 > W_JourCouv1IJSS1 + W_JourCouv1IJSS2 THEN

			W_Count = W_Count + 1
			W_Jour = W_JourCouv1 - (W_JourCouv1IJSS1 + W_JourCouv1IJSS2)
		 
			W_Montant = W_Jour * (W_SalRef * ENR_CONTRATSPREV<27,m>/100)
			IF ENR_CONTRATSPREV<23> = "2" THEN
				W_Montant = W_Montant / (100 - ((ENR_CONTRATSPREV<38>/1000) * (ENR_CONTRATSPREV<39>/1000)))
			END

			W_Euro=0
			IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
				W_Euro = INT(W_Montant + (1/2)) / (ENR_CONSTANTESPAIE<7>/100000)
				W_Euro = INT(W_Euro + (1/2))
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;W_Euro)
				W_TotalMont = W_TotalMont + W_Euro
			END ELSE
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;INT(W_Montant + (1/2)))
				W_TotalMont = W_TotalMont + INT(W_Montant + (1/2))
			END

			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,1,W_Count;"0")
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,2,W_Count;"0")
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,3,W_Count;ENR_CONTRATSPREV<27,m>)
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,4,W_Count;W_Jour)
		END
		* recherche si des jours en couverture 2 n'ont pas d'indemnisation IJSS 
		IF W_JourCouv2 > W_JourCouv2IJSS1 + W_JourCouv2IJSS2 THEN
			W_Count = W_Count + 1
			W_Jour = W_JourCouv2 - (W_JourCouv2IJSS1 + W_JourCouv2IJSS2)
			W_Montant = W_Jour * (W_SalRef * ENR_CONTRATSPREV<29,m>/100)
			IF ENR_CONTRATSPREV<23> = "2" THEN
				W_Montant = W_Montant / (100 - ((ENR_CONTRATSPREV<38>/1000) * (ENR_CONTRATSPREV<39>/1000)))
			END

			W_Euro=0
			IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
				W_Euro = INT(W_Montant + (1/2)) / (ENR_CONSTANTESPAIE<7>/100000)
				W_Euro = INT(W_Euro + (1/2))
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;W_Euro)
				W_TotalMont = W_TotalMont + W_Euro
			END ELSE
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;INT(W_Montant + (1/2)))
				W_TotalMont = W_TotalMont + INT(W_Montant + (1/2))
			END

			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,1,W_Count;"0")
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,2,W_Count;"0")
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,3,W_Count;ENR_CONTRATSPREV<29,m>)
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,4,W_Count;W_Jour)
		END
		* recherche si des jours en couverture 3 n'ont pas d'indemnisation IJSS 
		IF W_JourCouv3 > W_JourCouv3IJSS1 + W_JourCouv3IJSS2 THEN
			W_Count = W_Count + 1
			W_Jour = W_JourCouv3 - (W_JourCouv3IJSS1 + W_JourCouv3IJSS2)
			W_Montant = W_Jour * (W_SalRef * ENR_CONTRATSPREV<31,m>/100)
			IF ENR_CONTRATSPREV<23> = "2" THEN
				W_Montant = W_Montant / (100 - ((ENR_CONTRATSPREV<38>/1000) * (ENR_CONTRATSPREV<39>/1000)))
			END

			W_Euro=0
			IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
				W_Euro = INT(W_Montant + (1/2)) / (ENR_CONSTANTESPAIE<7>/100000)
				W_Euro = INT(W_Euro + (1/2))
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;W_Euro)
				W_TotalMont = W_TotalMont + W_Euro
			END ELSE
				ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,5,W_Count;INT(W_Montant + (1/2)))
				W_TotalMont = W_TotalMont + INT(W_Montant + (1/2))
			END

			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,1,W_Count;"0")
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,2,W_Count;"0")
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,3,W_Count;ENR_CONTRATSPREV<31,m>)
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,4,W_Count;W_Jour)
		END
	END
	
	W_Count = DCOUNT(ENR_DETAILINDEM<2>,CHAR(253))
	W_NbreJrs = 0
	FOR l = 1 TO W_Count 
		W_NbreJrs = W_NbreJrs + ENR_DETAILINDEM<4,l>
	NEXT l

	IF ENR_DETAILINDEM # "" THEN
		ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,6;W_NbreJrs)

		W_Euro=0
		IF INT(W_DatDebAbs) < INT(ENR_CONSTANTESPAIE<9>) AND INT(W_DatDeb) >= INT(ENR_CONSTANTESPAIE<9>) THEN
			W_Euro = W_SalRefBrut / (ENR_CONSTANTESPAIE<7>/100000)
			W_Euro = INT(W_Euro + (1/2))
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,7;W_Euro)
		END ELSE
			ENR_DETAILINDEM = REPLACE(ENR_DETAILINDEM,7;W_SalRefBrut)
		END
		WRITE ENR_DETAILINDEM ON F.DETAILINDEM,W_CleDetailIndem 
	END

RETURN

*********************************************************
*  procdure si code absence compris entre "18" et "21" (visites mdicales)

800

   W_DatAbs = W_CleAbs[8,5]
   READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL, ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
   IF (ENR_CONTRAT<1> # "02" AND ENR_CONTRAT<2> = W_CodAssoc AND INT(ENR_CONTRAT<7>) <= INT(W_DatAbs) AND INT(ENR_CONTRAT<8>) >= INT(W_DatAbs)) OR (ENR_CONTRAT<1> # "02" AND ENR_CONTRAT<2> = W_CodAssoc AND INT(ENR_CONTRAT<7>) <= INT(W_DatAbs) AND ENR_CONTRAT<8> = "") THEN
      IF ENR_CONVENTIONCOL<31> # "" THEN
         W_NbreHreIndem=ENR_CONVENTIONCOL<31> 
      END ELSE
         W_NbreHreIndem = 100
      END
      W_JourAIndemniser = 0
      W_Stop = "VRAI"
   END

RETURN

*********************************************************
*  Mise  jour fichiers DETAIL ...

1000

	ENR_DETAILADMIN = ""
	W_Creer = "FAUX"
	W_Indice = 0
	W_Att = 0
	W_Cle = W_RequeteContrat<j>:W_Periode

	GOSUB 1100

	IF ENR_CONTRAT<6> = "A" THEN
		READ ENR_DETAILADMIN FROM F.DETAILADMIN,W_Cle THEN
			IF W_NouvelAidant=1 THEN
				W_Count=DCOUNT(ENR_DETAILADMIN<7>,CHAR(253))
				FOR k1 = W_Count TO 1 STEP -1
					IF ENR_DETAILADMIN<7,k1> # "" THEN
						ENR_DETAILADMIN=DELETE(ENR_DETAILADMIN,1,k1)
						ENR_DETAILADMIN=DELETE(ENR_DETAILADMIN,2,k1)
						ENR_DETAILADMIN=DELETE(ENR_DETAILADMIN,3,k1)
						ENR_DETAILADMIN=DELETE(ENR_DETAILADMIN,4,k1)
						ENR_DETAILADMIN=DELETE(ENR_DETAILADMIN,5,k1)
						ENR_DETAILADMIN=DELETE(ENR_DETAILADMIN,6,k1)
						ENR_DETAILADMIN=DELETE(ENR_DETAILADMIN,7,k1)   
					END  
				NEXT k1
				WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
			END
		END ELSE
			W_Creer = "VRAI"
			ENR_DETAILADMIN = ""
		END 

		W_TabDyn = ""
		W_TabDyn = ENR_DETAILADMIN
		W_Att = 1
		W_AttAbs = 7
		GOSUB 1500

		IF (W_CodeAbs = "01" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "04" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "05" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "06" AND ENR_CONTRATSPREV<21> = "0") THEN
			* RIEN
		END ELSE
			IF W_CodeRub = "808" OR W_CodeRub = "807" OR W_CodeRub = ENR_CONTRATSPREV<41> OR W_CodeRub = ENR_CONTRATSPREV<42> THEN

				IF W_TotalMont1 # 0 THEN
					IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;ENR_DETAILADMIN<4,W_Indice>+W_TotalMont1)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;ENR_DETAILADMIN<6,W_Indice>+(W_JourAbs*100))
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
						WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
						W_Creer = "FAUX"
					END ELSE
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;W_TotalMont1)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;W_JourAbs*100)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
						WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
						W_Creer = "FAUX"
					END
				END
				IF W_TotalMont2 # 0 THEN
					READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,"99" ELSE ENR_CONTRATSPREV=""
					GOSUB 1100
					W_Indice = 0
					W_TabDyn = ENR_DETAILADMIN
					GOSUB 1500
					IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;ENR_DETAILADMIN<4,W_Indice>+W_TotalMont2)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;ENR_DETAILADMIN<6,W_Indice>+(W_JourAbs*100))
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
						WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
						W_Creer = "FAUX"
					END ELSE
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;W_TotalMont2)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;W_JourAbs*100)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
						WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
						W_Creer = "FAUX"
					END
				END      

			END ELSE
				IF W_NbreHreIndem # 0 THEN
					IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;ENR_DETAILADMIN<2,W_Indice>+(INT(W_NbreHreIndem+(1/2))))
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;ENR_DETAILADMIN<6,W_Indice>+W_JourAIndemniser)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;"0")
						* Didier 06/09/2012 : gestion mensualisation
						IF ENR_CONTRAT<5> = "M" OR W_MENSUALISATION="OUI" THEN
							ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"OUI")
						END ELSE
							ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
						END
						WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
						W_Creer = "FAUX"
					END ELSE
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;INT(W_NbreHreIndem+(1/2)))
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;W_JourAIndemniser)
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;"0")
						* Didier 06/09/2012 : gestion mensualisation
						IF ENR_CONTRAT<5> = "M" OR W_MENSUALISATION="OUI" THEN
							ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"OUI")
						END ELSE
							ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
						END
						WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
						W_Creer = "FAUX"
					END
				END
			END
		END

		* s'il reste des jours non indemniss, les passer en heures absences
		IF W_NbreHreRestant # 0 THEN
			* Didier 06/09/2012 : gestion mensualisation
			IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
				W_CodeRub = "815"
				W_Indice = 0
				W_TabDyn = ENR_DETAILADMIN
				GOSUB 1500
				W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
				IF W_JourRestant >= W_NbreJourPeriode*100 THEN
					BEGIN CASE
						CASE ENR_CONTRAT<25,k> = "1"
							W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
						CASE ENR_CONTRAT<25,k> = "2"
							W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
						CASE ENR_CONTRAT<25,k> = "3"
							W_NbreHreRestant = INT((ENR_CONTRAT<24,k>) + (1/2))
						CASE ENR_CONTRAT<25,k> = "4"
							W_NbreHreRestant = INT((ENR_CONTRAT<24,k>/12) + (1/2))
					END CASE
					IF W_CodeAbs = "03" THEN
						W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
					END
				END ELSE
					* modif vanessa 28/02/14 - DA 14003 ajout motif 26
					IF W_CodeAbs = "12" OR W_CodeAbs = "14" OR W_CodeAbs = "15" OR W_CodeAbs = "16" OR W_CodeAbs = "22" OR W_CodeAbs = "23" OR W_CodeAbs = "25" OR W_CodeAbs = "26" THEN
						* modif vanessa 15/12/10 DA 10162-01
						* ne rien faire car dj fait
						* W_NbreHreRestant = INT(W_ValeurHor * (W_JourRestant/100) + (1/2))                
					END ELSE
						BEGIN CASE
							CASE ENR_CONTRAT<25,k> = "1"
								W_ValeurHor = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
							CASE ENR_CONTRAT<25,k> = "2"
								W_ValeurHor = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
							CASE ENR_CONTRAT<25,k> = "3"
								W_ValeurHor = INT((ENR_CONTRAT<24,k>) + (1/2))
							CASE ENR_CONTRAT<25,k> = "4"
								W_ValeurHor = INT((ENR_CONTRAT<24,k>/12) + (1/2))
						END CASE

						W_NbreHreRestant = INT(((W_ValeurHor/W_NbreJourPeriode) * (W_JourRestant/100))+(1/2))

						IF W_CodeAbs = "03" THEN
							W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
						END
					END
				END

				IF W_DatFinPeriode=W_DatFinAbs THEN
					W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
					IF W_JourAbsAidant=W_NbreJourPeriode THEN
						BEGIN CASE
							CASE ENR_CONTRAT<25,k> = "1"
								W_NbreHre = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
							CASE ENR_CONTRAT<25,k> = "2"
								W_NbreHre = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
							CASE ENR_CONTRAT<25,k> = "3"
								W_NbreHre = INT((ENR_CONTRAT<24,k>) + (1/2))
							CASE ENR_CONTRAT<25,k> = "4"
								W_NbreHre = INT((ENR_CONTRAT<24,k>/12) + (1/2))
						END CASE
						IF W_NbreHre # W_NbreHreAidant THEN
							W_NbreHreRestant = W_NbreHre-W_NbreHreAidant
						END
					END
				END
				
				* Modif Greg - 26/03/13 - DA13026 - On a calcul juste avant le nb d'heures d'abs. Il faut s'assurer qu'il ne dpasse
				* pas le nb d'hres contrat.
				* A noter que le code qui suit est fait x fois dans le prog, mais avec des variables diffrentes. Je le remet donc
				* ici, avec une autre variable, pour ne pas casser le reste du prog.
				BEGIN CASE
					CASE ENR_CONTRAT<25,k> = "1"
						W_NbreHreContrat = INT((ENR_CONTRAT<24,k>*52/12)+(1/2))
					CASE ENR_CONTRAT<25,k> = "2"
						W_NbreHreContrat = INT((ENR_CONTRAT<24,k>*26/12)+(1/2))
					CASE ENR_CONTRAT<25,k> = "3"
						W_NbreHreContrat = INT((ENR_CONTRAT<24,k>)+(1/2))
					CASE ENR_CONTRAT<25,k> = "4"
						W_NbreHreContrat = INT((ENR_CONTRAT<24,k>/12)+(1/2))
				END CASE
				* Fin modif Greg - 26/03/13
			
				IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;ENR_DETAILADMIN<2,W_Indice>+(INT(W_NbreHreRestant+(1/2))))
					* Modif Greg - 26/03/13 - DA13026 - Si le nb d'hres d'abs rsultant dpasse le nb d'hres contrat, alors on force ce dernier.
					IF ENR_DETAILADMIN<2,W_Indice>>W_NbreHreContrat THEN ENR_DETAILADMIN<2,W_Indice> = W_NbreHreContrat
				
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;ENR_DETAILADMIN<6,W_Indice>+W_JourRestant)
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;"0")
					IF (W_CodeAbs = "01" OR W_CodeAbs = "04" OR W_CodeAbs = "05") AND ENR_ABSENCESAIDANT<16>="OUI" THEN
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"OUI")
					END ELSE
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
					END
				END ELSE

					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,1,W_Indice;W_CodeRub)
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,7,W_Indice;W_CleAbs)
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,2,W_Indice;INT(W_NbreHreRestant+(1/2)))
					* Modif Greg - 26/03/13 - DA13026 - Si le nb d'hres d'abs rsultant dpasse le nb d'hres contrat, alors on force ce dernier.
					IF ENR_DETAILADMIN<2,W_Indice>>W_NbreHreContrat THEN ENR_DETAILADMIN<2,W_Indice> = W_NbreHreContrat
				
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,6,W_Indice;W_JourRestant)
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,3,W_Indice;"0")
					ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,4,W_Indice;"0")
					IF (W_CodeAbs = "01" OR W_CodeAbs = "04" OR W_CodeAbs = "05") AND ENR_ABSENCESAIDANT<16>="OUI" THEN
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"OUI")
					END ELSE
						ENR_DETAILADMIN=REPLACE(ENR_DETAILADMIN,5,W_Indice;"NON")
					END
				END
				WRITE ENR_DETAILADMIN ON F.DETAILADMIN,W_Cle
			END
		END
		*PG 30.01.09 - prise en compte du congs dlai prevenance 
		*IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16")) THEN
		IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16") OR (W_Difference # "" AND W_CodeAbs = "25")) THEN   
			GOSUB 460
		END 
	END ELSE
		READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_CONTRAT<36,1> ELSE ENR_ACTIVITES=""
		BEGIN CASE
			CASE ENR_ACTIVITES<12> = "P"
				GOSUB 1200
			CASE ENR_ACTIVITES<12> = "M"
				GOSUB 1300
			CASE ENR_ACTIVITES<12> = "I"
				GOSUB 1400
		END CASE
	END

RETURN

*********************************************************
*  Relve le code rubrique saisie

1100

	BEGIN CASE
		CASE W_CodeAbs = "07"
			W_CodeRub = "818"
		CASE W_CodeAbs >= "08" AND W_CodeAbs <= "11"
			W_CodeRub = "819"
		CASE W_CodeAbs = "14"
			W_CodeRub = "802"
		CASE W_CodeAbs = "16"
			W_CodeRub = "803"
		CASE W_CodeAbs = "15"
			W_CodeRub = "817"
		* modif vanessa 28/02/14 - DA 14003 ajout motif 26
		CASE W_CodeAbs = "12" OR W_CodeAbs = "13" OR W_CodeAbs = "02" OR W_CodeAbs = "03" OR W_CodeAbs = "22" OR W_CodeAbs = "23" OR W_CodeAbs = "26"
			W_CodeRub = "815"
		CASE W_CodeAbs = "04" OR W_CodeAbs = "05" OR W_CodeAbs = "06"
			IF ENR_CONTRATSPREV<42> = "" THEN
				W_CodeRub = "808"
			END ELSE
				W_CodeRub = ENR_CONTRATSPREV<42> 
			END
		CASE W_CodeAbs = "01"
			IF ENR_CONTRATSPREV<41> = "" THEN
				W_CodeRub = "807"
			END ELSE
				W_CodeRub = ENR_CONTRATSPREV<41> 
			END
		CASE W_CodeAbs >= "18" AND W_CodeAbs <= "21"
			W_CodeRub = "823"
		CASE W_CodeAbs = "25"
			W_CodeRub = "843"		
		* modif vanessa 04/12/13 - DA 13019
		CASE W_CodeAbs = "24"
			W_CodeRub = ENR_ABSENCESAIDANT<39>	 
	END CASE

RETURN

*********************************************************
*  Mise  jour du fichier DETAILPREST

1200

	ENR_DETAILPREST = ""
	READ ENR_DETAILPREST FROM F.DETAILPREST,W_Cle THEN
		IF W_NouvelAidant=1 THEN
			W_Count=DCOUNT(ENR_DETAILPREST<15>,CHAR(253))
			FOR k1 = W_Count TO 1 STEP -1
				IF ENR_DETAILPREST<15,k1> # "" THEN
	               ENR_DETAILPREST=DELETE(ENR_DETAILPREST,5,k1)
	               ENR_DETAILPREST=DELETE(ENR_DETAILPREST,6,k1)
	               ENR_DETAILPREST=DELETE(ENR_DETAILPREST,7,k1)
	               ENR_DETAILPREST=DELETE(ENR_DETAILPREST,8,k1)
	               ENR_DETAILPREST=DELETE(ENR_DETAILPREST,9,k1)
	               ENR_DETAILPREST=DELETE(ENR_DETAILPREST,15,k1)
	               ENR_DETAILPREST=DELETE(ENR_DETAILPREST,14,k1)   
				END  
			NEXT k1
			WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
		END
	END ELSE
		W_Creer = "VRAI"
		ENR_DETAILPREST = ""
	END
	
	W_TabDyn = ""
	W_TabDyn = ENR_DETAILPREST
	W_Att = 5
	W_AttAbs = 15
	
	GOSUB 1500
	
	IF (W_CodeAbs = "01" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "04" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "05" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "06" AND ENR_CONTRATSPREV<21> = "0") THEN
		* RIEN
	END ELSE
		IF W_CodeRub = "808" OR W_CodeRub = "807" OR W_CodeRub = ENR_CONTRATSPREV<41> OR W_CodeRub = ENR_CONTRATSPREV<42> THEN
			IF W_TotalMont1 # 0 THEN
				IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;ENR_DETAILPREST<8,W_Indice>+W_TotalMont1)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;ENR_DETAILPREST<14,W_Indice>+W_JourAbs*100)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;"0")
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
					WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
					W_Creer = "FAUX"
				END ELSE
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;W_TotalMont1)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;W_JourAbs*100)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;"0")
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
					WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
					W_Creer = "FAUX"
				END
			END
			
			IF W_TotalMont2 # 0 THEN
				READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,"99" ELSE ENR_CONTRATSPREV=""
				GOSUB 1100
				W_Indice = 0
				W_TabDyn = ENR_DETAILPREST
				GOSUB 1500
				IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;ENR_DETAILPREST<8,W_Indice>+W_TotalMont2)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;ENR_DETAILPREST<14,W_Indice>+W_JourAbs*100)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;"0")
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
					WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
					W_Creer = "FAUX"
				END ELSE
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;W_TotalMont2)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;W_JourAbs*100)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;"0")
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
					WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
					W_Creer = "FAUX"
				END
			END
		END ELSE

			IF W_NbreHreIndem # 0 THEN

				IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;ENR_DETAILPREST<6,W_Indice>+(INT(W_NbreHreIndem+(1/2))))
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;ENR_DETAILPREST<14,W_Indice>+W_JourAIndemniser)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;"0")
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
					WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
					W_Creer = "FAUX"
				END ELSE
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;INT(W_NbreHreIndem+(1/2)))
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;W_JourAIndemniser)
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;"0")
					ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
					WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
					W_Creer = "FAUX"            
				END
			END
		END
	END

	* s'il reste des jours non indemniss, les passer en heures absences
	IF W_NbreHreRestant # 0 THEN
		* Didier 06/09/2012 : gestion mensualisation
		IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
			W_CodeRub = "815"
			W_Indice = 0
			W_TabDyn = ENR_DETAILPREST
			GOSUB 1500
			
			W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
			
			IF W_JourRestant >= W_NbreJourPeriode*100 THEN
				BEGIN CASE
					CASE ENR_CONTRAT<25,k> = "1"
						W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
					CASE ENR_CONTRAT<25,k> = "2"
						W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
					CASE ENR_CONTRAT<25,k> = "3"
						W_NbreHreRestant = INT((ENR_CONTRAT<24,k>) + (1/2))
					CASE ENR_CONTRAT<25,k> = "4"
						W_NbreHreRestant = INT((ENR_CONTRAT<24,k>/12) + (1/2))
				END CASE
				IF W_CodeAbs = "03" THEN
					W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
				END
			END ELSE
				* modif vanessa 28/02/14 - DA 14003 ajout motif 26
				IF W_CodeAbs = "12" OR W_CodeAbs = "14" OR W_CodeAbs = "15" OR W_CodeAbs = "16" OR W_CodeAbs = "22" OR W_CodeAbs = "23" OR W_CodeAbs = "25" OR W_CodeAbs = "26" THEN
					* modif vanessa 15/12/10 DA 10162-01
					* ne rien faire car dj fait
					* W_NbreHreRestant = INT(W_ValeurHor * (W_JourRestant/100) + (1/2))
				END ELSE
					BEGIN CASE
						CASE ENR_CONTRAT<25,k> = "1"
							W_ValeurHor = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
						CASE ENR_CONTRAT<25,k> = "2"
							W_ValeurHor = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
						CASE ENR_CONTRAT<25,k> = "3"
							W_ValeurHor = INT((ENR_CONTRAT<24,k>) + (1/2))
						CASE ENR_CONTRAT<25,k> = "4"
							W_ValeurHor = INT((ENR_CONTRAT<24,k>/12) + (1/2))
					END CASE
					W_NbreHreRestant = INT(((W_ValeurHor/W_NbreJourPeriode) * (W_JourRestant/100))+(1/2))
					IF W_CodeAbs = "03" THEN
						W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
					END
				END
	        END
	        IF W_DatFinPeriode=W_DatFinAbs THEN
				W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
				IF W_JourAbsAidant=W_NbreJourPeriode THEN
					BEGIN CASE
						CASE ENR_CONTRAT<25,k> = "1"
							W_NbreHre = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
						CASE ENR_CONTRAT<25,k> = "2"
							W_NbreHre = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
						CASE ENR_CONTRAT<25,k> = "3"
							W_NbreHre = INT((ENR_CONTRAT<24,k>) + (1/2))
						CASE ENR_CONTRAT<25,k> = "4"
							W_NbreHre = INT((ENR_CONTRAT<24,k>/12) + (1/2))
					END CASE
					IF W_NbreHre # W_NbreHreAidant THEN
						W_NbreHreRestant = W_NbreHre-W_NbreHreAidant
					END
	            END
	        END
			
			* Modif Greg - 26/03/13 - DA13026 - On a calcul juste avant le nb d'heures d'abs. Il s'assurer qu'il ne dpasse
			* pas le nb d'hres contrat.
			* A noter que le code qui suit est fait x fois dans le prog, mais avec des variables diffrentes. Je le remet donc
			* ici, avec une autre variable, pour ne pas casser le reste du prog.
			BEGIN CASE
				CASE ENR_CONTRAT<25,k> = "1"
					W_NbreHreContrat = INT((ENR_CONTRAT<24,k>*52/12)+(1/2))
				CASE ENR_CONTRAT<25,k> = "2"
					W_NbreHreContrat = INT((ENR_CONTRAT<24,k>*26/12)+(1/2))
				CASE ENR_CONTRAT<25,k> = "3"
					W_NbreHreContrat = INT((ENR_CONTRAT<24,k>)+(1/2))
				CASE ENR_CONTRAT<25,k> = "4"
					W_NbreHreContrat = INT((ENR_CONTRAT<24,k>/12)+(1/2))
			END CASE
			* Fin modif Greg - 26/03/13
			
			IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;ENR_DETAILPREST<6,W_Indice>+INT(W_NbreHreRestant+(1/2)))
				* Modif Greg - 26/03/13 - DA13026 - Si le nb d'hres d'abs rsultant dpasse le nb d'hres contrat, alors on force ce dernier.
				IF ENR_DETAILPREST<6,W_Indice>>W_NbreHreContrat THEN ENR_DETAILPREST<6,W_Indice> = W_NbreHreContrat
				
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;ENR_DETAILPREST<14,W_Indice>+W_JourRestant)
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;"0")
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
	        END ELSE
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,5,W_Indice;W_CodeRub)
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,15,W_Indice;W_CleAbs)
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,6,W_Indice;INT(W_NbreHreRestant+(1/2)))
				* Modif Greg - 26/03/13 - DA13026 - Si le nb d'hres d'abs rsultant dpasse le nb d'hres contrat, alors on force ce dernier.
				IF ENR_DETAILPREST<6,W_Indice>>W_NbreHreContrat THEN ENR_DETAILPREST<6,W_Indice> = W_NbreHreContrat
				
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,14,W_Indice;W_JourRestant)
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,8,W_Indice;"0")
	            ENR_DETAILPREST=REPLACE(ENR_DETAILPREST,7,W_Indice;"0")
	        END
			
	        WRITE ENR_DETAILPREST ON F.DETAILPREST,W_Cle
			
		END
	END
	
	*PG 30.01.09 - prise en compte du congs dlai prevenance
   *IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16")) THEN
	IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16") OR (W_Difference # "" AND W_CodeAbs = "25")) THEN
		GOSUB 460
	END 

RETURN

*********************************************************
*  Mise  jour du fichier DETAILMANDAT

1300

   ENR_DETAILMANDAT = ""
   READ ENR_DETAILMANDAT FROM F.DETAILMANDAT,W_Cle THEN 
      IF W_NouvelAidant=1 THEN
         W_Count=DCOUNT(ENR_DETAILMANDAT<7>,CHAR(253))
         FOR k1 = W_Count TO 1 STEP -1
            IF ENR_DETAILMANDAT<7,k1> # "" THEN
               ENR_DETAILMANDAT=DELETE(ENR_DETAILMANDAT,1,k1)
               ENR_DETAILMANDAT=DELETE(ENR_DETAILMANDAT,2,k1)
               ENR_DETAILMANDAT=DELETE(ENR_DETAILMANDAT,3,k1)
               ENR_DETAILMANDAT=DELETE(ENR_DETAILMANDAT,4,k1)
               ENR_DETAILMANDAT=DELETE(ENR_DETAILMANDAT,5,k1)
               ENR_DETAILMANDAT=DELETE(ENR_DETAILMANDAT,6,k1)
               ENR_DETAILMANDAT=DELETE(ENR_DETAILMANDAT,7,k1)   
            END  
         NEXT k1
         WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
      END
   END ELSE
      W_Creer = "VRAI"
      ENR_DETAILMANDAT = ""
   END

   W_TabDyn = ""
   W_TabDyn = ENR_DETAILMANDAT
   W_Att = 1
   W_AttAbs = 7
   GOSUB 1500

   IF (W_CodeAbs = "01" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "04" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "05" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "06" AND ENR_CONTRATSPREV<21> = "0") THEN
      * RIEN
   END ELSE
      IF W_CodeRub = "808" OR W_CodeRub = "807" OR W_CodeRub = ENR_CONTRATSPREV<41> OR W_CodeRub = ENR_CONTRATSPREV<42> THEN
         IF W_TotalMont1 # 0 THEN
	    IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;ENR_DETAILMANDAT<4,W_Indice>+W_TotalMont1)
	       ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;ENR_DETAILMANDAT<6,W_Indice>+(W_JourAbs*100))
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;"0")
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               W_Creer = "FAUX"
            END ELSE
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;W_TotalMont1)
	       ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;W_JourAbs*100)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;"0")
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               W_Creer = "FAUX"
            END
         END
         IF W_TotalMont2 # 0 THEN
          	READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,"99" ELSE ENR_CONTRATSPREV=""
   		GOSUB 1100
		W_Indice = 0
   		W_TabDyn = ENR_DETAILMANDAT
		GOSUB 1500
	    IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;ENR_DETAILMANDAT<4,W_Indice>+W_TotalMont2)
	       ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;ENR_DETAILMANDAT<6,W_Indice>+(W_JourAbs*100))
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;"0")
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               W_Creer = "FAUX"
            END ELSE
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;W_TotalMont2)
	       ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;W_JourAbs*100)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;"0")
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               W_Creer = "FAUX"
            END

	 END
      END ELSE

         IF W_NbreHreIndem # 0 THEN
	    IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;ENR_DETAILMANDAT<2,W_Indice>+(INT(W_NbreHreIndem+(1/2))))
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;ENR_DETAILMANDAT<6,W_Indice>+W_JourAIndemniser)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;"0")
	       ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               W_Creer = "FAUX"
            END ELSE
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;INT(W_NbreHreIndem+(1/2)))
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;W_JourAIndemniser)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;"0")
	       ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               W_Creer = "FAUX"
            END
         END ELSE
	    IF ENR_CONTRAT<1> = "02" AND ENR_CONTRAT<31> = "1" AND ENR_CONVENTIONCOL<35> = "1" THEN
	    	IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
			ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
              	  	ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
             	  	ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;ENR_DETAILMANDAT<2,W_Indice>+(INT(W_NbreHreIndem+(1/2))))
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;ENR_DETAILMANDAT<6,W_Indice>+W_JourAIndemniser)
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;"0")
	       		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               		WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               		W_Creer = "FAUX"
            	END ELSE
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;INT(W_NbreHreIndem+(1/2)))
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;W_JourAIndemniser)
              		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;"0")
	       		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
               		ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
               		WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle
               		W_Creer = "FAUX"
            	END
	    END
         END
      END
   END

   * s'il reste des jours non indemniss, les passer en heures absences
   IF W_NbreHreRestant # 0 THEN
      * Didier 06/09/2012 : gestion mensualisation
      IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
         W_CodeRub = "815"
         W_Indice = 0
         W_TabDyn = ENR_DETAILMANDAT
         GOSUB 1500

         W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
	 IF W_JourRestant >= W_NbreJourPeriode*100 THEN
   	    BEGIN CASE
      	       CASE ENR_CONTRAT<25,k> = "1"
                  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
      	       CASE ENR_CONTRAT<25,k> = "2"
          	  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
    	       CASE ENR_CONTRAT<25,k> = "3"
         	  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>) + (1/2))
       	       CASE ENR_CONTRAT<25,k> = "4"
           	  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>/12) + (1/2))
   	    END CASE
            IF W_CodeAbs = "03" THEN
 	       W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
	    END
	 END ELSE
            IF W_CodeAbs = "12" OR W_CodeAbs = "14" OR W_CodeAbs = "15" OR W_CodeAbs = "16" OR W_CodeAbs = "22" OR W_CodeAbs = "23" OR W_CodeAbs = "25" THEN
				* modif vanessa 15/12/10  DA 10162-01
				* ne rien faire car dj fait
				* W_NbreHreRestant = INT(W_ValeurHor * (W_JourRestant/100) + (1/2))                
            END ELSE
   	       BEGIN CASE
      	          CASE ENR_CONTRAT<25,k> = "1"
           	     W_ValeurHor = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
           	  CASE ENR_CONTRAT<25,k> = "2"
          	     W_ValeurHor = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
    		  CASE ENR_CONTRAT<25,k> = "3"
         	     W_ValeurHor = INT((ENR_CONTRAT<24,k>) + (1/2))
       	          CASE ENR_CONTRAT<25,k> = "4"
         	     W_ValeurHor = INT((ENR_CONTRAT<24,k>/12) + (1/2))
   	       END CASE
	       W_NbreHreRestant = INT(((W_ValeurHor/W_NbreJourPeriode) * (W_JourRestant/100))+(1/2))
               IF W_CodeAbs = "03" THEN
 		  W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
	       END
            END
         END
         IF W_DatFinPeriode=W_DatFinAbs THEN
            W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
            IF W_JourAbsAidant=W_NbreJourPeriode THEN
   	       BEGIN CASE
                  CASE ENR_CONTRAT<25,k> = "1"
                     W_NbreHre = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
      		  CASE ENR_CONTRAT<25,k> = "2"
                     W_NbreHre = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
    		  CASE ENR_CONTRAT<25,k> = "3"
         	     W_NbreHre = INT((ENR_CONTRAT<24,k>) + (1/2))
       	          CASE ENR_CONTRAT<25,k> = "4"
         	     W_NbreHre = INT((ENR_CONTRAT<24,k>/12) + (1/2))
   	       END CASE
               IF W_NbreHre # W_NbreHreAidant THEN
                  W_NbreHreRestant = W_NbreHre-W_NbreHreAidant
               END
            END
         END

	 IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;ENR_DETAILMANDAT<2,W_Indice>+(INT(W_NbreHreRestant+(1/2))))
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;ENR_DETAILMANDAT<6,W_Indice>+W_JourRestant)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;"0")
	    ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
         END ELSE
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,1,W_Indice;W_CodeRub)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,7,W_Indice;W_CleAbs)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,2,W_Indice;INT(W_NbreHreRestant+(1/2)))
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,6,W_Indice;W_JourRestant)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,4,W_Indice;"0")
	    ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,5,W_Indice;ENR_CONTRAT<36,1>)
            ENR_DETAILMANDAT=REPLACE(ENR_DETAILMANDAT,3,W_Indice;"0")
         END

         WRITE ENR_DETAILMANDAT ON F.DETAILMANDAT,W_Cle

      END

   END
	* PG 30.01.09
   *IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16")) THEN
   IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16") OR (W_Difference # "" AND W_CodeAbs = "25")) THEN
      GOSUB 460
   END 

RETURN

*********************************************************
*  Mise  jour du fichier DETAILINTER

1400

   ENR_DETAILINTER = ""
   W_Cle=W_RequeteContrat<j>:"000":W_Periode
   READ ENR_DETAILINTER FROM F.DETAILINTER,W_Cle THEN 
      IF W_NouvelAidant=1 THEN
         W_Count=DCOUNT(ENR_DETAILINTER<14>,CHAR(253))
         FOR k1 = W_Count TO 1 STEP -1
            IF TRIM(ENR_DETAILINTER<14,k1>) # "" THEN
               ENR_DETAILINTER=DELETE(ENR_DETAILINTER,8,k1)
               ENR_DETAILINTER=DELETE(ENR_DETAILINTER,9,k1)
               ENR_DETAILINTER=DELETE(ENR_DETAILINTER,10,k1)
               ENR_DETAILINTER=DELETE(ENR_DETAILINTER,11,k1)
               ENR_DETAILINTER=DELETE(ENR_DETAILINTER,12,k1)
               ENR_DETAILINTER=DELETE(ENR_DETAILINTER,13,k1)
               ENR_DETAILINTER=DELETE(ENR_DETAILINTER,14,k1)   
            END  
         NEXT k1
         WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
      END
   END ELSE
      W_Creer = "VRAI"
      ENR_DETAILINTER = ""
   END

   W_TabDyn = ""
   W_TabDyn = ENR_DETAILINTER
   W_Att = 8
   W_AttAbs = 14
   GOSUB 1500

   IF (W_CodeAbs = "01" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "04" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "05" AND ENR_CONTRATSPREV<21> = "0") OR (W_CodeAbs = "06" AND ENR_CONTRATSPREV<21> = "0") THEN
      * RIEN
   END ELSE
      IF W_CodeRub = "808" OR W_CodeRub = "807" OR W_CodeRub = ENR_CONTRATSPREV<41> OR W_CodeRub = ENR_CONTRATSPREV<42> THEN
         IF W_TotalMont1 # 0 THEN
            IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;ENR_DETAILINTER<11,W_Indice>+W_TotalMont1)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;ENR_DETAILINTER<13,W_Indice>+(W_JourAbs*100))
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;"0")
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
               WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
               W_Creer = "FAUX"
            END ELSE
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;W_TotalMont1)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;W_JourAbs*100)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;"0")
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
               WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
               W_Creer = "FAUX"
            END
         END
         IF W_TotalMont2 # 0 THEN
          	READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,"99" ELSE ENR_CONTRATSPREV=""
   		GOSUB 1100
		W_Indice = 0
   		W_TabDyn = ENR_DETAILINTER
		GOSUB 1500
            IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;ENR_DETAILINTER<11,W_Indice>+W_TotalMont2)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;ENR_DETAILINTER<13,W_Indice>+(W_JourAbs*100))
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;"0")
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
               WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
               W_Creer = "FAUX"
            END ELSE
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;W_TotalMont2)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;W_JourAbs*100)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;"0")
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
               WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
               W_Creer = "FAUX"
            END
         END
      END ELSE
         IF W_NbreHreIndem # 0 THEN
            IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;ENR_DETAILINTER<9,W_Indice>+(INT(W_NbreHreIndem+(1/2))))
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;ENR_DETAILINTER<13,W_Indice>+W_JourAIndemniser)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;"0")
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
               WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
               W_Creer = "FAUX"
            END ELSE
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;INT(W_NbreHreIndem+(1/2)))
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;W_JourAIndemniser)
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;"0")
               ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
               WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
               W_Creer = "FAUX"
            END
         END
      END
   END

   * s'il reste des jours non indemniss, les passer en heures absences
   IF W_NbreHreRestant # 0 THEN
      * Didier 06/09/2012 : gestion mensualisation
      IF ENR_CONTRAT<5> = "M" OR ENR_CONTRAT<68,k> = "1" OR W_MENSUALISATION="OUI" THEN
         W_CodeRub = "815"
         W_Indice = 0
         W_TabDyn = ENR_DETAILINTER
         GOSUB 1500

         W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
	 IF W_JourRestant >= W_NbreJourPeriode*100 THEN
   	    BEGIN CASE
      	       CASE ENR_CONTRAT<25,k> = "1"
           	  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
      	       CASE ENR_CONTRAT<25,k> = "2"
          	  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
    	       CASE ENR_CONTRAT<25,k> = "3"
         	  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>) + (1/2))
       	       CASE ENR_CONTRAT<25,k> = "4"
           	  W_NbreHreRestant = INT((ENR_CONTRAT<24,k>/12) + (1/2))
   	    END CASE
            IF W_CodeAbs = "03" THEN
 	       W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
	    END
	 END ELSE
			* modif vanessa 28/02/14 - DA 14003 ajout motif 26
            IF W_CodeAbs = "12" OR W_CodeAbs = "14" OR W_CodeAbs = "15" OR W_CodeAbs = "16" OR W_CodeAbs = "22" OR W_CodeAbs = "23" OR W_CodeAbs = "25" OR W_CodeAbs = "26" THEN
				* modif vanessa 15/12/10  DA 10162-01
				* ne rien faire car dj fait
				* W_NbreHreRestant = INT(W_ValeurHor * (W_JourRestant/100) + (1/2))                
            END ELSE
   	       BEGIN CASE
      	          CASE ENR_CONTRAT<25,k> = "1"
           	     W_ValeurHor = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
           	  CASE ENR_CONTRAT<25,k> = "2"
          	     W_ValeurHor = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
    		  CASE ENR_CONTRAT<25,k> = "3"
         	     W_ValeurHor = INT((ENR_CONTRAT<24,k>) + (1/2))
       	          CASE ENR_CONTRAT<25,k> = "4"
         	     W_ValeurHor = INT((ENR_CONTRAT<24,k>/12) + (1/2))
   	       END CASE
               W_NbreHreRestant = INT(((W_ValeurHor/W_NbreJourPeriode) * (W_JourRestant/100))+(1/2))
               IF W_CodeAbs = "03" THEN
 		  W_NbreHreRestant = INT((W_NbreHreRestant / 2) + (1/2))
	       END
            END
         END
         IF W_DatFinPeriode=W_DatFinAbs THEN
            W_NbreJourPeriode =W_DatFinPeriode-W_DatDebPeriode+1
            IF W_JourAbsAidant=W_NbreJourPeriode THEN
   	       BEGIN CASE
                  CASE ENR_CONTRAT<25,k> = "1"
           	     W_NbreHre = INT((ENR_CONTRAT<24,k>*52/12) + (1/2))
      		  CASE ENR_CONTRAT<25,k> = "2"
                     W_NbreHre = INT((ENR_CONTRAT<24,k>*26/12) + (1/2))
    		  CASE ENR_CONTRAT<25,k> = "3"
         	     W_NbreHre = INT((ENR_CONTRAT<24,k>) + (1/2))
       	          CASE ENR_CONTRAT<25,k> = "4"
         	     W_NbreHre = INT((ENR_CONTRAT<24,k>/12) + (1/2))
   	       END CASE
               IF W_NbreHre # W_NbreHreAidant THEN
                  W_NbreHreRestant = W_NbreHre-W_NbreHreAidant
               END
            END
         END

         IF W_TabDyn<W_Att,W_Indice> = W_CodeRub AND W_TabDyn<W_AttAbs,W_Indice> # W_CleAbs THEN
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;ENR_DETAILINTER<9,W_Indice>+(INT(W_NbreHreRestant+(1/2))))
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;ENR_DETAILINTER<13,W_Indice>+W_JourRestant)
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;"0")
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
         END ELSE
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,8,W_Indice;W_CodeRub)
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,14,W_Indice;W_CleAbs)
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,9,W_Indice;INT(W_NbreHreRestant+(1/2)))
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,13,W_Indice;W_JourRestant)
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,11,W_Indice;"0")
            ENR_DETAILINTER=REPLACE(ENR_DETAILINTER,10,W_Indice;"0")
         END

         WRITE ENR_DETAILINTER ON F.DETAILINTER,W_Cle
      END
   END
	*PG 30.01.09
   *IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16")) THEN
   IF W_IndemCompens="FAUX" AND ((W_Difference # "" AND W_CodeAbs = "14") OR (W_Difference # "" AND W_CodeAbs = "15")  OR (W_Difference # "" AND W_CodeAbs = "16") OR (W_Difference # "" AND W_CodeAbs = "25")) THEN
      GOSUB 460
   END 

RETURN

*********************************************************
*  Recherche le rang de la rubrique de saisie

1500

   IF W_Creer = "VRAI" THEN
      W_Indice = 1

   END ELSE
      W_CountDetail = DCOUNT(W_TabDyn<W_Att>,CHAR(253))
      FOR l=1 TO W_CountDetail
         IF W_TabDyn<W_Att,l> = W_CodeRub AND W_TabDyn<W_AttAbs,l> # "" THEN
			W_Indice=l
			EXIT
         END
      NEXT l
      IF W_Indice = 0 THEN
         W_Indice = W_CountDetail+1
      END
   END 

RETURN

*********************************************************
*  Epuration du fichier DETAILINDEM
* Michael, 17/05/06 : ne sera plus appell, bien que fonctionne en thorie : il y a eu des pb de perte d'articles du fichier DETAILINDEM => cr proc 1601, appelle aidant par aidant...
1600

IF W_Selection = "I" THEN

	*  requete si slection individuelle
      	W_Temp = 'SSELECT DETAILINDEM AVEC 0 = "':W_CodeAidant:']" AND AVEC PeriodeIndem = "':W_Periode:'" AND AVEC AssociationIndem = "':W_CodAssoc:'"'
	W_Temp=W_Temp:' AND AVEC DetailCalculIndem = "1"'

END ELSE

      	*  requete si slection totale
      	W_Temp = 'SSELECT DETAILINDEM AVEC PeriodeIndem = "':W_Periode:'" AND AVEC AssociationIndem = "':W_CodAssoc:'"'

	W_Temp=W_Temp:' AND AVEC DetailCalculIndem = "1"'

      	*  secteurs
      	IF W_Secteur # "" THEN
         	W_Count = LEN(W_Secteur)
         	W_Temp = W_Temp:' AND AVEC CodSecteurDetailIndem = "':W_Secteur[1,3]:'"'
         	IF W_Count > 2 THEN
            		j=5
            		LOOP
            		UNTIL j >= W_Count DO
               			W_Temp = W_Temp:' OR = "':W_Secteur[j,3]:'"'
               			j = j + 4
            		REPEAT
         	END
      	END

      	IF W_TypePerso = "A" OR W_TypePerso = "P" THEN
         	W_Temp = W_Temp:' AND AVEC FonctionContratIndem = "':W_TypePerso:'"'
      	END

	IF W_TypePerso = "P" THEN
        	W_Temp = W_Temp:' AND AVEC TypeActiviteIndem = "':W_Activite:'"'
	END

END

EXECUTE W_Temp
EXECUTE 'SAUVE-LISTE W_ReqDet'
EXECUTE "LISTE W_ReqDet" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN

      	SELECT F.DETAILINDEM TO W_ReqDet
   	W_Fin = "FAUX"

   	LOOP
      		READNEXT W_CleIndem FROM W_ReqDet ELSE W_Fin = "VRAI"
   	WHILE W_Fin = "FAUX" DO
      		*READ ENR_DETAILINDEM FROM F.DETAILINDEM,W_CleIndem ELSE ENR_DETAILINDEM=""

            	DELETE F.DETAILINDEM,W_CleIndem
	REPEAT

END

RETURN

1601 *******************************************************************
*	Suppression INDIVIDUELLE des DETAILINDEM....

*IF W_Selection = "I" THEN

	*  requete si slection individuelle
      	W_Temp = 'SSELECT DETAILINDEM AVEC 0 = "':W_CleAbs[1,5]:']" AND AVEC PeriodeIndem = "':W_Periode:'" AND AVEC AssociationIndem = "':W_CodAssoc:'"'

	W_Temp=W_Temp:' AND AVEC DetailCalculIndem = "1"'

*END

EXECUTE W_Temp
EXECUTE 'SAUVE-LISTE W_ReqDet'
EXECUTE "LISTE W_ReqDet" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN

      	SELECT F.DETAILINDEM TO W_ReqDet
   	W_Fin = "FAUX"

   	LOOP
      		READNEXT W_CleIndem FROM W_ReqDet ELSE W_Fin = "VRAI"
   	WHILE W_Fin = "FAUX" DO
      		*READ ENR_DETAILINDEM FROM F.DETAILINDEM,W_CleIndem ELSE ENR_DETAILINDEM=""

            	DELETE F.DETAILINDEM,W_CleIndem
	REPEAT

END
EXECUTE 'EFFACER-LISTE W_ReqDet'

RETURN
