SUBROUTINE CalcIndLicRet (CodeContrat,LicencRetraite,MontIndemnite,PeriodePaie)

LISTABSAIDANT=""
W_JourAnciennte=0
W_DroitIndem="FAUX"
W_DateFinCalcul=""
W_Temp=""
W_TotalPaie=0
W_Paie=0
W_Paie3Mois=0
W_Paie12Mois=0
W_NbMois=0
W_NOTIF="FAUX"

W_AnneeFin=""
W_AnneeFaite=""
W_MoisFin=""
W_MoisFait=""
W_JourFin=""
W_JourFait=""
W_Fini="FAUX"
W_CountMoisActif=0
MontIndemnite=0

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE RETURN
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE RETURN
OPEN "","CONTRAT" TO F.CONTRAT ELSE RETURN
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE RETURN
OPEN "","CONTRATSPREV" TO F.CONTRATSPREV ELSE RETURN
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
IF LicencRetraite = "PB" THEN
	OPEN "","BUDGETFICHPERSO" TO F.CIVILAIDANT ELSE RETURN
	OPEN "","BUDGETFICHPERSO" TO F.CONTRAT ELSE RETURN
	OPEN "","BUDGETDETAILCALCUL" TO F.DETAILCALCUL ELSE RETURN
END
W_ReqCmplts = ""
W_ListeRubCmplts = ""
W_ListeRubCmplts<-1> = "807"
W_ListeRubCmplts<-1> = "808"
EXECUTE 'SELECT CONTRATSPREV'
EXECUTE 'SAUVE-LISTE W_ReqContratsPrevCalcIndLicret'
EXECUTE 'LISTE W_ReqContratsPrevCalcIndLicret' RETURNING MSGCODE
IF MSGCODE<1> = "209" THEN
	* Rien
END ELSE
	SELECT F.CONTRATSPREV TO W_ReqCmplts
	W_Fin = "F"
	LOOP
	READNEXT W_Cle FROM W_ReqCmplts ELSE W_Fin = "V"
	WHILE W_Fin = "F"
	  READ ENR_CONTRATSPREV FROM F.CONTRATSPREV, W_Cle THEN
		IF ENR_CONTRATSPREV<41> # "" THEN
			W_ListeRubCmplts<-1> = ENR_CONTRATSPREV<41>
		END	
		IF ENR_CONTRATSPREV<42> # "" THEN
			W_ListeRubCmplts<-1> = ENR_CONTRATSPREV<42>
		END	
	
	  END
	REPEAT
END
EXECUTE 'EFFACER-LISTE W_ReqContratsPrevCalcIndLicret'

READ ENR_CONTRAT FROM F.CONTRAT,CodeContrat ELSE RETURN
IF LicencRetraite = "PB" THEN
	ENR_CONTRAT<1>=ENR_CONTRAT<3>
	ENR_CONTRAT<2>=CodeContrat[6,3]
	ENR_CONTRAT<6>=ENR_CONTRAT<7>
	ENR_CONTRAT<7>=ENR_CONTRAT<8>
	ENR_CONTRAT<70>=0
END
READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE RETURN
READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> ELSE RETURN

RapportEuro=ENR_CONSTANTESPAIE<7> / 100000
DateEuro=OCONV(ENR_CONSTANTESPAIE<9>,"D4/")
DateEuroAAAAMM=DateEuro[7,4]:DateEuro[4,2]
CodeConvCol=ENR_CONTRAT<1>
IF CodeConvCol="05" AND ENR_ASSOCIATION<1>="A.S.M.A.D." THEN CodeConvCol="01"
DateDeb=ENR_CONTRAT<7>
IF ENR_CONTRAT<96> # "" THEN
   DateFin=ENR_CONTRAT<96>
END ELSE
   DateFin=ENR_CONTRAT<8>
END
DateNotif=ENR_CONTRAT<50>
DateDernierBull=ENR_CONTRAT<58>
NbJourSusp=INT(ENR_CONTRAT<70> / 100)
IF NbJourSusp = "" THEN
   NbJourSusp=0
