***********************************
*
* MAJ DES CONGES SI PAS DETAILCALCUL
*
***********************************

***********************************
* OUVERTURE DES FICHIERS
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","AIDANTDELAIPREV" TO F.AIDANTDELAIPREV ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
OPEN "","CONTRATSPREV" TO F.CONTRATSPREV ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
************************  Modifi par mikael le 25/11/05
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
***********************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_RangPeriode=INDEX(ARGUMENTS," ",1)
W_PERIODEFACT=ARGUMENTS[W_RangPeriode+1,6]
W_RANGENTITE=INDEX(ARGUMENTS," ",2)
W_ENTITE=ARGUMENTS[W_RANGENTITE+1,3]
W_RANGACT=INDEX(ARGUMENTS," ",3)
W_ACTIVITE=ARGUMENTS[W_RANGACT+1,1]
W_PERIODE=W_PERIODEFACT

W_DebMois=ICONV("01/":W_PERIODEFACT[5,2]:"/":W_PERIODEFACT[1,4],"D4/")
W_FinMois=W_DebMois+32
W_FinMois=OCONV(W_FinMois,"D4/")
W_FinMois="01/":W_FinMois[4,7]
W_FinMois=ICONV(W_FinMois,"D4/")-1
W_NbJourMois=W_FinMois-W_DebMois+1
W_NbJourMois=W_NbJourMois * 100

* VERIFIE SI PASSAGE A L'EURO
W_EURO=0
*********** modifi par mikael le 25/11/05
LISTECONTRATS=""
LISTEABSENCESAIDANT=""
LISTEMALADIEAIDANT=""
W_ListeCONTRATSPREV=""

* REGARDE SI TRAITEMENT EN EUROS
READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE STOP
READ ENR_PERIODESPAIE FROM F.PERIODESPAIE,"1" ELSE STOP
READ ENR_TABLES FROM F.TABLES,"NATURECONTRAT" ELSE STOP

IF INT(ICONV("01/":ENR_PERIODESPAIE<1>[5,2]:"/":ENR_PERIODESPAIE<1>[1,4],"D4/"))>=INT(ENR_CONSTANTESPAIE<9>) THEN
   W_PASSAGEEURO=1
   W_EURO="6,55957"
END ELSE
   W_PASSAGEEURO=0
END


W_JOURCONGESCPS=0
***********************************
* CALCUL DU 1ER JOUR DU MOIS SUIVANT

   W_PERIODEFACT2=W_PERIODEFACT

   W_JOURMOIS=ICONV("01/":W_PERIODEFACT[5,2]:"/":W_PERIODEFACT[1,4],"D4/")

   IF W_PERIODEFACT[5,2]="12" THEN
       W_PERIODEFACT2[1,4]=W_PERIODEFACT[1,4]+1
       W_PERIODEFACT2=W_PERIODEFACT2[1,4]:"01"
   END ELSE
       W_PERIODEFACT2=W_PERIODEFACT+1
   END

   W_JOURMOISSUIV=ICONV("01/":W_PERIODEFACT2[5,2]:"/":W_PERIODEFACT2[1,4],"D4/")
   W_JOURMOISSUIV=W_JOURMOISSUIV-1

***********************************
* SELECTION DES CONTRATS SANS DETAILCALCUL

IF W_ACTIVITE="M" THEN
     W_Selection = 'SSELECT CONTRAT AVEC 63 < "':W_PERIODEFACT:'" OR = "" AND AVEC 65 <> "O" AND AVEC 2 = "':W_ENTITE:'" AND AVEC TypeActivite = "':W_ACTIVITE:'" AND AVEC 1 = "02" AND AVEC 8 = "" OR >= "':W_JOURMOIS:'" AND AVEC 7 <= "':W_JOURMOISSUIV:'"'
END ELSE 
     IF W_ACTIVITE="P" THEN
          W_Selection = 'SSELECT CONTRAT AVEC 63 < "':W_PERIODEFACT:'" OR = "" AND AVEC 65 <> "O" AND AVEC 2 = "':W_ENTITE:'" AND AVEC TypeActivite = "':W_ACTIVITE:'" OR = "M" AND AVEC 1 <> "02" AND AVEC 8 = "" OR >= "':W_JOURMOIS:'" AND AVEC 7 <= "':W_JOURMOISSUIV:'" OR AVEC 63 < "':W_PERIODEFACT:'" OR = "" AND AVEC 65 <> "O" AND AVEC 2 = "':W_ENTITE:'" AND AVEC TypeActivite <> "S" AND AVEC 6 = "A" AND AVEC 1 <> "02" AND AVEC 8 = "" OR >= "':W_JOURMOIS:'" AND AVEC 7 <= "':W_JOURMOISSUIV:'"'
     END ELSE
	  W_Selection = 'SSELECT CONTRAT AVEC 63 < "':W_PERIODEFACT:'" OR = "" AND AVEC 65 <> "O" AND AVEC 2 = "':W_ENTITE:'" AND AVEC TypeActivite = "':W_ACTIVITE:'" AND AVEC 1 <> "02" AND AVEC 8 = "" OR >= "':W_JOURMOIS:'" AND AVEC 7 <= "':W_JOURMOISSUIV:'"'
     END
END
*IF W_PERIODEFACT = "200306" OR W_PERIODEFACT = "200406" OR W_PERIODEFACT = "200506" THEN
*   CALL MajGrilleCloture(W_Selection,W_PERIODEFACT)
*END
EXECUTE W_Selection
EXECUTE "SAUVE-LISTE LISTECONTRATS"
EXECUTE "LISTE LISTECONTRATS" CAPTURING MSG RETURNING MSGCODE

IF MSGCODE<1>=209 THEN
 EXECUTE 'MAJSALREFIJSS ':W_PERIODEFACT
 STOP
END
SELECT F.CONTRAT TO LISTECONTRATS
***********************************
* TRAITEMENT DES DONNEES A CLOTURER

* SELECTION CONTRATSPREV POUR CONNAITRE LES COMPLEMENTS MALADIE/ACCIDENT
GOSUB 304

W_FINCONTRAT="FAUX"

