***************************************************************
* PROGRAMME DE GENERATION DES FICHIERS DE SALAIRE DES AIDANTS *
* EN VUE DE L'UTILISATION DES BUDGETS                         *
*                                                             *
* OCTOBRE 2004                                       STEPHANE *
* AOUT 2007											 Mikael   *
***************************************************************

***************************************************************
* RECAPITULATIF DES GOSUB
***************************************************************
*  10 -> LECTURE DES FICHIERS CONTRAT
*  20 -> GESTION DES CONTRATS CDD
*  30 -> GESTION DES ABSENCES POUR CONGES PARENTAL
*  40 -> GESTION DES PROFILS DE PAIE
*  50 -> GESTION DES BASE HORAIRES DES CONTRATS
*  60 -> DETERMINATION % ACTIVITE 
*  70 -> DETERMINATION % HEURES EXO
*  99 -> CALCULE DES JOURS DE SUSPENSION SUR LA PERIODE (SUB 100/200/300 LIEES)

* 500 -> ECRITURE BUDGETFICHPERSO
* 501 -> ECRITURE BUDGETFICHPERSO : ATT 30 - 33
* 600 -> ECRITURE BUDGETRUBCHARGE
* 700 -> ECRITURE BUDGETPARAM
* 800 -> GENERATION BUDGETMOI
* 801 -> GENERATION ATT 30 -> 33 DE BUDGETFICHPERSO

***************************************************************
* OUVERTURE DES FICHIERS
***************************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP
OPEN "","GRILLESCC" TO F.GRILLESCC ELSE STOP
OPEN "","PROFIL" TO F.PROFIL ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","TRANCHE" TO F.TRANCHE ELSE STOP

* OUVERTURE DES FICHIERS SPECIFIQUES A LA GESTION DES BUDGETS 
OPEN "","BUDGETFICHPERSO" TO F.BUDGETFICHPERSO ELSE STOP
OPEN "","BUDGETRUBCHARGE" TO F.BUDGETRUBCHARGE ELSE STOP
OPEN "","BUDGETPARAM" TO F.BUDGETPARAM ELSE STOP
OPEN "","BUDGETMOI" TO F.BUDGETMOI ELSE STOP
OPEN "","BUDGETTRAMESAISIE" TO F.BUDGETTRAMESAISIE ELSE STOP
OPEN "","BUDGETDETAILCALCUL" TO F.BUDGETDETAILCALCUL ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP

***************************************************************
* RECUPERATION DES PARAMETRES PASSES A LA PROCEDURE
***************************************************************
* RECUPERE LE CODE ENTITE
PROCREAD PARAMETRES ELSE STOP

W_RANGENTITE=INDEX(PARAMETRES," ",1)
W_CODEENTITE=PARAMETRES[W_RANGENTITE+1,3]

* RECUPERE LA PERIODE DE DEBUT
W_RANGDEBUT=INDEX(PARAMETRES," ",2)
W_PERIODEDEB=PARAMETRES[W_RANGDEBUT+1,6]

* RECUPERE LA PERIODE DE FIN
W_RANGFIN=INDEX(PARAMETRES," ",3)
W_PERIODEFIN=PARAMETRES[W_RANGFIN+1,6]

* RECUPERE L'ANNEE BUDGETAIRE
W_RANGANNEE=INDEX(PARAMETRES," ",4)
W_ANNEE=PARAMETRES[W_RANGANNEE+1,4]

***************************************************************
* APURATION DES ARTCILES DU FICHIER BUDGETFICHPERSO EN RELATION
* AVEC L'ENTITE JURIDIQUE SELECTIONNEE - IDEM BUDGETDETAILCALCUL
***************************************************************
LISTEBUDGETDETAILCALCUL=""
LISTEBUDGETFICHPERSO=""
LISTEDETAILCALCUL=""
EXECUTE 'VIDER-FICHIER BUDGETMOI'
EXECUTE 'VIDER-FICHIER BUDGETRUBCHARGE'
EXECUTE 'VIDER-FICHIER BUDGETPARAM'
EXECUTE 'VIDER-FICHIER BUDGETTRAMESAISIE'

EXECUTE 'SELECT BUDGETDETAILCALCUL AVEC CodAssoBudget = "':W_CODEENTITE:'" AND AVEC PeriodeBudget = "':W_ANNEE:']"'
EXECUTE "SAUVE-LISTE LISTEBUDGETDETAILCALCUL"
EXECUTE "LISTE LISTEBUDGETDETAILCALCUL" RETURNING W_MSG
IF W_MSG<1>#"209" THEN 
	SELECT F.BUDGETDETAILCALCUL TO LISTEBUDGETDETAILCALCUL 
	W_FINDETAILCALCUL="FAUX"
	LOOP
	UNTIL W_FINDETAILCALCUL="VRAI" DO
		READNEXT W_CLEDETAILCALCUL FROM LISTEBUDGETDETAILCALCUL THEN
       		     	DELETE F.BUDGETDETAILCALCUL,W_CLEDETAILCALCUL
		END ELSE
       			W_FINDETAILCALCUL="VRAI"
		END
	REPEAT
END
EXECUTE "EFFACER-LISTE LISTEBUDGETDETAILCALCUL"

EXECUTE 'SELECT BUDGETFICHPERSO AVEC @ID = "[':W_CODEENTITE:W_ANNEE:'"'
EXECUTE "SAUVE-LISTE LISTEBUDGETFICHPERSO"
EXECUTE "LISTE LISTEBUDGETFICHPERSO" RETURNING W_MSG
IF W_MSG<1>#"209" THEN
	SELECT F.BUDGETFICHPERSO TO LISTEBUDGETFICHPERSO 
	W_FINFICHPERSO="FAUX"
	LOOP
	UNTIL W_FINFICHPERSO="VRAI" DO
		READNEXT W_CLEFICHPERSO FROM LISTEBUDGETFICHPERSO THEN
			DELETE F.BUDGETFICHPERSO,W_CLEFICHPERSO
		END ELSE
			W_FINFICHPERSO="VRAI"
		END
	REPEAT
END
EXECUTE "EFFACER-LISTE LISTEBUDGETFICHPERSO"

***************************************************************
* DEBUT DU TRAITEMENT
* INITIALISATION DES VARIABLES
***************************************************************

W_TABRUBCHARGE = ""
W_TABPROFIL = ""
W_TABCCN = ""
W_TABACTIVITE = ""
W_ACTPLUSFORT = ""
W_TABBUDGETMOI = ""
W_TABRUBSAISIEMOI = ""
W_ANCIENDC = ""
W_TOTALPOURCACT = 0
W_RATIOEXO = 0
W_RATIONONEXO=0
W_CUMULHRESDIRECTE = 0
W_CUMULHRESEXO = 0
W_CUMULHRESNONEXO=0
W_TOTALHRESACT = 0
W_HRESREELLES = 0
W_BASESAISIE = ""
W_MONTANTSAISIE = ""
W_BASESAPNET = ""
W_MONTANTAPNET = ""
W_TAUXAPNET = ""
W_CONTRAT = ""
W_TABLESRUBSAISIE = ""
W_TABBUDGETTRAMESAISIE=""
W_TABCUMULCCN=""

LISTEBUDGETFICHPERSO = ""
LISTEABS = ""
LISTEDETAILCALCUL = ""

W_DEBUTPERIODE = ICONV("01/":W_PERIODEDEB[5,2]:"/":W_PERIODEDEB[1,4],"D4/")
IF W_PERIODEFIN[5,2] # "12" THEN
	W_FINPERIODE = ICONV("01/":W_PERIODEFIN[5,2]+1:"/":W_PERIODEFIN[1,4],"D4/")-1
END ELSE
	W_FINPERIODE = ICONV("01/01/":W_PERIODEFIN[1,4]+1,"D4/")-1
END

W_DEBUTANNEE=ICONV("01/01/":W_ANNEE,"D4/")
W_FINANNEE=ICONV("31/12/":W_ANNEE,"D4/")

EXECUTE 'SELECT DETAILCALCUL AVEC PeriodeDetailCalcul >= "':W_PERIODEDEB:'" AND <= "':W_PERIODEFIN:'" AND AVEC ConvColContratDetailCalcul # "02" AND AVEC DatDebContratDetailCalcul <= "':W_FINANNEE:'" AND AVEC DatFinContratDetailCalcul >= "':W_DEBUTANNEE:'" OR = "" AND AVEC CodAssoContratDetailCalcul = "':W_CODEENTITE:'" PAR CodeContrat PAR PeriodeDetailCalcul'
EXECUTE "SAUVE-LISTE LISTEDETAILCALCUL"
EXECUTE "LISTE LISTEDETAILCALCUL" RETURNING W_MSG



IF W_MSG<1>="209" THEN STOP
SELECT F.DETAILCALCUL TO LISTEDETAILCALCUL


*Modification mikael DA7091- 04
*On lit une fois le fichier TABLES CLE "QUALIF"

READ ENR_TABLESQUALIF FROM F.TABLES,"QUALIF" ELSE ENR_TABLESQUALIF=""

W_FINDC="FAUX"
LOOP
	UNTIL W_FINDC="VRAI" DO
	READNEXT W_CLEDC FROM LISTEDETAILCALCUL THEN

		READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CLEDC ELSE ENR_DETAILCALCUL = ""

		IF W_ANCIENDC = "" THEN 
			W_ANCIENDC = W_CLEDC[1,8]
			READ ENR_CONTRAT FROM F.CONTRAT,W_ANCIENDC[1,8] ELSE ENR_CONTRAT=""
		END

		IF W_CLEDC[1,8] # W_ANCIENDC THEN 
			GOSUB 10		;* LECTURE DES CONTRATS
			W_CUMULHRESDIRECTE = 0
			W_CUMULHRESEXO = 0
			W_TABACTIVITE = ""
			W_TOTALHRESACT = 0
			W_ACTPLUSFORT = ""
			W_TOTALPOURCACT = 0
			W_RATIOEXO = 0
			W_RATIONONEXO=0
			W_CUMULHRESDIRECTE = 0
			W_CUMULHRESNONEXO = 0
			W_HRESREELLES = 0
			W_ANCIENDC = W_CLEDC[1,8]
			W_BASESAISIE = ""
			W_MONTANTSAISIE = ""
			W_BASESAPNET = ""
			W_MONTANTAPNET = ""
			W_TAUXAPNET = ""
		END
		

		
		READ ENR_CONTRAT2 FROM F.CONTRAT,W_CLEDC[1,8] ELSE ENR_CONTRAT2 = ENR_CONTRAT
