EXECUTE "SET-THOUS ."
OPEN "", "PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP
OPEN "", "ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "TPSTEMPO" TO F.TPSTEMPO ELSE STOP

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

EXECUTE 'UDT.OPTIONS 11 ON'
EXECUTE 'DATE.FORMAT'
EXECUTE 'SET-DEC ,'

EXECUTE 'SELECT ETABLISSEMENT'

W_Fin = "F"
W_TabFinPer = ""
LOOP
	READNEXT W_Cle ELSE W_Fin = "V"
WHILE W_Fin ="F"
	READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT, W_Cle THEN
		W_TabFinPer<W_Cle[1,3],W_Cle[4,3]> = ENR_ETABLISSEMENT<24>
		IF W_TabFinPer<W_Cle[1,3],W_Cle[4,3]> = "" THEN
			W_TabFinPer<W_Cle[1,3],W_Cle[4,3]> = "12"
		END
	END
REPEAT

W_Periode = ENR_PERIODESPAIE<1> 
W_MoisEnCours = W_Periode[5,2]
W_DateDeb = ICONV("01/":W_MoisEnCours:"/":W_Periode[1,4],"D4/")

W_ReqContratBatch=""

EXECUTE 'SELECT CONTRAT AVEC 1 # "02" AND AVEC 65 # "O" AND AVEC 8 >= "':W_DateDeb:'" OR = ""'
EXECUTE 'SAUVE-LISTE W_ReqContratBatch'
EXECUTE 'LISTE W_ReqContratBatch' RETURNING MSGCODE
IF MSGCODE<1> # "209" THEN
SELECT F.CONTRAT TO W_ReqContratBatch
W_Fin = "F"
LOOP
	READNEXT W_Cle FROM W_ReqContratBatch ELSE W_Fin = "V"
WHILE W_Fin = "F"
	READ ENR_CONTRAT FROM F.CONTRAT, W_Cle THEN
	   IF ENR_CONTRAT<1> # "02" THEN
		W_Ecart = W_TabFinPer<ENR_CONTRAT<2>, ENR_CONTRAT<3>[4,3]> - W_MoisEnCours
		IF W_Ecart < 0 THEN
			W_Ecart = W_Ecart + 12
			W_AnneeFin = W_Periode[1,4]+1
		END ELSE
			W_AnneeFin = W_Periode[1,4]
		END
		IF W_Ecart < 3 THEN
		   ** Commencer periode suivante....
		   *W_MoisFin = W_TabFinPer<ENR_CONTRAT<2>, ENR_CONTRAT<3>[4,3]> + 3
		   *IF W_MoisFin > 12 THEN
		   *	W_MoisFin = W_MoisFin - 12 
		   *	W_MoisFin = W_AnneeFin+1 : W_MoisFin"R%2"
		   *END ELSE
		   *	W_MoisFin = W_AnneeFin:W_MoisFin"R%2"
		   *END
		   W_MoisFin = W_AnneeFin+1:W_TabFinPer<ENR_CONTRAT<2>, ENR_CONTRAT<3>[4,3]>
		END ELSE
		  * On s'arrete  fin de periode de modulation en cours.
		  W_MoisFin = W_AnneeFin:W_TabFinPer<ENR_CONTRAT<2>, ENR_CONTRAT<3>[4,3]>
		END

	   END ELSE
		* Mandataire : Mois fin modul = "12"
		W_Ecart = 12 - W_MoisEnCours
		IF W_Ecart < 0 THEN
			W_Ecart = W_Ecart + 12
			W_AnneeFin = W_Periode[1,4]+1
		END ELSE
			W_AnneeFin = W_Periode[1,4]
		END
		IF W_Ecart < 3 THEN
		   * Commencer periode suivante....
		   W_MoisFin = 12 + 3
		   IF W_MoisFin > 12 THEN
			W_MoisFin = W_MoisFin - 12 
			W_MoisFin = W_AnneeFin+1 : W_MoisFin"R%2"
		   END ELSE
			W_MoisFin = W_AnneeFin:W_MoisFin"R%2"
		   END
		END ELSE
		  * On s'arrete  fin de periode de modulation en cours.
			W_MoisFin = W_AnneeFin:"12"
		END

	   END
		PARAMETRES = ""
		W_CleRetour = "TRTGLOBAL":TIME()
		PARAMETRES = "CALCSUIVCONTRATPROSP |":W_Cle:"||":W_MoisFin:"|B|":W_TabFinPer<ENR_CONTRAT<2>, ENR_CONTRAT<3>[4,3]>:"|":W_CleRetour
		EXECUTE PARAMETRES
		*DELETE F.TPSTEMPO,"CALCSUIV":W_CleRetour
	END
REPEAT
END
EXECUTE 'EFFACER-LISTE W_ReqContratBatch'
STOP