LOOP 
     READNEXT CLE FROM LISTECONTRATS ELSE
	  W_FINCONTRAT="VRAI"
     END
     UNTIL W_FINCONTRAT="VRAI" DO
     
     READ ENR_CONTRAT FROM F.CONTRAT,CLE ELSE 
	ENR_CONTRAT=""
     END
     W_CODEAIDANT=CLE[1,5]
     W_CODECONTRAT=CLE
     W_AFFECTCONGESMOIS="FAUX"
     READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE
        ENR_CONVENTIONCOL=""
     END
     W_DEBUTCONTRAT=ENR_CONTRAT<7>
     W_CODECONVENTION=ENR_CONTRAT<1>
     W_DATEDEBUTCONTRAT=OCONV(ENR_CONTRAT<7>,"D4/")
     W_DATEDEBUTCONTRAT=W_DATEDEBUTCONTRAT[7,4]:W_DATEDEBUTCONTRAT[4,2]
	 
	* modif vanessa 11/04/12 - DA 11089-01
	IF ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN
		W_JourSuspAvant=ENR_CONTRAT<70>
		W_DEBUTCONTRATANC=ENR_CONTRAT<97>		
	END
	 
	 
     * GESTION CONGES SUR LE MOIS
     GOSUB 100

     * SI BASCULEMENT CP A FAIRE 
     IF ENR_CONVENTIONCOL<28>="0" OR ENR_CONVENTIONCOL<28>="" THEN
	 IF W_PERIODEFACT[5,2]="05" THEN GOSUB 10
         ENR_CONTRAT<63>=W_PERIODEFACT
         ENR_CONTRAT<81>=""
     END ELSE
	 IF W_PERIODEFACT[5,2]="12" THEN GOSUB 10
         ENR_CONTRAT<63>=W_PERIODEFACT
         ENR_CONTRAT<81>=""
     END

     * SI BASCULEMENT CF A FAIRE
     IF W_PERIODEFACT[5,2]="10" AND ENR_CONVENTIONCOL<4>="1" THEN
		GOSUB 20 
     END
     
	* modif vanessa 11/04/12 - DA 11089
	IF ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN
		W_DEBUTCONTRAT=INT(W_DEBUTCONTRAT+(ENR_CONTRAT<70>/100))
		W_DEBUTCONTRATANC=INT(W_DEBUTCONTRATANC+(ENR_CONTRAT<70>/100))
	END
    W_DATEDEBUTCONTRAT=OCONV(W_DEBUTCONTRAT,"D4/")
    W_DATEDEBUTCONTRAT=W_DATEDEBUTCONTRAT[7,4]:W_DATEDEBUTCONTRAT[4,2]
    IF ENR_CONTRAT<97> # "" THEN
        W_DATEDEBUTCONTRATANC=OCONV(W_DEBUTCONTRATANC,"D4/")
        W_DATEDEBUTCONTRATANC=W_DATEDEBUTCONTRATANC[7,4]:W_DATEDEBUTCONTRATANC[4,2]
    END ELSE
		W_DATEDEBUTCONTRATANC=W_DATEDEBUTCONTRAT
    END 
	 
	* CALCULE MOIS -1
	IF W_DATEDEBUTCONTRATANC[5,2]<>"01" THEN 
		W_DATEDEBUTCONTRATANC=W_DATEDEBUTCONTRATANC-1
	END ELSE
		W_DATEDEBUTCONTRATANC=W_DATEDEBUTCONTRATANC[1,4]-1:"12"
	END	 
	 
     * SI BASCULEMENT CA A FAIRE AU MOIS ANNIVERSAIRE
    IF ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN
       IF (ENR_CONVENTIONCOL<28> = 0 AND W_PERIODEFACT[5,2]="05") OR (ENR_CONVENTIONCOL<28> = 1 AND W_PERIODEFACT[5,2]="12") THEN
          NULL
       END ELSE
          IF W_DATEDEBUTCONTRATANC[5,2]=W_PERIODEFACT[5,2] THEN GOSUB 30
       END
    END ELSE
       IF ENR_CONVENTIONCOL<13>=2 THEN
          IF W_DATEDEBUTCONTRATANC[5,2]=W_PERIODEFACT[5,2] THEN
             GOSUB 30
          END
       END
    *END ELSE
    *    * SI BASCULEMENT CA A FAIRE PERIODE REF.
    *    GOSUB 30
    END

    IF ENR_CONVENTIONCOL<28>="0" OR ENR_CONVENTIONCOL<28>="" THEN
		IF W_PERIODEFACT[5,2]="05" THEN    

			* modif vanessa 11/04/12 - DA 11089			
			IF ENR_CONVENTIONCOL<13>=1 OR ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN
				GOSUB 30
			END
		END
    END ELSE
		IF W_PERIODEFACT[5,2]="12" THEN    

			* modif vanessa 11/04/12 - DA 11089			
			IF ENR_CONVENTIONCOL<13>=1 OR ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN
				GOSUB 30
			END
		END
    END	
	
	* MAJ DES CONGES DELAI PREVENANCE
	GOSUB 40
		
    W_AVENANT=DCOUNT(EXTRACT(ENR_CONTRAT,15),CHAR(253))
    IF ENR_CONTRAT<68,W_AVENANT>="1" THEN
		IF ENR_CONTRAT<1>#"02" THEN	
     	    READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> THEN
				W_FINMODUL=ENR_ETABLISSEMENT<24>
				IF W_FINMODUL=W_PERIODEFACT[5,2] THEN
					ENR_CONTRAT<71>=ENR_CONTRAT<76>
					ENR_CONTRAT<72>=ENR_CONTRAT<77>
					ENR_CONTRAT<73>=ENR_CONTRAT<78>
					ENR_CONTRAT<74>=ENR_CONTRAT<79>
					ENR_CONTRAT<75>=ENR_CONTRAT<80>
					ENR_CONTRAT<76>=""
					ENR_CONTRAT<77>=""
					ENR_CONTRAT<78>=""
					ENR_CONTRAT<79>=""
					ENR_CONTRAT<80>=""
				END
			END
		END
    END ELSE
		READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> THEN
			IF ENR_ASSOCIATION<25>="1" THEN
				IF W_PERIODEFACT[5,2]="11" THEN
					ENR_CONTRAT<71>=ENR_CONTRAT<76>
					ENR_CONTRAT<72>=ENR_CONTRAT<77>
					ENR_CONTRAT<73>=ENR_CONTRAT<78>
					ENR_CONTRAT<74>=ENR_CONTRAT<79>
					ENR_CONTRAT<75>=ENR_CONTRAT<80>
					ENR_CONTRAT<76>=""
					ENR_CONTRAT<77>=""
					ENR_CONTRAT<78>=""
					ENR_CONTRAT<79>=""
					ENR_CONTRAT<80>=""
				END
			END ELSE
				IF W_PERIODEFACT[5,2]="12" THEN
					ENR_CONTRAT<71>=ENR_CONTRAT<76>
					ENR_CONTRAT<72>=ENR_CONTRAT<77>
				    ENR_CONTRAT<73>=ENR_CONTRAT<78>
				    ENR_CONTRAT<74>=ENR_CONTRAT<79>
				    ENR_CONTRAT<75>=ENR_CONTRAT<80>
				    ENR_CONTRAT<76>=""
				    ENR_CONTRAT<77>=""
				    ENR_CONTRAT<78>=""
				    ENR_CONTRAT<79>=""
				    ENR_CONTRAT<80>=""
				END
			END
        END
    END			

	* Modif Greg - 12/05/11 - DA11032 - Gestion du report des congs.
	IF ENR_CONTRAT<58>=W_PERIODEFACT THEN
		IF ENR_CONTRAT<116><>"" THEN
			READ ENR_CONTRATREPRISE FROM F.CONTRAT, ENR_CONTRAT<116> THEN
				ENR_CONTRATREPRISE<83>=ENR_CONTRATREPRISE<83>+ENR_CONTRAT<83>
				IF ENR_CONTRATREPRISE<83>>0 THEN
					IF ENR_CONTRATREPRISE<83>>ENR_CONTRAT<39> THEN
						ENR_CONTRATREPRISE<83>=ENR_CONTRATREPRISE<83>-ENR_CONTRAT<39>
						ENR_CONTRATREPRISE<39>="0"
					END ELSE
						ENR_CONTRATREPRISE<83>="0"
						ENR_CONTRATREPRISE<39>=ENR_CONTRAT<39>-ENR_CONTRATREPRISE<83>
					END
				END ELSE
					ENR_CONTRATREPRISE<39>=ENR_CONTRATREPRISE<39>+ENR_CONTRAT<39>
					ENR_CONTRATREPRISE<83>=ENR_CONTRAT<83>
				END
				
				ENR_CONTRATREPRISE<42>=ENR_CONTRAT<42>
				ENR_CONTRATREPRISE<43>=ENR_CONTRAT<43>
				
				ENR_CONTRATREPRISE<38>=ENR_CONTRATREPRISE<38>+ENR_CONTRAT<38>
				ENR_CONTRATREPRISE<40>=ENR_CONTRATREPRISE<40>+ENR_CONTRAT<40>
				ENR_CONTRATREPRISE<41>=ENR_CONTRATREPRISE<41>+ENR_CONTRAT<41>
				ENR_CONTRATREPRISE<44>=ENR_CONTRATREPRISE<44>+ENR_CONTRAT<44>
				ENR_CONTRATREPRISE<45>=ENR_CONTRATREPRISE<45>+ENR_CONTRAT<45>
				ENR_CONTRATREPRISE<46>=ENR_CONTRATREPRISE<46>+ENR_CONTRAT<46>
				ENR_CONTRATREPRISE<47>=ENR_CONTRATREPRISE<47>+ENR_CONTRAT<47>
				ENR_CONTRATREPRISE<48>=ENR_CONTRATREPRISE<48>+ENR_CONTRAT<48>
				ENR_CONTRATREPRISE<85>=ENR_CONTRATREPRISE<85>+ENR_CONTRAT<85>
				ENR_CONTRATREPRISE<86>=ENR_CONTRATREPRISE<86>+ENR_CONTRAT<86>
				ENR_CONTRATREPRISE<109>=ENR_CONTRATREPRISE<109>+ENR_CONTRAT<109>
				ENR_CONTRATREPRISE<110>=ENR_CONTRATREPRISE<110>+ENR_CONTRAT<110>
				
				ENR_CONTRATREPRISE<116>=""
				WRITE ENR_CONTRATREPRISE ON F.CONTRAT, ENR_CONTRAT<116>
			END ELSE
				ENR_CONTRAT<116>=""
			END
		END
		
		ENR_CONTRAT<39>=0
		ENR_CONTRAT<41>=0
		ENR_CONTRAT<44>=0
		ENR_CONTRAT<45>=0
		ENR_CONTRAT<46>=0
		ENR_CONTRAT<48>=0
		ENR_CONTRAT<83>=0
	END
	* Fin modif Greg - 12/05/11
	     
     * ECRITURE DU CONTRAT
     WRITE ENR_CONTRAT TO F.CONTRAT,W_CODECONTRAT

     * TEST SI CONTRAT ACTIF DERNIER JOUR DU MOIS
     * SI OUI ALORS EFF ASSO ET EFF ETAB +1
     IF ENR_CONTRAT<8>="" OR ENR_CONTRAT<8>>W_JOURMOISSUIV THEN
	IF ENR_CONTRAT<1>#"02" THEN	
	  READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> THEN

		IF ENR_CONTRAT<13><>"" THEN
			iTemp=1
			LOOP
			UNTIL ENR_TABLES<2,iTemp> = ENR_CONTRAT<13> OR ENR_TABLES<2,iTemp> = "" DO
				iTemp=iTemp+1
			REPEAT
			IF ENR_TABLES<4,iTemp> = "O" THEN
	           	   ENR_ASSOCIATION<27,1>=ENR_ASSOCIATION<27,1>+100
		   	   IF W_FINPERIODE <= ICONV("31/12/2007","D4/") THEN
	   			* LECTURE CIVILAIDANT POUR RECUPERER LA DATE DE NAISSANCE
           			READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODECONTRAT[1,5] THEN
				   W_DateFinPeriodeExt = OCONV(W_FINPERIODE,"D4/")
				   W_DateNaiExt = OCONV(ENR_CIVILAIDANT<26>,"D4/")
				   W_FINPERIODEEXT= W_DateFinPeriodeExt[7,4]:W_DateFinPeriodeExt[4,2]
				   W_DATENAI = W_DateNaiExt[7,4]:W_DateNaiExt[4,2] 
				   IF W_FINPERIODEEXT- W_DATENAI  < 2600  THEN
			   		ENR_ASSOCIATION<40,1>=ENR_ASSOCIATION<40,1>+100
				   END
				END
		   	   END
			END
		END ELSE
	           ENR_ASSOCIATION<27,1>=ENR_ASSOCIATION<27,1>+100
		   IF W_FINPERIODE <= ICONV("31/12/2007","D4/") THEN
	   		* LECTURE CIVILAIDANT POUR RECUPERER LA DATE DE NAISSANCE
           		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODECONTRAT[1,5] THEN
				W_DateFinPeriodeExt = OCONV(W_FINPERIODE,"D4/")
				W_DateNaiExt = OCONV(ENR_CIVILAIDANT<26>,"D4/")
				W_FINPERIODEEXT= W_DateFinPeriodeExt[7,4]:W_DateFinPeriodeExt[4,2]
				W_DATENAI = W_DateNaiExt[7,4]:W_DateNaiExt[4,2] 
				IF W_FINPERIODEEXT- W_DATENAI  < 2600  THEN
			   		ENR_ASSOCIATION<40,1>=ENR_ASSOCIATION<40,1>+100
				END
			END
		   END
		END


	  END
          
	       READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> THEN

		  IF ENR_CONTRAT<13><>"" THEN
			iTemp=1
			LOOP
			UNTIL ENR_TABLES<2,iTemp> = ENR_CONTRAT<13> OR ENR_TABLES<2,iTemp> = "" DO
				iTemp=iTemp+1
			REPEAT
			IF ENR_TABLES<4,iTemp> = "O" THEN
	           	   ENR_ETABLISSEMENT<17,1>=ENR_ETABLISSEMENT<17,1>+100
		   	   IF W_FINPERIODE <= ICONV("31/12/2007","D4/") THEN
    		      	   * LECTURE CIVILAIDANT POUR RECUPERER LA DATE DE NAISSANCE
           	      	      READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODECONTRAT[1,5] THEN
			         W_DateFinPeriodeExt = OCONV(W_FINPERIODE ,"D4/")
			         W_DateNaiExt = OCONV(ENR_CIVILAIDANT<26>,"D4/")
			         W_FINPERIODEEXT= W_DateFinPeriodeExt[7,4]:W_DateFinPeriodeExt[4,2]
			         W_DATENAI = W_DateNaiExt[7,4]:W_DateNaiExt[4,2] 
				 IF W_FINPERIODEEXT- W_DATENAI  < 2600  THEN
		   		    ENR_ETABLISSEMENT<32,1>=ENR_ETABLISSEMENT<32,1>+100
				 END
		      	      END
		   	   END
			END
		  END ELSE
	              ENR_ETABLISSEMENT<17,1>=ENR_ETABLISSEMENT<17,1>+100
		      IF W_FINPERIODE <= ICONV("31/12/2007","D4/") THEN
    		         * LECTURE CIVILAIDANT POUR RECUPERER LA DATE DE NAISSANCE
           	         READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODECONTRAT[1,5] THEN
			   W_DateFinPeriodeExt = OCONV(W_FINPERIODE ,"D4/")
			   W_DateNaiExt = OCONV(ENR_CIVILAIDANT<26>,"D4/")
			   W_FINPERIODEEXT= W_DateFinPeriodeExt[7,4]:W_DateFinPeriodeExt[4,2]
			   W_DATENAI = W_DateNaiExt[7,4]:W_DateNaiExt[4,2] 
			   IF W_FINPERIODEEXT- W_DATENAI  < 2600  THEN
		   		ENR_ETABLISSEMENT<32,1>=ENR_ETABLISSEMENT<32,1>+100
			   END
		         END
		      END

		  END

   	       END

	       WRITE ENR_ETABLISSEMENT ON F.ETABLISSEMENT,ENR_CONTRAT<3>
	  
	  WRITE ENR_ASSOCIATION ON F.ASSOCIATION,ENR_CONTRAT<2>
	END
     END