*		IF ENR_CONTRAT2<6> = "P" THEN
			GOSUB 800		;* ECRITURE BUDGETMOI
			GOSUB 801 		;* GENERATION ATT 30 -> 33 DE BUDGETFICHPERSO
*		END

		IF ENR_DETAILCALCUL<24> # "" THEN
			W_CUMULHRESDIRECTE = W_CUMULHRESDIRECTE + ENR_DETAILCALCUL<41>
			W_CUMULHRESEXO = W_CUMULHRESEXO + ENR_DETAILCALCUL<42>
			W_CUMULHRESNONEXO = W_CUMULHRESNONEXO + ENR_DETAILCALCUL<54>
		END

		* GESTION ACTIVITE
		I = 1
		LOOP
			UNTIL ENR_DETAILCALCUL<26,I> = "" DO

			IF INDEX(W_TABACTIVITE<1>,ENR_DETAILCALCUL<26,I>,1) = 0 THEN 
				W_TABACTIVITE<1,-1> = ENR_DETAILCALCUL<26,I>
				W_TABACTIVITE<2,-1> = ENR_DETAILCALCUL<25,I>
			END ELSE
* Didier le 05/10/2009
				W_RANGACT=1
				LOOP
				UNTIL W_TABACTIVITE<1,W_RANGACT> = ENR_DETAILCALCUL<26,I> OR W_TABACTIVITE<1,W_RANGACT> = "" DO
					W_RANGACT = W_RANGACT + 1
				REPEAT
				IF W_TABACTIVITE<1,W_RANGACT> = ENR_DETAILCALCUL<26,I> THEN W_TABACTIVITE<2,W_RANGACT> = W_TABACTIVITE<2,W_RANGACT> + ENR_DETAILCALCUL<25,I>
			END
			W_TOTALHRESACT = W_TOTALHRESACT + ENR_DETAILCALCUL<25,I>

			I = I + 1
		REPEAT

	END ELSE
	     	W_FINDC="VRAI"
	END

REPEAT

GOSUB 10
GOSUB 600
GOSUB 700

* AVANT ECRITURE DU FICHIER BUDGETMOI -> CONVERT EN MV 3 + 4 + 5 DES "0" PAR ""
* AVANT ECRITURE DU FICHIER BUDGETMOI -> CONVERT EN MV 1 + 2 + 3 + 4 + 5 DES SEP S.V PAR DES SEP M.V




FOR I = 1 TO DCOUNT(W_TABBUDGETMOI<1>,CHAR(253))

	W_TABBUDGETMOI<3,I>=CONVERT("0","",W_TABBUDGETMOI<3,I>)
	W_TABBUDGETMOI<4,I>=CONVERT("0","",W_TABBUDGETMOI<4,I>)
	W_TABBUDGETMOI<5,I>=CONVERT("0","",W_TABBUDGETMOI<5,I>)
	W_TABBUDGETMOI<6,I>=""
	
	ENR_BUDGETMOI = ""
	ENR_BUDGETMOI<1> = CONVERT(CHAR(252),CHAR(253),W_TABBUDGETMOI<1,I>)
	ENR_BUDGETMOI<2> = CONVERT(CHAR(252),CHAR(253),W_TABBUDGETMOI<2,I>)
	ENR_BUDGETMOI<3> = CONVERT(CHAR(252),CHAR(253),W_TABBUDGETMOI<3,I>)
	ENR_BUDGETMOI<4> = CONVERT(CHAR(252),CHAR(253),W_TABBUDGETMOI<4,I>)
	ENR_BUDGETMOI<5> = CONVERT(CHAR(252),CHAR(253),W_TABBUDGETMOI<5,I>)
	IF ENR_BUDGETMOI<1> # "" THEN WRITE ENR_BUDGETMOI ON F.BUDGETMOI,I "R%4"
NEXT I

* ECRITURE BUDGETTRAMESAISIE
FOR I = 1 TO DCOUNT(W_TABBUDGETTRAMESAISIE<1>,CHAR(253))
	ENR_BUDGETTRAMESAISIE=""
	FOR J=1 TO DCOUNT(W_TABBUDGETTRAMESAISIE<1>,CHAR(252))
		IF W_TABBUDGETTRAMESAISIE<1,I,J>#"" THEN
			IF W_TABBUDGETTRAMESAISIE<2,I,J>#"0" THEN
				W_TABBUDGETTRAMESAISIE<2,I,J>=INT((W_TABBUDGETTRAMESAISIE<2,I,J>/W_TABCUMULCCN<1,I>)*30+1/2)
				IF W_TABBUDGETTRAMESAISIE<4,I,J>#"0" THEN
					W_TABBUDGETTRAMESAISIE<4,I,J>=INT((W_TABBUDGETTRAMESAISIE<4,I,J>/W_TABCUMULCCN<1,I>)*30+1/2)
					IF W_TABBUDGETTRAMESAISIE<2,I,J>#"0" THEN
						W_TABBUDGETTRAMESAISIE<3,I,J>=INT((W_TABBUDGETTRAMESAISIE<4,I,J>*100/W_TABBUDGETTRAMESAISIE<2,I,J>)+1/2)*100
						W_TABBUDGETTRAMESAISIE<4,I,J>=INT((W_TABBUDGETTRAMESAISIE<2,I,J>*W_TABBUDGETTRAMESAISIE<3,I,J>)/10000+1/2)
					END ELSE
						W_TABBUDGETTRAMESAISIE<3,I,J>="0"
						W_TABBUDGETTRAMESAISIE<4,I,J>="0"
					END
				END
			END ELSE
				IF W_TABBUDGETTRAMESAISIE<4,I,J>#"0" THEN
					W_TABBUDGETTRAMESAISIE<4,I,J>=INT((W_TABBUDGETTRAMESAISIE<4,I,J>/W_TABCUMULCCN<2,I>)*30+1/2)
				END
			END
			IF W_TABBUDGETTRAMESAISIE<2,I,J>>0 THEN
				IF W_TABBUDGETTRAMESAISIE<3,I,J>="0" THEN
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,1,-1;W_TABBUDGETTRAMESAISIE<1,I,J>)
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,2,-1;W_TABBUDGETTRAMESAISIE<2,I,J>)
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,3,-1;"0")
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,4,-1;"0")
				END ELSE
					IF INT((W_TABBUDGETTRAMESAISIE<2,I,J>*W_TABBUDGETTRAMESAISIE<3,I,J>)/10000+1/2)#0 THEN
						ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,1,-1;W_TABBUDGETTRAMESAISIE<1,I,J>)
						ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,2,-1;W_TABBUDGETTRAMESAISIE<2,I,J>)
						ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,3,-1;W_TABBUDGETTRAMESAISIE<3,I,J>)
						ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,4,-1;W_TABBUDGETTRAMESAISIE<4,I,J>)
					END
				END
			END ELSE
				IF W_TABBUDGETTRAMESAISIE<4,I,J>>0 THEN
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,1,-1;W_TABBUDGETTRAMESAISIE<1,I,J>)
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,2,-1;W_TABBUDGETTRAMESAISIE<2,I,J>)
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,3,-1;W_TABBUDGETTRAMESAISIE<3,I,J>)
					ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,4,-1;W_TABBUDGETTRAMESAISIE<4,I,J>)
				END
			END
		END
	NEXT J

	IF 	W_TABCUMULCCN<1,I>#"" AND W_TABCUMULCCN<1,I>#0 THEN
		W_MODREFERENCE=INT((W_TABCUMULCCN<3,I>/W_TABCUMULCCN<1,I>)*30+1/2)
		W_HEUREPAYEE=INT((W_TABCUMULCCN<4,I>/W_TABCUMULCCN<1,I>)*30+1/2)
	END ELSE
		W_MODREFERENCE=0
		W_HEUREPAYEE=0
	END

	ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,5;W_MODREFERENCE)
	ENR_BUDGETTRAMESAISIE=REPLACE(ENR_BUDGETTRAMESAISIE,6;W_HEUREPAYEE)
	
	IF ENR_BUDGETTRAMESAISIE<1> # "" THEN WRITE ENR_BUDGETTRAMESAISIE ON F.BUDGETTRAMESAISIE,I "R%4"
NEXT I
EXECUTE "EFFACER-LISTE LISTEDETAILCALCUL"
STOP

***************************************************************
10 * LECTURE DES CONTRATS

	W_ERRCONTRAT=0

	READ ENR_CONTRAT FROM F.CONTRAT,W_ANCIENDC[1,8] ELSE ENR_CONTRAT=""
	READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_ANCIENDC[1,5] ELSE ENR_CIVILAIDANT=""
	READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT=""
	W_CONTRAT<8> = ENR_CONTRAT<8>
	IF ENR_CONTRAT<4>="D" THEN 
		GOSUB 20
	END

	IF W_ERRCONTRAT = 0 THEN

		GOSUB 30

		IF W_ERRCONTRAT = 0 THEN

			GOSUB 40
			GOSUB 50
			GOSUB 60
			GOSUB 70
			GOSUB 500
		END

	END 

RETURN

