EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "DICT", "HRESHISTOR" TO F.DICTHRESHISTOR ELSE STOP
READ ENR_DICT FROM F.DICTHRESHISTOR, "NoteToilette" ELSE
	ENR_DICT = ""
	ENR_DICT<1> = "V"
	ENR_DICT<2> = 'FIELD(OCONV(@ID,"T1,5":@VM:"TBESOINSAIDE;X;;2"),CHAR(253),7)'
	ENR_DICT<3> = ""
	ENR_DICT<4> = "Note toilette"
	ENR_DICT<5> = "2R"
	ENR_DICT<6> = "S"
	WRITE ENR_DICT ON F.DICTHRESHISTOR,"NoteToilette"
END

OPEN "", "HRESHISTOR" TO F.HRESHISTOR ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "CAPIMPAIDANT" TO F.CAPIMPAIDANT ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "FUSION" TO F.FUSION ELSE STOP
OPEN "", "ACCORD" TO F.ACCORD ELSE STOP
OPEN "", "ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE STOP

PRINT " ** Comptabilisation des heures auxiliaire de vie ** "

LOOP 
   W_PerDeb = 0
   LOOP
   PRINT "Periode de dbut (AAAAMM) ?"
   INPUT W_PerDeb
   IF LEN(W_PerDeb) = 6 AND ICONV(W_PerDeb,"MCN") = W_PerDeb THEN 
	W_Annee = W_PerDeb[1,4]
	W_Mois = W_PerDeb[5,2]
   END ELSE
	W_Annee = 0
	W_Mois = 0
   END
   WHILE W_Annee < 1998 OR W_Annee > 2040 OR W_Mois < 1 OR W_Mois > 12
   REPEAT

   W_PerFin = 0
   LOOP
   PRINT "Periode de fin (AAAAMM) ?"
   INPUT W_PerFin
   IF LEN(W_PerFin) = 6 AND ICONV(W_PerFin,"MCN") = W_PerFin THEN 
	W_Annee = W_PerFin[1,4]
	W_Mois = W_PerFin[5,2]
   END ELSE
	W_Annee = 0
   END
   WHILE W_Annee < 1998 OR W_Annee > 2040 OR W_Mois < 1 OR W_Mois > 12
   REPEAT
WHILE W_PerDeb > W_PerFin
   PRINT "La priode de dbut doit tre infrieure  la priode de fin..."
REPEAT

W_DateDeb = ICONV("01/":W_PerDeb[5,2]:"/":W_PerDeb[1,4],"D4/")
W_DateFin = ICONV("01":OCONV(W_DateDeb+32,"D4/")[3,8],"D4/")-1

W_CodeAideAcc = 0

W_ReqAccAuxVie=""

*EXECUTE 'COMO ON TESTAUX'

EXECUTE 'SELECT ACCORD AVEC 5 =< "':W_DateFin:'" AND AVEC 6 >= "':W_DateDeb:'" AVEC TypeActOrg = "P" PAR @ID'
EXECUTE 'SAUVE-LISTE W_ReqAccAuxVie'
EXECUTE 'LISTE W_ReqAccAuxVie' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
	SELECT F.ACCORD TO W_ReqAccAuxVie
END

W_ReqHresHistor=""
EXECUTE 'SELECT HRESHISTOR AVEC PeriodeHresHistor >= "':W_PerDeb:'" AND AVEC PeriodeHresHistor <= "':W_PerFin:'" AND AVEC NoteToilette >= "1" PAR @ID'
EXECUTE 'SAUVE-LISTE W_ReqHresHistor'
EXECUTE 'LISTE W_ReqHresHistor' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
	SELECT F.HRESHISTOR TO W_ReqHresHistor
END

ENR_RESULTAT = ""
ENR_RESULTAT<1> = "Code aide;Nom prnom aid;Code aidant;Nom prnom aidant;Nb heures; Org accord; Heures alloues; Date dbut;Date fin;Allocation"
W_IndResultat = 2

W_Fin = "F"
W_TamponAide = ""
LOOP
	READNEXT W_Cle FROM W_ReqHresHistor ELSE W_Fin = "V"
	IF W_Cle[1,5] # W_TamponAide THEN
		IF W_TamponAide # "" AND W_Cumul<1> # "" THEN
			GOSUB 100
		END
		W_TamponAide = W_Cle[1,5]
		W_Cumul=""
		W_Exclus = ""
   	END
WHILE W_Fin = "F"
   
   READ ENR_HRESHISTOR FROM F.HRESHISTOR, W_Cle THEN
	i = 0
	LOOP
	i = i + 1
	WHILE ENR_HRESHISTOR<1,i> # ""
	   IF INDEX(W_Exclus,ENR_HRESHISTOR<1,i>:";",1) = 0 THEN
		W_IndiceInsert = 0
 		IF INDEX(W_Cumul<1>,ENR_HRESHISTOR<1,i>,1) = 0 THEN
			GOSUB 50
		END ELSE
			W_IndiceInsert = (INDEX(W_Cumul<1>,ENR_HRESHISTOR<1,i>,1)-1)/6 + 1
		END
		IF W_IndiceInsert # 0 THEN
		   W_Cumul<2,W_IndiceInsert> = W_Cumul<2,W_IndiceInsert> + ENR_HRESHISTOR<2,i>
		END ELSE
		   W_Exclus = W_Exclus:ENR_HRESHISTOR<1,i>:";"
		END
	   END
	REPEAT
   END
REPEAT

EXECUTE 'EFFACER-LISTE W_ReqHresHistor'
EXECUTE 'EFFACER-LISTE W_ReqAccAuxVie'