REPEAT

EXECUTE 'MAJSALREFIJSS ':W_PERIODEFACT

STOP
**********************************************************
* GESTION BASCULEMENT CONGES PAYES

10 *
    W_NBJOURCONGESTOTAL=ENR_CONTRAT<44>

    * ARRONDI LE NBRE DE JOURS CONGES A L'ENTIER SUPERIEUR    
    IF W_NBJOURCONGESTOTAL<>0 THEN
	 W_NBJOURCONGESTOTAL=INT((ENR_CONTRAT<44>/100)+.99)
    END
    W_NBJOURCONGESTOTAL=W_NBJOURCONGESTOTAL*100

    * CALCULE LA VALEUR D'UNE JOURNEE EN HRES + MONTANT
    IF W_NBJOURCONGESTOTAL=0 THEN
     W_VALEURTOTALHEURES=0
     W_VALEURTOTALMONTANT=0
    END ELSE
     W_VALEURTOTALHEURES=ENR_CONTRAT<45>/W_NBJOURCONGESTOTAL
     W_VALEURTOTALMONTANT=ENR_CONTRAT<46>/W_NBJOURCONGESTOTAL
    END

    W_VALEURTOTALHEURES=INT((W_VALEURTOTALHEURES*100)+1/2)
    W_VALEURTOTALMONTANT=INT((W_VALEURTOTALMONTANT*100)+1/2)

    * TEST SI DERNIERE DECIMALES PAIRES DE TOTAL HEURES
    IF W_VALEURTOTALHEURES/2-INT(W_VALEURTOTALHEURES/2)<>0 THEN
	 W_VALEURTOTALHEURES=W_VALEURTOTALHEURES+1
    END
    * TEST SI DERNIERE DECIMALES PAIRES DE TOTAL MONTANT
    IF W_VALEURTOTALMONTANT/2-INT(W_VALEURTOTALMONTANT/2)<>0 THEN
	 W_VALEURTOTALMONTANT=W_VALEURTOTALMONTANT+1
    END

    * AFFECTATION VALEUR D'UNE JOURNEE
    ENR_CONTRAT<42>=W_VALEURTOTALHEURES
    ENR_CONTRAT<43>=W_VALEURTOTALMONTANT

    * CONVERSION OUVRABLES / OUVRES SI CONV. COL. LE PERMET
    W_SAUVATT44=ENR_CONTRAT<44>
    IF ENR_CONVENTIONCOL<2>=1 THEN
	 ENR_CONTRAT<44>=ENR_CONTRAT<44>*5/6
    END

    * REPRISE DES NON CONSOMMES SI CONV. COL. LE PERMET
    * Modif Guillaume DA10065 12/04/2010
    * Modif vanessa 28/05/10 DA 10065 : dates de reference + rajoute code si pas d'absence trouve + rajout code aidant dans la requete
    IF ENR_CONVENTIONCOL<3> = 3 THEN
        IF ENR_CONVENTIONCOL<28> = 0 THEN
            W_DateDebRefConge = ICONV("01/05/":W_PERIODE[1,4],"D4/")
            W_DateFinRefConge = ICONV("31/05/":W_PERIODE[1,4],"D4/")
        END ELSE
            W_DateDebRefConge = ICONV("01/12/":W_PERIODE[1,4],"D4/")
            W_DateFinRefConge = ICONV("31/12/":W_PERIODE[1,4],"D4/")
        END
    
        EXECUTE 'SELECT ABSENCESAIDANT AVEC CodeAidant = "':W_CODEAIDANT:'" AND AVEC NumMotifAidant = "01" OR = "02" OR = "03" OR = "04" OR = "05" OR = "06" AND AVEC DebAbsAidant <= "':W_DateFinRefConge:'" AND AVEC FinAbsAidant >= "':W_DateDebRefConge:'"'
    	EXECUTE 'SAUVE-LISTE W_ListeAbs'
    	EXECUTE "LISTE W_ListeAbs" RETURNING MSGCODE
        IF MSGCODE<1>#209 THEN
        	ENR_CONTRAT<38>=ENR_CONTRAT<44>+ENR_CONTRAT<39>+ENR_CONTRAT<41>
                W_SAUVECF=ENR_CONTRAT<41>
        	ENR_CONTRAT<40>=0
        	ENR_CONTRAT<41>=0
	END ELSE
		ENR_CONTRAT<38>=ENR_CONTRAT<44>
                W_SAUVECF=0
		ENR_CONTRAT<40>=0
		ENR_CONTRAT<41>=0		
        END
    END ELSE
        IF ENR_CONVENTIONCOL<3>=2 THEN
			ENR_CONTRAT<38>=ENR_CONTRAT<44>+ENR_CONTRAT<39>+ENR_CONTRAT<41>
                        W_SAUVECF=ENR_CONTRAT<41>
			ENR_CONTRAT<40>=0
			ENR_CONTRAT<41>=0
        END ELSE 
			ENR_CONTRAT<38>=ENR_CONTRAT<44>
                        W_SAUVECF=0
			* REMISE A ZERO DES CONGES FRACTIONNEMENT
			ENR_CONTRAT<40>=0
			ENR_CONTRAT<41>=0
        END
    END
    ENR_CONTRAT<38>=INT((ENR_CONTRAT<38>+99)/100)

    * CONGES RESTANTS A CONSOMMER
    * Modif Greg - 03/04/12 - DA12023 - Modification du calcul
    *ENR_CONTRAT<39>=(ENR_CONTRAT<38>*100)-ENR_CONTRAT<83>
    * On prend les jours en cours d'acquisition auxquels on retire les ventuels jours pris par anticipation
    W_Att39=INT(((W_SAUVATT44-ENR_CONTRAT<83>)/100)+0.99)*100
    * Les donnes des att. 44 et 83 tant en ouvrables, arriv ici on a logiquement un nombre de jours ouvrables
    * dans la variable W_Att39. Si la convention est paramtre pour grer les congs en ouvrs, on convertit.
    IF ENR_CONVENTIONCOL<2>="1" THEN
       W_Att39=INT(((W_Att39*5/6)/100)+0.99)*100
    END
		
    * Si la convention est paramtre pour rcuprer les congs non pris, alors on cumule
    * les jours restants de l'anne prcdente avec ceux disponible pour l'anne qui dbute.
    * Sinon on renseigner l'att. 39 avec seulement les jours disponibles pour la "nouvelle" anne.
    IF ENR_CONVENTIONCOL<3>="2" THEN
       ENR_CONTRAT<39>=ENR_CONTRAT<39>+W_Att39+W_SAUVECF
    END ELSE
       ENR_CONTRAT<39>=W_Att39
    END
    * Fin modif Greg - 03/04/12

    IF ENR_CONTRAT<39>>ENR_CONTRAT<38>*100 THEN ENR_CONTRAT<39>=ENR_CONTRAT<38>*100
	

    * BASCULE PROVISION EMPLOYEUR
    ENR_CONTRAT<85>=ENR_CONTRAT<85>+ENR_CONTRAT<86>

    * VIDAGE CONTRAT
    ENR_CONTRAT<44>=0
    ENR_CONTRAT<45>=0
    ENR_CONTRAT<46>=0
    ENR_CONTRAT<83>=0
    ENR_CONTRAT<86>=0