***************************************************************
20 * GESTION DES CONTRATS CDD

	IF ENR_CONTRAT<8> = "" THEN
		IF ENR_CONTRAT<60> # "" THEN
			IF ENR_CONTRAT<60> < W_DEBUTANNEE THEN
				W_ERRCONTRAT=1
			END ELSE
				W_CONTRAT<8> = ENR_CONTRAT<60>
				ENR_CONTRAT<49> = "31"
			END
		END
	END

RETURN

***************************************************************
30 * GESTION DES ABSENCES POUR CONGES PARENTAL

	W_CONTRAT<7> = ENR_CONTRAT<7>
	W_DEBUTABS=W_CONTRAT<7>

	EXECUTE 'SELECT ABSENCESAIDANT AVEC @ID = "':W_ANCIENDC[1,5]:']" AND AVEC NumMotifAidant = "13" AND AVEC 2 >= "':W_DEBUTANNEE:'" AND AVEC DebAbsAidant <= "':W_FINANNEE:'"' 
	EXECUTE "SAUVE-LISTE LISTEABS"
	EXECUTE "LISTE LISTEABS" RETURNING W_MSG
	SELECT F.ABSENCESAIDANT TO LISTEABS

	IF W_MSG<1> = 209 THEN RETURN

	W_FINABS1="FAUX"
	LOOP
    		UNTIL W_FINABS1="VRAI" DO

     		READNEXT W_CLEABS FROM LISTEABS THEN

			READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,W_CLEABS ELSE ENR_ABSENCESAIDANT=""
			* SI ABSENT TOUTE LA PERIODE ALORS NE PAS TRAITER LE CONTRAT
			IF ENR_ABSENCESAIDANT<2> >= W_FINANNEE AND W_CLEABS[8,5] <= W_DEBUTANNEE THEN 
				W_ERRCONTRAT=1
			END ELSE
				* SI ABSENT PENDANT UNE PARTIE DE LA PERIODE ALORS METTRE A JOUR
				* LES DATES DU CONTRAT (DEBUT + FIN)
				IF ENR_ABSENCESAIDANT<2> <= W_FINANNEE AND ENR_ABSENCESAIDANT<2> >= W_DEBUTANNEE AND W_CLEABS[8,5] <= W_DEBUTANNEE THEN
					W_CONTRAT<7> = ENR_ABSENCESAIDANT<2> + 1
				END ELSE
					IF ENR_ABSENCESAIDANT<2> >= W_FINANNEE AND W_CLEABS[8,5] >= W_DEBUTANNEE AND W_CLEABS[8,5] <= W_FINANNEE THEN
						W_CONTRAT<8> = W_CLEABS[8,5] - 1
						ENR_CONTRAT<49> = "60"
					END
				END
			END

		END ELSE

			W_FINABS1="VRAI"

		END
	REPEAT
RETURN

***************************************************************
40 * GESTION DES PROFILS DE PAIE

	IF ENR_CONTRAT<64> # "" THEN
		W_BOUCLE = 2	
	END ELSE 
		W_BOUCLE = 1
	END

	FOR I=1 TO W_BOUCLE

		IF I = 1 THEN 
			W_PROFILRECH = ENR_CONTRAT<26>
		END ELSE
			W_PROFILRECH = ENR_CONTRAT<64>
		END

		* MISE EN TABLES DES RUBRIQUES UTILISEE DANS PROFIL 1 ET DANS PROFIL 2 DU CONTRAT
			* RECHERCHE SI PROFIL DEJA UTILISE
 			IF INDEX(W_TABPROFIL<1>,W_PROFILRECH,1) = 0 THEN 
				W_TABPROFIL<1,-1> = W_PROFILRECH

				* MET A JOUR TABLEAU DYNAMIQUE DES RUBRIQUES DE CHARGES
				READ ENR_PROFIL FROM F.PROFIL,W_PROFILRECH ELSE ENR_PROFIL = ""
				
				J = 1
				LOOP	
					UNTIL ENR_PROFIL<3,J> = "" DO
					
					IF INDEX(W_TABRUBCHARGE<1>,ENR_PROFIL<3,J>,1) = 0 THEN 
						W_TABRUBCHARGE<1,-1> = ENR_PROFIL<3,J>
					END

					J = J + 1
				REPEAT
			END
	NEXT I

	* STOCKE LES CCN TRAITEES
	IF INDEX(W_TABCCN<1>,ENR_CONTRAT<1>,1) = 0 THEN 
		W_TABCCN<1,-1> = ENR_CONTRAT<1>
		READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""
		W_TABCCN<2,-1> = ENR_CONVENTIONCOL<8,1>
		W_TABCCN<3,-1> = W_DEBUTANNEE
	END
  	
RETURN

***************************************************************
50 * GESTION DES BASE HORAIRES DES CONTRATS

	*Modification mikael DA7091- 04
	*On parcours ENR_TABLESQUALIF pour rcuprer le code regroupement
	
	W_CONTINU = "TRUE"
	W_REGROUPBUDGET=""
	M=1
	LOOP
		WHILE W_CONTINU = "TRUE" OR ENR_TABLESQUALIF<2,M>#"" DO
		IF ENR_TABLESQUALIF<2,M>=ENR_CONTRAT<16,DCOUNT(ENR_CONTRAT<16>,CHAR(253))> THEN
			W_REGROUPBUDGET= ENR_TABLESQUALIF<4,M>
			W_CONTINU = "FALSE"
		END
		IF ENR_TABLESQUALIF<2,M>="" THEN
			W_CONTINU = "FALSE"
		END
		M = M + 1
	REPEAT
	IF W_REGROUPBUDGET="" THEN
		W_REGROUPBUDGET="01"
	END
	*fin modification

	IF ENR_CONTRAT<5> = "M" THEN
		* TRANSFORME LA VALEUR HORAIRE DU CONTRAT EN MENSUEL

		W_DUREEW = ENR_CONTRAT<24,DCOUNT(ENR_CONTRAT<24>,CHAR(253))>
		W_FREQCONTRAT = ENR_CONTRAT<25,DCOUNT(ENR_CONTRAT<25>,CHAR(253))>

		BEGIN CASE		
			CASE W_FREQCONTRAT = 1 
				W_DUREEW = W_DUREEW * 52 / 12
			CASE W_FREQCONTRAT = 2
				W_DUREEW = W_DUREEW * 26 / 12
			CASE W_FREQCONTRAT = 4
				W_DUREEW = W_DUREEW / 12
		END CASE

		IF ENR_CONTRAT<8> # "" THEN
			IF ENR_CONTRAT<8> < W_FINPERIODE THEN
				W_NBJOURSTHEORIQUE = ENR_CONTRAT<8> - W_DEBUTPERIODE + 1
			END ELSE
				IF ENR_CONTRAT<7> < W_DEBUTPERIODE THEN
					W_NBJOURSTHEORIQUE = W_FINPERIODE - W_DEBUTPERIODE + 1
				END ELSE
					W_NBJOURSTHEORIQUE = W_FINPERIODE - ENR_CONTRAT<7> + 1
				END
			END
		END ELSE
			IF ENR_CONTRAT<7> < W_DEBUTPERIODE THEN
				W_NBJOURSTHEORIQUE = W_FINPERIODE - W_DEBUTPERIODE + 1
			END ELSE
				W_NBJOURSTHEORIQUE = W_FINPERIODE - ENR_CONTRAT<7> + 1
			END
		END

		GOSUB 99

		W_NBJOURSPRESENCE = W_NBJOURSTHEORIQUE - W_NBSUSPCONTRAT

		IF ENR_CONTRAT<6>="P" THEN
			W_TABCUMULCCN<1,ENR_CONTRAT<1>:W_REGROUPBUDGET> = W_TABCUMULCCN<1,ENR_CONTRAT<1>:W_REGROUPBUDGET>+W_NBJOURSPRESENCE
			W_TABCUMULCCN<2,ENR_CONTRAT<1>:W_REGROUPBUDGET> = W_TABCUMULCCN<2,ENR_CONTRAT<1>:W_REGROUPBUDGET>+W_NBJOURSTHEORIQUE
		END
	END ELSE

		* SI CONTRAT HORAIRE + PRODUCTION OU ADMINISTRATIF
		* CALCULE HORAIRE REEL A PARTIR DU SUIVI DE CONTRAT
			
		IF ENR_CONTRAT<8> # "" THEN
			IF ENR_CONTRAT<8> < W_FINPERIODE THEN
				W_NBJOURSTHEORIQUE = ENR_CONTRAT<8> - W_DEBUTPERIODE + 1
			END ELSE
				IF ENR_CONTRAT<7> < W_DEBUTPERIODE THEN
					W_NBJOURSTHEORIQUE = W_FINPERIODE - W_DEBUTPERIODE + 1
				END ELSE
					W_NBJOURSTHEORIQUE = W_FINPERIODE - ENR_CONTRAT<7> + 1
				END
			END
		END ELSE
			IF ENR_CONTRAT<7> < W_DEBUTPERIODE THEN
				W_NBJOURSTHEORIQUE = W_FINPERIODE - W_DEBUTPERIODE + 1
			END ELSE
				W_NBJOURSTHEORIQUE = W_FINPERIODE - ENR_CONTRAT<7> + 1
			END
		END

		GOSUB 99

		W_NBJOURSPRESENCE = W_NBJOURSTHEORIQUE - W_NBSUSPCONTRAT

		W_DUREEW = (W_HRESREELLES / W_NBJOURSPRESENCE) * 30

		IF W_DUREEW = 0 THEN W_DUREEW = ENR_CONTRAT<24,DCOUNT(ENR_CONTRAT<24>,CHAR(253))>
		IF ENR_CONTRAT<6>="P" THEN
			W_TABCUMULCCN<1,ENR_CONTRAT<1>:W_REGROUPBUDGET> = W_TABCUMULCCN<1,ENR_CONTRAT<1>:W_REGROUPBUDGET>+W_NBJOURSPRESENCE
			W_TABCUMULCCN<2,ENR_CONTRAT<1>:W_REGROUPBUDGET> = W_TABCUMULCCN<2,ENR_CONTRAT<1>:W_REGROUPBUDGET>+W_NBJOURSTHEORIQUE
		END
	END