END

	*********************************************
	* si provision pour depart en retraite
	IF LicencRetraite = "P" OR LicencRetraite = "PB" THEN

		W_Pos=INDEX(PeriodePaie,"|",1)
		W_Len=LEN(PeriodePaie)
		W_AgeRetraite=PeriodePaie[W_Pos+1,W_Len-W_Pos]
		PeriodePaie=PeriodePaie[1,W_Pos-1]
		IF LicencRetraite = "PB" THEN
			READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CodeContrat ELSE ENR_CIVILAIDANT=""
			ENR_CIVILAIDANT<26>=ENR_CIVILAIDANT<9>
		END ELSE
			READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CodeContrat[1,5] ELSE ENR_CIVILAIDANT=""
		END
		W_DateNais=OCONV(ENR_CIVILAIDANT<26>,"D4/")
		W_DateNais=W_DateNais[1,6]:W_DateNais[7,4]+W_AgeRetraite
		W_DateNais=ICONV(W_DateNais,"D4/")

		DateFin=W_DateNais
		DateNotif=""
		DateDernierBull=PeriodePaie
		CodeContrat=CodeContrat[1,8]
	END
	*********************************************

IF PeriodePaie => DateEuroAAAAMM THEN
   EnEuro="VRAI"
END ELSE
   EnEuro="FAUX"
END

IF DateNotif="" THEN
   W_Date=DateFin
   DateNotif=DateFin
END ELSE
   W_Date=DateNotif
END

IF LicencRetraite = "L" THEN

   * Calcul les annes ralises pour savoir si droit ou non a l'indemnite
   GOSUB 400

   IF W_AnneeFaite => 2 THEN    ;* Deux ans d'anciennete

      * Calcul les annes ralises pour l'indemnite
      W_Date=DateFin - NbJourSusp
      GOSUB 400

      * Salaire de ref
      GOSUB 50

      * Dispatche dans les diffrentes conventions
      GOSUB 300

   END
END ELSE
	IF LicencRetraite = "JS" THEN
		DateDernierBull=PeriodePaie
	
		* Salaire de ref
		GOSUB 50
		
	END ELSE
		* Calcul les annes ralises pour l'indemnite
		W_Date=DateFin - NbJourSusp
		GOSUB 400

		* Salaire de ref
		GOSUB 50

		* Dispatche dans les diffrentes conventions
		GOSUB 310		
	END

END

MontIndemnite=INT(MontIndemnite+1/2)

	*****************************************
	* si provision pour depart en retraite
	IF LicencRetraite = "P" OR LicencRetraite = "PB" THEN
		MontIndemnite=MontIndemnite:";":W_TabHre:";":W_Paie
	END
	*****************************************
	
	*****************************************
	* si journe de solidarite JS
	IF LicencRetraite = "JS" THEN
		MontIndemnite=INT(W_Paie/30 +1/2)
	END
	*****************************************	
	
RETURN

