
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "","HRESHISTOR" TO F.HRESHISTOR ELSE STOP
OPEN "","HRESAIDANT" TO F.HRESAIDANT ELSE STOP

W_REQDETAIL=""
***********
* REQUETE *
***********

	EXECUTE 'SSELECT HRESHISTOR AVEC PeriodeHresHistor = "2004]" PAR 0'
	EXECUTE 'SAUVE-LISTE W_REQDETAIL'
	EXECUTE "LISTE W_REQDETAIL" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		SELECT F.HRESHISTOR TO W_REQDETAIL
		GOSUB 100
	END

STOP

************************************
* GENERATION DU FICHIER HRESAIDANT *
************************************
100
	
	W_Fini="FAUX"
	LOOP
   		READNEXT W_CLE FROM W_REQDETAIL ELSE W_Fini="VRAI"
	WHILE W_Fini="FAUX" DO

		READ ENR_HRESHISTOR FROM F.HRESHISTOR,W_CLE ELSE ENR_HRESHISTOR = ""

		I = 1
		LOOP
		WHILE ENR_HRESHISTOR<1,I> # "" DO
		
			READ ENR_HRESAIDANT FROM F.HRESAIDANT,ENR_HRESHISTOR<1,I>:W_CLE[1,5]:W_CLE[9,6] ELSE ENR_HRESAIDANT = ""
			
			IF ENR_HRESAIDANT<1> = "" THEN
				ENR_HRESAIDANT<1> = ENR_HRESHISTOR<2,I>
			END ELSE
				ENR_HRESAIDANT<1> = ENR_HRESAIDANT<1> + ENR_HRESHISTOR<2,I>
			END
			
			WRITE ENR_HRESAIDANT ON F.HRESAIDANT,ENR_HRESHISTOR<1,I>:W_CLE[1,5]:W_CLE[9,6]

			I = I + 1
			
		REPEAT
		

	REPEAT

	GOSUB 200

RETURN

*************************
* CUMUL DES EXO NON EXO *
*************************
200

W_REQAIDANT=""

EXECUTE 'SSELECT HRESAIDANT PAR @ID'
EXECUTE 'SAUVE-LISTE W_REQAIDANT'
EXECUTE "LISTE W_REQAIDANT" RETURNING MSGCODE	

IF MSGCODE<1>#209 THEN
	SELECT F.HRESAIDANT TO W_REQAIDANT

	W_Fini="FAUX"
	W_ANCAIDANT=""
	W_ANCAIDE=""
	W_CUMEXO=0
	W_CUMNONEXO=0
	W_CUM=0

	LOOP
   		READNEXT W_CLE FROM W_REQAIDANT ELSE W_Fini="VRAI"
	WHILE W_Fini="FAUX" DO
				
		IF W_ANCAIDE # W_CLE[6,5] THEN
			IF W_ANCAIDE # "" THEN
				READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_ANCAIDE ELSE ENR_ACTIVITESAIDE = ""
				IF ENR_ACTIVITESAIDE<5> = "1" THEN
					W_CUMEXO = W_CUMEXO + W_CUM
				END ELSE
					W_CUMNONEXO = W_CUMNONEXO + W_CUM
				END
				W_CUM=0
			END
			W_ANCAIDE = W_CLE[6,5]
		END

		IF W_ANCAIDANT # W_CLE[1,5] THEN
			IF W_ANCAIDANT # "" THEN
				GOSUB 300
				W_CUMEXO=0
				W_CUMNONEXO=0
			END
			W_ANCAIDANT = W_CLE[1,5]
		END

		READ ENR_HRESAIDANT FROM F.HRESAIDANT,W_CLE ELSE ENR_HRESAIDANT = ""
		W_CUM = W_CUM + ENR_HRESAIDANT<1>

	REPEAT

END

RETURN

******************************
* MISE A JOUR DE HISTORCUMUL *
******************************
300

READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_ANCAIDANT:"2004001" ELSE ENR_HISTORCUMUL = ""

J = 1
W_BASE=0
W_BASEPLAF=0