RETURN

***************************************************************
60 * DETERMINATION % ACTIVITE 

	IF ENR_CONTRAT<6> = "A" THEN
		W_TABACTIVITE<1> = ENR_CONTRAT<36>
		W_TABACTIVITE<2> = ENR_CONTRAT<37>
		W_TABACTIVITE<3> = ENR_CONTRAT<37>
	END ELSE
		I = 1
		LOOP
			UNTIL W_TABACTIVITE<1,I> = "" DO

			IF W_ACTPLUSFORT = "" THEN	
				W_ACTPLUSFORT<1> = I
				W_ACTPLUSFORT<2> = W_TABACTIVITE<2,I>
			END

			IF W_TABACTIVITE<2,I> > W_ACTPLUSFORT<2> THEN
				W_ACTPLUSFORT<1> = I
				W_ACTPLUSFORT<2> = W_TABACTIVITE<2,I>
			END

			IF W_TOTALHRESACT=0 THEN
				W_TABACTIVITE<3,I>=0
			END ELSE
				W_TABACTIVITE<3,I> = INT((W_TABACTIVITE<2,I> * 10000 / W_TOTALHRESACT)+1/2)
			END
			W_TOTALPOURCACT = W_TOTALPOURCACT + W_TABACTIVITE<3,I>

			I = I + 1
		REPEAT		

		IF W_TOTALPOURCACT > 10000 THEN 
			W_TABACTIVITE<3,W_ACTPLUSFORT<1>> = W_TABACTIVITE<3,W_ACTPLUSFORT<1>> - (W_TOTALPOURCACT - 10000)
		END
		IF W_TOTALPOURCACT < 10000 THEN 
			W_TABACTIVITE<3,W_ACTPLUSFORT<1>> = W_TABACTIVITE<3,W_ACTPLUSFORT<1>> + (10000 - W_TOTALPOURCACT)
		END
		IF W_TABACTIVITE<1>="" THEN W_TABACTIVITE<1>=ENR_CONTRAT<36,1>
		IF W_TABACTIVITE<3>="" THEN W_TABACTIVITE<3>="10000"		
	END

RETURN

***************************************************************
70 * DETERMINATION % HEURES EXO PUBLIC ET % HEURES NON EXO

	IF W_CUMULHRESDIRECTE=0 THEN
		W_RATIOEXO=0
	END ELSE
		W_RATIOEXO = W_CUMULHRESEXO / W_CUMULHRESDIRECTE
	END
	W_RATIOEXO = INT((W_RATIOEXO*10000)+1/2)
	IF W_CUMULHRESDIRECTE=0 THEN
		W_RATIONONEXO=0
	END ELSE
		W_RATIONONEXO = W_CUMULHRESNONEXO / W_CUMULHRESDIRECTE
	END
	W_RATIONONEXO = INT((W_RATIONONEXO*10000)+1/2)
      IF W_RATIOEXO+W_RATIONONEXO>10000 THEN W_RATIONONEXO=10000-W_RATIOEXO

RETURN

***************************************************************
***************************************************************
***************************************************************
99 * CALCULE DES JOURS DE SUSPENSION SUR LA PERIODE
***********************

	OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP

	W_NBABS12=0
	W_DEMIJR=0
	W_NBABS13=0
	W_NBSUSPCONTRAT=0

	IF ENR_CONTRAT<7> < W_DEBUTANNEE THEN
		W_DATEDEBABS = W_DEBUTANNEE
	END ELSE
		W_DATEDEBABS = ENR_CONTRAT<7>
	END

	IF ENR_CONTRAT<8> # "" THEN 
		W_FINABS = ENR_CONTRAT<8>
	END ELSE
		W_FINABS = W_FINPERIODE
	END

	READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL=""

	* SELECTIONNE LES ABSENCES GENERANT SUSPENSION DE CONTRAT (MALADIE / C. PARENTAL / CP SS SOLDE)
	EXECUTE 'SELECT ABSENCESAIDANT AVEC CodeAidant = "':W_ANCIENDC[1,5]:'" AND AVEC NumMotifAidant = "01" OR = "02" OR = "04" OR = "05" OR = "06" OR = "12" OR = "13" AND AVEC 2 >= "':W_DEBUTPERIODE:'" AND AVEC DebAbsAidant <= "':W_FINPERIODE:'" PAR DebAbsAidant'
	
	* PARCOURE LES ABSENCES
	W_FINBOUCLEABS=0
	LOOP
		READNEXT CLEABS ELSE W_FINBOUCLEABS=1
		UNTIL W_FINBOUCLEABS=1 DO

		READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,CLEABS ELSE ENR_ABSENCESAIDANT=""

		W_DEBUTABS=CLEABS[8,5]

		IF ENR_CONTRAT<7> > W_DEBUTPERIODE THEN
			W_DEBUTCONTRAT=ENR_CONTRAT<7>
		END ELSE
			W_DEBUTCONTRAT=W_DEBUTPERIODE
		END

		IF W_DEBUTCONTRAT > W_DEBUTABS THEN
			W_DEBUTABS=W_DEBUTCONTRAT
		END

		IF ENR_ABSENCESAIDANT<2> > W_FINPERIODE THEN
			W_FINABS=W_FINPERIODE
		END ELSE
			W_FINABS=ENR_ABSENCESAIDANT<2>			
		END

		W_NBSUSPCONTRAT = W_NBSUSPCONTRAT + W_FINABS - W_DEBUTABS + 1

	REPEAT
	
	W_NBSUSPCONTRAT=INT(W_NBSUSPCONTRAT)

RETURN

***************************************************************
***************************************************************
***************************************************************
500 * ECRITURE BUDGETFICHPERSO

	W_FICHPERSO = ""

	* ECRITURE DES CHAMPS
	ENR_FICHPERSO = ""
	ENR_FICHPERSO<1> = ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
	ENR_FICHPERSO<2> = INT((ENR_ETABLISSEMENT<16> * 52 / 12)+1/2)
	ENR_FICHPERSO<3> = ENR_CONTRAT<1>
	ENR_FICHPERSO<4> = ENR_CIVILAIDANT<31>
	ENR_FICHPERSO<5> = ENR_CIVILAIDANT<11>[1,26]
	ENR_FICHPERSO<6> = ENR_CONTRAT<4>
	ENR_FICHPERSO<7> = ENR_CONTRAT<6>
	ENR_FICHPERSO<8> = W_CONTRAT<7>
	ENR_FICHPERSO<9> = ENR_CIVILAIDANT<26>
	ENR_FICHPERSO<10> = W_TABACTIVITE<1>
	ENR_FICHPERSO<11> = W_TABACTIVITE<3>
	IF ENR_FICHPERSO<11>="" OR ENR_FICHPERSO<11>=0 THEN ENR_FICHPERSO<11>="10000"
	ENR_FICHPERSO<12> = ENR_CONTRAT<15,DCOUNT(ENR_CONTRAT<15>,CHAR(253))>
	IF ENR_FICHPERSO<12><ENR_FICHPERSO<8> THEN ENR_FICHPERSO<12>=ENR_FICHPERSO<8>
	ENR_FICHPERSO<13> = ENR_CONTRAT<21,DCOUNT(ENR_CONTRAT<21>,CHAR(253))>+INT(ENR_CONTRAT<70>/100)
	ENR_FICHPERSO<14> = ENR_CONTRAT<16,DCOUNT(ENR_CONTRAT<16>,CHAR(253))>
	ENR_FICHPERSO<15> = ENR_CONTRAT<20,DCOUNT(ENR_CONTRAT<20>,CHAR(253))>

	READ ENR_GRILLESCC FROM F.GRILLESCC,ENR_FICHPERSO<15> ELSE ENR_GRILLESCC=""	

	IF ENR_FICHPERSO<15> # "" THEN
		ENR_FICHPERSO<16> = ENR_GRILLESCC<7>
		ENR_FICHPERSO<17> = ""
	END ELSE
		ENR_FICHPERSO<16> = ENR_CONTRAT<108,DCOUNT(ENR_CONTRAT<108>,CHAR(253))>
		ENR_FICHPERSO<17> = ENR_CONTRAT<23,DCOUNT(ENR_CONTRAT<23>,CHAR(253))>
	END

	IF ENR_CONTRAT<6> = "A" THEN
		ENR_FICHPERSO<18> = INT(W_DUREEW+1/2)
	END ELSE
		ENR_FICHPERSO<18> = 0
	END

	ENR_FICHPERSO<19> = ENR_CONTRAT<26>
	ENR_FICHPERSO<20> = ENR_CONTRAT<64>
	ENR_FICHPERSO<21> = W_RATIOEXO
	ENR_FICHPERSO<39> = W_RATIONONEXO
	ENR_FICHPERSO<22> = ENR_CONTRAT<66>
	
	IF W_CONTRAT<8> # "" THEN
		ENR_FICHPERSO<23> = W_CONTRAT<8>
		ENR_FICHPERSO<24> = ENR_CONTRAT<49>
	END ELSE
		IF ENR_CONTRAT<4> = "D" THEN
			ENR_FICHPERSO<23> = ENR_CONTRAT<60>
			ENR_FICHPERSO<24> = "31"
		END ELSE
			ENR_FICHPERSO<23> = ""
			ENR_FICHPERSO<24> = ""
		END
	END

	ENR_FICHPERSO<25> = ""
	ENR_FICHPERSO<26> = ""
	ENR_FICHPERSO<27> = ""
	ENR_FICHPERSO<28> = ""
	ENR_FICHPERSO<29> = ""

*	IF ENR_CONTRAT<6> = "P" THEN GOSUB 501 		;* ATT 30 - 33
	GOSUB 501

