EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "CIVILAIDANT" TO F.AIDANT ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "", "ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
***********************************************
* 100 : criture de l'en-tete
* 200 : changement de secteur
***********************************************
PRINT "Indiquez la priode de dbut (sous la forme AAAAMM)"
INPUT W_PerDeb
PRINT "Indiquez maintenant la periode de fin (AAAAMM)"
INPUT W_PerFin

W_DiffMois=(W_PerFin - W_PerDeb)+1
IF W_DiffMois>88 THEN W_DiffMois=(W_DiffMois-88)+1

W_NbJrsAbs = 0
W_NbJrsAbsCours = 0
W_DateDebut = ICONV("01/":W_PerDeb[5,2]:"/":W_PerDeb[1,4],"D4/")
W_DateFin = W_PerFin[5,2] + 1
IF W_DateFin = "13" THEN
	W_DateFin = ICONV("31/12/":W_PerFin[1,4],"D4/")
END ELSE
	W_DateFin = ICONV("01/":W_DateFin:"/":W_PerFin[1,4],"D4/")
END

EXECUTE 'SELECT DETAILCALCUL AVEC ConvColContratDetailCalcul # "02" AND AVEC PeriodeDetailCalcul >= "':W_PerDeb:'" AND AVEC PeriodeDetailCalcul <= "':W_PerFin:'" AND AVEC TypeContrat = "I" PAR CodPosAidant PAR NomPrenomAidantDetailCalcul PAR ConvColContratDetailCalcul PAR @ID'
EXECUTE 'SAUVE-LISTE W_ReqDetailCalcul'
EXECUTE 'LISTE W_ReqDetailCalcul' RETURNING MSGCODE

W_Mois = W_PerDeb
GOSUB 300
W_PerDeb = W_LibMois:" ":W_PerDeb[1,4]
W_Mois=W_PerFin
GOSUB 300
W_PerFin = W_LibMois:" ":W_PerFin[1,4]


IF MSGCODE = 209 THEN
	PRINT "Pas de bulletins correspondants"
	STOP
END

SELECT F.DETAILCALCUL TO W_ReqDetailCalcul
W_NumAidant = 0
PRINTER ON

W_Fin = "Faux"
W_CompteurLigne = 67
W_PremierAidant = "Vrai"
W_TamponAidant = ""
W_TamponSecteur = ""
W_PremierDetail = "Vrai"
W_CumulHeures = 0
W_CumulMand = 0
W_MoySal=0

LOOP 

	READNEXT W_Cle FROM W_ReqDetailCalcul ELSE W_Fin = "Vrai"