RETURN

**********************************************************
* GESTION BASCULEMENT CONGES FRACTIONNEMENT

20 *
    W_NBJOURFRACT=0

    * CALCUL DU NOMBRE DE JOURS DE CONGES RESTANTS
    IF ENR_CONVENTIONCOL<2>=1 THEN
         W_NBJOURCONGESRESTANT=ENR_CONTRAT<39>*6/5        
    END ELSE
         W_NBJOURCONGESRESTANT=ENR_CONTRAT<39>
    END

    W_NBJOURCONGESRESTANT=W_NBJOURCONGESRESTANT/100

    BEGIN CASE

 	 * TOUTES SAUF AIDE A DOMICILE + FONCTION PUBLIQUE
	 CASE W_CODECONVENTION<>"01" AND W_CODECONVENTION <> "07"
          IF W_NBJOURCONGESRESTANT>=12 THEN
		   W_NBJOURFRACT=2
	      END ELSE
		   IF W_NBJOURCONGESRESTANT>=9 THEN
			W_NBJOURFRACT=1
		   END
	      END

	 * FONCTION PUBLIQUE
	 CASE W_CODECONVENTION="07" 
		* modif vanessa - DA9135-01 - 16/10/09	 
	    IF ENR_CONVENTIONCOL<2>=2 THEN
	        W_NBJOURCONGESRESTANT=ENR_CONTRAT<39>*5/6        
	    END ELSE
	        W_NBJOURCONGESRESTANT=ENR_CONTRAT<39>
	    END
		W_NBJOURCONGESRESTANT=W_NBJOURCONGESRESTANT/100	 	 
	 
        IF W_NBJOURCONGESRESTANT>=8 THEN
			W_NBJOURFRACT=2
		END ELSE
			IF W_NBJOURCONGESRESTANT>=5 THEN
				W_NBJOURFRACT=1
			END
		END
		* fin modif
		
	 * AIDE A DOMICILE
	 CASE W_CODECONVENTION="01"
              IF W_NBJOURCONGESRESTANT>=12 THEN
		   W_NBJOURFRACT=3
	      END ELSE
		   IF W_NBJOURCONGESRESTANT>=9 THEN
			W_NBJOURFRACT=1
		   END
	      END

    END CASE

    IF ENR_CONVENTIONCOL<3>=2 THEN
        ENR_CONTRAT<40>=ENR_CONTRAT<40>+W_NBJOURFRACT
        ENR_CONTRAT<41>=ENR_CONTRAT<41>+W_NBJOURFRACT*100
    END ELSE        
	ENR_CONTRAT<40>=W_NBJOURFRACT
        ENR_CONTRAT<41>=W_NBJOURFRACT*100
    END

RETURN

**********************************************************
* GESTION BASCULEMENT CONGES ANCIENNETE

30 *
    * CALCUL DE L'ANCIENNETE DU CONTRAT
	* modif vanessa 11/04/12 - DA 11089		
	* recherche si on tait dj  la date anniversaire  la clture prcdente (avec les jours de suspension prcdents)
	IF ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN	
		IF (W_PERIODEFACT[5,2]="05" AND ENR_CONVENTIONCOL<28> = 0) OR (W_PERIODEFACT[5,2]="12" AND ENR_CONVENTIONCOL<28> = 1) THEN
			* ne rien faire
		END ELSE
			W_DateCloturePrec=W_PERIODEFACT-1
			IF W_DateCloturePrec[5,2]="00" THEN
				W_DateCloturePrec=W_DateCloturePrec[1,4]-1:"12"
			END	
			W_DEBUTCONTRATPrec=INT(ENR_CONTRAT<7>+(W_JourSuspAvant/100))
			W_DEBUTCONTRATANCPrec=INT(ENR_CONTRAT<97>+(W_JourSuspAvant/100))
			W_DATEDEBUTCONTRATPrec=OCONV(W_DEBUTCONTRATPrec,"D4/")
			W_DATEDEBUTCONTRATPrec=W_DATEDEBUTCONTRATPrec[7,4]:W_DATEDEBUTCONTRATPrec[4,2]
			IF ENR_CONTRAT<97><>"" THEN
				W_DATEDEBUTCONTRATANCPrec=OCONV(W_DEBUTCONTRATANCPrec,"D4/")
				W_DATEDEBUTCONTRATANCPrec=W_DATEDEBUTCONTRATANCPrec[7,4]:W_DATEDEBUTCONTRATANCPrec[4,2]
			END ELSE
				W_DATEDEBUTCONTRATANCPrec=W_DATEDEBUTCONTRATPrec
			END	
			IF W_DATEDEBUTCONTRATANCPrec[5,2]=W_DateCloturePrec[5,2] THEN
				RETURN
			END
		END
	END		
	
    *W_DATECLOTURE=W_PERIODEFACT+1
    * SI DATE CLOTURE > DECEMBRE
    *IF W_DATECLOTURE[5,2]=13 THEN
	*W_DATECLOTURE=W_DATECLOTURE[1,4]+1:"01"
    *END
	
    *IF W_DATECLOTURE>"200003" AND W_CODECONVENTION="02" THEN W_DATECLOTURE="200003"
	
	W_DATECLOTURE=W_PERIODEFACT	
	
    W_ANCIENNETE=INT(W_DATECLOTURE-W_DATEDEBUTCONTRATANC)/100

    W_CODECONVENTIONSAUV=W_CODECONVENTION
    READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> ELSE ENR_ASSOCIATION=""
    IF ENR_ASSOCIATION<1>="A.S.M.A.D." AND W_CODECONVENTION="05" THEN W_CODECONVENTION="01"
	
	W_NBJOURANCIEN=0
	
    BEGIN CASE

         * EMPLOYES DE MAISON OU AIDE A DOMICLIE
		 * modif vanessa 12/04/12 - rajoute ccn06
		CASE W_CODECONVENTION="02" OR W_CODECONVENTION="01"	OR W_CODECONVENTION="06"	

			* BLOCAGE ANCIENNETE DANS CCN 02 SI DEBUT CONTRAT >= 01/04/00
			IF ICONV(W_DATEDEBUTCONTRAT,"D4/")>="11780" AND W_CODECONVENTION="02" THEN
				W_NBJOURANCIEN=0
			END ELSE 
				* GESTION HABITUELLE DES C.A
				W_NBJOURANCIEN=INT(W_ANCIENNETE/5)
				* modif vanessa 13/04/12 - DA 11089-01
				IF ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN
                   IF (ENR_CONVENTIONCOL<28> = 0 AND W_PERIODEFACT[5,2]="05") OR (ENR_CONVENTIONCOL<28> = 1 AND W_PERIODEFACT[5,2]="12") THEN
                      NULL
                   END ELSE
				      IF W_DATEDEBUTCONTRATANC[5,2]=W_PERIODEFACT[5,2] THEN
                         IF W_NBJOURANCIEN # W_ANCIENNETE/5 THEN
					        RETURN
							* Didier 01/10/2012 : si multiple de 5 et >  4 alors fin car droits cals sur mai
					     END ELSE
						    IF W_NBJOURANCIEN>4 THEN RETURN							
                         END
                      END
                   END
				END
				
				
				* Modif Greg - 03/04/12 - Suite nouvelle convention du 01/01/12, on passe de 3  5 jours de CA.
				* Donc si le calcul donne 4 jours, on passe directement  5.
				*IF W_NBJOURANCIEN>4 THEN
				IF W_NBJOURANCIEN>=4 THEN