* Specif ASMAD
	IF ENR_CONTRAT<6> = "P" THEN 
		DG=1
		IF W_BASESAISIE<19> >= 40 THEN
			W_BASESAISIE<19> = W_BASESAISIE<19> - 40
			W_BASESAISIE<55> = 33
			W_BASESAISIE<56> = 7
		END
	END
*

	* ECRITURE RUB SAISIE TYPE 3 + 4 + 5
	FOR N = 1 TO DCOUNT(W_BASESAISIE,CHAR(254))	
		IF W_BASESAISIE<N> # "" THEN
			ENR_FICHPERSO<30,-1> = N "R%3"
			ENR_FICHPERSO<31,-1> = W_BASESAISIE<N>
			ENR_FICHPERSO<32,-1> = 0
			ENR_FICHPERSO<33,-1> = 0
		END
	NEXT N

	* ECRITURE RUB SAISIE TYPE 6
	FOR N = 1 TO DCOUNT(W_MONTANTSAISIE,CHAR(254))	
		IF W_MONTANTSAISIE<N> # "" THEN
			ENR_FICHPERSO<30,-1> = N "R%3"
			ENR_FICHPERSO<31,-1> = 0
			ENR_FICHPERSO<32,-1> = 0
			ENR_FICHPERSO<33,-1> = W_MONTANTSAISIE<N>
		END
	NEXT N

	* ECRITURE RUB AP NET TYPE 2
	* SI SEULEMENT BASE
	FOR N = 1 TO DCOUNT(W_BASESAPNET,CHAR(254))	
		IF W_BASESAPNET<N> # "" AND W_MONTANTAPNET<N> = "" THEN
			ENR_FICHPERSO<30,-1> = N "R%3"
			ENR_FICHPERSO<31,-1> = W_BASESAPNET<N>
			ENR_FICHPERSO<32,-1> = 0
			ENR_FICHPERSO<33,-1> = 0
		END
	NEXT N

	* SI SEULEMENT MONTANT
	FOR N = 1 TO DCOUNT(W_MONTANTAPNET,CHAR(254))	
		IF W_BASESAPNET<N> = "" AND W_MONTANTAPNET<N> # "" THEN
			ENR_FICHPERSO<30,-1> = N "R%3"
			ENR_FICHPERSO<31,-1> = 0
			ENR_FICHPERSO<32,-1> = 0
			ENR_FICHPERSO<33,-1> = W_MONTANTAPNET<N>
		END
	NEXT N

	* SI BASE + TAUX + MONTANT
	FOR N = 1 TO DCOUNT(W_BASESAPNET,CHAR(254))	
		IF W_BASESAPNET<N> # "" AND W_MONTANTAPNET<N> # "" THEN
			ENR_FICHPERSO<30,-1> = N "R%3"
			ENR_FICHPERSO<31,-1> = W_BASESAPNET<N>
			IF W_TAUXAPNET<N> # "" THEN
				ENR_FICHPERSO<32,-1> = W_TAUXAPNET<N>
			END ELSE
				ENR_FICHPERSO<32,-1> = 0
			END
			ENR_FICHPERSO<33,-1> = W_MONTANTAPNET<N>
		END
	NEXT N

	* CONVERTIT SEP MV EN SEP SV
	ENR_FICHPERSO<30> = CONVERT(CHAR(253),CHAR(252),ENR_FICHPERSO<30>)
	ENR_FICHPERSO<31> = CONVERT(CHAR(253),CHAR(252),ENR_FICHPERSO<31>)
	ENR_FICHPERSO<32> = CONVERT(CHAR(253),CHAR(252),ENR_FICHPERSO<32>)
	ENR_FICHPERSO<33> = CONVERT(CHAR(253),CHAR(252),ENR_FICHPERSO<33>)

*	IF ENR_CONTRAT<6> = "A" THEN
*		ENR_FICHPERSO<30> = ""
*		ENR_FICHPERSO<31> = ""
*		ENR_FICHPERSO<32> = ""
*		ENR_FICHPERSO<33> = ""
*	END

	I = 1
	LOOP
		UNTIL ENR_FICHPERSO<30,1,I> = "" DO

		IF W_FICHPERSO<30> = "" THEN
			W_FICHPERSO<30,1,-1> = ENR_FICHPERSO<30,1,I>
			W_FICHPERSO<31,1,-1> = ENR_FICHPERSO<31,1,I>
			W_FICHPERSO<32,1,-1> = ENR_FICHPERSO<32,1,I>
			W_FICHPERSO<33,1,-1> = ENR_FICHPERSO<33,1,I>
			W_FICHPERSO<34,1,-1> = W_TABLESRUBSAISIE<ENR_FICHPERSO<30,1,I>> 
		END ELSE
			J = 1
			LOOP
				UNTIL W_TABLESRUBSAISIE<ENR_FICHPERSO<30,1,I>> < W_FICHPERSO<34,1,J> OR  W_FICHPERSO<34,1,J> = "" DO
				J = J + 1
			REPEAT
			IF W_FICHPERSO<30,J> = "" THEN
				W_FICHPERSO<30,1,-1> = ENR_FICHPERSO<30,1,I>
				W_FICHPERSO<31,1,-1> = ENR_FICHPERSO<31,1,I>
				W_FICHPERSO<32,1,-1> = ENR_FICHPERSO<32,1,I>
				W_FICHPERSO<33,1,-1> = ENR_FICHPERSO<33,1,I>
				W_FICHPERSO<34,1,-1> = W_TABLESRUBSAISIE<ENR_FICHPERSO<30,1,I>> 
			END ELSE	
				W_FICHPERSO=INSERT(W_FICHPERSO,30,1,J;ENR_FICHPERSO<30,1,I>)
				W_FICHPERSO=INSERT(W_FICHPERSO,31,1,J;ENR_FICHPERSO<31,1,I>)
				W_FICHPERSO=INSERT(W_FICHPERSO,32,1,J;ENR_FICHPERSO<32,1,I>)
				W_FICHPERSO=INSERT(W_FICHPERSO,33,1,J;ENR_FICHPERSO<33,1,I>)
				W_FICHPERSO=INSERT(W_FICHPERSO,34,1,J;W_TABLESRUBSAISIE<ENR_FICHPERSO<30,1,I>>)
			END
		END

		I = I + 1
	REPEAT

	ENR_FICHPERSO<30> = W_FICHPERSO<30>
	ENR_FICHPERSO<31> = W_FICHPERSO<31>
	ENR_FICHPERSO<32> = W_FICHPERSO<32>
	ENR_FICHPERSO<33> = W_FICHPERSO<33>
	ENR_FICHPERSO<34> = ENR_CONTRAT<103>
	* Modif Guillaume DA9147
	ENR_FICHPERSO<40> = ENR_CONTRAT<3>	

	* DECOUPE DES CHAMPS
	ENR_FICHPERSO<1> = ENR_FICHPERSO<1>[1,40]

	WRITE ENR_FICHPERSO ON F.BUDGETFICHPERSO,W_ANCIENDC[1,5]:W_CODEENTITE:W_ANNEE

RETURN

***************************************************************
501 * ECRITURE BUDGETFICHPERSO : ATT 30 - 33
 
	W_TOTALSAISIE = 0

	***** PARTIE AVANT BRUT *****
	* VERIFIE SI BASE BRUTE < 0
	FOR N = 1 TO DCOUNT(W_BASESAISIE,CHAR(254))
		IF W_BASESAISIE<N> < 0 THEN 
			W_BASESAISIE<N> = ""
		END ELSE
			IF W_BASESAISIE<N> # "" THEN
				IF W_NBJOURSPRESENCE=0 THEN
					W_BASESAISIE<N>=""
				END ELSE
					W_BASESAISIE<N> = INT(((W_BASESAISIE<N> / W_NBJOURSPRESENCE) * 30) + 1/2)
				END
			END
		END
		W_TOTALSAISIE = W_TOTALSAISIE + W_BASESAISIE<N>
	NEXT N 

	* VERIFIE SI MONTANT BRUT < 0
	FOR N = 1 TO DCOUNT(W_MONTANTSAISIE,CHAR(254))
		IF W_MONTANTSAISIE<N> < 0 THEN
			W_MONTANTSAISIE<N> = ""
		END ELSE