******************************************************************************
* Calcul la salaire de reference : Meilleur entre les 3 et 12 derniers mois
******************************************************************************
50
   W_Mois=DateDernierBull[5,2] - 1
   W_Mois=W_Mois "R%2"
   W_Annee=DateDernierBull[1,4]
   IF W_Mois="00" THEN
      W_Annee=W_Annee-1
      W_Mois=12
   END

   W_TabHre=""

   W_Date="01/":DateDernierBull[5,2]:"/":DateDernierBull[1,4]
   W_Date=ICONV(W_Date,"D4/")
   * Calcul la periode d'absence
   GOSUB 500
   W_FINRECH="NON"
   LOOP
    IF W_JourAbs12>=W_NBJRS12MOIS AND W_PaieAbs12=0 THEN NULL ELSE W_FINRECH="OUI"
    UNTIL W_FINRECH="OUI" DO
     W_Date=OCONV(W_DEBABSANC,"D4/")
     W_Date="01/":W_Date[4,2]:"/":W_Date[7,4]
     W_Mois=W_Date[4,2] - 1
     W_Mois=W_Mois "R%2"
     W_Annee=W_Date[7,4]
     IF W_Mois="00" THEN
        W_Annee=W_Annee-1
        W_Mois=12
     END
     W_Date=ICONV(W_Date,"D4/")
     IF DateDeb<W_Date THEN
      GOSUB 500
     END ELSE
      W_FINRECH="OUI"
     END
   REPEAT

      FOR i=1 TO 12
         IF i=4 THEN
            W_Paie3Mois=W_TotalPaie
	    W_TabHre3=W_TabHre
         END
         IF W_Mois=0 THEN
            W_Annee=W_Annee-1
            W_Mois=12
         END
         READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CodeContrat:W_Annee:W_Mois THEN
            IF DateEuroAAAAMM > W_Annee:W_Mois AND EnEuro="VRAI" THEN
               ENR_DETAILCALCUL<7>=INT(ENR_DETAILCALCUL<7> / RapportEuro + 1/2)
            END
			
			IF LicencRetraite = "JS" THEN
				W_TotalPaie=W_TotalPaie+ENR_DETAILCALCUL<6>
			END ELSE
				W_TotalPaie=W_TotalPaie+ENR_DETAILCALCUL<7>
			END
			
            W_DeduitCompl=0
			IF LicencRetraite <> "JS" THEN
	            j=1
	            LOOP
	            WHILE ENR_DETAILCALCUL<2,j> # "" DO
	               IF INDEX(W_ListeRubCmplts,ENR_DETAILCALCUL<2,j>,1) # 0 THEN
	                  IF DateEuroAAAAMM > W_Annee:W_Mois AND EnEuro="VRAI" THEN
	                     ENR_DETAILCALCUL<5,j>=INT(ENR_DETAILCALCUL<5,j> / RapportEuro + 1/2)
	                  END
	                  W_DeduitCompl=W_DeduitCompl + ENR_DETAILCALCUL<5,j>
	               END
	               j=j+1
	            REPEAT
	            W_TotalPaie=W_TotalPaie-W_DeduitCompl
			END
			
			W_CountMoisActif=W_CountMoisActif+1

		*****************************************
		* si provision pour depart en retraite
		IF LicencRetraite = "P" OR LicencRetraite = "PB" THEN
		   IF ENR_CONTRAT<6>="P" THEN
			W_Count25=DCOUNT(ENR_DETAILCALCUL<25>,CHAR(253))
			FOR i25=1 TO W_Count25
				IF W_TabHre="" THEN
					W_TabHre<1>=ENR_DETAILCALCUL<25,i25>
					W_TabHre<2>=ENR_DETAILCALCUL<26,i25>
				END ELSE
            				j=1
           				LOOP
            				UNTIL ENR_DETAILCALCUL<26,i25> = W_TabHre<2,j> OR  W_TabHre<2,j>="" DO
               					j=j+1
            				REPEAT
					IF ENR_DETAILCALCUL<26,i25> = W_TabHre<2,j> THEN
						W_TabHre<1,j>=W_TabHre<1,j>+ENR_DETAILCALCUL<25,i25>
					END ELSE
						W_TabHre<1,j>=ENR_DETAILCALCUL<25,i25>
						W_TabHre<2,j>=ENR_DETAILCALCUL<26,i25>
					END

				END
			NEXT i25
		   END
		END
		**********************************************

         END
         W_Mois=W_Mois-1
         W_Mois=W_Mois "R%2"
      NEXT i

      IF W_JourAbs3=0 THEN  
         W_Paie3Mois=INT(W_Paie3Mois/3+1/2)
      END ELSE
	   IF W_JourAbs3  < W_NBJRS3MOIS THEN
              W_Paie3Mois=W_Paie3Mois/(W_NBJRS3MOIS-W_JourAbs3)
              W_Paie3Mois=INT(W_Paie3Mois*30+1/2)
	   END ELSE
	      W_Paie3Mois=W_PaieAbs3
	   END
      END
      IF W_JourAbs12=0 THEN
          W_Paie12Mois=INT(W_TotalPaie/12+1/2)
      END ELSE
	  IF W_JourAbs12 < W_NBJRS12MOIS THEN
             W_Paie12Mois=W_TotalPaie/(W_NBJRS12MOIS-W_JourAbs12)
	     W_Paie12Mois=INT(W_Paie12Mois*30+1/2)
	  END ELSE
	     W_Paie12Mois = W_PaieAbs12	
	  END
      END
      IF W_Paie12Mois>W_Paie3Mois THEN
         W_Paie=W_Paie12Mois
      END ELSE
         W_Paie=W_Paie3Mois
	 W_TabHre=W_TabHre3
      END