*		        	W_NBJOURANCIEN=4
					W_NBJOURANCIEN=5
					* Didier 01/10/2012 : ramener  4 jours si CCN 02
					IF W_CODECONVENTION="02" THEN W_NBJOURANCIEN=4					
				END
			END

         * FAMILLES RURALES
		CASE W_CODECONVENTION="04"		
			W_NBJOURANCIEN=INT(W_ANCIENNETE/4)
			IF W_NBJOURANCIEN>5 THEN	
				W_NBJOURANCIEN=5
			END

		* modif vanessa 12/04/12 - en commentaires suite CCB
         * TRAVAILLEUSES FAMILLIALES
		*CASE W_CODECONVENTION="06"		
		*	W_NBJOURANCIEN=INT(W_ANCIENNETE/5)*2
		*	IF W_NBJOURANCIEN>6 THEN	
		*		W_NBJOURANCIEN=6
		*	END

         * ADMR DU 6 MAI 1970
		CASE W_CODECONVENTION="03"		
			W_NBJOURANCIEN=0
			IF W_ANCIENNETE>=5 AND W_ANCIENNETE<=10 THEN
	           W_NBJOURANCIEN=2
			END ELSE
				IF W_ANCIENNETE>10 THEN
					W_NBJOURANCIEN=5
				END
			END

    END CASE

    * Modif vanessa 12/04/12 - REPRISE DES NON CONSOMMES SI ABSENT
	W_AReporter="FAUX"
        IF ENR_CONVENTIONCOL<3> = 3 THEN
          IF ENR_CONVENTIONCOL<28> = 0 AND W_PERIODEFACT[5,2]="05" THEN
             W_DateDebRefConge = ICONV("01/05/":W_PERIODEFACT[1,4],"D4/")
             W_DateFinRefConge = ICONV("31/05/":W_PERIODEFACT[1,4],"D4/")
             EXECUTE 'SELECT ABSENCESAIDANT AVEC CodeAidant = "':W_CODEAIDANT:'" AND AVEC NumMotifAidant = "01" OR = "02" OR = "03" OR = "04" OR = "05" OR = "06" AND AVEC DebAbsAidant <= "':W_DateFinRefConge:'" AND AVEC FinAbsAidant >= "':W_DateDebRefConge:'"'
             EXECUTE 'SAUVE-LISTE W_ListeAbs'
    	     EXECUTE "LISTE W_ListeAbs" RETURNING MSGCODE
             IF MSGCODE<1>#209 THEN	
                W_AReporter="VRAI"
             END
          END ELSE
             IF ENR_CONVENTIONCOL<28> = 1 AND W_PERIODEFACT[5,2]="12" THEN
                W_DateDebRefConge = ICONV("01/12/":W_PERIODEFACT[1,4],"D4/")
                W_DateFinRefConge = ICONV("31/12/":W_PERIODEFACT[1,4],"D4/")
                EXECUTE 'SELECT ABSENCESAIDANT AVEC CodeAidant = "':W_CODEAIDANT:'" AND AVEC NumMotifAidant = "01" OR = "02" OR = "03" OR = "04" OR = "05" OR = "06" AND AVEC DebAbsAidant <= "':W_DateFinRefConge:'" AND AVEC FinAbsAidant >= "':W_DateDebRefConge:'"'
                EXECUTE 'SAUVE-LISTE W_ListeAbs'
    	          EXECUTE "LISTE W_ListeAbs" RETURNING MSGCODE
                IF MSGCODE<1>#209 THEN	
                    W_AReporter="VRAI"
                END
             END
          END
        END
	
	* modif vanessa 11/04/12 - DA 11089
	* calcul le nbre de jours prcdemment octroy

	IF ENR_CONTRAT<1> = "01" OR ENR_CONTRAT<1> = "06" THEN	
           IF W_DATEDEBUTCONTRATANC[5,2]=W_PERIODEFACT[5,2] THEN
              BEGIN CASE
                 CASE W_NBJOURANCIEN=1
                    W_NbJourPrec=0
                 CASE W_NBJOURANCIEN=2
                    W_NbJourPrec=1
                 CASE W_NBJOURANCIEN=3
                    W_NbJourPrec=2
                 CASE W_NBJOURANCIEN=5
                    W_NbJourPrec=3
              END CASE
              IF (ENR_CONVENTIONCOL<28> = 0 AND W_PERIODEFACT[5,2]="05") OR (ENR_CONVENTIONCOL<28> = 1 AND W_PERIODEFACT[5,2]="12") THEN
		 IF ENR_CONVENTIONCOL<3> # "2" AND W_AReporter="FAUX" THEN
                    ENR_CONTRAT<47>=W_NBJOURANCIEN
                    ENR_CONTRAT<48>=ENR_CONTRAT<47>*100
		 END ELSE
                    ENR_CONTRAT<48>=INT(ENR_CONTRAT<48>/100)
                    ENR_CONTRAT<47>=ENR_CONTRAT<48>+W_NBJOURANCIEN
                    ENR_CONTRAT<48>=ENR_CONTRAT<47>*100
                 END
              END ELSE
                 ENR_CONTRAT<47>=W_NBJOURANCIEN+(ENR_CONTRAT<47>-W_NbJourPrec)
                 ENR_CONTRAT<48>=(W_NBJOURANCIEN*100)+ENR_CONTRAT<48>-(W_NbJourPrec*100)
               END	
           END ELSE
              IF (ENR_CONVENTIONCOL<28> = 0 AND W_PERIODEFACT[5,2]="05") OR (ENR_CONVENTIONCOL<28> = 1 AND W_PERIODEFACT[5,2]="12") THEN
                 IF ENR_CONVENTIONCOL<3> # "2" AND W_AReporter="FAUX" THEN
                    ENR_CONTRAT<47>=W_NBJOURANCIEN
                    ENR_CONTRAT<48>=ENR_CONTRAT<47>*100
                 END ELSE
                    ENR_CONTRAT<48>=INT(ENR_CONTRAT<48>/100)
                    ENR_CONTRAT<47>=ENR_CONTRAT<48>+W_NBJOURANCIEN
                    ENR_CONTRAT<48>=ENR_CONTRAT<47>*100
                 END
              END		
           END
	END ELSE

		* modif vanes le 06/11/08	
		IF ENR_CONVENTIONCOL<3> # "2" AND W_AReporter="FAUX" THEN
			ENR_CONTRAT<47>=W_NBJOURANCIEN
			ENR_CONTRAT<48>=ENR_CONTRAT<47>*100
		END ELSE
			ENR_CONTRAT<48>=INT(ENR_CONTRAT<48>/100)
			ENR_CONTRAT<47>=ENR_CONTRAT<48>+W_NBJOURANCIEN
			ENR_CONTRAT<48>=ENR_CONTRAT<47>*100
		END
	END
	
    W_CODECONVENTION=W_CODECONVENTIONSAUV
RETURN

*********************************************************
*********************************************************
* MAJ DES CONGES DELAI PREVENANCE
* VANES LE 31/10/08

40 *

	W_FINMODUL="12"
	IF ENR_CONTRAT<1>#"02" AND ENR_CONTRAT<68,DCOUNT(ENR_CONTRAT<68>,CHAR(253))>="1" THEN	
		READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> THEN
			W_FINMODUL=ENR_ETABLISSEMENT<24>
			W_MoisModul=W_FINMODUL+1
			W_AnModul=W_PERIODEFACT[1,4]
			IF W_MoisModul="13" THEN
				W_MoisModul="01"
				W_AnModul=W_AnModul+1
			END
			W_DateFinModul=ICONV("01/":W_MoisModul:"/":W_AnModul,"D4/")-1
			W_AnModul=W_AnModul-1
			W_DateDebModul=ICONV("01/":W_MoisModul:"/":W_AnModul,"D4/")	
		END
		
		IF W_FINMODUL=W_PERIODEFACT[5,2] THEN
			READ ENR_AIDANTDELAIPREV FROM F.AIDANTDELAIPREV,W_CODECONTRAT ELSE ENR_AIDANTDELAIPREV=""
			W_Count=DCOUNT(ENR_AIDANTDELAIPREV<4>,CHAR(253))
			W_Refus=0
			W_Accept=0
			FOR i40=1 TO W_Count
				IF ENR_AIDANTDELAIPREV<4,i40> >= W_DateDebModul AND ENR_AIDANTDELAIPREV<4,i40> <= W_DateFinModul THEN
					IF ENR_AIDANTDELAIPREV<7,i40>="A" THEN
						W_Accept=W_Accept+1
					END ELSE
						IF ENR_AIDANTDELAIPREV<7,i40>="R" THEN
							W_Refus=W_Refus+1
						END
					END
				END
			NEXT i40
			IF W_Refus < 5 AND W_Accept >= 1 THEN
				IF ENR_CONVENTIONCOL<3> # "2" THEN
					ENR_CONTRAT<109>="1"
					ENR_CONTRAT<110>="100"
				END ELSE
					ENR_CONTRAT<110>=INT(ENR_CONTRAT<110>/100)
					ENR_CONTRAT<109>=ENR_CONTRAT<110>+1
					ENR_CONTRAT<110>=(ENR_CONTRAT<110>*100)+100
				END
			END ELSE
				* Modif Greg - 03/04/12 - DA12009 - Si l'aidant a plus de 4 refus ou aucune acception, on remet automatiquement  0.
				IF ENR_CONVENTIONCOL<3> # "2" THEN
					ENR_CONTRAT<109>="0"
					ENR_CONTRAT<110>="0"
				END
			END
		END
	END	
RETURN
*********************************************************
*********************************************************
* GESTION DES CONGES
* MAJ DES CONGES EN-COURS D'ACQUISITION