*			IF W_MONTANTSAISIE<N> # "" THEN W_MONTANTSAISIE<N> = INT(((W_MONTANTSAISIE<N> / W_NBJOURSPRESENCE) * 30) + 1/2)
			IF W_MONTANTSAISIE<N> # "" THEN W_MONTANTSAISIE<N> = INT(((W_MONTANTSAISIE<N> / W_NBJOURSTHEORIQUE) * 30) + 1/2)
		END
	NEXT N 

	***** PARTIE APRES NET *****
	* VERIFIE SI BASE AP NET < 0
	FOR N = 1 TO DCOUNT(W_BASESAPNET,CHAR(254))
		IF W_BASESAPNET<N> < 0 THEN 
			W_BASESAPNET<N> = ""
		END ELSE
			IF W_BASESAPNET<N> # "" THEN 
				IF W_NBJOURSPRESENCE=0 THEN
					W_BASEAPNET<N>=""
				END ELSE
					W_BASESAPNET<N> = INT(((W_BASESAPNET<N> / W_NBJOURSPRESENCE) * 30) + 1/2)
				END
			END
		END
	NEXT N 

	* VERIFIE SI MONTANT AP NET< 0
	FOR N = 1 TO DCOUNT(W_MONTANTAPNET,CHAR(254))
		IF W_MONTANTAPNET<N> < 0 THEN 
			W_MONTANTAPNET<N> = ""
		END ELSE
			IF W_MONTANTAPNET<N> # "" THEN 
				IF W_NBJOURSPRESENCE=0 THEN
					W_MONTANTAPNET<N>=""
				END ELSE
					W_MONTANTAPNET<N> = INT(((W_MONTANTAPNET<N> / W_NBJOURSPRESENCE) * 30) + 1/2)
				END
			END
		END
	NEXT N 

	* VERIFIE S'IL Y A DES RUBRIQUES AVEC BASES + MONTANT APRES NET
	FOR N = 1 TO DCOUNT(W_BASESAPNET,CHAR(254))
		IF (W_BASESAPNET<N> # "" AND W_BASESAPNET<N> # 0) AND (W_MONTANTAPNET<N> # "" AND W_MONTANTAPNET<N> # 0) THEN
			W_TAUXAPNET<N> = INT(((W_MONTANTAPNET<N> / W_BASESAPNET<N>) * 1000) + 1/2) * 10
			W_MONTANTAPNET<N> = INT(((W_BASESAPNET<N> * W_TAUXAPNET<N>) / 10000) + 1/2)
		END
	NEXT N 

	W_TOTALBASEADM=0			 
	IF ENR_CONTRAT<5> = "M" THEN
		FOR N = 1 TO DCOUNT(W_BASESAISIE,CHAR(254))
			IF W_BASESAISIE<N> # "" THEN 
				IF W_TOTALSAISIE # 0 THEN 
					W_BASESAISIE<N> = INT(((W_BASESAISIE<N> / W_TOTALSAISIE) * W_DUREEW) + 1/2)
					IF ENR_CONTRAT<6>="A" THEN W_TOTALBASEADM=W_TOTALBASEADM+W_BASESAISIE<N>
				END		
			END
		NEXT N
		IF ENR_CONTRAT<6>="A" THEN
			IF W_TOTALBASEADM#W_DUREEW THEN
				IF W_TOTALBASEADM>W_DUREEW THEN
					W_BASESAISIE<806>=W_BASESAISIE<806>-(W_TOTALBASEADM-W_DUREEW)
				END ELSE
					W_BASESAISIE<806>=W_BASESAISIE<806>+(W_DUREEW-W_TOTALBASEADM)
				END
			END
		END
	END

RETURN

***************************************************************
600 * ECRITURE BUDGETRUBCHARGE

	W_RANGMV = 1

	* PARCOURE LES PROFILS STOCKES
	I = 1
	LOOP
		UNTIL W_TABPROFIL<1,I> = "" DO

		READ ENR_PROFIL FROM F.PROFIL,W_TABPROFIL<1,I> ELSE ENR_PROFIL = ""
		
		* PARCOURE LES RUBRIQUES DE CHARGES DE PROFIL
		J = 1
		LOOP	
			UNTIL ENR_PROFIL<3,J> = "" DO

			ENR_BUDGETRUBCHARGE = ""
			READ ENR_BUDGETRUBCHARGE FROM F.BUDGETRUBCHARGE,ENR_PROFIL<3,J> THEN

				* RECHERCHE SI DEJA PERIODE TRAITEE
				W_RANGMV = INDEX(ENR_BUDGETRUBCHARGE<1>,W_DEBUTANNEE,1)

				* SI DATE EFFET TROUVEE ALORS REMPLACE MV EXISTANTES SINON CREATION NOUVELLES MV
				IF W_RANGMV = 0 THEN
					W_RANGMV = -1
				END ELSE
					GOSUB 601
				END
			END ELSE
				W_RANGMV = -2
			END

			* LECTURE RUBCHARGE
			READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_PROFIL<3,J> ELSE ENR_RUBCHARGE=""
			IF ENR_RUBCHARGE<16> = "05" THEN
				READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> ELSE ENR_TRANCHE=""
				W_DEBTRANCHE = ENR_TRANCHE<4>
				W_FINTRANCHE = ENR_TRANCHE<5>
			END ELSE
				W_DEBTRANCHE = 0
				W_FINTRANCHE = 0
			END			

			IF ENR_RUBCHARGE<10> = "" THEN ENR_RUBCHARGE<10> = 0
			IF ENR_RUBCHARGE<14> = "" THEN ENR_RUBCHARGE<14> = 0

			* AFFECTATION VALEUR
			IF W_RANGMV = -1 OR W_RANGMV = -2 THEN
				* RECHERCHE EMPLACEMENT

				IF W_RANGMV = "-1" THEN
					W_RANGMV = 1	
				END
				N = DCOUNT(ENR_BUDGETRUBCHARGE<1>,CHAR(253))
				
				FOR M=W_RANGMV TO N
					IF ENR_BUDGETRUBCHARGE<1,M> < W_DEBUTANNEE THEN 
						W_RANGMV = M
						GOSUB 601
						EXIT 
					END
				NEXT M

				IF M > N THEN W_RANGMV = -1

				ENR_BUDGETRUBCHARGE=INSERT(ENR_BUDGETRUBCHARGE,1,W_RANGMV;W_DEBUTANNEE)
				IF ENR_RUBCHARGE<10> # "" AND ENR_RUBCHARGE<10> # 0 THEN
					ENR_BUDGETRUBCHARGE=INSERT(ENR_BUDGETRUBCHARGE,2,W_RANGMV;ENR_RUBCHARGE<11>)
				END ELSE 
					ENR_BUDGETRUBCHARGE=INSERT(ENR_BUDGETRUBCHARGE,2,W_RANGMV;ENR_RUBCHARGE<15>)
				END
				ENR_BUDGETRUBCHARGE=INSERT(ENR_BUDGETRUBCHARGE,3,W_RANGMV;ENR_RUBCHARGE<10>)
				ENR_BUDGETRUBCHARGE=INSERT(ENR_BUDGETRUBCHARGE,4,W_RANGMV;ENR_RUBCHARGE<14>)
				ENR_BUDGETRUBCHARGE=INSERT(ENR_BUDGETRUBCHARGE,5,W_RANGMV;W_DEBTRANCHE)
				ENR_BUDGETRUBCHARGE=INSERT(ENR_BUDGETRUBCHARGE,6,W_RANGMV;W_FINTRANCHE)
			END ELSE	
				ENR_BUDGETRUBCHARGE<1,W_RANGMV> = W_DEBUTANNEE
				IF ENR_RUBCHARGE<10> # "" AND ENR_RUBCHARGE<10> # 0 THEN
					ENR_BUDGETRUBCHARGE<2,W_RANGMV> = ENR_RUBCHARGE<11>
				END ELSE
					ENR_BUDGETRUBCHARGE<2,W_RANGMV> = ENR_RUBCHARGE<15>
				END
				ENR_BUDGETRUBCHARGE<3,W_RANGMV> = ENR_RUBCHARGE<10>
				ENR_BUDGETRUBCHARGE<4,W_RANGMV> = ENR_RUBCHARGE<14>
				ENR_BUDGETRUBCHARGE<5,W_RANGMV> = W_DEBTRANCHE
				ENR_BUDGETRUBCHARGE<6,W_RANGMV> = W_FINTRANCHE
				W_RANGMV = W_RANGMV + 1
				GOSUB 601
			END

			WRITE ENR_BUDGETRUBCHARGE ON F.BUDGETRUBCHARGE,ENR_PROFIL<3,J>

			J = J + 1
		REPEAT

		I = I + 1
	REPEAT

RETURN

***************************************************************
601 * EFFACE LES MV SUIVANTES	

	M = W_RANGMV
	N = DCOUNT(ENR_BUDGETRUBCHARGE<1>,CHAR(253))
	
	IF M # N THEN
		FOR M=W_RANGMV TO N
			IF M > N THEN EXIT 
			ENR_BUDGETRUBCHARGE=DELETE(ENR_BUDGETRUBCHARGE,1,M)
			ENR_BUDGETRUBCHARGE=DELETE(ENR_BUDGETRUBCHARGE,2,M)
			ENR_BUDGETRUBCHARGE=DELETE(ENR_BUDGETRUBCHARGE,3,M)
			ENR_BUDGETRUBCHARGE=DELETE(ENR_BUDGETRUBCHARGE,4,M)
			ENR_BUDGETRUBCHARGE=DELETE(ENR_BUDGETRUBCHARGE,5,M)
			ENR_BUDGETRUBCHARGE=DELETE(ENR_BUDGETRUBCHARGE,6,M)
			M = M - 1
			N = N - 1
		NEXT M
	END

RETURN

***************************************************************
700 * ECRITURE BUDGETPARAM

	READ ENR_BUDGETPARAM FROM F.BUDGETPARAM,"1" ELSE ENR_BUDGETPARAM=""
	READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE=""

	* MV ASSOCIEE : 1 + 2
	W_RANGMV = INDEX(ENR_BUDGETPARAM<1>,W_DEBUTANNEE,1)
	IF W_RANGMV # 0 THEN
		ENR_BUDGETPARAM<2,W_RANGMV> = ENR_CONSTANTESPAIE<1,1>
		GOSUB 701
	END ELSE

		N = DCOUNT(ENR_BUDGETPARAM<1>,CHAR(253))
				
		FOR M=W_RANGMV TO N
			IF ENR_BUDGETPARAM<1,M> < W_DEBUTANNEE THEN 
				W_RANGMV = M
				GOSUB 701
				EXIT 
			END
		NEXT M
		IF M > N THEN W_RANGMV = -1

		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,1,W_RANGMV;W_DEBUTANNEE)
		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,2,W_RANGMV;ENR_CONSTANTESPAIE<1,1>)
	END

	* MV ASSOCIEE : 3 + 4
	W_RANGMV = INDEX(ENR_BUDGETPARAM<3>,W_DEBUTANNEE,1)
	IF W_RANGMV # 0 THEN
		ENR_BUDGETPARAM<4,W_RANGMV> = ENR_CONSTANTESPAIE<3,1>
		GOSUB 702
	END ELSE
		N = DCOUNT(ENR_BUDGETPARAM<3>,CHAR(253))
				
		FOR M=W_RANGMV TO N
			IF ENR_BUDGETPARAM<3,M> < W_DEBUTANNEE THEN 
				W_RANGMV = M
				GOSUB 702
				EXIT 
			END
		NEXT M
		IF M > N THEN W_RANGMV = -1

		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,3,W_RANGMV;W_DEBUTANNEE)
		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,4,W_RANGMV;ENR_CONSTANTESPAIE<3,1>)
	END

	* MV ASSOCIEE : 5 + 6 + 7 + 8
	W_RANGMV = INDEX(ENR_BUDGETPARAM<5>,W_DEBUTANNEE,1)
	IF W_RANGMV # 0 THEN
		ENR_BUDGETPARAM<6,W_RANGMV> = ENR_ETABLISSEMENT<26>
		ENR_BUDGETPARAM<7,W_RANGMV> = ENR_ETABLISSEMENT<30>
		ENR_BUDGETPARAM<8,W_RANGMV> = ENR_ETABLISSEMENT<31>
		GOSUB 703
	END ELSE

		N = DCOUNT(ENR_BUDGETPARAM<5>,CHAR(253))
				
		FOR M=W_RANGMV TO N
			IF ENR_BUDGETPARAM<5,M> < W_DEBUTANNEE THEN 
				W_RANGMV = M
				GOSUB 703
				EXIT 
			END
		NEXT M
		IF M > N THEN W_RANGMV = -1

		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,5,W_RANGMV;W_DEBUTANNEE)
		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,6,W_RANGMV;ENR_ETABLISSEMENT<26>)
		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,7,W_RANGMV;ENR_ETABLISSEMENT<30>)
		ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,8,W_RANGMV;ENR_ETABLISSEMENT<31>)
	END

	* MV ASSOCIEE : 9 + 10 + 11 
	W_RANGMV = INDEX(ENR_BUDGETPARAM<9>,W_DEBUTANNEE,1)

	IF W_RANGMV # 0 THEN GOSUB 704
	IF W_RANGMV # 0 THEN
		ENR_BUDGETPARAM<10,W_RANGMV> = W_TABCCN<1>
		ENR_BUDGETPARAM<11,W_RANGMV> = W_TABCCN<2>
		ENR_BUDGETPARAM<12,W_RANGMV> = ""
		ENR_BUDGETPARAM<13,W_RANGMV> = ""
		ENR_BUDGETPARAM<14,W_RANGMV> = ""
	END ELSE
	
		N = DCOUNT(ENR_BUDGETPARAM<9>,CHAR(253))
				
		FOR M=W_RANGMV TO N
			IF ENR_BUDGETPARAM<9,M> < W_DEBUTANNEE THEN 
				W_RANGMV = M
				GOSUB 705
				EXIT 
			END
		NEXT M
		IF M > N THEN W_RANGMV = -1

		FOR O=1 TO DCOUNT(W_TABCCN<3>,CHAR(253))
			ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,9,W_RANGMV;W_TABCCN<3,O>)
			ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,10,W_RANGMV;W_TABCCN<1,O>)
			ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,11,W_RANGMV;W_TABCCN<2,O>)
			ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,12,W_RANGMV;"")
			ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,13,W_RANGMV;"")
			ENR_BUDGETPARAM=INSERT(ENR_BUDGETPARAM,14,W_RANGMV;"")
			W_RANGMV = W_RANGMV + 1
		NEXT O
	END
	ENR_BUDGETPARAM<15>=W_ANNEE
	WRITE ENR_BUDGETPARAM ON F.BUDGETPARAM,"1"