CONVERT CHAR(253) TO ";" IN ENR_RESULTAT
WRITE ENR_RESULTAT ON F.FUSION, "AuxiliaireDeVie ":W_PerDeb:" a ":W_PerFin:".txt"
PRINT 'Le fichier : "AuxiliaireDeVie ':W_PerDeb:' a ':W_PerFin:'.txt" a t gnr dans le rpertoire \Fusion\ de la base.'

*EXECUTE 'COMO OFF'

STOP

50
* Lecture CIVILAIDANT / CAPIMPAIDANT
READ ENR_CAPIMPAIDANT FROM F.CAPIMPAIDANT, ENR_HRESHISTOR<1,i> THEN
   IF ENR_CAPIMPAIDANT<2,7> # 0 AND ENR_CAPIMPAIDANT<2,7> # "" THEN 
	IF W_Cumul<1>= "" THEN
	   W_IndiceInsert = 1
	END ELSE
	   W_IndiceInsert = DCOUNT(W_Cumul<1>,CHAR(253)) + 1
	END
	W_Cumul<1,W_IndiceInsert> = ENR_HRESHISTOR<1,i>
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, ENR_HRESHISTOR<1,i> THEN
	   W_Cumul<3,W_IndiceInsert> = ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
	END ELSE
	   W_Cumul<3,W_IndiceInsert> = ""
	END
	W_Cumul<2,W_IndiceInsert> = 0
   END
END
RETURN

100

* Intgration de W_Cumul dans W_Resultat...
READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_TamponAide THEN
GOSUB 200
W_IndListe = W_IndListe - 1
W_IndListeEnCours = 0
W_Count = DCOUNT(W_Cumul<1>,CHAR(253))

FOR k = 1 TO W_Count

   W_IndListeEnCours = W_IndListeEnCours +1

   ENR_RESULTAT<W_IndResultat,1> = W_TamponAide
   ENR_RESULTAT<W_IndResultat,2> = ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
   ENR_RESULTAT<W_IndResultat,3> = W_Cumul<1,k>
   ENR_RESULTAT<W_IndResultat,4> = W_Cumul<3,k>
   ENR_RESULTAT<W_IndResultat,5> = W_Cumul<2,k>/100
   ENR_RESULTAT<W_IndResultat,6> = W_ListeOrgs<W_IndListeEnCours>
   ENR_RESULTAT<W_IndResultat,7> = W_ListeNotifs<W_IndListeEnCours>
   ENR_RESULTAT<W_IndResultat,8> = W_ListeDatesDeb<W_IndListeEnCours>
   ENR_RESULTAT<W_IndResultat,9> = W_ListeDatesFin<W_IndListeEnCours>
   ENR_RESULTAT<W_IndResultat,10> = W_ListeTypesAlloc<W_IndListeEnCours>

   W_IndResultat = W_IndResultat + 1

NEXT k
FOR k = 1 TO W_IndListe - W_IndListeEnCours

   ENR_RESULTAT<W_IndResultat,1> = W_TamponAide
   ENR_RESULTAT<W_IndResultat,2> = ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
   ENR_RESULTAT<W_IndResultat,3> = ""
   ENR_RESULTAT<W_IndResultat,4> = ""
   ENR_RESULTAT<W_IndResultat,5> = ""
   ENR_RESULTAT<W_IndResultat,6> = W_ListeOrgs<W_IndListeEnCours+k>
   ENR_RESULTAT<W_IndResultat,7> = W_ListeNotifs<W_IndListeEnCours+k>
   ENR_RESULTAT<W_IndResultat,8> = W_ListeDatesDeb<W_IndListeEnCours+k>
   ENR_RESULTAT<W_IndResultat,9> = W_ListeDatesFin<W_IndListeEnCours+k>
   ENR_RESULTAT<W_IndResultat,10> = W_ListeTypesAlloc<W_IndListeEnCours+k>

   W_IndResultat = W_IndResultat + 1

NEXT k

END
RETURN

200
* Prise en compte des accords
W_ListeOrgs = ""
W_ListeNotifs = ""
W_ListeDatesDeb = ""
W_ListeDatesFin = ""
W_ListeTypesAlloc = ""
W_IndListe=1
W_Prem = "Vrai"

LOOP
WHILE W_CodeAideAcc <= W_TamponAide
	IF W_CodeAideAcc = W_TamponAide AND W_Prem = "Vrai" THEN
		GOSUB 250
		W_Prem = "Faux"
	END ELSE
		W_Prem = "Faux"
		READNEXT W_CleAcc FROM W_ReqAccAuxVie THEN
		   W_CodeAideAcc = W_CleAcc[1,5]
		   IF W_CodeAideAcc = W_TamponAide THEN
			GOSUB 250
		   END
		END ELSE
		   W_CodeAideAcc = 99999
		END
	END
REPEAT
RETURN

250
READ ENR_ACCORD FROM F.ACCORD, W_CleAcc THEN
   IF ENR_ACCORD<18> # "O" THEN
	READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE, ENR_ACCORD<1> THEN
		W_ListeOrgs<W_IndListe> = ENR_ORGPRISECHARGE<1>
		
		W_ListeNotifs<W_IndListe> = ENR_ACCORD<9>/100
		
		W_ListeDatesDeb<W_IndListe> = OCONV(ENR_ACCORD<5>,"D4/")
		
		W_ListeDatesFin<W_IndListe> = OCONV(ENR_ACCORD<6>,"D4/")
		
		IF ENR_ORGPRISECHARGE<19> = "3" THEN
			W_ListeTypesAlloc<W_IndListe> = "Globales" 
		END ELSE
			W_ListeTypesAlloc<W_IndListe> = "Mensuelles" 
		END
		W_IndListe = W_IndListe + 1
	END
   END
END
RETURN
