***************************************
* MOULINETTE DE RATTRAPAGE DE L'IRCEM *
***************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","COMPLFACT" TO F.COMPLFACT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","PERIODESPAIE" TO F.PERIODESPAIE ELSE STOP

AN = ""
PERIODE = ""
MOISTEST = ""
TRIMESTRE = ""
SEL = ""
W_FINI = "FAUX"
W_CLE = ""
MONTANT = 0
CLECONT = ""
ANCAIDE = ""
AIDE = ""
W_RESULTAT = ""

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

IF ENR_PERIODESPAIE<1> = "" THEN
	PRINT 'La periode de paie n est pas valide !!'
	STOP
END ELSE
	PERIODE = ENR_PERIODESPAIE<1>
	AN = PERIODE[1,4]
	MOISTEST = PERIODE[5,2]
	GOSUB 100
END

BEGIN CASE
	CASE TRIMESTRE MATCHES "1"
		SEL = 'AVEC PeriodeDetailCalcul <= "':AN:'03" AND AVEC PeriodeDetailCalcul => "':AN:'01"' 
	CASE TRIMESTRE MATCHES "2"
		SEL = 'AVEC PeriodeDetailCalcul <= "':AN:'06" AND AVEC PeriodeDetailCalcul => "':AN:'04"' 
	CASE TRIMESTRE MATCHES "3"
		SEL = 'AVEC PeriodeDetailCalcul <= "':AN:'09" AND AVEC PeriodeDetailCalcul => "':AN:'07"' 
	CASE TRIMESTRE MATCHES "4"
		SEL = 'AVEC PeriodeDetailCalcul <= "':AN:'12" AND AVEC PeriodeDetailCalcul => "':AN:'10"' 
END CASE

EXECUTE 'SSELECT DETAILCALCUL ':SEL:' AND AVEC ProfilContratDetailCalcul = "011" OR = "012" OR = "028" PAR CodeAideDetailCalcul'

EXECUTE 'SAUVE-LISTE W_RESULTAT' 
EXECUTE "LISTE W_RESULTAT" RETURNING MSGCODE
SELECT F.DETAILCALCUL TO W_RESULTAT

LOOP
	READNEXT W_CLE FROM W_RESULTAT ELSE W_FINI="VRAI"
WHILE W_FINI = "FAUX"
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CLE ELSE ENR_DETAILCALCUL = ""
	CLECONT = W_CLE[1,8]
	READ ENR_CONTRAT FROM F.CONTRAT,CLECONT ELSE ENR_CONTRAT = ""
	AIDE = ENR_CONTRAT<3>
	IF AIDE # ANCAIDE THEN
		IF ANCAIDE = "" THEN
			ANCAIDE = AIDE
		END ELSE
			CLECOMPL = ANCAIDE:'001M'
			READ ENR_COMPLFACT FROM F.COMPLFACT,CLECOMPL ELSE ENR_COMPLFACT = ""
			IF MONTANT > 0 THEN
				IF ENR_COMPLFACT = "" THEN
					ENR_COMPLFACT<1> = "PREVOYANCE AG2R"
					ENR_COMPLFACT<2> = ""
					ENR_COMPLFACT<3> = ""
					ENR_COMPLFACT<4> = MONTANT
					ENR_COMPLFACT<5> = "4372070000"
					ENR_COMPLFACT<6> = ""
					ENR_COMPLFACT<7> = "0"
				END ELSE
					I = 0
					LOOP
						I = I + 1
					WHILE ENR_COMPLFACT<1,I> # ""
					REPEAT
					ENR_COMPLFACT<1,I> = "PREVOYANCE AG2R"
					ENR_COMPLFACT<2,I> = ""
					ENR_COMPLFACT<3,I> = ""
					ENR_COMPLFACT<4,I> = MONTANT
					ENR_COMPLFACT<5,I> = "4372070000"
					ENR_COMPLFACT<6,I> = ""
					ENR_COMPLFACT<7,I> = "0"
				END
				WRITE ENR_COMPLFACT TO F.COMPLFACT,CLECOMPL
			END
			MONTANT = 0
			ANCAIDE = AIDE	
		END
	END
	
	I = 1
	LOOP
	WHILE ENR_DETAILCALCUL<8,I> # ""
		IF ENR_DETAILCALCUL<8,I> = "117" THEN
			IF W_CLE[9,6] = 200110 OR W_CLE[9,6] = 200111 THEN
				IF ENR_DETAILCALCUL<11,I> # "" THEN
					DET11 = INT(((ENR_DETAILCALCUL<11,I>*100000)/655957)+(1/2))
				END ELSE
					DET11 = 0
				END
				DET14 = INT(((ENR_DETAILCALCUL<14,I>*100000)/655957)+(1/2))
				MONTANT = MONTANT + DET11 + DET14
			END ELSE
				MONTANT = MONTANT + ENR_DETAILCALCUL<11,I> + ENR_DETAILCALCUL<14,I>
			END
		END
		I = I + 1
	REPEAT

REPEAT

IF ANCAIDE # "" THEN
	CLECOMPL = ANCAIDE:'001M'
	READ ENR_COMPLFACT FROM F.COMPLFACT,CLECOMPL ELSE ENR_COMPLFACT = ""
	IF MONTANT > 0 THEN
		IF ENR_COMPLFACT = "" THEN
			ENR_COMPLFACT<1> = "PREVOYANCE AG2R"
			ENR_COMPLFACT<2> = ""
			ENR_COMPLFACT<3> = ""
			ENR_COMPLFACT<4> = MONTANT
			ENR_COMPLFACT<5> = "4372070000"
			ENR_COMPLFACT<6> = ""
			ENR_COMPLFACT<7> = "0"
		END ELSE
			I = 0
			LOOP
				I = I + 1
			WHILE ENR_COMPLFACT<1,I> # ""
			REPEAT
			ENR_COMPLFACT<1,I> = "PREVOYANCE AG2R"
			ENR_COMPLFACT<2,I> = ""
			ENR_COMPLFACT<3,I> = ""
			ENR_COMPLFACT<4,I> = MONTANT
			ENR_COMPLFACT<5,I> = "4372070000"
			ENR_COMPLFACT<6,I> = ""
			ENR_COMPLFACT<7,I> = "0"
		END
		WRITE ENR_COMPLFACT TO F.COMPLFACT,CLECOMPL
	END
END


STOP


**************************
* RECHERCHE DU TRIMESTRE *
**************************

100

BEGIN CASE
	CASE MOISTEST MATCHES "01"
		TRIMESTRE = "1"
 	CASE MOISTEST MATCHES "02"
		TRIMESTRE = "1"
	CASE MOISTEST MATCHES "03"
		TRIMESTRE = "1"
	CASE MOISTEST MATCHES "04"
		TRIMESTRE = "2"
	CASE MOISTEST MATCHES "05"
		TRIMESTRE = "2"
	CASE MOISTEST MATCHES "06"
		TRIMESTRE = "2"
	CASE MOISTEST MATCHES "07"
		TRIMESTRE = "3"
	CASE MOISTEST MATCHES "08"
		TRIMESTRE = "3"
	CASE MOISTEST MATCHES "09"
		TRIMESTRE = "3"
	CASE MOISTEST MATCHES "10"
		TRIMESTRE = "4"
	CASE MOISTEST MATCHES "11"
		TRIMESTRE = "4"
	CASE MOISTEST MATCHES "12"
		TRIMESTRE = "4"
END CASE

RETURN