RETURN

***************************************************************
701 * EFFACE LES MV SUIVANTES	

	M = W_RANGMV
	IF W_RANGMV = 0 THEN W_RANGMV = 1
	N = DCOUNT(ENR_BUDGETPARAM<1>,CHAR(253))
	
	IF M # N THEN
		FOR M=W_RANGMV TO N
			IF M > N THEN EXIT 
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,1,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,2,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,12,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,13,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,14,M)

			M = M - 1
			N = N - 1
		NEXT M
	END

RETURN

***************************************************************
702 * EFFACE LES MV SUIVANTES	

	M = W_RANGMV
	IF W_RANGMV = 0 THEN W_RANGMV = 1
	N = DCOUNT(ENR_BUDGETPARAM<3>,CHAR(253))
	
	IF M # N THEN
		FOR M=W_RANGMV TO N
			IF M > N THEN EXIT 
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,3,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,4,M)
			M = M - 1
			N = N - 1
		NEXT M
	END

RETURN

***************************************************************
703 * EFFACE LES MV SUIVANTES	

	M = W_RANGMV
	IF W_RANGMV = 0 THEN W_RANGMV = 1
	N = DCOUNT(ENR_BUDGETPARAM<5>,CHAR(253))
	
	IF M # N THEN
		FOR M=W_RANGMV TO N
			IF M > N THEN EXIT 
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,5,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,6,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,7,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,8,M)
			M = M - 1
			N = N - 1
		NEXT M
	END

RETURN

***************************************************************
704 * EFFACE LES MV SUIVANTES	

	M = W_RANGMV
	IF W_RANGMV = 0 THEN W_RANGMV = 1
	N = DCOUNT(ENR_BUDGETPARAM<9>,CHAR(253))
	
	IF M # N THEN
		FOR M=W_RANGMV TO N
			IF ENR_BUDGETPARAM<9,M> > ENR_BUDGETPARAM<9,M+1> THEN EXIT 
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,9,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,10,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,11,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,12,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,13,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,14,M)
			M = M - 1
			N = N - 1
		NEXT M
	END

RETURN

***************************************************************
705 * EFFACE LES MV SUIVANTES	

	M = W_RANGMV
	IF W_RANGMV = 0 THEN W_RANGMV = 1
	N = DCOUNT(ENR_BUDGETPARAM<9>,CHAR(253))
	
	IF M # N THEN
		FOR M=W_RANGMV TO N
			IF M > N THEN EXIT 
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,9,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,10,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,11,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,12,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,13,M)
			ENR_BUDGETPARAM=DELETE(ENR_BUDGETPARAM,14,M)
			M = M - 1
			N = N - 1
		NEXT M
	END

RETURN