WHILE W_Fin = "Faux"
	
	READ ENR_DETAIL FROM F.DETAILCALCUL, W_Cle ELSE ENR_DETAIL = ""
	
		IF W_PremierDetail = "Vrai" THEN
			W_PremierDetail = "Faux"
			W_TamponAidant = W_Cle[1,8]
			READ ENR_CONTRAT FROM F.CONTRAT, W_TamponAidant THEN
				
			END
		END
	
		IF W_Cle[1,8] # W_TamponAidant THEN

			*Traitement aidant prcdent
			
			READ ENR_AIDANT FROM F.AIDANT, W_TamponAidant[1,5] ELSE ENR_AIDANT = ""
			
			**READ ENR_CONTRAT FROM F.CONTRAT, W_TamponAidant ELSE ENR_CONTRAT = ""
			W_NomPrenomAidant = ENR_AIDANT<2>:" ":ENR_AIDANT<3>
			W_NomPrenomAidant = W_NomPrenomAidant[1,30]
			W_NomPrenomAidant = W_NomPrenomAidant"L 30"
			W_NomPrenomAidant = W_NomPrenomAidant:" ":TRIM(ENR_AIDANT<10>):" ":TRIM(ENR_AIDANT<11>)[1,13]
			W_NomPrenomAidant = W_NomPrenomAidant[1,49]
			W_NomPrenomAidant = W_NomPrenomAidant"L 50"
			ENR_CONTRAT<23,1>=ENR_CONTRAT<23,1>/1000
			
			IF INT(W_CumulHeures) # 0 OR INT(W_CumulMand) # 0 THEN
			IF ENR_AIDANT<10> # W_TamponSecteur OR W_CompteurLigne >=65 THEN
				IF W_PremierAidant = "Faux" THEN
					PAGE
				END ELSE
					W_PremierAidant = "Faux"
				END
				GOSUB 100
				W_TamponSecteur = ENR_AIDANT<10>
				GOSUB 200
				W_CompteurLigne =  9 
			END

			* calcul moyenne, avec prise en compte absences :
			W_NbJrs = 0
			IF ENR_CONTRAT<7> > W_DateDebut THEN
				IF ENR_CONTRAT<8> # "" AND ENR_CONTRAT<8> < W_DateFin THEN
					W_NbJrs = ENR_CONTRAT<8> - ENR_CONTRAT<7> + 1
				END ELSE
					W_NbJrs = W_DateFin - ENR_CONTRAT<7> + 1
				END
			END ELSE
				IF ENR_CONTRAT<8> # "" AND ENR_CONTRAT<8> < W_DateFin THEN
					W_NbJrs = ENR_CONTRAT<8> - W_DateDebut + 1
				END ELSE
					W_NbJrs = W_DateFin - W_DateDebut + 1
				END
			END
			
			W_NbJrsAbs = 0
			GOSUB 900
			W_MoyHres = 0
			W_NbJrs = W_NbJrs - W_NbJrsAbs

			IF INT(W_CumulHeures) # 0 THEN
				IF W_NbJrs <= 0 THEN
					W_MoyHres = W_CumulHeures
				END ELSE
					W_MoyHres = (W_CumulHeures / W_NbJrs) * 7
				END
			END ELSE
				IF W_NbJrs <= 0 THEN
					W_MoyHres = W_CumulMand
				END ELSE
					W_MoyHres = (W_CumulMand / W_NbJrs) * 7
				END
			END
			W_MoyHres = W_MoyHres"R2 7"
			W_CumulHeures=W_CumulHeures"R2 7"
			W_CumulMand = W_CumulMand"R2 7"
			IF ENR_CONTRAT<8> # "" THEN
			W_DateFinAff = OCONV(ENR_CONTRAT<8>,"D4/")
			END ELSE
			W_DateFinAff = "          "
			END

			W_MoySal=INT(((W_MoySal/W_DiffMois)*100)+1/2)
			W_MoySal=W_MoySal/100

			PRINT W_TamponAidant[1,5]:" ":W_NomPrenomAidant:OCONV(ENR_CONTRAT<7>, "D4/"):"  ":W_DateFinAff:"   ":ENR_CONTRAT<22,1>"L 3":"  ":W_CumulHeures:"    ":W_MoyHres:"   ":W_MoySal

			W_CompteurLigne = W_CompteurLigne + 1
			W_CumulMand = 0
			W_NumAidant = W_NumAidant + 1
			*IF W_NumAidant = 50 THEN
			*	STOP
			*END
			END
			
			* traitement aidant actuel

			W_TamponAidant = W_Cle[1,8]
			READ ENR_CONTRAT FROM F.CONTRAT, W_TamponAidant THEN
				IF ENR_CONTRAT<1> = "02" THEN
				    W_CumulMand = INT(ENR_DETAIL<6>)/100
				    W_MoySal=ENR_DETAIL<7>/100
				END ELSE
				    W_CumulHeures = INT(ENR_DETAIL<6>)/100
				    W_MoySal=ENR_DETAIL<7>/100
				END
			END ELSE
				ENR_CONTRAT = "" 
			END

		END ELSE 

			IF ENR_CONTRAT<1> = "02" THEN
				W_CumulMand = W_CumulMand + INT(ENR_DETAIL<6>)/100	
				W_MoySal=W_MoySal+ENR_DETAIL<7>/100
			END ELSE
	  			W_CumulHeures = W_CumulHeures + INT(ENR_DETAIL<6>)/100	
				W_MoySal=W_MoySal+ENR_DETAIL<7>/100
			END

			W_TamponAidant = W_Cle[1,8]	
			

		END 