W_Paie="76464"
*      IF W_Paie=0 THEN
 *        W_Paie=W_PaieAbs
  *    END
RETURN
******************************************************************************


****************
* Licenciement *
****************

******************************************************************************
* Code du travail pour les licenciements ,Employe de maison ,Aide a domicile *
******************************************************************************
100
   W_Temp=W_MoisFait+W_AnneeFaite*12
   IF W_Temp > 120 THEN
      W_AnneeFaite=W_AnneeFaite-10
      MontIndemnite=W_Paie+W_Paie/6*W_AnneeFaite+W_Paie*W_MoisFait/120+W_Paie*W_MoisFait/180    
   END ELSE
      MontIndemnite=W_Paie*W_AnneeFaite*1/10+W_Paie*W_MoisFait/120
   END

RETURN

***********************************************************************
* Convention ADMR pour les licenciements                              *
***********************************************************************
110
   IF ENR_CONTRAT<6>="A" THEN
      IF DateDeb <= 3784 THEN ;* 11 mai 1978
         MontIndemnite=W_Paie*6
      END ELSE
         IF W_AnneeFaite < 5 THEN
             MontIndemnite=W_Paie*1/5*W_AnneeFaite+W_MoisFait/12*1/5*W_Paie
         END ELSE
            IF W_AnneeFaite > 5 THEN
               MontIndemnite=W_Paie*3
            END ELSE
               MontIndemnite=W_Paie*1/2*W_AnneeFaite+W_MoisFait/12*1/2*W_Paie
            END
         END
      END
   END ELSE
      GOSUB 100
   END

RETURN

*************************************************************************
* Convention Famille Rurale pour les licenciements , Ets priv (FEHAPS) *
*************************************************************************
120
   IF W_AnneeFaite > 11 THEN
      MontIndemnite=W_Paie*6
   END ELSE
      MontIndemnite=W_Paie*1/2*W_AnneeFaite+W_MoisFait/12*1/2*W_Paie
   END
RETURN

***********************************************************************
* Convention Travailleuses Familliales pour les licenciements         *
***********************************************************************
130
   MontIndemnite=W_Paie/5*W_AnneeFaite+W_MoisFait/12*W_Paie/5
RETURN


************
* Retraite *
************

******************************************************************************
* Code du travail a domicile pour les dparts en retraite, Employe de maison *
******************************************************************************
200
   BEGIN CASE
      CASE W_AnneeFaite>10 AND W_AnneeFaite<15
         MontIndemnite=W_Paie*1/2
      CASE W_AnneeFaite>14 AND W_AnneeFaite<20
         MontIndemnite=W_Paie
      CASE W_AnneeFaite>19 AND W_AnneeFaite<30
         MontIndemnite=W_Paie+W_Paie/2
      CASE W_AnneeFaite>29
         MontIndemnite=W_Paie*2
   END CASE
RETURN

*****************************************************************************
* Convention ADMR pour les dparts en retraite                              *
*****************************************************************************
210
   IF W_AnneeFaite > 9 THEN
      W_Temp=W_AnneeFaite/10
      MontIndemnite=W_Paie*W_Temp+W_MoisFait/120*W_Paie 
      MontIndemnite=INT(MontIndemnite + 1/2)
   END
RETURN

*****************************************************************************
* Convention Famille Rurale pour les dparts en retraite                    *
*****************************************************************************
220
   MontIndemnite=W_Paie/10*W_AnneeFaite
RETURN

*****************************************************************************
* Convention Aide a domicile pour les dparts en retraite                   *
*****************************************************************************
230
   BEGIN CASE
      CASE W_AnneeFaite>4 AND W_AnneeFaite<10
         MontIndemnite=W_Paie*1/4
      CASE W_AnneeFaite>9 AND W_AnneeFaite<15
         MontIndemnite=W_Paie*1/2
      CASE W_AnneeFaite>14 AND W_AnneeFaite<20
         MontIndemnite=W_Paie
      CASE W_AnneeFaite>19 AND W_AnneeFaite<30
         MontIndemnite=W_Paie*2
      CASE W_AnneeFaite>29
         MontIndemnite=W_Paie*3
   END CASE