100 *

    W_TOTNBJOURCONGES=0

    W_CODEABSENCE=""
    W_REQABSENCESVIDE="FAUX"
    W_TOTALJRSABSMALADIE=0
    W_NBJOURNONINDEM=0
    W_PASABS="VRAI"

    W_MOIS=W_PERIODE[5,2]
    W_ANNEE=W_PERIODE[1,4]

    W_DEBUTPERIODE=ICONV("01/":W_MOIS:"/":W_ANNEE,"D")

    W_MOISFIN=W_PERIODE[5,2]+1
    IF W_MOISFIN>12 THEN
	 W_ANNEEFIN=W_PERIODE[1,4]+1
	 W_MOISFIN="01"
    END ELSE
	 W_ANNEEFIN=W_PERIODE[1,4]
    END

    W_FINPERIODE=ICONV("01/":W_MOISFIN:"/":W_ANNEEFIN,"D4/")
    W_FINPERIODE=W_FINPERIODE-1
    W_FINPERIODE2=OCONV(W_FINPERIODE,"D4/")
    W_FINPERIODE2=W_FINPERIODE2[7,4]:W_FINPERIODE2[4,2]

    EXECUTE 'TSELECT ABSENCESAIDANT AVEC CodAbsAidant = "':W_CODEAIDANT:']" AND AVEC 2 >= "':W_DEBUTPERIODE:'" AND AVEC DebAbsAidant <= "':W_FINPERIODE:'" AND AVEC NumMotifAidant = "01" OR = "02" OR = "04" OR = "05" OR = "06" OR = "12" OR = "13" OR = "22" OR = "23"'
    EXECUTE "SAUVE-LISTE LISTEABSENCESAIDANT"
    EXECUTE "LISTE LISTEABSENCESAIDANT" CAPTURING MSG RETURNING MSGCODE

    IF MSGCODE<1><>209 THEN 
         SELECT F.ABSENCESAIDANT TO LISTEABSENCESAIDANT

         LOOP 
 	     READNEXT CLE FROM LISTEABSENCESAIDANT ELSE
	         W_REQABSENCESVIDE="VRAI"
  	     END
	   UNTIL W_REQABSENCESVIDE="VRAI" DO

	     W_CODEABSENCE=CLE[6,2]
	     W_CLEABSENCE=CLE

	     * LECTURE ABSENCESAIDANT
	     READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CLEABSENCE ELSE
               PRINT "PAS D'ABS"
	         STOP
	     END
		 
		 * MODIF VANESSA 16/12/10 - DA 10187-01
		 IF W_AIDANTABSPERIODEPREC # W_CLEABSENCE[1,5] THEN
			W_AIDANTABSPERIODEPREC=""
		 END ELSE
			IF W_DEBUTPERIODE <= W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7] AND W_FINPERIODE >= W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7] THEN
				W_TOTALJRSABSMALADIE=0
			END
		 END
		 
 	     * GESTION DES ABSENCES AUTRES QUE MALADIE MATERNITE
	     IF ENR_CONTRAT<31> <> 1 OR ENR_CONTRAT<1>="02" THEN
              W_PASABS="FAUX"
              IF W_JOURCONGESCPS=0 THEN
                 * Pas conges payes pour soldes 
                 GOSUB 200
              END
           END

         REPEAT

         * a voir
	   IF W_PASABS="VRAI" AND W_JOURCONGESCPS=0 THEN GOSUB 200

    END

* Mise a jour des 10 % du BS.

   IF W_DEBUTCONTRAT <= W_DEBUTPERIODE THEN
      W_NBJOURPRESENT=250
   END ELSE
      * CALCUL AU PRORATA DES JOURS DE CONGES
      W_NBJOURPRESENT=W_DEBUTCONTRAT-W_DEBUTPERIODE
      W_NBJOURPRESENT=W_NBJOURPRESENT*100
      W_NBJOURPRESENT=W_NbJourMois-W_NBJOURPRESENT
      W_NBJOURPRESENT=250*W_NBJOURPRESENT/W_NbJourMois
      W_NBJOURPRESENT=INT(W_NBJOURPRESENT + 1/2)
    END

    W_MONTANTARRET=0

    * recherche des rubriques des contrats prevoyances
    * RECHERCHE DES RUBRIQUES 807 - 808

    W_CountDet2=DCOUNT(ENR_DETAILCALCUL<2>,CHAR(253))
    FOR iDet2=1 TO W_CountDet2
       FOR iRubPrev=1 TO W_CountRubPrev
          IF ENR_DETAILCALCUL<2,iDet2> = W_TabPrev<iRubPrev> THEN
             W_MONTANTARRET=W_MONTANTARRET+ENR_DETAILCALCUL<5,iDet2>
          END
       NEXT iRubPrev
    NEXT iDet2 

    W_BRUTARRET=ENR_DETAILCALCUL<7>-W_MONTANTARRET
    W_HEURESARRET=ENR_DETAILCALCUL<6>

    W_VALEURHEURESJOUR=INT((W_HEURESARRET*10/100)+1/2)
    W_VALEURMONTJOUR=INT((W_BRUTARRET*10/100)+1/2)  


   W_NBJOURPRESENT=W_NBJOURPRESENT-W_TOTNBJOURCONGES
   ENR_CONTRAT<44>=ENR_CONTRAT<44>+W_NBJOURPRESENT
   ENR_CONTRAT<45>=ENR_CONTRAT<45>+W_VALEURHEURESJOUR
   ENR_CONTRAT<46>=ENR_CONTRAT<46>+W_VALEURMONTJOUR

RETURN     

*********************************************************
*********************************************************
* GESTION DES ABSENCES

200 *

    W_MONTANTARRET=0
    W_ABSENCEMOIS="FAUX"

    IF W_PASABS="FAUX" THEN
       * RECHERCHE SI ABSENCES SUR LE MOIS
       IF W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7]>=W_DEBUTPERIODE AND W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7]<=W_FINPERIODE THEN 
          W_ABSENCEMOIS="VRAI"
       END
       IF W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7]<=W_DEBUTPERIODE THEN 
	   IF ENR_ABSENCESAIDANT<2>>=W_DEBUTPERIODE THEN 
	      W_ABSENCEMOIS="VRAI"
           END    
       END
    END ELSE
       W_ABSENCEMOIS="FAUX"
       W_CODEABSENCE=""
    END

    IF W_ABSENCEMOIS="VRAI" THEN

      BEGIN CASE
	* MALADIE
		* Modif Greg - 03/04/12 - DA11073 - Le motif 05 doit tre gr comme le motif 01
        CASE W_CODEABSENCE="01" OR W_CODEABSENCE="05"  
	
	  * Determine le nb jour d'abs.
        GOSUB 300

        W_NBJOURABSMALADIE=W_NBJOURABS

        * RECUPERATION ATT 17 DE CONV. COL
        READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,W_CODECONVENTION ELSE
           PRINT "PAS DE CONVENTION"
           STOP
        END		

        IF ENR_CONVENTIONCOL<17><>"" THEN
            W_NBSUSPENSION=ENR_CONVENTIONCOL<17>*100
        END ELSE
            W_NBSUSPENSION=""
        END

        IF W_TOTALJRSABSMALADIE=0 THEN
           GOSUB 302
           W_CUMULJOURMALADIE=W_CUMULMALADIE
        END

        W_TOTALJRSABSMALADIE=W_TOTALJRSABSMALADIE+W_NBJOURABSMALADIE
        W_CUMULJOURMALADIE=W_CUMULJOURMALADIE+W_NBJOURABSMALADIE

        IF W_CUMULJOURMALADIE <= W_NBSUSPENSION THEN

           * On maintient les droits de la personne
           GOSUB 301	

           * CALCUL SALAIRE DE REFERENCE
           K=1
           LOOP
           UNTIL ENR_ABSENCESAIDANT<17,K>=W_CODECONTRAT OR ENR_ABSENCESAIDANT<17,K>="" DO
              K=K+1
           REPEAT

           * SI PASSAGE A L'EURO + ABS COMMENCE AVANT DATE BUTOIR
           * ALORS CONVERSION SALAIRE REFERENCE EN EUROS
           IF W_PASSAGEEURO=1 AND (INT(W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7])<INT(ENR_CONSTANTESPAIE<9>)) THEN
              ENR_ABSENCESAIDANT<14,K>=INT((ENR_ABSENCESAIDANT<14,K>/W_EURO)+1/2)
           END

           W_SALREFHRES=(ENR_ABSENCESAIDANT<15,K>/W_NbJourMois)*(W_NBJOURABSMALADIE)
           W_SALREFMONT=(ENR_ABSENCESAIDANT<14,K>/W_NbJourMois)*(W_NBJOURABSMALADIE)

           * PRISE DES 10 %
           W_SALREFHRES=INT(W_SALREFHRES*10/100 + 1/2)
           W_SALREFMONT=INT(W_SALREFMONT*10/100 + 1/2)

           ENR_CONTRAT<45>=ENR_CONTRAT<45>+W_SALREFHRES
           ENR_CONTRAT<46>=ENR_CONTRAT<46>+W_SALREFMONT

        END ELSE
           W_NBJOURINDEM=W_NBSUSPENSION - (W_CUMULJOURMALADIE - W_NBJOURABSMALADIE)

           IF W_NBJOURINDEM > 0 THEN
              * A Indemnise
              W_NBJOURABS=W_NBJOURINDEM

              GOSUB 301

              * CALCUL SALAIRE DE REFERENCE
              K=1
              LOOP
              UNTIL ENR_ABSENCESAIDANT<17,K>=W_CODECONTRAT OR ENR_ABSENCESAIDANT<17,K>="" DO
                 K=K+1
              REPEAT
		
              * SI PASSAGE A L'EURO + ABS COMMENCE AVANT DATE BUTOIR
              * ALORS CONVERSION SALAIRE REFERENCE EN EUROS
              IF W_PASSAGEEURO=1 AND (INT(W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7])<INT(ENR_CONSTANTESPAIE<9>)) THEN
                 ENR_ABSENCESAIDANT<14,K>=INT((ENR_ABSENCESAIDANT<14,K>/W_EURO)+1/2)
              END

              W_SALREFHRES=(ENR_ABSENCESAIDANT<15,K>/W_NbJourMois)*(W_NBJOURABS)
              W_SALREFMONT=(ENR_ABSENCESAIDANT<14,K>/W_NbJourMois)*(W_NBJOURABS)

              * PRISE DES 10 %
              W_SALREFHRES=INT(W_SALREFHRES*10/100 + 1/2)
              W_SALREFMONT=INT(W_SALREFMONT*10/100 + 1/2)

              ENR_CONTRAT<45>=ENR_CONTRAT<45>+W_SALREFHRES
              ENR_CONTRAT<46>=ENR_CONTRAT<46>+W_SALREFMONT

              W_NBJOURNONINDEM=W_NBJOURABSMALADIE - W_NBJOURINDEM
              IF W_NBJOURNONINDEM > 0 THEN
                 W_NBJOURABS=W_NBJOURNONINDEM
                 GOSUB 301
                 W_TOTNBJOURCONGES=W_TOTNBJOURCONGES + W_NBJOURCONGES
                 ENR_CONTRAT<70>=ENR_CONTRAT<70>+W_NBJOURNONINDEM
              END

           END ELSE
              GOSUB 301              
              W_TOTNBJOURCONGES=W_TOTNBJOURCONGES + W_NBJOURCONGES
              ENR_CONTRAT<70>=ENR_CONTRAT<70>+W_NBJOURABSMALADIE
           END

        END
			
         * CONGES SANS SOLDE OU PARENTAL
      CASE W_CODEABSENCE="12" OR W_CODEABSENCE="13" OR W_CODEABSENCE="22" OR W_CODEABSENCE="23"    
		
         GOSUB 300

         GOSUB 301

         W_TOTNBJOURCONGES=W_TOTNBJOURCONGES + W_NBJOURCONGES

         IF W_CODEABSENCE="12" OR W_CODEABSENCE="22" OR W_CODEABSENCE="23" THEN   
            ENR_CONTRAT<70>=ENR_CONTRAT<70>+W_NBJOURABS
         END ELSE
            ENR_CONTRAT<70>=ENR_CONTRAT<70> + W_NBJOURABS / 2
         END
	CASE W_CODEABSENCE="04" OR W_CODEABSENCE="06"

			* Modif Greg - 12/03/12 - Ajout d'une gestion spcifique pour les motifs 04 et 06.
			IF W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7]<W_DEBUTPERIODE THEN
				* Si l'absence a dbut avant la priode, on calcule le nombre de jours d'abs
				* dj "passs". En tenant compte d'un ventuel dbut d'absence  la mi-journe.
				W_NBJOURABSAVANT=W_DEBUTPERIODE-W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7]
				W_NBJOURABSAVANT=W_NBJOURABSAVANT*100
				
				IF ENR_ABSENCESAIDANT<1>=2 THEN W_NBJOURABSAVANT=W_NBJOURABSAVANT-50
				
			END ELSE
				W_NBJOURABSAVANT=0
			END
			
			GOSUB 300
			
			IF W_NBJOURABSAVANT+W_NBJOURABS>36500 THEN
				* Si l'absence a plus d'un an, alors on ajoute la gestion prvue par le DA : au-del d'un an
				* d'absence, il n'y a plus de droits.
				* Dans un premier temps il faut dterminer quand a lieu le dpassement d'un an.
				W_DUREEABSMOIS=36500-W_NBJOURABSAVANT
				IF W_DUREEABSMOIS>0 THEN
					IF W_NBJOURABS>W_DUREEABSMOIS THEN
						* L'absence dpasse 1 an pendant le mois en cours. Donc certains jours sont
						*  prendre en compte et ceux qui dpassent sont  mettre en suspension.
 						ENR_CONTRAT<70>=ENR_CONTRAT<70>+(W_NBJOURABS-W_DUREEABSMOIS)
                                                W_NBJOURABS=W_NBJOURABS-W_DUREEABSMOIS
                                                GOSUB 301
						W_TOTNBJOURCONGES=W_TOTNBJOURCONGES+W_NBJOURCONGES
						W_NBJOURABS=W_DUREEABSMOIS
						GOSUB 10100

					END ELSE
						* L'absence ne dpasse toujours pas 1 an malgr le nouveau mois.
						* Il n'y a donc toujours aucune perte de droits
						GOSUB 10100
					END
				END ELSE
					* L'absence a dj plus d'un an avant le mois en cours de traitement.
					* Donc plus aucun droit et les jours d'abs du mois sont des jours de suspension.
					ENR_CONTRAT<70>=ENR_CONTRAT<70>+W_NBJOURABS
					GOSUB 301
					W_TOTNBJOURCONGES=W_TOTNBJOURCONGES+W_NBJOURCONGES
				END
			END ELSE
				* Si l'absence a moins d'un an, alors il n'y a aucune perte des droits.
				GOSUB 10100
			END
			
      CASE 1 

         GOSUB 300

         GOSUB 10100
          
      END CASE       
   END