REPEAT

READ ENR_AIDANT FROM F.AIDANT, W_TamponAidant[1,5] ELSE ENR_AIDANT = ""
**READ ENR_CONTRAT FROM F.CONTRAT, W_TamponAidant ELSE ENR_CONTRAT = ""
W_NomPrenomAidant = ENR_AIDANT<2>:" ":ENR_AIDANT<3>
W_NomPrenomAidant = W_NomPrenomAidant[1,30]
W_NomPrenomAidant = W_NomPrenomAidant"L 30"
W_NomPrenomAidant = W_NomPrenomAidant:" ":TRIM(ENR_AIDANT<10>):" ":TRIM(ENR_AIDANT<11>)[1,13]
W_NomPrenomAidant = W_NomPrenomAidant[1,49]
W_NomPrenomAidant = W_NomPrenomAidant"L 50"


IF INT(W_CumulHeures) # 0 THEN
IF ENR_AIDANT<31> # W_TamponSecteur THEN
	IF W_PremierAidant = "Vrai" THEN
		W_PremierAidant = "Faux"
	END ELSE
		PAGE
	END
	W_TamponSecteur = ENR_AIDANT<31>
	GOSUB 100
	GOSUB 200
	W_CompteurLigne = W_CompteurLigne + 5 
	W_TamponSecteur = ENR_AIDANT<31>
END
ENR_CONTRAT<23,1>=ENR_CONTRAT<23,1>/1000

* calcul moyenne, avec prise en compte absences :
W_NbJrs = 0
IF ENR_CONTRAT<7> > W_DateDebut THEN
	IF ENR_CONTRAT<8> # "" AND ENR_CONTRAT<8> < W_DateFin THEN
		W_NbJrs = ENR_CONTRAT<8> - ENR_CONTRAT<7> + 1
	END ELSE
		W_NbJrs = W_DateFin - ENR_CONTRAT<7> + 1
	END
END ELSE
	IF ENR_CONTRAT<8> # "" AND ENR_CONTRAT<8> < W_DateFin THEN
		W_NbJrs = ENR_CONTRAT<8> - W_DateDebut + 1
	END ELSE
		W_NbJrs = W_DateFin - W_DateDebut + 1
	END
END

W_NbJrsAbs = 0
GOSUB 900

W_MoyHres = 0
W_NbJrs = W_NbJrs - W_NbJrsAbs
IF W_NbJrs <= 0 THEN
	W_MoyHres = W_CumulHeures
END ELSE
	W_MoyHres = (W_CumulHeures / W_NbJrs) * 7
END
W_MoyHres = W_MoyHres"R2 7"
W_CumulMand = W_CumulMand"R2 7"
W_CumulHeures=W_CumulHeures"R2 7"
IF ENR_CONTRAT<8> # "" THEN
W_DateFin = OCONV(ENR_CONTRAT<8>,"D4/")
END ELSE
W_DateFin = "          "
END

W_MoySal=INT(((W_MoySal/W_DiffMois)*100)+1/2)
W_MoySal=W_MoySal/100

PRINT W_TamponAidant[1,5]:" ":W_NomPrenomAidant:OCONV(ENR_CONTRAT<7>, "D4/"):"   ":W_DateFin:"   ":ENR_CONTRAT<22,1>"L 3":"   ":W_CumulHeures:"  ":W_MoyHres:"  ":W_MoySal
W_CompteurLigne=W_CompteurLigne + 1
END
PRINTER OFF
PRINT W_NumAidant:" salaris lists..."

STOP