RETURN

*****************************************************************************
* Convention Ets priv pour les dparts en retraite (FEHAPS)                *
*****************************************************************************
240
   BEGIN CASE
      CASE W_AnneeFaite>10 AND W_AnneeFaite<15
         MontIndemnite=W_Paie
      CASE W_AnneeFaite>14 AND W_AnneeFaite<19
         MontIndemnite=W_Paie*3
      CASE W_AnneeFaite>18 AND W_AnneeFaite<22
         MontIndemnite=W_Paie*4
      CASE W_AnneeFaite>21 AND W_AnneeFaite<25
         MontIndemnite=W_Paie*5
      CASE W_AnneeFaite>24
         MontIndemnite=W_Paie*6
   END CASE
RETURN

***********************************************************************
* Convention Travailleuses Familliales pour les dparts en retraite   *
***********************************************************************
250
   IF W_AnneeFaite>29 THEN
      MontIndemnite=W_Paie*3
   END ELSE
      IF W_AnneeFaite>9 THEN
         MontIndemnite=W_Paie/10*W_AnneeFaite         
      END
   END

RETURN

********************************************************************
* Appel les sub des differentes conventions pour les licenciements *
********************************************************************
300
   BEGIN CASE
      CASE CodeConvCol="01" OR CodeConvCol="02" OR CodeConvCol="07" OR CodeConvCol="08" OR CodeConvCol="09"
         GOSUB 100
      CASE CodeConvCol="03"
         GOSUB 110
      CASE CodeConvCol="04" OR CodeConvCol="05"
         GOSUB 120
      CASE CodeConvCol="06"
         GOSUB 130
   END CASE
RETURN

**************************************************************************
* Appel les sub des differentes conventions pour les dparts en retraite *
**************************************************************************
310
   BEGIN CASE
      CASE CodeConvCol="01"
         GOSUB 230
      CASE CodeConvCol="02" OR CodeConvCol="07" OR CodeConvCol="08" OR CodeConvCol="09"
         GOSUB 200
      CASE CodeConvCol="03"
         GOSUB 210
      CASE CodeConvCol="04"
         GOSUB 220
      CASE CodeConvCol="05"
         GOSUB 240
      CASE CodeConvCol="06"
         GOSUB 250
   END CASE
RETURN

********************************************************
* Calcul les annes ralises pour determiner si droit *
* ou non a l'indemnite +                               *
* les annes ralises pour le montant de l'indemnite  *
********************************************************
400
   W_AnneeFin=OCONV(W_Date,"D4/")
   W_AnneeDebut=OCONV(DateDeb,"D4/")
   W_AnneeFaite=W_AnneeFin[7,4]-W_AnneeDebut[7,4]
   W_MoisFait=W_AnneeFin[4,2]-W_AnneeDebut[4,2]
   W_JourFait=W_AnneeFin[1,2]-W_AnneeDebut[1,2]
   IF W_JourFait<0 THEN
      W_MoisFait=W_MoisFait-1
   END
   IF W_MoisFait<0 THEN
      W_AnneeFaite=W_AnneeFaite-1
      W_MoisFait=12+W_MoisFait
   END

RETURN