RETURN	 
*********************************************************
*********************************************************
* CALCUL DU NOMBRE DE JOURS D'ABSENCES (HORS MALADIE)

300 * 

    * DEBUT ABS >= DEBUT MOIS
    IF CLE[8,LEN(CLE)-7]>=W_DEBUTPERIODE THEN
    * FIN ABSENCES <= FIN MOIS
	IF ENR_ABSENCESAIDANT<2><=W_FINPERIODE THEN
  	    W_NBJOURABS=ENR_ABSENCESAIDANT<2>-CLE[8,LEN(CLE)-7]+1
	END ELSE
  	    W_NBJOURABS=W_FINPERIODE-CLE[8,LEN(CLE)-7]+1
	END
    END ELSE
	* FIN ABSENCES <= FIN MOIS
	IF ENR_ABSENCESAIDANT<2><=W_FINPERIODE THEN
  	    W_NBJOURABS=ENR_ABSENCESAIDANT<2>-W_DEBUTPERIODE+1
	END ELSE
  	    W_NBJOURABS=W_FINPERIODE-W_DEBUTPERIODE+1
	END
    END
    W_NBJOURABS=W_NBJOURABS*100

    * DIMINUTION DU NOMBRE DE JOURS SI DEMI-JOURNEE
    * Modif Greg - 03/04/12 - Le retrai d'une demi-journe doit se faire uniquement si le dbut
	* ou la fin de l'absence (en fonction de ce qu'on teste) est sur la priode. Par exemple
	* si l'absence dbut avant la priode, il ne faut pas retirer une demi-journe puisque sur
	* le mois en cours, l'absence est effective ds le 01 au matin.
	IF CLE[8,LEN(CLE)-7]>=W_DEBUTPERIODE THEN IF ENR_ABSENCESAIDANT<1>=2 THEN W_NBJOURABS=W_NBJOURABS-50
	IF ENR_ABSENCESAIDANT<2><=W_FINPERIODE THEN IF ENR_ABSENCESAIDANT<3>=1 THEN W_NBJOURABS=W_NBJOURABS-50
RETURN

*********************************************************
*********************************************************
* CALCUL DES DROITS AUX CONGES (TYPE 12 OU 13)

301 *

    * CALCUL AU PRORATA DES JOURS DE CONGES
    W_NBJOURCONGES=250*W_NBJOURABS/W_NbJourMois
    W_NBJOURCONGES=INT(W_NBJOURCONGES+1/2)

RETURN

*********************************************************
*********************************************************
* CALCUL DES DROITS AUX CONGES (TYPE 12 OU 13)

3011 *
 
   * CALCUL AU PRORATA DES JOURS DE CONGES
    W_NBJOURPRESENT=W_NBJOURABS
    IF W_NBJOURPRESENT>3000 THEN W_NBJOURPRESENT=3000
    W_NBJOURCONGES=250*W_NBJOURPRESENT/3000
    W_NBJOURCONGES=W_NBJOURCONGES+1/2
    W_NBJOURCONGES=INT(W_NBJOURCONGES)
	      			
    * RECUPERATION ATTRIBUT 6+7 DETAILCALCUL
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CODECONTRAT:W_PERIODE ELSE
	ENR_DETAILCALCUL=""
	ENR_DETAILCALCUL<6>=0
	ENR_DETAILCALCUL<7>=0
    END

    W_HEURESABSENCES=ENR_DETAILCALCUL<6>*10/100
    W_MONTANTABSENCES=ENR_DETAILCALCUL<7>*10/100

RETURN

*********************************************************
*********************************************************
* CALCUL DU NOMBRE CUMULE DE JOURS D'ABSENCES (JUIN->MAI)
* OU JANVIER->DECEMBRE SI ATT.28 CONVENTIONCOL = 1

302 *
    W_CUMULMALADIE=0
    W_REQMALADIEVIDE="FAUX"

    IF ENR_CONVENTIONCOL<28>="0" OR ENR_CONVENTIONCOL<28>="" THEN
      IF W_PERIODE[5,2]>="06" THEN
        W_DEBUTANNEE=ICONV("01/06/":W_PERIODE[1,4],"D4/")
      END ELSE
        W_DEBUTANNEE=ICONV("01/06/":W_PERIODE[1,4]-1,"D4/")
      END
    END ELSE
        W_DEBUTANNEE=ICONV("01/01/":W_PERIODE[1,4],"D4/")
    END
    W_PERIODECOURS=W_DEBUTPERIODE-1   

	* MODIF VANESSA 16/12/10 - DA 10187-01
	W_DATEDEBUTABS = W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7]
	IF W_DATEDEBUTABS < W_DEBUTANNEE THEN
		W_DEBUTANNEETEMP=W_DATEDEBUTABS
		W_AIDANTABSPERIODEPREC=W_CLEABSENCE[1,5]
	END ELSE
		W_DEBUTANNEETEMP=W_DEBUTANNEE
	END
	
    IF W_DEBUTANNEETEMP#W_DEBUTPERIODE THEN
		* Modif Greg - 03/04/12 - DA11073 - Le motif 05 doit tre grer comme le motif 01.
		EXECUTE 'TSELECT ABSENCESAIDANT AVEC CodAbsAidant = "':W_CODEAIDANT:']" AND AVEC NumMotifAidant = "01" OR = "05" AND AVEC 2 >= "':W_DEBUTANNEETEMP:'" OR = "" AND AVEC DebAbsAidant <= "':W_PERIODECOURS:'" PAR DebAbsAidant'		
		EXECUTE "SAUVE-LISTE LISTEMALADIEAIDANT"
		EXECUTE "LISTE LISTEMALADIEAIDANT" CAPTURING MSG RETURNING MSGCODE
		
		IF MSGCODE<1>=209 THEN W_REQMALADIEVIDE="VRAI"
		
		IF W_REQMALADIEVIDE="FAUX" THEN
         SELECT F.ABSENCESAIDANT TO LISTEMALADIEAIDANT

         LOOP 
	      READNEXT CLECUM FROM LISTEMALADIEAIDANT ELSE
	          W_REQMALADIEVIDE="VRAI"
     	      END
	      UNTIL W_REQMALADIEVIDE="VRAI" DO

              READ ENR_ABSENCESAIDANTCUM FROM F.ABSENCESAIDANT,CLECUM ELSE ENR_ABSENCESAIDANTCUM=""
	      GOSUB 303
    	      * CUMUL DU NOMBRE DE JOURS DE MALADIE SUR L'ANNEE
	      W_CUMULMALADIE=W_CUMULMALADIE+W_NBJOURABSCUMUL              
	 REPEAT
      END ELSE 
	 W_CUMULMALADIE=0
      END
    END ELSE
      W_CUMULMALADIE=0
    END
 
