****************************************************************
* Le 22 Juillet 2008, les taux d'indemnit kilomtriques        *
* pour les voitures et cyclomoteurs ont t augments,          *
* avec un effet rtroactif au 1er Mars.                        *
* Ce programme permet de fait une rgul sur le mois de Juillet. *
*                                                               *
* Grgory - 23/07/08                                            *
* Mikael  - 27/08/08                                            *
*****************************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","DETAILPREST" TO F.DETAILPREST ELSE STOP
OPEN "","FUSION" TO F.FUSION ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
*****************************************************************
PROCREAD PARAMETRES ELSE STOP
TAB_CODESRUB1="078"
*TAB_CODESRUB1=FIELD(PARAMETRES,"|",2)
W_MontRegul1=FIELD(PARAMETRES,"|",3)
W_RubRegul1=FIELD(PARAMETRES,"|",4)

*TAB_CODESRUB2=FIELD(PARAMETRES,"|",5)
W_MontRegul2=FIELD(PARAMETRES,"|",6)
W_RubRegul2=FIELD(PARAMETRES,"|",7)

W_PeriodeDepart=FIELD(PARAMETRES,"|",8)
W_PeriodeFin=FIELD(PARAMETRES,"|",9)

W_Asso=FIELD(PARAMETRES,"|",10)

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

ENR_DETAILCALCUL=""
ENR_DETCALC=""
ENR_DETAILPREST=""
ENR_FUSION=""
ENR_CIVILAIDANT=""
ENR_CONTRAT=""
ENR_PERIODESPAIE=""

W_ListReq=""

W_AncienAidant=""
W_AncienneCle=""

W_Total1=0
W_Total2=0

I=0
J=0
K=0

READ ENR_PERIODESPAIE FROM F.PERIODESPAIE, "1" ELSE STOP

**************
* Traitement
**************

ENR_FUSION<-1> = "Code Aidant;Nom Prnom;Base rgul. vhicules;Base rgul. deux roues;Anomalie"

W_Select=""
FOR I = W_PeriodeDepart TO W_PeriodeFin
	IF I[5,2]="13" THEN
		W_Annee=I[1,4]+1
		W_Periode=W_Annee:01
		I=W_Periode
	END
	IF I = W_PeriodeDepart THEN
		W_Select='SELECT DETAILCALCUL AVEC CodAssoContratDetailCalcul = "':W_Asso:'" AND AVEC TypeActiviteDetail <> "M" AND AVEC PeriodeDetailCalcul = "':I:'"'
	END ELSE
		W_Select=W_Select:' OR = "':I:'"'
	END
NEXT I
W_Select=W_Select:' PAR @ID'

EXECUTE W_Select
EXECUTE 'SAUVE-LISTE W_ListReq'
EXECUTE "LISTE W_ListReq" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN

	SELECT F.DETAILCALCUL TO W_ListReq
	
	W_Fini="Faux"
	LOOP
		READNEXT W_Cle FROM W_ListReq ELSE W_Fini = "Vrai"
	WHILE W_Fini = "Faux"
		IF W_AncienAidant = "" THEN W_AncienAidant = W_Cle[1,5]
		IF W_AncienAidant <> W_Cle[1,5] THEN
			GOSUB 10
		END
		
		READ ENR_DETAILCALCUL FROM F.DETAILCALCUL, W_Cle THEN
			FOR I = 1 TO DCOUNT(ENR_DETAILCALCUL<17>,CHAR(253))
			*Modif mikael 
				*IF INDEX(TAB_CODESRUB1,ENR_DETAILCALCUL<17,I>,1) > 0 THEN
				*	W_Total1=W_Total1+ENR_DETAILCALCUL<18,I>
				*END
				*IF INDEX(TAB_CODESRUB2,ENR_DETAILCALCUL<17,I>,1) > 0 THEN
				*	W_Total2=W_Total2+ENR_DETAILCALCUL<18,I>
				*END
				IF INDEX(TAB_CODESRUB1,ENR_DETAILCALCUL<17,I>,1) > 0 THEN
					IF ENR_DETAILCALCUL<19,I>="3300" THEN
						W_Total1=W_Total1+ENR_DETAILCALCUL<18,I>
					END ELSE
						W_Total2=W_Total2+ENR_DETAILCALCUL<18,I>
					END
				END
			*Fin modification

			NEXT I
		END
		W_AncienneCle=W_Cle
	REPEAT
	GOSUB 10
	IF ENR_FUSION<2><>"" THEN WRITE ENR_FUSION ON F.FUSION, "Liste des anomalies pour le rattrapage des taux d'indemnits kilomtriques.csv"