* En-tete
100
PRINT "100"
PRINT "           Liste des heures effectuees par aidant par commune entre ":W_PerDeb:" et ":W_PerFin
PRINT " "
RETURN

200
READ ENR_SECTEUR FROM F.SECTEUR, W_TamponSecteur ELSE ENR_SECTEUR = ""
PRINT " "
PRINT "Code postal : ":W_TamponSecteur
PRINT " "
PRINT " Aidant                                                   Debut du    Fin du    Coef.  Nombre d'  Moyenne    Sal "
PRINT "                                                          contrat     contrat           heures     hebdo    moyen"
PRINT " "
RETURN

300
W_LibMois=""
BEGIN CASE
	CASE W_Mois[5,2] MATCHES "01"
		W_LibMois = "janvier"
	CASE W_Mois[5,2] MATCHES "02"
		W_LibMois = "fevrier"
	CASE W_Mois[5,2] MATCHES "03"
		W_LibMois = "mars"
	CASE W_Mois[5,2] MATCHES "04"
		W_LibMois = "avril"
	CASE W_Mois[5,2] MATCHES "05"
		W_LibMois = "mai"
	CASE W_Mois[5,2] MATCHES "06"
		W_LibMois = "juin"
	CASE W_Mois[5,2] MATCHES "07"
		W_LibMois = "juillet"
	CASE W_Mois[5,2] MATCHES "08"
		W_LibMois = "aout"
	CASE W_Mois[5,2] MATCHES "09"
		W_LibMois = "septembre"
	CASE W_Mois[5,2] MATCHES "10"
		W_LibMois = "octobre"
	CASE W_Mois[5,2] MATCHES "11"
		W_LibMois = "novembre"
	CASE W_Mois[5,2] MATCHES "12"
		W_LibMois = "decembre"
END CASE
RETURN

900
* Determination du nbre de jours d'absence dans la periode...
W_Str = 'SELECT ABSENCESAIDANT AVEC @ID = "':W_TamponAidant[1,5]:']" AND AVEC NumMotifAidant <= "06" AND AVEC DebAbsAidant <= "':W_DateFin:'" AND AVEC 2 >= "':W_DateDebut:'" '
W_Str = W_Str:'OR AVEC @ID = "':W_TamponAidant[1,5]:']" AND AVEC NumMotifAidant = "12" AND AVEC DebAbsAidant <= "':W_DateFin:'" AND AVEC 2 >= "':W_DateDebut:'" '
W_Str = W_Str:'OR AVEC @ID = "':W_TamponAidant[1,5]:']" AND AVEC NumMotifAidant = "13" AND AVEC DebAbsAidant <= "':W_DateFin:'" AND AVEC 2 >= "':W_DateDebut:'" '

EXECUTE W_Str
W_FinAbs = "F"

LOOP
	READNEXT W_CleAbs ELSE W_FinAbs = "V"
	W_NbJrsAbs = W_NbJrsAbs + W_NbJrsAbsCours
	
WHILE W_FinAbs = "F"
	READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT, W_CleAbs ELSE ENR_ABSENCESAIDANT = ""
	W_NbJrsAbsCours = INT(W_CleAbs[8,5])
	IF W_NbJrsAbsCours > W_DateDebut THEN
		IF ENR_ABSENCESAIDANT<2> < W_DateFin THEN
			W_NbJrsAbsCours = ENR_ABSENCESAIDANT<2> - W_NbJrsAbsCours + 1
		END ELSE
			W_NbJrsAbsCours = W_DateFin - W_NbJrsAbsCours  + 1
		END
	END ELSE
		IF ENR_ABSENCESAIDANT<2> < W_DateFin THEN
			W_NbJrsAbsCours = ENR_ABSENCESAIDANT<2> - W_DateDebut+ 1
		END ELSE
			W_NbJrsAbsCours = W_DateFin - W_DateDebut + 1
		END
	END
	
REPEAT
W_NbJrsAbsCours = 0
RETURN