********************************************************
* Calcul la periode d'absence                          *
********************************************************
500
   LISTABSAIDANT=""
   W_NBJRS3MOIS=0
   W_NBJRS12MOIS=0
   W_DEBABSANC=""
   W_PaieAbs3=0
   W_PaieAbs12=0
   W_Temp=""
   W_DateInterne=W_Date
   W_Date=OCONV(W_Date,"D4/")
   IF W_Date[4,2]>3 THEN
    W_Temp=W_Date[4,2]-3
   END ELSE
    W_Temp=W_Date[4,2]-4
   END
   IF W_Temp < 0 THEN
      W_Date3="01/":13+W_Temp:"/":W_Date[7,4]-1
   END ELSE
      W_Date3="01/":W_Temp:"/":W_Date[7,4]
   END
   W_Date12="01/":W_Date[4,2]:"/":W_Date[7,4]-1      

   W_DateFin500 = ICONV("01/":W_Date[4,2]:"/":W_Date[7,4],"D4/") - 1

   W_JourAbs12=0
   W_JourAbs3=0
   W_Fini="FAUX"

   W_Date12=ICONV(W_Date12,"D4/")
   W_Date3=ICONV(W_Date3,"D4/")

   W_NBJRS3MOIS=W_DateFin500-W_Date3+1
   W_NBJRS12MOIS=W_DateFin500-W_Date12+1

   EXECUTE 'SSELECT ABSENCESAIDANT AVEC @ID = "':CodeContrat[1,5]:']" AND AVEC DebAbsAidant <= "':W_DateFin500:'" AND AVEC 2 => "':W_Date12:'" AND AVEC NumMotifAidant => "01" AND AVEC NumMotifAidant <= "06" OR = "12" OR = "13" OR = "22" OR = "23" PAR DebAbsAidant'


   EXECUTE 'SAUVE-LISTE LISTABSAIDANT'
   EXECUTE 'LISTE LISTABSAIDANT' RETURNING W_MSG
   IF W_MSG<1>="209" THEN
    EXECUTE 'EFFACER-LISTE LISTABSAIDANT'
    RETURN
   END
   SELECT F.ABSENCESAIDANT TO LISTABSAIDANT

   LOOP
      READNEXT W_CleAbs FROM LISTABSAIDANT ELSE W_Fini="VRAI"
   WHILE W_Fini = "FAUX"

      READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CleAbs ELSE RETURN

      IF W_CleAbs[6,2] <= 6 THEN
	* maladie, accident : on value le salaire de rfrence de la plus ancienne abs ds les 3 / 12 mois :
         IF (ENR_ABSENCESAIDANT<2> >= W_Date12 AND W_PaieAbs12 = 0) THEN 
	    IF LEN(ENR_CONTRAT<3>) = 5 THEN
             W_Employeur=ENR_CONTRAT<3>
	    END ELSE
	     W_Employeur=ENR_CONTRAT<2>
	    END
            i=1
            LOOP
            WHILE ENR_ABSENCESAIDANT<13,i> # W_Employeur AND ENR_ABSENCESAIDANT<13,i> # "" DO
               i=i+1
            REPEAT
            IF ENR_ABSENCESAIDANT<13,i> # "" THEN
               W_DateAbsAAAAMM=OCONV(W_CleAbs[8,5],"D4/")
               W_DateAbsAAAAMM=W_DateAbsAAAAMM[7,4]:W_DateAbsAAAAMM[4,2]
               IF DateEuroAAAAMM > W_DateAbsAAAAMM AND EnEuro="VRAI" THEN
                  ENR_ABSENCESAIDANT<14,i>=INT(ENR_ABSENCESAIDANT<14,i> / RapportEuro + 1/2)
               END
               W_PaieAbs12=ENR_ABSENCESAIDANT<14,i>
	       IF W_DEBABSANC="" THEN W_DEBABSANC=W_CleAbs[8,5]
            END
         END
	 IF (ENR_ABSENCESAIDANT<2> >= W_Date3 AND W_PaieAbs3 = 0) THEN
	    IF LEN(ENR_CONTRAT<3>) = 5 THEN
             W_Employeur=ENR_CONTRAT<3>
	    END ELSE
	     W_Employeur=ENR_CONTRAT<2>
	    END
            i=1
            LOOP
            WHILE ENR_ABSENCESAIDANT<13,i> # W_Employeur AND ENR_ABSENCESAIDANT<13,i> # "" DO
               i=i+1
            REPEAT
            IF ENR_ABSENCESAIDANT<13,i> # "" THEN
               W_DateAbsAAAAMM=OCONV(W_CleAbs[8,5],"D4/")
               W_DateAbsAAAAMM=W_DateAbsAAAAMM[7,4]:W_DateAbsAAAAMM[4,2]
               IF DateEuroAAAAMM > W_DateAbsAAAAMM AND EnEuro="VRAI" THEN
                  ENR_ABSENCESAIDANT<14,i>=INT(ENR_ABSENCESAIDANT<14,i> / RapportEuro + 1/2)
               END
               W_PaieAbs3=ENR_ABSENCESAIDANT<14,i>
            END
	 END
      END
      W_Handicap12 = 0
      W_Handicap3 = 0
      IF W_CleAbs[6,2] = 12 OR W_CleAbs[6,2] = 13 OR W_CleAbs[6,2] = 22 OR W_CleAbs[6,2] = 23 THEN
	    
          i=1
          LOOP
          WHILE ENR_ABSENCESAIDANT<26,i> # CodeContrat AND ENR_ABSENCESAIDANT<26,i> # "" DO
             i=i+1
          REPEAT
	    
          IF ENR_ABSENCESAIDANT<26,i> # "" THEN
		IF ENR_ABSENCESAIDANT<21,i> = "N" THEN
			* Pas d'abs -> ne faisons rien !
			W_DateDebAbs = W_Date12
			W_DateFinAbs = W_Date12 
			W_Handicap12 = 1
		END ELSE
	                IF W_DEBABSANC="" THEN W_DEBABSANC=W_CleAbs[8,5]
			W_DateDebAbs =ENR_ABSENCESAIDANT<22,i>
			W_DateFinAbs =ENR_ABSENCESAIDANT<24,i>
			IF W_DateDebAbs < W_Date12 THEN
				W_DateDebAbs = W_Date12
			END ELSE
				IF ENR_ABSENCESAIDANT<23,i> # "M" THEN
					W_Handicap12 = 1/2
					IF W_DateDebAbs >= W_Date3 THEN W_Handicap3 = W_Handicap3 + 1/2
				END
			END
			IF W_DateFinAbs > W_DateFin500 THEN
				W_DateFinAbs = W_DateFin500
			END ELSE
				IF ENR_ABSENCESAIDANT<25,i> # "S" THEN
					W_Handicap12 = W_Handicap12 + 1/2
					IF W_DateFinAbs >= W_Date3 THEN W_Handicap3 = W_Handicap3 + 1/2
				
				END
			END
		END
          END ELSE
                IF W_DEBABSANC="" THEN W_DEBABSANC=W_CleAbs[8,5]
	        W_DateDebAbs =W_CleAbs[8,5]
		W_DateFinAbs =ENR_ABSENCESAIDANT<2>
		IF W_DateDebAbs < W_Date12 THEN
		   W_DateDebAbs = W_Date12
		END ELSE
		   IF ENR_ABSENCESAIDANT<1> # "1" THEN
		      W_Handicap12 = 1/2
                      IF W_DateDebAbs >= W_Date3 THEN W_Handicap3 = W_Handicap3 + 1/2
		   END
		END
		IF W_DateFinAbs > W_DateFin500 THEN
		   W_DateFinAbs = W_DateFin500
		END ELSE
		   IF ENR_ABSENCESAIDANT<3> # "2" THEN
		      W_Handicap12 = W_Handicap12 + 1/2
		      IF W_DateFinAbs >= W_Date3 THEN W_Handicap3 = W_Handicap3 + 1/2
		   END
		END

	    END
	END ELSE
		W_DateDebAbs =W_CleAbs[8,5]
		W_DateFinAbs =ENR_ABSENCESAIDANT<2>
		IF W_DateDebAbs < W_Date12 THEN
			W_DateDebAbs = W_Date12
		END ELSE
		  * rien
		END
		IF W_DateFinAbs > W_DateFin500 THEN
			W_DateFinAbs = W_DateFin500
		END ELSE
			* rien	
		END
        END

	IF W_CleAbs[6,2] # "03" THEN
		W_JourAbs12 = W_JourAbs12 + (W_DateFinAbs - W_DateDebAbs + 1) - W_Handicap12
	END ELSE
		W_JourAbs12 = W_JourAbs12 + (W_DateFinAbs - W_DateDebAbs + 1)/2 - W_Handicap12
	END
	IF W_DateFinAbs >= W_Date3 THEN
		IF W_DateDebAbs < W_Date3 THEN W_DateDebAbs = W_Date3
		IF W_CleAbs[6,2] # "03" THEN
			W_JourAbs3 = W_JourAbs3 + (W_DateFinAbs - W_DateDebAbs + 1) - W_Handicap3
		END ELSE
			W_JourAbs3 = W_JourAbs3 + (W_DateFinAbs - W_DateDebAbs + 1)/2 - W_Handicap3
		END
		
	END
   REPEAT
   EXECUTE 'EFFACER-LISTE LISTABSAIDANT'
RETURN