LOOP
WHILE ENR_HISTORCUMUL<15,J> # "" DO

	IF ENR_HISTORCUMUL<15,J> = "038" OR ENR_HISTORCUMUL<15,J> = "035" THEN
		W_BASE = W_BASE + ENR_HISTORCUMUL<17,J>
	END

	IF ENR_HISTORCUMUL<15,J> = "037" OR ENR_HISTORCUMUL<15,J> = "036" THEN
		W_BASEPLAF = W_BASEPLAF + ENR_HISTORCUMUL<17,J>
	END

	J = J + 1

REPEAT

W_POURXEXO=0
W_BASEEXO=0
W_BASENONEXO=0
W_BASEPLAFEXO=0
W_BASEPLAFNONEXO=0

IF W_BASE # "0" THEN
	IF W_CUMEXO = 0 THEN
		W_BASENONEXO=W_BASE
		W_BASEPLAFNONEXO=W_BASEPLAF
	END ELSE
		IF W_CUMNONEXO = 0 THEN
			W_BASEEXO=W_BASE
			W_BASEPLAFEXO=W_BASEPLAF
		END ELSE
			W_POURXEXO = W_CUMEXO/(W_CUMEXO+W_CUMNONEXO)
			W_BASEEXO=INT((W_BASE*W_POURXEXO)+(1/2))
			W_BASENONEXO=W_BASE-W_BASEEXO
			IF W_BASEPLAF # 0 THEN
				W_BASEPLAFEXO=INT((W_BASEPLAF*W_POURXEXO)+(1/2))
				W_BASEPLAFNONEXO=W_BASEPLAF-W_BASEPLAFEXO
			END
		END
	END

	J = 1

	LOOP
	WHILE ENR_HISTORCUMUL<15,J> # "" DO

		IF ENR_HISTORCUMUL<15,J> = "038" THEN
			IF W_BASENONEXO = 0 THEN
				DEL ENR_HISTORCUMUL<15,J>
				DEL ENR_HISTORCUMUL<16,J>
				DEL ENR_HISTORCUMUL<17,J>
				DEL ENR_HISTORCUMUL<18,J>
				DEL ENR_HISTORCUMUL<19,J>
			END ELSE
				ENR_HISTORCUMUL<17,J> = W_BASENONEXO
			END
		END ELSE
			IF ENR_HISTORCUMUL<15,J> = "035" THEN
				IF W_BASEEXO = 0 THEN
					DEL ENR_HISTORCUMUL<15,J>
					DEL ENR_HISTORCUMUL<16,J>
					DEL ENR_HISTORCUMUL<17,J>
					DEL ENR_HISTORCUMUL<18,J>
					DEL ENR_HISTORCUMUL<19,J>
				END ELSE
					ENR_HISTORCUMUL<17,J> = W_BASEEXO
				END
			END
		END

		IF ENR_HISTORCUMUL<15,J> = "036" THEN
			IF W_BASEPLAFNONEXO = 0 THEN
				DEL ENR_HISTORCUMUL<15,J>
				DEL ENR_HISTORCUMUL<16,J>
				DEL ENR_HISTORCUMUL<17,J>
				DEL ENR_HISTORCUMUL<18,J>
				DEL ENR_HISTORCUMUL<19,J>
			END ELSE
				ENR_HISTORCUMUL<17,J> = W_BASEPLAFNONEXO
			END
		END ELSE
			IF ENR_HISTORCUMUL<15,J> = "037" THEN
				IF W_BASEPLAFEXO = 0 THEN
					DEL ENR_HISTORCUMUL<15,J>
					DEL ENR_HISTORCUMUL<16,J>
					DEL ENR_HISTORCUMUL<17,J>
					DEL ENR_HISTORCUMUL<18,J>
					DEL ENR_HISTORCUMUL<19,J>
				END ELSE
					ENR_HISTORCUMUL<17,J> = W_BASEPLAFEXO
				END
			END
		END

		J = J + 1

	REPEAT
	
	WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_ANCAIDANT:"2004001"

END

RETURN