RETURN

*********************************************************
*********************************************************
* CALCUL DU NOMBRE DE JOURS D'ABSENCES MALADIE

303 * 
    * DEBUT ABS <= 01/06 OU <= 01/01
    W_NBJOURABSCUMUL=0
    IF CLECUM[8,LEN(CLECUM)-7]<=W_DEBUTANNEETEMP THEN
        * FIN ABSENCES <= FIN MOIS
      IF ENR_ABSENCESAIDANTCUM<2>>=W_DEBUTANNEETEMP THEN
	IF ENR_ABSENCESAIDANTCUM<2><=W_PERIODECOURS THEN
            W_NBJOURABSCUMUL=ENR_ABSENCESAIDANTCUM<2>-W_DEBUTANNEETEMP+1
	END ELSE
            W_NBJOURABSCUMUL=W_PERIODECOURS-W_DEBUTANNEETEMP+1
	END
      END
    END ELSE
	* FIN ABSENCES <= FIN MOIS
      IF CLECUM[8,LEN(CLECUM)-7]<=W_PERIODECOURS THEN
	IF ENR_ABSENCESAIDANTCUM<2><=W_PERIODECOURS THEN
  	    W_NBJOURABSCUMUL=ENR_ABSENCESAIDANTCUM<2>-CLECUM[8,LEN(CLECUM)-7]+1
	END ELSE
  	    W_NBJOURABSCUMUL=W_PERIODECOURS-CLECUM[8,LEN(CLECUM)-7]+1
	END
      END
    END
    W_NBJOURABSCUMUL=W_NBJOURABSCUMUL*100

    * DIMINUTION DU NOMBRE DE JOURS SI DEMI-JOURNEE
    IF ENR_ABSENCESAIDANTCUM<1>=2 THEN W_NBJOURABSCUMUL=W_NBJOURABSCUMUL-50
    IF ENR_ABSENCESAIDANTCUM<3>=1 THEN W_NBJOURABSCUMUL=W_NBJOURABSCUMUL-50

RETURN
****************************************************************
****************************************************************
* SELECTION DES CONTRATS PREVOYANCES
304

W_TabPrev=""
W_TabPrev<1>="807"
W_TabPrev<2>="808"

EXECUTE 'SSELECT CONTRATSPREV'
EXECUTE 'SAUVE-LISTE W_ListeCONTRATSPREV'
EXECUTE "LISTE W_ListeCONTRATSPREV" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
   SELECT F.CONTRATSPREV TO W_ListeCONTRATSPREV
   W_FiniPrev = "FAUX"
   LOOP
      READNEXT W_ClePrev FROM W_ListeCONTRATSPREV ELSE W_FiniPrev="VRAI"
   WHILE W_FiniPrev = "FAUX" DO
      READ ENR_CONTRATSPREV FROM F.CONTRATSPREV,W_ClePrev THEN

         W_CodeRubPrev=ENR_CONTRATSPREV<41>
         GOSUB 305

         W_CodeRubPrev=ENR_CONTRATSPREV<42>
         GOSUB 305

      END
          
   REPEAT
END

W_CountRubPrev=DCOUNT(W_TabPrev,CHAR(254))

EXECUTE "EFFACER-LISTE W_ListeCONTRATSPREV"

RETURN

*********************************************************
*********************************************************
* GESTION DE BASCULEMENT DES COMPTEURS
305
   IF W_CodeRubPrev # "" THEN

      iPrev=1
      W_TrouvePrev="FAUX"
      LOOP
      WHILE W_TabPrev<iPrev> # "" AND W_TrouvePrev="FAUX" DO

         IF W_CodeRubPrev = W_TabPrev<iPrev> THEN
            W_TrouvePrev="VRAI"
         END
         iPrev=iPrev+1
      REPEAT
      IF W_TrouvePrev="FAUX" THEN
         W_TabPrev<iPrev>=W_CodeRubPrev
      END
   END

RETURN

*********************************************************
*********************************************************
* CALCUL DES DROITS AUX CONGES (MALADIE)

310 *
 
   * CALCUL AU PRORATA DES JOURS DE CONGES
    W_NBJOURPRESENT=3000-W_NBJOURABSMALADIE
    IF W_NBJOURPRESENT<0 THEN W_NBJOURPRESENT=0
    W_NBJOURCONGES=250*W_NBJOURPRESENT/3000
    W_NBJOURCONGES=W_NBJOURCONGES+1/2
    W_NBJOURCONGES=INT(W_NBJOURCONGES)    		
	
    * RECUPERATION ATTRIBUT 6+7 DETAILCALCUL
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CODECONTRAT:W_PERIODE ELSE
	ENR_DETAILCALCUL=""
	ENR_DETAILCALCUL<6>=0
	ENR_DETAILCALCUL<7>=0
    END

    W_HEURESABSENCES=ENR_DETAILCALCUL<6>*10/100
    W_MONTANTABSENCES=ENR_DETAILCALCUL<7>*10/100

RETURN

*********************************************************
*********************************************************
* CALCUL DES DROITS AUX CONGES <> 01,12,13

320 *

    IF W_DEBUTCONTRAT<W_DEBUTPERIODE THEN
         W_NBJOURPRESENT=3000
         W_NBJOURCONGES=250
    END ELSE
         * CALCUL AU PRORATA DES JOURS DE CONGES
         W_NBJOURPRESENT=W_DEBUTCONTRAT-W_DEBUTPERIODE
         W_NBJOURPRESENT=W_NBJOURPRESENT*100
         IF W_NBJOURPRESENT>3000 THEN W_NBJOURPRESENT=3000
	 W_NBJOURPRESENT=3000-W_NBJOURPRESENT
         W_NBJOURCONGES=250*W_NBJOURPRESENT/3000
         W_NBJOURCONGES=W_NBJOURCONGES+1/2
         W_NBJOURCONGES=INT(W_NBJOURCONGES)   
    END

    * LECTURE DETAILCALCUL
    READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CODECONTRAT:W_PERIODE ELSE
	 ENR_DETAILCALCUL=""
	 ENR_DETAILCALCUL<6>=0
	 ENR_DETAILCALCUL<7>=0
    END

    * RECHERCHE DES RUBRIQUES 807 - 808
    J=1
    LOOP 
	 UNTIL ENR_DETAILCALCUL<2,J>="" DO
			
	 * SI RUB 807 - 808, CALCULE LE MONTANT DE L'ARRET
	 IF ENR_DETAILCALCUL<2,J>="807" OR ENR_DETAILCALCUL<2,J>="808" THEN
 	      W_MONTANTARRET=W_MONTANTARRET+ENR_DETAILCALCUL<5,J>
         END

	 J=J+1
    REPEAT		  

    * SI W_MONTANTARRET <> 0 
    IF W_MONTANTARRET<>0 THEN
	 W_BRUTARRET=ENR_DETAILCALCUL<7>-W_MONTANTARRET
	 W_HEURESARRET=ENR_DETAILCALCUL<6>
    END ELSE
	 W_BRUTARRET=ENR_DETAILCALCUL<7>
	 W_HEURESARRET=ENR_DETAILCALCUL<6>
    END	 

    W_SORTIE="FAUX"
    W_VALEURHEURESJOUR=INT((W_HEURESARRET*10/100)+1/2)
    W_VALEURMONTJOUR=INT((W_BRUTARRET*10/100)+1/2)  

RETURN

*************************************************************
* Calcul des droits aux congs et salaires et montants de rfrences
*************************************************************
10100

         GOSUB 301

         W_SALREFHRES=0
         W_SALREFMONT=0

         * CALCUL SALAIRE DE REFERENCE
         K=1
         LOOP
         UNTIL ENR_ABSENCESAIDANT<17,K>=W_CODECONTRAT OR ENR_ABSENCESAIDANT<17,K>="" DO
            K=K+1
         REPEAT

         * SI PASSAGE A L'EURO + ABS COMMENCE AVANT DATE BUTOIR
         * ALORS CONVERSION SALAIRE REFERENCE EN EUROS
         IF W_PASSAGEEURO=1 AND (INT(W_CLEABSENCE[8,LEN(W_CLEABSENCE)-7])<INT(ENR_CONSTANTESPAIE<9>)) THEN
            ENR_ABSENCESAIDANT<14,K>=INT((ENR_ABSENCESAIDANT<14,K>/W_EURO)+1/2)
         END

         W_SALREFHRES=(ENR_ABSENCESAIDANT<15,K>/W_NbJourMois)*(W_NBJOURABS)
         W_SALREFMONT=(ENR_ABSENCESAIDANT<14,K>/W_NbJourMois)*(W_NBJOURABS)

         * PRISE DES 10 %
         W_SALREFHRES=INT((W_SALREFHRES*10/100)+1/2)
         W_SALREFMONT=INT((W_SALREFMONT*10/100)+1/2)

         ENR_CONTRAT<45>=ENR_CONTRAT<45>+W_SALREFHRES
         ENR_CONTRAT<46>=ENR_CONTRAT<46>+W_SALREFMONT
		 
RETURN