***************************************************************
800 * ECRITURE BUDGETMOI + BUDGETTRAMESAISIE

	ENR_RUBSAISIE = ""
	
	*Modification mikael DA7091- 04
	*On parcours ENR_TABLESQUALIF pour rcuprer le code regroupement
	
	W_CONTINU = "TRUE"
	W_REGROUPBUDGET=""
	M=1
	LOOP
		WHILE W_CONTINU = "TRUE" OR ENR_TABLESQUALIF<2,M>#"" DO
		IF ENR_TABLESQUALIF<2,M>=ENR_CONTRAT2<16,DCOUNT(ENR_CONTRAT2<16>,CHAR(253))> THEN
			W_REGROUPBUDGET= ENR_TABLESQUALIF<4,M>
			W_CONTINU = "FALSE"
		END
		IF ENR_TABLESQUALIF<2,M>="" THEN
			W_CONTINU = "FALSE"
		END
		M = M + 1
	REPEAT
	IF W_REGROUPBUDGET="" THEN
		W_REGROUPBUDGET="01"
	END
	*fin modification
	
	* TRAITEMENT RUB AVANT BRUT (ATT 2 DE DETAILCALCUL)
	M = 1
	LOOP
		UNTIL ENR_DETAILCALCUL<2,M> = "" DO

		IF ENR_DETAILCALCUL<2,M> # "805" AND ENR_DETAILCALCUL<2,M> # "812" AND ENR_DETAILCALCUL<2,M> # "815" AND ENR_DETAILCALCUL<2,M> # "835" AND ENR_DETAILCALCUL<2,M> # "810" THEN

		   IF ENR_DETAILCALCUL<2,M> # "090" AND ENR_DETAILCALCUL<2,M> # "091" AND ENR_DETAILCALCUL<2,M> # "092" AND ENR_DETAILCALCUL<2,M> # "093" AND ENR_DETAILCALCUL<2,M> # "101" AND ENR_DETAILCALCUL<2,M> # "102" THEN

			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,M> THEN
				IF ENR_DETAILCALCUL<2,M> # "806" AND INDEX(W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<2,M>,1) = 0 THEN
					IF ENR_RUBSAISIE<2> = "5" OR ENR_RUBSAISIE<2> = "6" THEN 
						W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET,-1> = ENR_DETAILCALCUL<2,M>
					END
				END
				IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" OR ENR_RUBSAISIE<2> = "5" THEN
					IF ENR_CONTRAT2<6>="P" THEN
						W_TABBUDGETTRAMESAISIE<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = ENR_DETAILCALCUL<2,M>
						W_TABBUDGETTRAMESAISIE<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = W_TABBUDGETTRAMESAISIE<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>>+ENR_DETAILCALCUL<3,M>
						W_TABBUDGETTRAMESAISIE<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = "0"
						W_TABBUDGETTRAMESAISIE<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = "0"
						IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" THEN W_TABCUMULCCN<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET> = W_TABCUMULCCN<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET>+ENR_DETAILCALCUL<3,M>
						IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" OR ENR_RUBSAISIE<2> = "5" THEN W_TABCUMULCCN<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET> = W_TABCUMULCCN<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET>+ENR_DETAILCALCUL<3,M>
					END
				END
				IF ENR_RUBSAISIE<2> = "6" AND ENR_CONTRAT2<6>="P" THEN
					W_TABBUDGETTRAMESAISIE<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = ENR_DETAILCALCUL<2,M>
					W_TABBUDGETTRAMESAISIE<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = "0"
					W_TABBUDGETTRAMESAISIE<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = "0"
					W_TABBUDGETTRAMESAISIE<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>> = W_TABBUDGETTRAMESAISIE<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<2,M>>+ENR_DETAILCALCUL<5,M>
				END
			END

		   END

		END


		IF INDEX(W_TABBUDGETMOI<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<2,M>,1) = 0 AND INDEX(W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<2,M>,1) # 0 THEN 

			* RECHERCHE EMPLACEMENT ORDRE ALPHA
			N = 1
			LOOP
				UNTIL ENR_RUBSAISIE<1> < W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> OR W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "" DO
				N = N + 1
			REPEAT

			IF W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "" THEN
				N = -1
				W_TABBUDGETMOI<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = ENR_DETAILCALCUL<2,M>
				W_TABBUDGETMOI<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = 4
				W_TABBUDGETMOI<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0"
				W_TABBUDGETMOI<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0" 
				W_TABBUDGETMOI<5,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0"
				W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = ENR_RUBSAISIE<1>
			END ELSE
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;ENR_DETAILCALCUL<2,M>)
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"4")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,5,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;ENR_RUBSAISIE<1>)
			END
		
		END
		M = M + 1
	REPEAT


	* TRAITEMENT RUB AVANT BRUT POUR INFORMATION - RUBRIQUE DONT ... POUR ADM (ATT 33 DE DETAILCALCUL)
	M = 1
	LOOP
		UNTIL ENR_DETAILCALCUL<33,M> = "" DO

		IF ENR_DETAILCALCUL<33,M> # "805" AND ENR_DETAILCALCUL<33,M> # "812" AND ENR_DETAILCALCUL<33,M> # "815" AND ENR_DETAILCALCUL<33,M> # "835" AND ENR_DETAILCALCUL<33,M> # "810" THEN
			IF INDEX(W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<33,M>,1) = 0 THEN

				READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,M> THEN
					IF ENR_RUBSAISIE<2> = "5" OR ENR_RUBSAISIE<2> = "6" THEN 
						W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET,-1> = ENR_DETAILCALCUL<33,M>
					END
				END
			END
		END

		IF INDEX(W_TABBUDGETMOI<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<33,M>,1) = 0 AND INDEX(W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<33,M>,1) # 0 THEN 

			* RECHERCHE EMPLACEMENT ORDRE ALPHA
			N = 1
			LOOP
				UNTIL ENR_RUBSAISIE<1> < W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> OR W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "" DO
				N = N + 1
			REPEAT

			IF W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "" THEN
				N = -1
				W_TABBUDGETMOI<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = ENR_DETAILCALCUL<33,M>
				W_TABBUDGETMOI<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = 4
				W_TABBUDGETMOI<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0"
				W_TABBUDGETMOI<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0" 
				W_TABBUDGETMOI<5,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0"
				W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = ENR_RUBSAISIE<1>
			END ELSE
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;ENR_DETAILCALCUL<33,M>)
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"4")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,5,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;ENR_RUBSAISIE<1>)
			END
		
		END
		M = M + 1
	REPEAT


	* TRAITEMENT RUB APRES NET (ATT 17 DE DETAILCALCUL)
	M = 1
	LOOP
		UNTIL ENR_DETAILCALCUL<17,M> = "" DO

		READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,M> THEN
			IF ENR_RUBSAISIE<2> = "2" THEN
				IF INDEX(W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<17,M>,1) = 0 THEN
					W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET,-1> = ENR_DETAILCALCUL<17,M>
				END
				IF ENR_CONTRAT2<6>="P" THEN
					W_TABBUDGETTRAMESAISIE<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<17,M>> = ENR_DETAILCALCUL<17,M>
					W_TABBUDGETTRAMESAISIE<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<17,M>> = W_TABBUDGETTRAMESAISIE<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<17,M>>+ENR_DETAILCALCUL<18,M>
					W_TABBUDGETTRAMESAISIE<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<17,M>> = "0"
					IF ENR_RUBSAISIE<8>="0" THEN
						W_TABBUDGETTRAMESAISIE<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<17,M>> = W_TABBUDGETTRAMESAISIE<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<17,M>>+ENR_DETAILCALCUL<20,M>
					END ELSE
						W_TABBUDGETTRAMESAISIE<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,ENR_DETAILCALCUL<17,M>> = "0"
					END 
				END
			END
		END

		IF INDEX(W_TABBUDGETMOI<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<17,M>,1) = 0 AND INDEX(W_TABRUBSAISIEMOI<ENR_CONTRAT2<1>:W_REGROUPBUDGET>,ENR_DETAILCALCUL<17,M>,1) # 0 THEN 

			* RECHERCHE EMPLACEMENT ORDRE ALPHA
			N = 1
			LOOP
				UNTIL ENR_RUBSAISIE<1> < W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> OR W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "" DO
				N = N + 1
			REPEAT

			IF W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "" THEN
				N = -1
				W_TABBUDGETMOI<1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = ENR_DETAILCALCUL<17,M>
				W_TABBUDGETMOI<2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = 4
				W_TABBUDGETMOI<3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0"
				W_TABBUDGETMOI<4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0" 
				W_TABBUDGETMOI<5,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = "0"
				W_TABBUDGETMOI<6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N> = ENR_RUBSAISIE<1>
			END ELSE
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,1,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;ENR_DETAILCALCUL<17,M>)
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,2,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"4")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,3,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,4,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,5,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;"0")
				W_TABBUDGETMOI=INSERT(W_TABBUDGETMOI,6,ENR_CONTRAT2<1>:W_REGROUPBUDGET,N;ENR_RUBSAISIE<1>)
			END
		
		END
		M = M + 1
	REPEAT
RETURN	

***************************************************************
801 * GENERATION ATT 30 -> 33 DE BUDGETFICHPERSO

	W_ADMBASEMENSRUB806=0
	* TRAITEMENT RUBRIQUE DE SAISIE AVANT BRUT
	M = 1
	LOOP
		UNTIL ENR_DETAILCALCUL<2,M> = "" DO

		IF ENR_DETAILCALCUL<2,M> # "805" AND ENR_DETAILCALCUL<2,M> # "812" AND ENR_DETAILCALCUL<2,M> # "815" AND ENR_DETAILCALCUL<2,M> # "835" AND ENR_DETAILCALCUL<2,M> # "810" THEN
		   IF ENR_DETAILCALCUL<2,M> # "090" AND ENR_DETAILCALCUL<2,M> # "091" AND ENR_DETAILCALCUL<2,M> # "092" AND ENR_DETAILCALCUL<2,M> # "093" AND ENR_DETAILCALCUL<2,M> # "101" AND ENR_DETAILCALCUL<2,M> # "102" THEN
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,M> THEN
				IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" OR ENR_RUBSAISIE<2> = "5" THEN
					IF ENR_RUBSAISIE<6>="4" AND ENR_RUBSAISIE<8>="3" THEN
						W_MONTANTSAISIE<ENR_DETAILCALCUL<2,M>> = W_MONTANTSAISIE<ENR_DETAILCALCUL<2,M>> + ENR_DETAILCALCUL<5,M>
					END ELSE
						W_BASESAISIE<ENR_DETAILCALCUL<2,M>> = W_BASESAISIE<ENR_DETAILCALCUL<2,M>> + ENR_DETAILCALCUL<3,M>
						W_HRESREELLES = W_HRESREELLES + ENR_DETAILCALCUL<3,M>
					END
				END ELSE
					IF ENR_RUBSAISIE<2> = "6" THEN 
						W_MONTANTSAISIE<ENR_DETAILCALCUL<2,M>> = W_MONTANTSAISIE<ENR_DETAILCALCUL<2,M>> + ENR_DETAILCALCUL<5,M>
					END
				END
			W_TABLESRUBSAISIE<ENR_DETAILCALCUL<2,M>> = ENR_RUBSAISIE<1>
			END
		   END
		END

		M = M + 1
	REPEAT

	* TRAITEMENT RUBRIQUE DE SAISIE AVANT BRUT DE TYPE DONT ... POUR ADM
	M = 1
	LOOP
		UNTIL ENR_DETAILCALCUL<33,M> = "" DO

		IF ENR_DETAILCALCUL<33,M> # "805" AND ENR_DETAILCALCUL<33,M> # "812" AND ENR_DETAILCALCUL<33,M> # "815" AND ENR_DETAILCALCUL<33,M> # "835" AND ENR_DETAILCALCUL<33,M> # "810" THEN
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,M> THEN
				IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" OR ENR_RUBSAISIE<2> = "5" THEN 
					W_BASESAISIE<ENR_DETAILCALCUL<33,M>> = W_BASESAISIE<ENR_DETAILCALCUL<33,M>> + ENR_DETAILCALCUL<34,M>
					W_HRESREELLES = W_HRESREELLES + ENR_DETAILCALCUL<34,M>
					IF ENR_DETAILCALCUL<33,M> # "806" THEN W_ADMBASEMENSRUB806=W_ADMBASEMENSRUB806+ENR_DETAILCALCUL<34,M>
				END ELSE
					IF ENR_RUBSAISIE<2> = "6" THEN 
						W_MONTANTSAISIE<ENR_DETAILCALCUL<33,M>>  = W_MONTANTSAISIE<ENR_DETAILCALCUL<33,M>> + ENR_DETAILCALCUL<36,M>
					END
				END
			W_TABLESRUBSAISIE<ENR_DETAILCALCUL<33,M>> = ENR_RUBSAISIE<1>
			END
		END

		M = M + 1
	REPEAT

	* TRAITEMENT RUBRIQUE DE SAISIE APRES NET
	M = 1
	LOOP
		UNTIL ENR_DETAILCALCUL<17,M> = "" DO

		READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,M> THEN
			IF ENR_RUBSAISIE<2> = "2" THEN 
				W_BASESAPNET<ENR_DETAILCALCUL<17,M>>  = W_BASESAPNET<ENR_DETAILCALCUL<17,M>>  + ENR_DETAILCALCUL<18,M>
				W_MONTANTAPNET<ENR_DETAILCALCUL<17,M>>  = W_MONTANTAPNET<ENR_DETAILCALCUL<17,M>>  + ENR_DETAILCALCUL<20,M>
			END
			W_TABLESRUBSAISIE<ENR_DETAILCALCUL<17,M>> = ENR_RUBSAISIE<1>
		END

		M = M + 1
	REPEAT

	IF W_BASESAISIE<806>#"" THEN W_BASESAISIE<806> = W_BASESAISIE<806>-W_ADMBASEMENSRUB806
RETURN