END

STOP
**************************************
10
	
	IF W_Total1<>0 OR W_Total2<>0 THEN
		READ ENR_CONTRAT FROM F.CONTRAT, W_AncienneCle[1,8] THEN
			IF ENR_CONTRAT<8>="" OR ENR_CONTRAT<8>>=ICONV("01/":ENR_PERIODESPAIE<1>[5,2]:"/":ENR_PERIODESPAIE<1>[1,4],"D4/") THEN
				READ ENR_DETCALC FROM F.DETAILCALCUL, W_AncienneCle[1,8]:ENR_PERIODESPAIE<1> THEN
					READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_AncienAidant ELSE ENR_CIVILAIDANT=""
					
					*W_Regul1=INT((W_MontRegul1 * W_Total1) + 0.5)
					*W_Regul2=INT((W_MontRegul2 * W_Total2) + 0.5)
					
					ENR_FUSION<-1>=W_AncienAidant:';':ENR_CIVILAIDANT<2>:' ':ENR_CIVILAIDANT<3>:';':W_Total1 "MR2":';':W_Total2 "MR2":';Bulletin dj calcul'					
				END ELSE
					READ ENR_DETAILPREST FROM F.DETAILPREST, W_AncienneCle[1,8]:ENR_PERIODESPAIE<1> ELSE ENR_DETAILPREST=""
				
					IF W_Total1<>0 THEN
						W_Exist="NON"
						FOR I = 1 TO DCOUNT(ENR_DETAILPREST<5>,CHAR(253))
							IF ENR_DETAILPREST<5,I>=W_RubRegul1 THEN
								W_Exist="OUI"
								EXIT
							END
						NEXT I
					
						IF W_Exist="OUI" THEN
							ENR_DETAILPREST<6,I>=W_Total1
							ENR_DETAILPREST<8,I>=INT((W_MontRegul1 * W_Total1) + 0.5)
						END ELSE
							ENR_DETAILPREST<5,-1>=W_RubRegul1
							ENR_DETAILPREST<6,-1>=W_Total1
							ENR_DETAILPREST<7,-1>=W_MontRegul1*10000
							ENR_DETAILPREST<8,-1>=INT((W_MontRegul1 * W_Total1) + 0.5)
						END
					END
				
					IF W_Total2<>0 THEN
						W_Exist="NON"
						FOR I = 1 TO DCOUNT(ENR_DETAILPREST<5>,CHAR(253))
							IF ENR_DETAILPREST<5,I>=W_RubRegul2 THEN
								W_Exist="OUI"
								EXIT
							END
						NEXT I
					
						IF W_Exist="OUI" THEN
							ENR_DETAILPREST<6,I>=W_Total2
							ENR_DETAILPREST<8,I>=INT((W_MontRegul2 * W_Total2) + 0.5)
						END ELSE
							ENR_DETAILPREST<5,-1>=W_RubRegul2
							ENR_DETAILPREST<6,-1>=W_Total2
							ENR_DETAILPREST<7,-1>=W_MontRegul2*10000
							ENR_DETAILPREST<8,-1>=INT((W_MontRegul2 * W_Total2) + 0.5)
						END
					END
					WRITE ENR_DETAILPREST ON F.DETAILPREST, W_AncienneCle[1,8]:ENR_PERIODESPAIE<1>
				END
			END
		END
	END
	
	W_Total1=0
	W_Total2=0
	W_AncienAidant = W_Cle[1,5]

RETURN