************************************************************
* ETAT DE VENTILATION DE PAIE
*
* MARS 1999								STEPHANE HERVET
* 
* SEPTEMBRE 2009 Guillaume : Restriction par tablissement
************************************************************

* RECAPITULATIF DES GOSUB
* 2   -> AFFECTATION FICHIER MATRICE RUB. SAISIE
* 3   -> AFFECTATION FICHIER MATRICE RUB. CHARGE
* 4   -> AFFECTATION FICHIER MATRICE RUB. AP. SAISIE
* 5   -> ECRITURE PAR SECTION ANAL

* 10  -> REGROUPE PROD. + ADM. SI CHOIX SANS ECLATEMENT
* 11  -> CUMULE LES RUBRIQUES DE SAISIE
* 12  -> CUMULE LES RUBRIQUES DE SAISIE 'DONT"
* 13  -> CUMULE LES RUBRIQUES DE CHARGE
* 14  -> CUMULE LES RUBRIQUES DE APRES CHARGES
* 15  -> CUMULE LES RUBRIQUES DE APRES CHARGES "DONT"
* 20  -> ECRITURE DES DONNEES

* 100 -> ECRITURE DES DONNEES

* 200 -> AFFECTATION DES DONNEES
* 210 -> AFFECTATION DES HEURES A LA MATRICE (SI PROD.)
* 240 -> AFFECTATION DES DONNEES:ATT 6,7,15,16,21

* 300 -> VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA 
* 301 -> VERIFICATION SI LA RUBRIQUE APRES CHARGE EXISTE DEJA 
* 302 -> VERIFICATION SI LA RUBRIQUE CHARGE EXISTE DEJA 
* 310 -> VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA (SUB 210)
* 313 -> VERIFICATION SI LA RUBRIQUE AP. CHARGE EXISTE DEJA (SUB 211)
* 3131-> VERIFICATION SI LA RUBRIQUE AP. CHARGE EXISTE DEJA (SUB 212)
* 320 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. SAISIE)
* 321 -> RECHERCHE SI RUB. SAISIE DEJA AFFECTEE 
* 330 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. CHARGE)
* 331 -> RECHERCHE SI RUB. CHARGE DEJA AFFECTEE 
* 340 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. AP. CHARGE)
* 341 -> RECHERCHE SI RUB. AP. CHARGE DEJA AFFECTEE 
* 350 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (ATT 6+7+15+16+21)
* 360 -> RECHERCHE SI ACTIVITE DEJA AFFECTEE (SUB 240)

* 400 -> CALCUL DE LA SOMME DES HEURES (SI PROD.)
* 401 -> CALCUL DE LA REPARTITION DES HEURES (SI PROD.)
* 402 -> CALCUL DE LA REPARTITION DES HEURES (SI ADM.)

* 500 -> REGROUPE LES ACTIVITES ENSEMBLE (RUB. SAISIE)
* 501 -> REGROUPE LES ACTIVITES ENSEMBLE (RUB. CHARGE)
* 502 -> REGROUPE LES ACTIVITES ENSEMBLE (RUB. AP. CHARGE)
* 503 -> REGROUPE LES ACTIVITES ENSEMBLE (ATT 6+7+15+17+21)

* 700 -> AFFECTATION DES RUBRIQUES DE TYPE "DONT"
* 710 -> VERIFICATION SI LA RUBRIQUE DE TYPE "DONT" EXISTE
* 711 -> VERIFICATION SI LA RUBRIQUE DE TYPE "DONT" EXISTE

* 800 -> CUMULE LES DONNEES EN ECLATEMENT ACTIVITE
* 810 -> CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - SAISIE
* 820 -> CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - AP SAISIE
* 830 -> CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - CHARGE
* 840 -> CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - SAISIE DONT
* 850 -> CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - AP SAISIE DONT

* 900 -> CUMULE LES DONNEES EN REGROUPEMENT BUDGET
* 910 -> BOUCLE DE CUMUL SOUS VALEUR

* 999 -> REMISE A ZERO DES VARIABLES
********************************************************
* RECUPERATION PARAMETRES PASSES A LA PROCEDURE
********************************************************

PROCREAD VARIABLES ELSE STOP "ERREUR PROCREAD"

*VARIABLES="ETAT-VENTILPAIE 200708 200708 001 P 5 0 0 0 0 1"

W_LONG=LEN(VARIABLES)
W_RANGPERIODE=INDEX(VARIABLES," ",1)
W_RANGPERIODEFIN=INDEX(VARIABLES," ",2)
W_RANGENTITE=INDEX(VARIABLES," ",3)
W_RANGTYPE=INDEX(VARIABLES," ",4)
W_RANGECLATE=INDEX(VARIABLES," ",5)
W_RANGSECTEUR=INDEX(VARIABLES," ",6)
W_RANGBUDGET=INDEX(VARIABLES," ",7)
W_RANGNOUVEMB=INDEX(VARIABLES," ",8)
W_RANGNOUVMESURE=INDEX(VARIABLES," ",9)
W_RANGREGRBUD=INDEX(VARIABLES," ",10)
* Modif Guillaume DA9147
W_RANGETAB=INDEX(VARIABLES," ",11)

W_PERIODE=VARIABLES[W_RANGPERIODE+1,6]
W_PERIODEFIN=VARIABLES[W_RANGPERIODEFIN+1,6]
W_CODEENTITE=VARIABLES[W_RANGENTITE+1,3]
W_TYPEACT=VARIABLES[W_RANGTYPE+1,1]
W_ECLATEMENT=VARIABLES[W_RANGECLATE+1,1]
W_SECTEUR=VARIABLES[W_RANGSECTEUR+1,3]
W_BUDGET=VARIABLES[W_RANGBUDGET+1,1]
W_NOUVEMB=VARIABLES[W_RANGNOUVEMB+1,1]
W_NOUVMESURE=VARIABLES[W_RANGNOUVMESURE+1,1]
W_REGRBUD=VARIABLES[W_RANGREGRBUD+1,1]
* Modif Guillaume DA9147
IF W_RANGETAB <> 0 THEN 
    W_ETABLISSEMENT=VARIABLES[W_RANGETAB+1,6]
END ELSE
    W_ETABLISSEMENT = ""
END

********************************************************
* OUVERTURE DES FICHIERS
********************************************************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

IF W_BUDGET = "0" THEN
	OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
	OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
	OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
	OPEN "","GRILLESCC" TO F.GRILLESCC ELSE STOP
END ELSE
	OPEN "","BUDGETFICHPERSO" TO F.CIVILAIDANT ELSE STOP
	OPEN "","BUDGETFICHPERSO" TO F.CONTRAT ELSE STOP
	OPEN "","BUDGETDETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
	OPEN "","GRILLESCCBUDGET" TO F.GRILLESCC ELSE STOP
END
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","FUSION" TO F.FUSION ELSE STOP

OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "","TEMPVENTILEDIT" TO F.TEMPVENTILEDIT ELSE STOP
* Modif Guillaume DA9147
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE STOP

********************************************************
* CHARGEMENT DE LA LISTE DES ARTICLES SELECTIONNES
********************************************************

EXECUTE "LISTE LISTEVENTIL" CAPTURING MSG RETURNING MSGCODE
IF MSGCODE<1>=209 THEN STOP
SELECT F.DETAILCALCUL TO LISTEVENTIL

********************************************************
* LECTURE FICHIERS						EN BOUCLE
********************************************************
W_PER=""
W_SAUVEPER=""
W_NBART=0
W_TOTAL=0
W_TOTALBRUT=0
W_RANGPLUSFORT=0
W_RANGACT=0
W_RANGRUB=0
W_RANGSECTION=0
W_TOTALECLATBASE=0
W_TOTALECLATMONT=0
W_TOTALECLATMONTIMP=0
W_TOTALECLATNETPAYER=0
W_TOTALECLATMONTPAYER=0
W_PROD=0
W_ADM=0
ENR_CUMULS=""
ENR_CUMULS2=""
ENR_CUMULSGLOB=""

W_RUBSAISIEDONT=""
W_RUBAPSAISIEDONT=""

W_TOUR=1

W_REQVIDE="FAUX"

W_RUBSAISIE=""
W_TABDYN=""
W_SECTEUR=""
W_TYPEPERSONNEL=""
W_TABSECTANAL=""
W_SECTIONANAL=""
W_SECTIONANALCHARGE=""
W_SECTIONANALAPCHARGE=""
W_TABACTIVITE=""
W_REGROUPBRUT=""
W_REGROUPCHARGE=""
W_REGROUPAPCHARGE=""
W_REGROUPSECTIONANAL=""
W_REGROUPSECTIONANALYTIQUE=""
ENR_SECTDISPO=""

W_RUBSAISIEFORT=""
W_RUBCHARGEFORT1=""
W_RUBCHARGEFORT2=""
W_RUBAPSAISIEFORT=""
W_CUMULSAISIE=0
W_CUMULSAISIEBASE=0
W_CUMULCHARGE1=0
W_CUMULCHARGE2=0
W_CUMULCHARGEBASE=0
W_CUMULAPSAISIE=0
W_CUMULAPSAISIEBASE=0

W_ECLATDETAIL=""
W_REGROUPECLAT=""

W_NEWSECTEUR=""

W_RUBACTIVITE = ""
W_TABCATEGORIE=""
W_TABRB = ""

GOSUB 999

* LECTURE ASSOCIATION
READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_CODEENTITE ELSE STOP "ERREUR LECTURE ASSOCIATION POUR ENTITE ":W_CODEENTITE

* Modif Guillaume DA9147
IF W_ETABLISSEMENT <> "000000" AND W_ETABLISSEMENT <> "" THEN 
    * Si j'ai un tablissement, alors tant donn que les attributs pour l'adresse sont les mmes dans les deux fichiers et qu'on utilise
    * ASSOCIATION uniquement pour son adresse, alors je remplace simplement ASSOCIATION par ETABLISSEMENT en gardant 
    * le Sigle de l'asso + " - " + Sigle de l'tablissement.     
    READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT, W_ETABLISSEMENT ELSE STOP "ERREUR LECTURE ETABLISSEMENT POUR ETABLISSEMENT ":W_ETABLISSEMENT
    W_LibEtablissement = ENR_ASSOCIATION<1>:" - ":ENR_ETABLISSEMENT<1>
    ENR_ASSOCIATION = ENR_ETABLISSEMENT
    ENR_ASSOCIATION<1> = W_LibEtablissement
END

* didier le 18/02/2009
READ ENR_COMPTEUR FROM F.COMPTEUR,W_CODEENTITE ELSE ENR_COMPTEUR=""
*

W_PERIODEDEBBUDGET="01/":W_PERIODE[5,2]:"/":W_PERIODE[1,4]
W_PERIODEDEBBUDGET=ICONV(W_PERIODEDEBBUDGET,"D4/")
W_PERIODEFINBUDGETMM=W_PERIODEFIN[5,2]
W_PERIODEFINBUDGETAA=W_PERIODEFIN[1,4]
W_PERIODEFINBUDGETMM=W_PERIODEFINBUDGETMM+1
IF W_PERIODEFINBUDGETMM=13 THEN
	W_PERIODEFINBUDGETMM="01"
	W_PERIODEFINBUDGETAA=W_PERIODEFINBUDGETAA+1
END
IF W_PERIODEFINBUDGETMM MATCH "1N" THEN W_PERIODEFINBUDGETMM="0":W_PERIODEFINBUDGETMM
W_PERIODEFINBUDGET="01/":W_PERIODEFINBUDGETMM:"/":W_PERIODEFINBUDGETAA
W_PERIODEFINBUDGET=ICONV(W_PERIODEFINBUDGET,"D4/")-1

LOOP
	***************************************************
	* LECTURE RESULTAT REQUETE JUSQUE REQUETE = VIDE
	***************************************************
	READNEXT CLE FROM LISTEVENTIL ELSE 
		W_REQVIDE="VRAI"
		IF W_TOUR#1 AND W_ECLATEMENT#"1" AND W_ECLATEMENT#"4" AND W_ECLATEMENT#"6" THEN
			W_PER=W_SAUVEPER
			GOSUB 100
			GOSUB 999
		END
	END
UNTIL W_REQVIDE="VRAI" DO

	W_NBART=W_NBART+1
	***************************************************
	* LECTURE + AFFECTATION DES DONNEES (READ)
	***************************************************
	W_CODECONTRAT=CLE[1,8]
	IF W_BUDGET = "1" THEN
		W_CODEAIDANT=CLE[1,12]
		W_CODECONTRAT=CLE[1,12]
	END ELSE
		W_CODEAIDANT=CLE[1,5]
	END
	W_PER=CLE[9,6]

	* LECTURE CONTRAT
	READ ENR_CONTRAT FROM F.CONTRAT,W_CODECONTRAT ELSE 
		PRINT "ERREUR CONTRAT ":W_CODECONTRAT
		STOP
	END

	IF W_BUDGET = "1" THEN
		ENR_CONTRAT<6> = ENR_CONTRAT<7>
		ENR_CONTRAT<36> = ENR_CONTRAT<10>
		ENR_CONTRAT<37> = ENR_CONTRAT<11>
		ENR_CONTRAT<20> = ENR_CONTRAT<15>
		ENR_CONTRAT<108> = ENR_CONTRAT<16>
		ENR_CONTRAT<15> = ENR_CONTRAT<12>
		ENR_CONTRAT<16> = ENR_CONTRAT<14>
		IF W_NOUVEMB="1" THEN
			IF CLE[1,2]#"99" THEN GOTO 1
			IF ENR_CONTRAT<8><W_PERIODEDEBBUDGET OR ENR_CONTRAT<8>>W_PERIODEFINBUDGET THEN GOTO 1
		END
	END

*** MODIF

	W_PERIODECOURS = ICONV("01/":CLE[13,2]:"/":CLE[9,4],"D4/")
	
	IF W_BUDGET = "0" THEN
		* RECHERCHE AVENANT EN COURS
		W_RANGAVENANT = DCOUNT(EXTRACT(ENR_CONTRAT,15),CHAR(253))
		LOOP
		UNTIL ENR_CONTRAT<15,W_RANGAVENANT> <= W_PERIODECOURS OR W_RANGAVENANT = 1 DO
			W_RANGAVENANT = W_RANGAVENANT - 1
		REPEAT				
	END ELSE
		* RECHERCHE AVENANT EN COURS
		W_RANGAVENANT = 1
		W_RANGAVENANT2 = DCOUNT(EXTRACT(ENR_CONTRAT,15),CHAR(253))
		LOOP
		UNTIL ENR_CONTRAT<15,W_RANGAVENANT> <= W_PERIODECOURS OR W_RANGAVENANT = W_RANGAVENANT2 DO
			W_RANGAVENANT = W_RANGAVENANT + 1
		REPEAT
		IF W_NOUVMESURE = "1" THEN
			IF ENR_CONTRAT<38,W_RANGAVENANT>="N" OR ENR_CONTRAT<38,W_RANGAVENANT>="" THEN GOTO 1
		END
	END

	W_CODECATEGORIE = ""

	IF ENR_CONTRAT<20,W_RANGAVENANT> # "" THEN
		READ ENR_GRILLESCC FROM F.GRILLESCC,ENR_CONTRAT<20,W_RANGAVENANT> ELSE ENR_GRILLESCC = ""
		W_CODECATEGORIE = ENR_GRILLESCC<7>
	END ELSE
		W_CODECATEGORIE=ENR_CONTRAT<108,W_RANGAVENANT>
	END
	IF W_CODECATEGORIE = "" THEN W_CODECATEGORIE = "Z"
	W_RANGCATEGORIE = SEQ(W_CODECATEGORIE) - 64		

	D=1
	LOOP
	UNTIL W_TABCATEGORIE<D>=W_CODECATEGORIE OR W_TABCATEGORIE<D>="" DO
		D=D+1
	REPEAT
	IF W_TABCATEGORIE<D>="" THEN
		IF D=1 THEN
			W_TABCATEGORIE<1>=W_CODECATEGORIE
		END ELSE
			W_D=D
			D=1
			LOOP
			UNTIL W_TABCATEGORIE<D>>W_CODECATEGORIE OR W_TABCATEGORIE<D>="" DO
				D=D+1
			REPEAT
			IF W_TABCATEGORIE<D>="" THEN
				W_TABCATEGORIE<D>=W_CODECATEGORIE
			END ELSE
				FOR G=W_D TO D STEP -1
					W_TABCATEGORIE<G+1>=W_TABCATEGORIE<G>
				NEXT G
				W_TABCATEGORIE<D>=W_CODECATEGORIE
			END
		END
	END
	
	IF W_REGRBUD = "1" THEN
		CNT = 1
		W_CODEREGRBUD = 99
		READ ENR_QUALIF FROM F.TABLES,"QUALIF" ELSE ENR_QUALIF=""
		FOR CNT = 1 TO DCOUNT(ENR_QUALIF<2>,CHAR(253))
			IF ENR_CONTRAT<16,W_RANGAVENANT> = ENR_QUALIF<2,CNT> THEN
				W_CODEREGRBUD = ENR_QUALIF<4,CNT>
				EXIT
			END
		NEXT CNT
		
		CNT = 1
		LOOP
		UNTIL W_TABRB<CNT> = W_CODEREGRBUD OR W_TABRB<CNT> = ""
			CNT += 1
		REPEAT
		W_TABRB<CNT> = W_CODEREGRBUD
	END
	
*** FIN MODIF

	* LECTURE CIVILAIDANT UNIQUEMENT SI # ECLATEMENT ANAL.
	IF W_ECLATEMENT#1 THEN
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CODEAIDANT ELSE
		*PRINT "ERREUR CIVILAIDANT ":W_CODEAIDANT
			STOP
		END
		IF W_BUDGET = "1" THEN
			ENR_CIVILAIDANT<31> = ENR_CIVILAIDANT<4>
		END
		IF W_TOUR=1 THEN 
			W_TYPEPERSONNEL=ENR_CONTRAT<6>
			W_SAUVEPER=W_PER
		END
		IF W_TOUR=1 AND W_ECLATEMENT="3" THEN W_SECTEUR=ENR_CIVILAIDANT<31>
	END

	* LECTURE DETAILCALCUL
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE ELSE
		*PRINT "ERREUR DETAILCALCUL ":CLE
		STOP
	END

	***************************************************
	* GESTION ECLATEMENT TYPE 2 OU 3 OU 4
	***************************************************
	IF W_ECLATEMENT="2" OR W_ECLATEMENT="3" OR W_ECLATEMENT="5" THEN 
		IF W_ECLATEMENT="2" OR W_ECLATEMENT="5" THEN
			W_SECTEUR=""
			W_CODEREGRBUDSAUVE=W_CODEREGRBUD
			
			IF W_TYPEPERSONNEL=ENR_CONTRAT<6> AND W_SAUVEPER=W_PER THEN
				IF W_ECLATEMENT#"5" THEN 
					GOSUB 700
				END ELSE
					GOSUB 740
				END
				GOSUB 200
			END ELSE
				***************************************************
				* APPEL ECRITURE_DONNEES SI CHG DE TYPE PERSONNEL
				*************************************************** 
				GOSUB 100
				IF W_ECLATEMENT="5" THEN GOSUB 800
				GOSUB 999
				
				***************************************************
				* TRAITEMENT CLE ACTUELLE
				***************************************************
				W_CODEREGRBUD=W_CODEREGRBUDSAUVE
				IF W_ECLATEMENT#"5" THEN 
					GOSUB 700
				END ELSE
					GOSUB 740
				END
				GOSUB 200
			END
		END ELSE
			
			*****************
			* TRAITEMENT W_ECLATEMENT=3
			*****************
			W_NEWSECTEUR=ENR_CIVILAIDANT<31>
				
			IF W_SECTEUR=ENR_CIVILAIDANT<31> AND W_TYPEPERSONNEL=ENR_CONTRAT<6> AND W_SAUVEPER=W_PER THEN
				GOSUB 700			
				GOSUB 200
			END ELSE
				
				***************************************************
				* APPEL ECRITURE_DONNEES SI CHG TYPE PERSONNEL OU SECTEUR
				*************************************************** 
				GOSUB 100
				GOSUB 999
				
				***************************************************
				* TRAITEMENT CLE ACTUELLE
				***************************************************
				GOSUB 700
				GOSUB 200
			END
		END	
	END ELSE
		***************************************************
		* GESTION TRI PAR SECTION ANALYTIQUE
		* PARCOURS DES ACTIVITES DES CONTRATS (DE 1 A X)
		**************************************************
		W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))
		
		W_TABACTIVITE<1>=""
		W_TABACTIVITE<2>=""
		W_TABACTIVITE<3>=""
		
		W_TOTAL=0
		W_RANG=1
		
		IF ENR_CONTRAT<6>="P" THEN
			* TEST SI ATT 24,25,26 RENSEIGNE
			IF W_NBRUBSAISIE=0 THEN
				I=1
				LOOP 
				UNTIL ENR_DETAILCALCUL<2,I>="" DO
					ENR_DETAILCALCUL<24,I>=ENR_DETAILCALCUL<2,I>
					IF ENR_DETAILCALCUL<3,I>="" THEN ENR_DETAILCALCUL<3,I>=0
					ENR_DETAILCALCUL<25,I>=ENR_DETAILCALCUL<3,I>
					ENR_DETAILCALCUL<26,I>=ENR_CONTRAT<36,1>
					ENR_DETAILCALCUL<27,I>=ENR_DETAILCALCUL<5,I>
					I=I+1
				REPEAT
				
				W_NBRUBSAISIE=DCOUNT(ENR_DETAILCALCUL<24>,CHAR(253))
			END					
			
			FOR X=1 TO W_NBRUBSAISIE	
				* CALCUL SOMME DES HEURES
				GOSUB 400
			NEXT 
			* CALCUL % REPARTITION
			GOSUB 401
		END ELSE
		
			* CALCUL % REPARTITION
			GOSUB 402
			
* didier le 18/02/2009
		        W_CUMBASEDONT=0
                        W_CUMMONTDONT=0
                        IF ENR_COMPTEUR<9>="1" THEN
		           IF ENR_CONTRAT<5>="M" AND ENR_CONTRAT<6>= "A" AND W_BUDGET = "0" THEN
       	                   GOSUB 7
			END
            END
* fin didier			
			
		END			
		
		* AFFECTATION FICHIER MATRICE SAISIE
		GOSUB 2
		
		* AFFECTATION FICHIER MATRICE CHARGE
		GOSUB 3
		
		* AFFECTATION FICHIER MATRICE AP. SAISIE
		GOSUB 4
		
	END

	***************************************************
	* INCREMENTATION VARIABLE
	***************************************************
	W_TYPEPERSONNEL=ENR_CONTRAT<6>
	W_SAUVEPER=W_PER
	IF W_ECLATEMENT#1 THEN W_SECTEUR=ENR_CIVILAIDANT<31>
	W_TABDYN=""
	W_TOUR=W_TOUR+1
1 REPEAT

***************************************************
* AFFICHAGE NOMBRE ITEM
***************************************************

IF W_ECLATEMENT="1" OR W_ECLATEMENT="4" OR W_ECLATEMENT="6" THEN 
	J=1
	LOOP 
	UNTIL ENR_SECTDISPO<J>="" DO
		GOSUB 5
		J=J+1
	REPEAT
END

IF W_ECLATEMENT="2" THEN GOSUB 10
IF W_ECLATEMENT="5" THEN GOSUB 800
IF W_REGRBUD = "1" THEN GOSUB 900

*PRINT "NOMBRE ARTICLE DANS RESULTAT REQUETE : ":W_NBART
RETURN   

***************************************************
* AFFECTATION FICHIER MATRICE RUB SAISIE (ECLAT.+PROD)
***************************************************
2 *

	I=1
	LOOP
	UNTIL ENR_DETAILCALCUL<2,I>="" DO

* didier le 18/02/2009	
        IF ENR_DETAILCALCUL<2,I> = "806" THEN
	       ENR_DETAILCALCUL<3,I>=ENR_DETAILCALCUL<3,I>-W_CUMBASEDONT
	       ENR_DETAILCALCUL<5,I>=ENR_DETAILCALCUL<5,I>-W_CUMMONTDONT
        END
* fin didier		
	
		W_CUMULSAISIE=ENR_DETAILCALCUL<5,I>
		W_CUMULSAISIEBASE=ENR_DETAILCALCUL<3,I>
		
		W_RUBSAISIEFORT=""
		
		* COMPTE LE NBRE DE VALEURS DANS CALCUL %
		W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
		
		FOR J=1 TO W_NBACTIVITEPOURC
			* LECTURE RUBRIQUE SAISIE
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE ENR_RUBSAISIE=""	
			
			* VERIFIE SI RUB. EXISTE
			IF W_ECLATEMENT = "4" THEN
				IF W_REGRBUD = "1" THEN
					W_CleTemp="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J>
				END ELSE
					W_CleTemp="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>
				END
			END ELSE
				IF W_ECLATEMENT="6" THEN
					W_CleTemp="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>:W_CODECATEGORIE
				END ELSE
					W_CleTemp="S":ENR_DETAILCALCUL<2,I>:W_TABACTIVITE<4,J>
				END
			END
			
			* SI REGROUPEMENT BUDGET,ON AJOUTE LE CODE REGROUPEMENT BUDGET
			IF W_REGRBUD = "1" AND W_ECLATEMENT # 1 THEN
				W_CleTemp=W_CleTemp:W_CODEREGRBUD
			END
			*PRINT "L542:  ":W_CleTemp
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CleTemp THEN
				ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
				IF ENR_DETAILCALCUL<3,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
				IF ENR_DETAILCALCUL<5,I>>=0 THEN
					ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END ELSE
				ENR_TEMPVENTILEDIT=""
				ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
				IF ENR_DETAILCALCUL<3,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
				IF ENR_DETAILCALCUL<5,I>>=0 THEN
					ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END		
			
			WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CleTemp
			
			IF ENR_DETAILCALCUL<3,I>>=0 THEN
				W_CUMULSAISIEBASE=W_CUMULSAISIEBASE-INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				W_CUMULSAISIEBASE=W_CUMULSAISIEBASE-INT(ENR_DETAILCALCUL<3,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
				
			IF ENR_DETAILCALCUL<5,I>>=0 THEN
				W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<5,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
			
			IF W_RUBSAISIEFORT="" THEN
				W_RUBSAISIEFORT<1>=W_CleTemp
				W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
			END ELSE
				IF W_RUBSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
					W_RUBSAISIEFORT<1>=W_CleTemp
					W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
				END
			END
			
			* MAJ FICHIER SECTION ANALYTIQUE DISPO	
			K=1
			LOOP
			UNTIL ENR_SECTDISPO<K>=W_TABACTIVITE<4,J> OR ENR_SECTDISPO<K>="" DO
				K=K+1
			REPEAT
			IF ENR_SECTDISPO<K>="" THEN ENR_SECTDISPO<K>=W_TABACTIVITE<4,J>
		NEXT
		
		IF W_CUMULSAISIE<>0 THEN
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
			ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULSAISIE
		END
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
		END
		
		IF W_CUMULSAISIEBASE<>0 THEN
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
				ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULSAISIEBASE
			END
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
		END
		
* didier le 02/03/2009	
        IF ENR_DETAILCALCUL<2,I> = "806" THEN
	       W_CUMBASEDONT=0
	       W_CUMMONTDONT=0
        END
* fin didier

		I=I+1

	REPEAT

	FOR J=1 TO W_NBACTIVITEPOURC
		* MAJ BASE CUMUL
		IF W_ECLATEMENT = "4" THEN
			IF W_REGRBUD = "1" THEN
				W_CleTemp="BASE":W_TABACTIVITE<4,J>
			END ELSE
				W_CleTemp="BASE":W_TABACTIVITE<4,J>:ENR_CONTRAT<6>
			END
		END ELSE
			IF W_ECLATEMENT = "6" THEN
				W_CleTemp="BASE":W_TABACTIVITE<4,J>:ENR_CONTRAT<6>:W_CODECATEGORIE
			END ELSE
				W_CleTemp="BASE":W_TABACTIVITE<4,J>
			END			
		END
		
		IF W_REGRBUD = "1" AND W_ECLATEMENT # 1 THEN
			W_CleTemp=W_CleTemp:W_CODEREGRBUD
		END
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CleTemp ELSE ENR_TEMPVENTILEDIT=""
		ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<15>*W_TABACTIVITE<3,J>/10000+1/2)
		ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+INT(ENR_DETAILCALCUL<16>*W_TABACTIVITE<3,J>/10000+1/2)
		ENR_TEMPVENTILEDIT<5>=ENR_TEMPVENTILEDIT<5>+INT(ENR_DETAILCALCUL<21>*W_TABACTIVITE<3,J>/10000+1/2)
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CleTemp			
	NEXT

RETURN

***************************************************
* AFFECTATION FICHIER MATRICE RUB CHARGE (ECLAT.+PROD)
***************************************************
3 *

I=1
LOOP
UNTIL ENR_DETAILCALCUL<8,I>="" DO	
	W_CUMULCHARGE1=ENR_DETAILCALCUL<11,I>
	W_CUMULCHARGE2=ENR_DETAILCALCUL<14,I>
	IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
		W_CUMULCHARGEBASE=ENR_DETAILCALCUL<9,I>
	END ELSE
		W_CUMULCHARGEBASE=ENR_DETAILCALCUL<12,I>
	END
		
	W_RUBCHARGEFORT1=""
	W_RUBCHARGEFORT2=""
	
	* COMPTE LE NBRE DE VALEURS DANS CALCUL %
	W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
	
	FOR J=1 TO W_NBACTIVITEPOURC
		* LECTURE RUBRIQUE SAISIE
		READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,I> ELSE ENR_RUBCHARGE=""	
		
		* CALCULE PAR AVANCE LES VALEURS A AFFECTER
		IF ENR_DETAILCALCUL<11,I>>=0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000+1/2)
		IF ENR_DETAILCALCUL<11,I><0 THEN W_TOTALSAL1=INT(ENR_DETAILCALCUL<11,I>*W_TABACTIVITE<3,J>/10000-1/2)
		IF ENR_DETAILCALCUL<14,I>>=0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000+1/2)
		IF ENR_DETAILCALCUL<14,I><0 THEN W_TOTALPAT1=INT(ENR_DETAILCALCUL<14,I>*W_TABACTIVITE<3,J>/10000-1/2)
		
		* VERIFIE SI RUB. EXISTE
		IF W_ECLATEMENT = "4" THEN
			IF W_REGRBUD = "1" THEN
				W_CleTemp="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J>
			END ELSE
				W_CleTemp="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>
			END
		END ELSE
			IF W_ECLATEMENT = "6" THEN
				W_CleTemp="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>:W_CODECATEGORIE
			END ELSE
				W_CleTemp="C":ENR_DETAILCALCUL<8,I>:W_TABACTIVITE<4,J>
			END			
		END
		IF W_REGRBUD = "1" AND W_ECLATEMENT # 1 THEN
			W_CleTemp=W_CleTemp:W_CODEREGRBUD
		END
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CleTemp THEN
			
			ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
			IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
				IF ENR_DETAILCALCUL<9,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END ELSE
				IF ENR_DETAILCALCUL<12,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END
			ENR_TEMPVENTILEDIT<3>=ENR_DETAILCALCUL<10,I>
			ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+W_TOTALSAL1
			IF ENR_DETAILCALCUL<13,I>="" THEN ENR_DETAILCALCUL<13,I>=0
			ENR_TEMPVENTILEDIT<5>=ENR_DETAILCALCUL<13,I>
			ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+W_TOTALPAT1
		END ELSE
			ENR_TEMPVENTILEDIT<1>=ENR_RUBCHARGE<1>
			IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
				IF ENR_DETAILCALCUL<9,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END ELSE
				IF ENR_DETAILCALCUL<12,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END
			ENR_TEMPVENTILEDIT<3>=ENR_DETAILCALCUL<10,I>
			ENR_TEMPVENTILEDIT<4>=W_TOTALSAL1
			IF ENR_DETAILCALCUL<13,I>="" THEN ENR_DETAILCALCUL<13,I>=0
			ENR_TEMPVENTILEDIT<5>=ENR_DETAILCALCUL<13,I>
			ENR_TEMPVENTILEDIT<6>=W_TOTALPAT1
		END	
			
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CleTemp
			
		W_CUMULCHARGE1=W_CUMULCHARGE1-W_TOTALSAL1
		W_CUMULCHARGE2=W_CUMULCHARGE2-W_TOTALPAT1
			
		IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>0 THEN
			IF ENR_DETAILCALCUL<9,I>>=0 THEN
   				W_CUMULCHARGEBASE=W_CUMULCHARGEBASE-INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				W_CUMULCHARGEBASE=W_CUMULCHARGEBASE-INT(ENR_DETAILCALCUL<9,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
		END ELSE
			IF ENR_DETAILCALCUL<12,I>>=0 THEN
				W_CUMULCHARGEBASE=W_CUMULCHARGEBASE-INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
   				W_CUMULCHARGEBASE=W_CUMULCHARGEBASE-INT(ENR_DETAILCALCUL<12,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
		END
		
		IF W_RUBCHARGEFORT1="" THEN
			W_RUBCHARGEFORT1<1>=W_CleTemp
   			W_RUBCHARGEFORT1<2>=W_TOTALSAL1
			W_RUBCHARGEFORT1<3>=W_TOTALPAT1
		END ELSE
			IF W_RUBCHARGEFORT1<2><W_TOTALSAL1 OR W_RUBCHARGEFORT1<3><W_TOTALPAT1 THEN
				W_RUBCHARGEFORT1<1>=W_CleTemp
   				W_RUBCHARGEFORT1<2>=W_TOTALSAL1
				W_RUBCHARGEFORT1<3>=W_TOTALPAT1
			END
		END
	NEXT

	READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1> THEN
		ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+W_CUMULCHARGE1
		ENR_TEMPVENTILEDIT<6>=ENR_TEMPVENTILEDIT<6>+W_CUMULCHARGE2
		ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULCHARGEBASE
	END
	WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBCHARGEFORT1<1>

	I=I+1
REPEAT

RETURN
***************************************************
* AFFECTATION FICHIER MATRICE RUB AP. SAISIE (ECLAT.+PROD)
***************************************************
4 *
I=1
LOOP
UNTIL ENR_DETAILCALCUL<17,I>="" DO

	W_CUMULAPSAISIE=ENR_DETAILCALCUL<20,I>
	W_CUMULAPSAISIEBASE=ENR_DETAILCALCUL<18,I>

	W_RUBAPSAISIEFORT=""

	* COMPTE LE NBRE DE VALEURS DANS CALCUL %
	W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
	FOR J=1 TO W_NBACTIVITEPOURC
		* LECTURE RUBRIQUE SAISIE
		READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,I> ELSE ENR_RUBSAISIE=""	
		
		* VERIFIE SI RUB. EXISTE
		IF W_ECLATEMENT = "4" THEN
			IF W_REGRBUD = "1" THEN
				W_CleTemp="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J>
			END ELSE
				W_CleTemp="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>
			END
		END ELSE
			IF W_ECLATEMENT="6" THEN
				W_CleTemp="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>:W_CODECATEGORIE
			END ELSE
				W_CleTemp="AS":ENR_DETAILCALCUL<17,I>:W_TABACTIVITE<4,J>
			END
		END
		IF W_REGRBUD = "1" AND W_ECLATEMENT#1 THEN
			W_CleTemp=W_CleTemp:W_CODEREGRBUD
		END
		*PRINT "L822:  ":W_CleTemp
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CleTemp THEN
			ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
			IF ENR_DETAILCALCUL<18,I>>=0 THEN
				ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
			IF ENR_DETAILCALCUL<20,I>>=0 THEN
				ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
		END ELSE
			ENR_TEMPVENTILEDIT=""
			ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
			IF ENR_DETAILCALCUL<18,I>>=0 THEN
				ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
			IF ENR_DETAILCALCUL<20,I>>=0 THEN
				ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
		END				
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CleTemp
			
		IF ENR_DETAILCALCUL<18,I>>=0 THEN
			W_CUMULAPSAISIEBASE=W_CUMULAPSAISIEBASE-INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000+1/2)
		END ELSE
			W_CUMULAPSAISIEBASE=W_CUMULAPSAISIEBASE-INT(ENR_DETAILCALCUL<18,I>*W_TABACTIVITE<3,J>/10000-1/2)
		END
		
		IF ENR_DETAILCALCUL<20,I>>=0 THEN
			W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000+1/2)
		END ELSE
			W_CUMULAPSAISIE=W_CUMULAPSAISIE-INT(ENR_DETAILCALCUL<20,I>*W_TABACTIVITE<3,J>/10000-1/2)
		END
		
		IF W_RUBAPSAISIEFORT="" THEN
			W_RUBAPSAISIEFORT<1>=W_CleTemp
			W_RUBAPSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
		END ELSE
			IF W_RUBAPSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
				W_RUBAPSAISIEFORT<1>=W_CleTemp
				W_RUBAPSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
			END
		END
		
	NEXT

	READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBAPSAISIEFORT<1> THEN
		ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULAPSAISIE
		ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULAPSAISIEBASE
	END
	WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBAPSAISIEFORT<1>

	I=I+1
REPEAT

RETURN

***************************************************
* ECRITURE PAR SECTION ANAL
***************************************************
5 *

IF W_ECLATEMENT="4" OR W_ECLATEMENT="6" THEN
	W_Passe=2
END ELSE
	W_Passe=1
END

FOR W_Nb=1 TO W_Passe	
	* TRAITEMENT RUB. SAISIE
	IF W_Nb="1" THEN W_AP = "A" ELSE W_AP = "P"
	IF W_ECLATEMENT="4" THEN
		IF W_REGRBUD = "1" THEN
			W_Passe = 1
			W_MAX = DCOUNT(W_TABRB,CHAR(254))
			IF W_MAX = 0 THEN W_MAX = 1
			FOR W_CNT = 1 TO W_MAX
				W_RB = W_TABRB<W_CNT>
				EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "S]" AND = "[':ENR_SECTDISPO<J>:W_RB:'" PAR @ID'
				GOSUB 6
			NEXT W_CNT	
		END ELSE
			EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "S]" AND = "[':ENR_SECTDISPO<J>:W_AP:'" PAR @ID'
			GOSUB 6
		END
	END ELSE
		IF W_ECLATEMENT="1" THEN		
			W_MAX = DCOUNT(W_TABRB,CHAR(254))
			IF W_MAX = 0 THEN W_MAX = 1
			FOR W_CNT = 1 TO W_MAX
				W_RB = W_TABRB<W_CNT>
				EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "S]" AND = "[':ENR_SECTDISPO<J>:W_RB:'" PAR @ID'
				GOSUB 6
			NEXT W_CNT
		END ELSE
			D=1
			LOOP
			UNTIL W_TABCATEGORIE<D>="" DO
				W_MAX = DCOUNT(W_TABRB,CHAR(254))
				IF W_MAX = 0 THEN W_MAX = 1
				FOR W_CNT = 1 TO W_MAX
					W_RB = W_TABRB<W_CNT>
					EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "S]" AND = "[':ENR_SECTDISPO<J>:W_AP:W_TABCATEGORIE<D>:W_RB:'" PAR @ID'
					GOSUB 6
				NEXT W_CNT
				D=D+1
			REPEAT
		END
	END
NEXT W_Nb
RETURN

**********
6 *

W_TOTALBRUTHRES=0
W_TOTALBRUT=0
W_DERNIERI1=0
W_DERNIERI2=0
W_TOTALNET=0
W_TOTALMONTANT=0
W_TOTALNET2=0
W_TOTALMONTANT2=0
W_RANGNET=0
W_ETATVENTIL=""
W_ETATVENTIL<1>=ENR_ASSOCIATION<1>
W_ETATVENTIL<2>=ENR_ASSOCIATION<3>:" ":ENR_ASSOCIATION<4>:" ":ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>
W_ETATVENTIL<3>=ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>

W_ETATVENTIL<4>=""
IF W_ECLATEMENT="4" OR W_ECLATEMENT="6" THEN
	W_ETATVENTIL<4>="P"
	IF W_Nb="1" THEN W_ETATVENTIL<4>="A" 
END

W_ETATVENTIL<5>=""
IF W_ECLATEMENT="6" THEN W_ETATVENTIL<5>=W_TABCATEGORIE<D>
		
W_ETATVENTIL<6,2>=ENR_SECTDISPO<J>
W_DERNIERI=7
W_ANCIENI=7
I=2 
* MAJ FICHIER
W_TERMINE=0
LOOP
	READNEXT CLE ELSE W_TERMINE=1
UNTIL W_TERMINE=1 DO
	* LECTURE FICHIER TAMPON
	READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

	W_ETATVENTIL<W_ANCIENI,I,1>=CLE[2,3]
	W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
	W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
	W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>

	* CUMUL MONTANT + BASE BRUT
*** modif 16/07/02 : uniquement rubriques type MOD, MOD dim  JF, et Inclus ds brut BASE et montant
***		IF CLE[2,3]<>"810" THEN W_TOTALBRUTHRES=W_TOTALBRUTHRES+ENR_TEMPVENTILEDIT<2>
	READ ENR_RUBSAI FROM F.RUBSAISIE, CLE[2,3] THEN
		IF ENR_RUBSAI<2> = "3" OR ENR_RUBSAI<2> = "4" OR ENR_RUBSAI<2> = "5" THEN
			W_TOTALBRUTHRES=W_TOTALBRUTHRES+ENR_TEMPVENTILEDIT<2>
		END
	END

	W_TOTALBRUT=W_TOTALBRUT+ENR_TEMPVENTILEDIT<3>

	W_ANCIENI=W_ANCIENI+1
	IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI
	IF W_REGRBUD = "1" THEN W_RB = CLE[LEN(CLE)-1,2] ELSE W_RB = ""
REPEAT


IF W_DERNIERI1<W_DERNIERI THEN 
	W_DERNIERI1=W_DERNIERI
END ELSE 
	W_DERNIERI=W_DERNIERI1
END	

W_ETATVENTIL<W_DERNIERI+1>="BASE"

* ECRITURE : TOTAL BRUT, NET IMPOSABLE, NET A PAYER
IF W_ECLATEMENT="4" THEN
	IF W_REGRBUD = "1" THEN
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_RB ELSE ENR_TEMPVENTILEDIT=""
	END ELSE
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_ETATVENTIL<4> ELSE ENR_TEMPVENTILEDIT=""
	END
END ELSE
	IF W_ECLATEMENT="6" THEN
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_ETATVENTIL<5>:W_RB ELSE ENR_TEMPVENTILEDIT=""
	END ELSE
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_RB ELSE ENR_TEMPVENTILEDIT=""
	END
END

W_ETATVENTIL<W_DERNIERI+2,I,1>=W_TOTALBRUTHRES
W_ETATVENTIL<W_DERNIERI+2,I,2>=W_TOTALBRUT
W_ETATVENTIL<W_DERNIERI+3,I>=ENR_TEMPVENTILEDIT<3>

W_RANGNET=W_DERNIERI+4

W_ETATVENTIL<W_DERNIERI+5>="RUBRIQUE DE CHARGE"

*************************************
* TRAITEMENT RUB. CHARGE
W_ANCIENI=W_DERNIERI+6
 
IF W_ECLATEMENT="4" THEN
	IF W_REGRBUD = "1" THEN
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "C]" AND AVEC CodeSectRegBud = "':ENR_SECTDISPO<J>:'" AND AVEC RegroupBudget = "':W_RB:'" PAR @ID'
	END ELSE
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "C]" AND = "[':ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_RB'" PAR @ID'
	END
END ELSE
	IF W_ECLATEMENT="6" THEN
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "C]" AND = "[':ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_ETATVENTIL<5>:W_RB:'" PAR @ID'
	END ELSE
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "C]" AND = "[':ENR_SECTDISPO<J>:W_RB:'" PAR @ID'
	END
END

* MAJ FICHIER
W_TERMINE=0
LOOP
	READNEXT CLE ELSE W_TERMINE=1
UNTIL W_TERMINE=1 DO

	* LECTURE FICHIER TAMPON
	READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""
	W_ETATVENTIL<W_ANCIENI,I,1>=CLE[2,3]
	W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
	W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
	W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>
	W_ETATVENTIL<W_ANCIENI,I,5>=ENR_TEMPVENTILEDIT<4>
	W_ETATVENTIL<W_ANCIENI,I,6>=ENR_TEMPVENTILEDIT<5>
	W_ETATVENTIL<W_ANCIENI,I,7>=ENR_TEMPVENTILEDIT<6>

	W_ANCIENI=W_ANCIENI+1
	IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI

	W_TOTALNET=W_TOTALNET+ENR_TEMPVENTILEDIT<4>

REPEAT

IF W_DERNIERI2<W_DERNIERI THEN 
	W_DERNIERI2=W_DERNIERI
END ELSE 
	W_DERNIERI=W_DERNIERI2
END	

W_ETATVENTIL<W_DERNIERI>="RUBRIQUE APRES CHARGE"

*************************************
* TRAITEMENT RUB. AP. SAISIE
W_ANCIENI=W_DERNIERI+1
		
IF W_ECLATEMENT="4" THEN
	IF W_REGRBUD = "1" THEN
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:W_RB:'" PAR @ID'
	END ELSE
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_RB'" PAR @ID'
	END
END ELSE
	IF W_ECLATEMENT="6" THEN
		*PRINT "L1097: ":'SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_ETATVENTIL<5>:W_RB:'" PAR @ID'
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_ETATVENTIL<5>:W_RB:'" PAR @ID'
	END ELSE
		EXECUTE 'SSELECT TEMPVENTILEDIT AVEC @ID = "AS]" AND = "[':ENR_SECTDISPO<J>:W_RB:'" PAR @ID'
	END
END

* MAJ FICHIER
W_TERMINE=0
LOOP
	READNEXT CLE ELSE W_TERMINE=1
UNTIL W_TERMINE=1 DO

	* LECTURE FICHIER TAMPON
	READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""

	W_ETATVENTIL<W_ANCIENI,I,1>=CLE[3,3]
	W_ETATVENTIL<W_ANCIENI,I,2>=ENR_TEMPVENTILEDIT<1>
	W_ETATVENTIL<W_ANCIENI,I,3>=ENR_TEMPVENTILEDIT<2>
	W_ETATVENTIL<W_ANCIENI,I,4>=ENR_TEMPVENTILEDIT<3>

	W_TOTALMONTANT=W_TOTALMONTANT+ENR_TEMPVENTILEDIT<3>

	W_ANCIENI=W_ANCIENI+1
	IF W_DERNIERI<W_ANCIENI THEN W_DERNIERI=W_ANCIENI
REPEAT

W_APNET=0
IF W_TOTALMONTANT=0 OR W_TOTALMONTANT="" THEN 
	W_APNET=0
END ELSE
	W_APNET=1
END

I=1
W_TOTALNET2=W_TOTALBRUT+W_TOTALNET

IF W_APNET=1 THEN
	W_TOTALMONTANT2=W_TOTALNET2+W_TOTALMONTANT
END ELSE
	W_TOTALMONTANT2=W_TOTALNET2
END

* ECRITURE : NET A PAYER, MONTANT A PAYER
IF W_ECLATEMENT="4" THEN
	IF W_REGRBUD = "1" THEN
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_RB ELSE ENR_TEMPVENTILEDIT=""
	END ELSE
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_ETATVENTIL<4> ELSE ENR_TEMPVENTILEDIT=""
	END
END ELSE
	IF W_ECLATEMENT="6" THEN
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_ETATVENTIL<5>:W_RB ELSE ENR_TEMPVENTILEDIT=""
	END ELSE
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,"BASE":ENR_SECTDISPO<J>:W_RB ELSE ENR_TEMPVENTILEDIT=""
	END
END
	W_ETATVENTIL<W_RANGNET,2>=W_TOTALNET2
	W_ETATVENTIL<W_DERNIERI+1,I>=W_TOTALMONTANT2
	
	IF W_ETATVENTIL<7>[1,8] # "RUBRIQUE" THEN
		IF W_ECLATEMENT="4" THEN
			WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>:W_ETATVENTIL<4>:W_RB
		END ELSE
			IF W_ECLATEMENT="6" THEN
				IF W_REGRBUD = "1" THEN
*					WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>:"__":W_ETATVENTIL<5>:W_RB
					WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>:"_":W_ETATVENTIL<4>:W_ETATVENTIL<5>:W_RB
				END ELSE
					WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>:"_":W_ETATVENTIL<4>:W_ETATVENTIL<5>:W_RB
				END
			END ELSE
				WRITE W_ETATVENTIL ON F.TEMPVENTILEDIT,W_CODEENTITE:ENR_SECTDISPO<J>:W_RB
			END
		END
	END

RETURN

* didier le 18/02/2009

***********************************************************************
* AFFECTATION FICHIER MATRICE RUB SAISIE DE TYPE "DONT" (ECLAT.+PROD) *
***********************************************************************
7 *

	I=1
	LOOP
	UNTIL ENR_DETAILCALCUL<33,I>="" DO

		W_CUMULSAISIE=ENR_DETAILCALCUL<36,I>
		W_CUMULSAISIEBASE=ENR_DETAILCALCUL<34,I>
		
		W_RUBSAISIEFORT=""
		
		* COMPTE LE NBRE DE VALEURS DANS CALCUL %
		W_NBACTIVITEPOURC=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
		
		FOR J=1 TO W_NBACTIVITEPOURC
			* LECTURE RUBRIQUE SAISIE
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,I> ELSE ENR_RUBSAISIE=""	
			
			* VERIFIE SI RUB. EXISTE
			IF W_ECLATEMENT = "4" THEN
				IF W_REGRBUD = "1" THEN
					W_CleTemp="S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J>
				END ELSE
					W_CleTemp="S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>
				END
			END ELSE
				IF W_ECLATEMENT="6" THEN
					W_CleTemp="S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J>:ENR_CONTRAT<6>:W_CODECATEGORIE
				END ELSE
					W_CleTemp="S":ENR_DETAILCALCUL<33,I>:W_TABACTIVITE<4,J>
				END
			END
			
			* SI REGROUPEMENT BUDGET,ON AJOUTE LE CODE REGROUPEMENT BUDGET
			IF W_REGRBUD = "1" AND W_ECLATEMENT # 1 THEN
				W_CleTemp=W_CleTemp:W_CODEREGRBUD
			END
			*PRINT "L542:  ":W_CleTemp
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CleTemp THEN
				ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
				IF ENR_DETAILCALCUL<34,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
					W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
					W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
				IF ENR_DETAILCALCUL<36,I>>=0 THEN
					ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
					W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
					W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END ELSE
				ENR_TEMPVENTILEDIT=""
				ENR_TEMPVENTILEDIT<1>=ENR_RUBSAISIE<1>
				IF ENR_DETAILCALCUL<34,I>>=0 THEN
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
					W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<2>=INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
					W_CUMBASEDONT=W_CUMBASEDONT+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
				IF ENR_DETAILCALCUL<36,I>>=0 THEN
					ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
					W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
				END ELSE
					ENR_TEMPVENTILEDIT<3>=INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
					W_CUMMONTDONT=W_CUMMONTDONT+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
				END
			END		
			
			WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CleTemp
			
			IF ENR_DETAILCALCUL<34,I>>=0 THEN
				W_CUMULSAISIEBASE=W_CUMULSAISIEBASE-INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				W_CUMULSAISIEBASE=W_CUMULSAISIEBASE-INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
				
			IF ENR_DETAILCALCUL<36,I>>=0 THEN
				W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000+1/2)
			END ELSE
				W_CUMULSAISIE=W_CUMULSAISIE-INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,J>/10000-1/2)
			END
			
			IF W_RUBSAISIEFORT="" THEN
				W_RUBSAISIEFORT<1>=W_CleTemp
				W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
			END ELSE
				IF W_RUBSAISIEFORT<2><ENR_TEMPVENTILEDIT<3> THEN
					W_RUBSAISIEFORT<1>=W_CleTemp
					W_RUBSAISIEFORT<2>=ENR_TEMPVENTILEDIT<3>
				END
			END
			
			* MAJ FICHIER SECTION ANALYTIQUE DISPO	
			K=1
			LOOP
			UNTIL ENR_SECTDISPO<K>=W_TABACTIVITE<4,J> OR ENR_SECTDISPO<K>="" DO
				K=K+1
			REPEAT
			IF ENR_SECTDISPO<K>="" THEN ENR_SECTDISPO<K>=W_TABACTIVITE<4,J>
		NEXT
		
		IF W_CUMULSAISIE<>0 THEN
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
			ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+W_CUMULSAISIE
			W_CUMMONTDONT=W_CUMMONTDONT+W_CUMULSAISIE
		END
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
		END
		
		IF W_CUMULSAISIEBASE<>0 THEN
			READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1> THEN	
				ENR_TEMPVENTILEDIT<2>=ENR_TEMPVENTILEDIT<2>+W_CUMULSAISIEBASE
				W_CUMBASEDONT=W_CUMBASEDONT+W_CUMULSAISIEBASE
			END
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_RUBSAISIEFORT<1>
		END
		
		I=I+1
	REPEAT

	FOR J=1 TO W_NBACTIVITEPOURC
		* MAJ BASE CUMUL
		IF W_ECLATEMENT = "4" THEN
			IF W_REGRBUD = "1" THEN
				W_CleTemp="BASE":W_TABACTIVITE<4,J>
			END ELSE
				W_CleTemp="BASE":W_TABACTIVITE<4,J>:ENR_CONTRAT<6>
			END
		END ELSE
			IF W_ECLATEMENT = "6" THEN
				W_CleTemp="BASE":W_TABACTIVITE<4,J>:ENR_CONTRAT<6>:W_CODECATEGORIE
			END ELSE
				W_CleTemp="BASE":W_TABACTIVITE<4,J>
			END			
		END
		
		IF W_REGRBUD = "1" AND W_ECLATEMENT # 1 THEN
			W_CleTemp=W_CleTemp:W_CODEREGRBUD
		END
		READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,W_CleTemp ELSE ENR_TEMPVENTILEDIT=""
		ENR_TEMPVENTILEDIT<3>=ENR_TEMPVENTILEDIT<3>+INT(ENR_DETAILCALCUL<15>*W_TABACTIVITE<3,J>/10000+1/2)
		ENR_TEMPVENTILEDIT<4>=ENR_TEMPVENTILEDIT<4>+INT(ENR_DETAILCALCUL<16>*W_TABACTIVITE<3,J>/10000+1/2)
		ENR_TEMPVENTILEDIT<5>=ENR_TEMPVENTILEDIT<5>+INT(ENR_DETAILCALCUL<21>*W_TABACTIVITE<3,J>/10000+1/2)
		WRITE ENR_TEMPVENTILEDIT ON F.TEMPVENTILEDIT,W_CleTemp			
	NEXT

RETURN
* fin didier

***************************************************
* REGROUPE PROD. + ADM. SI CHOIX SANS ECLATEMENT
***************************************************
10 *

FOR W_PER = W_PERIODE TO W_PERIODEFIN

	IF W_PER[5,2] = "13" THEN
		W_PER=W_PER[1,4]+1:"01"
	END

	ENR_CUMULS=""
	ENR_CUMULS2=""
	ENR_CUMULSGLOB=""
	W_PROD=0
	W_ADM=0

	READ ENR_CUMULS FROM F.TEMPVENTILEDIT,W_PER:W_CODEENTITE:W_TYPEACT:"P" THEN
		W_PROD=1
	END ELSE
		W_PROD=0
	END

	READ ENR_CUMULS2 FROM F.TEMPVENTILEDIT,W_PER:W_CODEENTITE:W_TYPEACT:"A" THEN
		W_ADM=1
	END ELSE
		W_ADM=0
	END

	* SI ADM ET PAS PROD.
	IF W_PROD=0 AND W_ADM=1 THEN
		WRITE ENR_CUMULS2 ON F.TEMPVENTILEDIT,W_PER:W_CODEENTITE:W_TYPEACT:"S" 	
	END

	* SI PAS ADM ET PROD.
	IF W_PROD=1 AND W_ADM=0 THEN
		WRITE ENR_CUMULS ON F.TEMPVENTILEDIT,W_PER:W_CODEENTITE:W_TYPEACT:"S" 	
	END

	* SI ADM ET PROD.
	IF W_PROD=1 AND W_ADM=1 THEN
		* AFFECTE TOUS LES CUMULS PROD. DANS GLOBAL
		ENR_CUMULSGLOB=ENR_CUMULS
		
		ENR_CUMULSGLOB<8,3>=ENR_CUMULSGLOB<8,3>+ENR_CUMULS2<8,3>
		ENR_CUMULSGLOB<8,4>=ENR_CUMULSGLOB<8,4>+ENR_CUMULS2<8,4>
		ENR_CUMULSGLOB<9>=ENR_CUMULSGLOB<9>+ENR_CUMULS2<9>
		ENR_CUMULSGLOB<10>=ENR_CUMULSGLOB<10>+ENR_CUMULS2<10>
		ENR_CUMULSGLOB<13>=ENR_CUMULSGLOB<13>+ENR_CUMULS2<13>
		
		* CUMULE LES RUB. SAISIE
		GOSUB 11
		
		* CUMULE LES RUB. SAISIE "DONT"
		GOSUB 12
		
		* CUMULE LES RUB. CHARGE
		GOSUB 13
		
		* CUMULE LES RUB. AP. CHARGE
		GOSUB 14
		
		* CUMULE LES RUB. AP. CHARGE "DONT"
		GOSUB 15		
		
		* ECRITURE DES DONNEES
		GOSUB 20
	END
NEXT W_PER

RETURN 

***************************************************
* CUMULE LES RUBRIQUES DE SAISIE
***************************************************
11 *

* PARCOURS TOUTES LES RUBRIQUES ADM.
J=1
LOOP
UNTIL ENR_CUMULS2<6,1,J>="" DO

	* RECHERCHE SI RUB. EXISTE
	K=1
	LOOP 
	UNTIL ENR_CUMULSGLOB<6,1,K>=ENR_CUMULS2<6,1,J> OR ENR_CUMULSGLOB<6,1,K>="" DO
		K=K+1
	REPEAT

	IF ENR_CUMULSGLOB<6,1,K>="" THEN
		ENR_CUMULSGLOB<6,1,K>=ENR_CUMULS2<6,1,J>
		ENR_CUMULSGLOB<6,2,K>=ENR_CUMULS2<6,2,J>
	END

	ENR_CUMULSGLOB<6,3,K>=ENR_CUMULSGLOB<6,3,K>+ENR_CUMULS2<6,3,J>
	ENR_CUMULSGLOB<6,4,K>=ENR_CUMULSGLOB<6,4,K>+ENR_CUMULS2<6,4,J>	

	J=J+1
   REPEAT

RETURN

***************************************************
* CUMULE LES RUBRIQUES DE SAISIE
***************************************************
12 *

* PARCOURS TOUTES LES RUBRIQUES ADM.
J=1
LOOP
UNTIL ENR_CUMULS2<7,1,J>="" DO

	* RECHERCHE SI RUB. EXISTE
	K=1
	LOOP 
	UNTIL ENR_CUMULSGLOB<7,1,K>=ENR_CUMULS2<7,1,J> OR ENR_CUMULSGLOB<7,1,K>="" DO
		K=K+1
	REPEAT

	IF ENR_CUMULSGLOB<7,1,K>="" THEN
		ENR_CUMULSGLOB<7,1,K>=ENR_CUMULS2<7,1,J>
		ENR_CUMULSGLOB<7,2,K>=ENR_CUMULS2<7,2,J>
	END

	ENR_CUMULSGLOB<7,3,K>=ENR_CUMULSGLOB<7,3,K>+ENR_CUMULS2<7,3,J>
	ENR_CUMULSGLOB<7,4,K>=ENR_CUMULSGLOB<7,4,K>+ENR_CUMULS2<7,4,J>	
	J=J+1
REPEAT

RETURN

***************************************************
* CUMULE LES RUBRIQUES DE CHARGES
***************************************************
13 *

* PARCOURS TOUTES LES RUBRIQUES ADM.
J=1
LOOP
UNTIL ENR_CUMULS2<14,1,J>="" DO

	* RECHERCHE SI RUB. EXISTE
	K=1
	LOOP 
	UNTIL ENR_CUMULSGLOB<14,1,K>=ENR_CUMULS2<14,1,J> OR ENR_CUMULSGLOB<14,1,K>="" DO
		K=K+1
	REPEAT

	IF ENR_CUMULSGLOB<14,1,K>="" THEN
		ENR_CUMULSGLOB<14,1,K>=ENR_CUMULS2<14,1,J>
		ENR_CUMULSGLOB<14,2,K>=ENR_CUMULS2<14,2,J>
	END

	ENR_CUMULSGLOB<14,3,K>=ENR_CUMULSGLOB<14,3,K>+ENR_CUMULS2<14,3,J>
	ENR_CUMULSGLOB<14,6,K>=ENR_CUMULS2<14,6,J>	
	ENR_CUMULSGLOB<14,7,K>=ENR_CUMULSGLOB<14,7,K>+ENR_CUMULS2<14,7,J>
	ENR_CUMULSGLOB<14,4,K>=ENR_CUMULS2<14,4,J>	
	ENR_CUMULSGLOB<14,5,K>=ENR_CUMULSGLOB<14,5,K>+ENR_CUMULS2<14,5,J>
	ENR_CUMULSGLOB<14,8,K>=ENR_CUMULS2<14,8,J>	
	ENR_CUMULSGLOB<14,9,K>=ENR_CUMULSGLOB<14,9,K>+ENR_CUMULS2<14,9,J>

	J=J+1
REPEAT

RETURN

***************************************************
* CUMULE LES RUBRIQUES APRES CHARGES
***************************************************
14 *

* PARCOURS TOUTES LES RUBRIQUES ADM.
J=1
LOOP
UNTIL ENR_CUMULS2<11,1,J>="" DO

	* RECHERCHE SI RUB. EXISTE
	K=1
	LOOP 
	UNTIL ENR_CUMULSGLOB<11,1,K>=ENR_CUMULS2<11,1,J> OR ENR_CUMULSGLOB<11,1,K>="" DO
		K=K+1
	REPEAT

	IF ENR_CUMULSGLOB<11,1,K>="" THEN
		ENR_CUMULSGLOB<11,1,K>=ENR_CUMULS2<11,1,J>
		ENR_CUMULSGLOB<11,2,K>=ENR_CUMULS2<11,2,J>
	END

	ENR_CUMULSGLOB<11,3,K>=ENR_CUMULSGLOB<11,3,K>+ENR_CUMULS2<11,3,J>
	ENR_CUMULSGLOB<11,4,K>=ENR_CUMULSGLOB<11,4,K>+ENR_CUMULS2<11,4,J>	

	J=J+1
REPEAT

RETURN

***************************************************
* CUMULE LES RUBRIQUES DE SAISIE
***************************************************
15 *

* PARCOURS TOUTES LES RUBRIQUES ADM.
J=1
LOOP
UNTIL ENR_CUMULS2<12,1,J>="" DO

	* RECHERCHE SI RUB. EXISTE
	K=1
	LOOP 
	UNTIL ENR_CUMULSGLOB<12,1,K>=ENR_CUMULS2<12,1,J> OR ENR_CUMULSGLOB<12,1,K>="" DO
		K=K+1
	REPEAT

	IF ENR_CUMULSGLOB<12,1,K>="" THEN
		ENR_CUMULSGLOB<12,1,K>=ENR_CUMULS2<12,1,J>
		ENR_CUMULSGLOB<12,2,K>=ENR_CUMULS2<12,2,J>
	END

	ENR_CUMULSGLOB<12,3,K>=ENR_CUMULSGLOB<12,3,K>+ENR_CUMULS2<12,3,J>
	ENR_CUMULSGLOB<12,4,K>=ENR_CUMULSGLOB<12,4,K>+ENR_CUMULS2<12,4,J>	

	J=J+1
REPEAT

RETURN

***************************************************
* ECRITURE DES DONNEES
***************************************************
20 *

WRITE ENR_CUMULSGLOB ON F.TEMPVENTILEDIT,W_PER:W_CODEENTITE:W_TYPEACT:"S"

RETURN

***************************************************
* ECRITURE DES DONNEES
***************************************************
100 *

FOR X=1 TO DCOUNT(W_RUBSAISIECODE,CHAR(253))
	W_TABDYN = ""
	IF W_ECLATEMENT="2" OR W_ECLATEMENT="5" THEN
		IF W_ECLATEMENT="2" THEN
			W_CODEVENTIL=W_SAUVEPER:W_CODEENTITE:W_TYPEACT:W_TYPEPERSONNEL
		END ELSE
			IF W_REGRBUD = "1" THEN	
				IF W_RUBSAISIECODE<1,X> = "" THEN CONTINUE
				W_CODEREGRBUD = X[LEN(X)-1,2]
				W_CODECAT = CHAR((X[1,LEN(X)-2])+64)
				W_CODEVENTIL=W_SAUVEPER:W_CODEENTITE:W_TYPEACT:W_TYPEPERSONNEL:W_CODECAT:W_CODEREGRBUD
			END ELSE
				W_CODECAT = CHAR((X)+64)
				W_CODEVENTIL=W_SAUVEPER:W_CODEENTITE:W_TYPEACT:W_TYPEPERSONNEL:W_CODECAT
			END
		END
	END ELSE
		W_CODEVENTIL=W_SAUVEPER:W_CODEENTITE:W_TYPEACT:W_TYPEPERSONNEL:W_SECTEUR
	END

	W_TABDYN=REPLACE(W_TABDYN,1;ENR_ASSOCIATION<1>)
	W_TABDYN=REPLACE(W_TABDYN,2;ENR_ASSOCIATION<3>:" ":ENR_ASSOCIATION<4>:" ":ENR_ASSOCIATION<5>:" ":ENR_ASSOCIATION<6>)
	W_TABDYN=REPLACE(W_TABDYN,3;ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>)
	W_TABDYN=REPLACE(W_TABDYN,4;W_TYPEPERSONNEL)

	IF W_ECLATEMENT#"5" THEN
		W_TABDYN=REPLACE(W_TABDYN,5;W_SECTEUR)
	END ELSE
		W_TABDYN=REPLACE(W_TABDYN,5;W_CODECAT)
	END	

* ECRITURE RUBRIQUE DE SAISIE
	W_TABDYN=REPLACE(W_TABDYN,6,1;W_RUBSAISIECODE<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,6,2;W_RUBSAISIELIB<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,6,3;W_RUBSAISIEBASE<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,6,4;W_RUBSAISIEMONT<1,X>)

* ECRITURE RUBRIQUE DE SAISIE "DONT"
	IF W_ECLATEMENT # "5" THEN 
	W_TABDYN=REPLACE(W_TABDYN,7;W_RUBSAISIEDONT<X>)
		W_RUBSAISIEDONT=""
	END ELSE
	W_TABDYN=REPLACE(W_TABDYN,7,1;W_RUBSAISIEDONT<X,1>)
	W_TABDYN=REPLACE(W_TABDYN,7,2;W_RUBSAISIEDONT<X,2>)
	W_TABDYN=REPLACE(W_TABDYN,7,3;W_RUBSAISIEDONT<X,3>)
	W_TABDYN=REPLACE(W_TABDYN,7,4;W_RUBSAISIEDONT<X,4>)
	END

* ECRITURE TOTAL BRUT, NET IMPOSABLE, NET A PAYER
	W_TABDYN=REPLACE(W_TABDYN,8,3;W_BRUTACQUISBASE<X>)
	W_TABDYN=REPLACE(W_TABDYN,8,4;W_BRUTACQUISMONT<X>)
	W_TABDYN=REPLACE(W_TABDYN,9;W_NETIMPOSABLE<X>)
	W_TABDYN=REPLACE(W_TABDYN,10;W_NETAPAYER<X>)

* ECRITURE RUBRIQUE APRES CHARGE
	W_TABDYN=REPLACE(W_TABDYN,11,1;W_RUBSAISIEAPCODE<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,11,2;W_RUBSAISIEAPLIB<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,11,3;W_RUBSAISIEAPBASE<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,11,4;W_RUBSAISIEAPMONT<1,X>)

* ECRITURE RUBRIQUE DE SAISIE "DONT"
	IF W_ECLATEMENT # "5" THEN 
	W_TABDYN=REPLACE(W_TABDYN,12;W_RUBAPSAISIEDONT<X>)
		W_RUBAPSAISIEDONT=""
	END ELSE
	W_TABDYN=REPLACE(W_TABDYN,12,1;W_RUBAPSAISIEDONT<X,1>)
	W_TABDYN=REPLACE(W_TABDYN,12,2;W_RUBAPSAISIEDONT<X,2>)
	W_TABDYN=REPLACE(W_TABDYN,12,3;W_RUBAPSAISIEDONT<X,3>)
	W_TABDYN=REPLACE(W_TABDYN,12,4;W_RUBAPSAISIEDONT<X,4>)
	END

* ECRITURE MONTANT A PAYER
	W_TABDYN=REPLACE(W_TABDYN,13;W_MONTANTAPAYER<X>)

* ECRITURE RUBRIQUE DE CHARGE
	W_TABDYN=REPLACE(W_TABDYN,14,1;W_RUBCHARGECODE<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,2;W_RUBCHARGELIB<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,3;W_RUBCHARGEBASE<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,4;W_RUBCHARGETAUXPAT<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,5;W_RUBCHARGEMONTPAT<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,6;W_RUBCHARGETAUXSAL<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,7;W_RUBCHARGEMONTSAL<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,8;W_RUBCHARGETOTALTAUX<1,X>)
	W_TABDYN=REPLACE(W_TABDYN,14,9;W_RUBCHARGETOTALMONT<1,X>)

* Didier le 20/04/2009 - ajout test sur W_TABDYN<6>
	IF (W_TABDYN<10> # "" AND W_TABDYN<10> # "0") AND (W_TABDYN<9> # "" AND W_TABDYN<9> # "0") THEN 
	        WRITE W_TABDYN ON F.TEMPVENTILEDIT,W_CODEVENTIL
		IF W_ECLATEMENT="5" THEN 
			IF W_TYPEPERSONNEL="P" THEN
				W_RUBACTIVITE<X,1>="X"
			END ELSE
				W_RUBACTIVITE<X,2>="X"
			END
		END
	END ELSE
		IF W_TABDYN<6,1> # "" THEN	
	        	WRITE W_TABDYN ON F.TEMPVENTILEDIT,W_CODEVENTIL
			IF W_ECLATEMENT="5" THEN 
				IF W_TYPEPERSONNEL="P" THEN
					W_RUBACTIVITE<X,1>="X"
				END ELSE
					W_RUBACTIVITE<X,2>="X"
				END
			END
		END

        END	
NEXT X

RETURN

***************************************************
* AFFECTATION DES DONNEES
***************************************************
200 *

	IF W_ECLATEMENT # "5" AND W_REGRBUD # "1" THEN 
		W_RANGCATEGORIE = 1
	END ELSE
		IF W_REGRBUD = "1" THEN
			W_RANGCATEGORIE = W_RANGCATEGORIE:W_CODEREGRBUD
		END
	END

* PARTIE CONCERNANT LES RUBRIQUES DE SAISIE
	I=1
	W_RANG=1

	LOOP
	UNTIL ENR_DETAILCALCUL<2,I>="" DO
		GOSUB 300
		READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE STOP "ERREUR RUBSAISIE1 ":ENR_RUBSAISIE<0>

		W_RUBSAISIECODE=REPLACE(W_RUBSAISIECODE,1,W_RANGCATEGORIE,W_RANG;ENR_DETAILCALCUL<2,I>)
		W_RUBSAISIELIB=REPLACE(W_RUBSAISIELIB,1,W_RANGCATEGORIE,W_RANG;ENR_RUBSAISIE<1>)
		W_RUBSAISIEBASE=REPLACE(W_RUBSAISIEBASE,1,W_RANGCATEGORIE,W_RANG;W_RUBSAISIEBASE<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<3,I>/100))
		W_RUBSAISIEMONT=REPLACE(W_RUBSAISIEMONT,1,W_RANGCATEGORIE,W_RANG;W_RUBSAISIEMONT<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<5,I>/100))
		W_RANG=W_RANG+1
		I=I+1
	REPEAT

* PARTIE CONCERNANT LE BRUT ACQUIS
	W_BRUTACQUISBASE<W_RANGCATEGORIE>=W_BRUTACQUISBASE<W_RANGCATEGORIE>+(ENR_DETAILCALCUL<6>/100)
	W_BRUTACQUISMONT<W_RANGCATEGORIE>=W_BRUTACQUISMONT<W_RANGCATEGORIE>+(ENR_DETAILCALCUL<7>/100)

* PARTIE CONCERNANT LE NET IMPOSABLE,NET A PAYER
	W_NETIMPOSABLE<W_RANGCATEGORIE>=W_NETIMPOSABLE<W_RANGCATEGORIE>+(ENR_DETAILCALCUL<15>/100)
	W_NETAPAYER<W_RANGCATEGORIE>=W_NETAPAYER<W_RANGCATEGORIE>+(ENR_DETAILCALCUL<16>/100)

* PARTIE CONCERNANT LES RUBRIQUES APRES CHARGES
	I=1
	W_RANG=1
	LOOP
	UNTIL ENR_DETAILCALCUL<17,I>="" DO
		GOSUB 301
		READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,I> ELSE 
			*PRINT "ERREUR RUBSAISIE2 ":ENR_RUBSAISIE<0>
			STOP
		END
		W_RUBSAISIEAPCODE=REPLACE(W_RUBSAISIEAPCODE,1,W_RANGCATEGORIE,W_RANG;ENR_DETAILCALCUL<17,I>)
		W_RUBSAISIEAPLIB=REPLACE(W_RUBSAISIEAPLIB,1,W_RANGCATEGORIE,W_RANG;ENR_RUBSAISIE<1>)
		W_RUBSAISIEAPBASE=REPLACE(W_RUBSAISIEAPBASE,1,W_RANGCATEGORIE,W_RANG;W_RUBSAISIEAPBASE<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<18,I>/100))
		W_RUBSAISIEAPMONT=REPLACE(W_RUBSAISIEAPMONT,1,W_RANGCATEGORIE,W_RANG;W_RUBSAISIEAPMONT<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<20,I>/100))
		W_RANG=W_RANG+1
		I=I+1
	REPEAT

* PARTIE CONCERNANT LE MONTANT A PAYER
	W_MONTANTAPAYER<W_RANGCATEGORIE>=W_MONTANTAPAYER<W_RANGCATEGORIE>+(ENR_DETAILCALCUL<21>/100)

* PARTIE CONCERNANT LES RUBRIQUES DE CHARGES
	I=1
	W_RANG=1
	LOOP
	UNTIL ENR_DETAILCALCUL<8,I>="" DO
		GOSUB 302
		READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,I> ELSE STOP "ERREUR RUBCHARGE ":ENR_RUBCHARGE<0>

		W_RUBCHARGECODE=REPLACE(W_RUBCHARGECODE,1,W_RANGCATEGORIE,W_RANG;ENR_DETAILCALCUL<8,I>)
		W_RUBCHARGELIB=REPLACE(W_RUBCHARGELIB,1,W_RANGCATEGORIE,W_RANG;ENR_RUBCHARGE<1>)
		IF ENR_DETAILCALCUL<9,I><>"" AND ENR_DETAILCALCUL<9,I><>"0" THEN
			W_RUBCHARGEBASE=REPLACE(W_RUBCHARGEBASE,1,W_RANGCATEGORIE,W_RANG;W_RUBCHARGEBASE<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<9,I>/100))
		END ELSE
			W_RUBCHARGEBASE=REPLACE(W_RUBCHARGEBASE,1,W_RANGCATEGORIE,W_RANG;W_RUBCHARGEBASE<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<12,I>/100))
		END
		W_RUBCHARGETAUXPAT=REPLACE(W_RUBCHARGETAUXPAT,1,W_RANGCATEGORIE,W_RANG;ENR_DETAILCALCUL<13,I>/1000)
		W_RUBCHARGEMONTPAT=REPLACE(W_RUBCHARGEMONTPAT,1,W_RANGCATEGORIE,W_RANG;W_RUBCHARGEMONTPAT<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<14,I>/100))
		W_RUBCHARGETAUXSAL=REPLACE(W_RUBCHARGETAUXSAL,1,W_RANGCATEGORIE,W_RANG;ENR_DETAILCALCUL<10,I>/1000)
		W_RUBCHARGEMONTSAL=REPLACE(W_RUBCHARGEMONTSAL,1,W_RANGCATEGORIE,W_RANG;W_RUBCHARGEMONTSAL<1,W_RANGCATEGORIE,W_RANG>+(ENR_DETAILCALCUL<11,I>/100))
		W_TOTALTAUX<W_RANGCATEGORIE>=(W_RUBCHARGETAUXPAT<1,W_RANGCATEGORIE,W_RANG>+W_RUBCHARGETAUXSAL<1,W_RANGCATEGORIE,W_RANG>)
		W_TOTALMONT<W_RANGCATEGORIE>=(W_RUBCHARGEMONTPAT<1,W_RANGCATEGORIE,W_RANG>-W_RUBCHARGEMONTSAL<1,W_RANGCATEGORIE,W_RANG>)
		W_RUBCHARGETOTALTAUX=REPLACE(W_RUBCHARGETOTALTAUX,1,W_RANGCATEGORIE,W_RANG;W_TOTALTAUX<W_RANGCATEGORIE>)
		W_RUBCHARGETOTALMONT=REPLACE(W_RUBCHARGETOTALMONT,1,W_RANGCATEGORIE,W_RANG;W_TOTALMONT<W_RANGCATEGORIE>)
		W_RANG=W_RANG+1
		I=I+1
	REPEAT
RETURN


***************************************************
* AFFECTATION DES HEURES A LA MATRICE (SI PROD.)
***************************************************
210 *
	I=1
	W_RANG=1

	LOOP
	UNTIL W_TABACTIVITE<1,I>="" DO

		READ ENR_RUBSAISIE FROM F.RUBSAISIE,W_TABACTIVITE<2,I,1> ELSE 
			*PRINT "ERREUR RUBSAISIE3 ":W_TABACTIVITE<2,I,1>
			STOP
		END
		
		GOSUB 310
		
		W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,1;W_TABACTIVITE<1,I>)
		W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,2;W_TABACTIVITE<2,I,1>)
		W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,3;ENR_RUBSAISIE<1>)
		W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,4;W_SECTIONANAL<1,I,4>+W_TABACTIVITE<2,I,2>)
		W_SECTIONANAL=REPLACE(W_SECTIONANAL,1,W_RANG,5;W_SECTIONANAL<1,I,5>+W_TABACTIVITE<2,I,3>)
		
		I=I+1
	REPEAT

RETURN

***************************************************
* AFFECTATION DES DONNEES: ATT. 6,7,15,16,21
***************************************************
240 *
	
	W_NBACTIVITE=DCOUNT(W_TABACTIVITE<1>,CHAR(253))

	W_TOTALECLATBASE=0
	W_TOTALECLATMONT=0
	W_TOTALECLATMONTIMP=0
	W_TOTALECLATNETPAYER=0
	W_TOTALECLATMONTPAYER=0
	W_ECLATDETAIL=""

	FOR I=1 TO W_NBACTIVITE
		GOSUB 360
		
		W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,1,W_RANGAFFECT;W_TABACTIVITE<1,I>)
		* BASE + MONTANT BRUT
		W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,2,W_RANGAFFECT,1;W_ECLATDETAIL<2,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<6>*W_TABACTIVITE<3,I>/10000+1/2))
		W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,3,W_RANGAFFECT,1;W_ECLATDETAIL<3,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<7>*W_TABACTIVITE<3,I>/10000+1/2))
		* MONTANT IMPOSABLE
		W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,4,W_RANGAFFECT,1;W_ECLATDETAIL<4,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<15>*W_TABACTIVITE<3,I>/10000+1/2))
		* NET A PAYER
		W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,5,W_RANGAFFECT,1;W_ECLATDETAIL<5,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<16>*W_TABACTIVITE<3,I>/10000+1/2))
		* MONTANT A PAYER
		W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,6,W_RANGAFFECT,1;W_ECLATDETAIL<6,W_RANGAFFECT,1>+INT(ENR_DETAILCALCUL<21>*W_TABACTIVITE<3,I>/10000+1/2))
		
		* BASE + MONTANT BRUT
		W_TOTALECLATBASE=W_TOTALECLATBASE+W_ECLATDETAIL<2,W_RANGAFFECT,1>
		W_TOTALECLATMONT=W_TOTALECLATMONT+W_ECLATDETAIL<3,W_RANGAFFECT,1>
		* MONTANT IMPOSABLE
		W_TOTALECLATMONTIMP=W_TOTALECLATMONTIMP+W_ECLATDETAIL<4,W_RANGAFFECT,1>
		* NET A PAYER
		W_TOTALECLATNETPAYER=W_TOTALECLATNETPAYER+W_ECLATDETAIL<5,W_RANGAFFECT,1>
		* MONTANT A PAYER
		W_TOTALECLATMONTPAYER=W_TOTALECLATMONTPAYER+W_ECLATDETAIL<6,W_RANGAFFECT,1>
		
	NEXT

	* SI TOTAL#BASE BRUT
	IF W_TOTALECLATBASE#ENR_DETAILCALCUL<6> THEN
		IF W_TOTALECLATBASE<ENR_DETAILCALCUL<6> THEN
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,2,W_RANGPLUSFORT,1;W_ECLATDETAIL<2,W_RANGPLUSFORT,1>-(W_TOTALECLATBASE-ENR_DETAILCALCUL<6>))
		END ELSE
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,2,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<2,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATBASE-ENR_DETAILCALCUL<6>))
		END
	END

	* SI TOTAL#MONT BRUT
	IF W_TOTALECLATMONT#ENR_DETAILCALCUL<7> THEN
		IF W_TOTALECLATMONT<ENR_DETAILCALCUL<7> THEN
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,3,W_RANGPLUSFORT,1;W_ECLATDETAIL<3,W_RANGPLUSFORT,1>-(W_TOTALECLATMONT-ENR_DETAILCALCUL<7>))
		END ELSE
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,3,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<3,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATMONT-ENR_DETAILCALCUL<7>))
		END
	END

	* SI TOTAL#MONT IMP
	IF W_TOTALECLATMONTIMP#ENR_DETAILCALCUL<15> THEN
		IF W_TOTALECLATMONTIMP<ENR_DETAILCALCUL<15> THEN
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,4,W_RANGPLUSFORT,1;W_ECLATDETAIL<4,W_RANGPLUSFORT,1>-(W_TOTALECLATMONTIMP-ENR_DETAILCALCUL<15>))
		END ELSE
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,4,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<4,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATMONTIMP-ENR_DETAILCALCUL<15>))
		END
	END

	* SI TOTAL#NET A PAYER
	IF W_TOTALECLATNETPAYER#ENR_DETAILCALCUL<16> THEN
		IF W_TOTALECLATNETPAYER<ENR_DETAILCALCUL<16> THEN
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,5,W_RANGPLUSFORT,1;W_ECLATDETAIL<5,W_RANGPLUSFORT,1>-(W_TOTALECLATNETPAYER-ENR_DETAILCALCUL<16>))
		END ELSE
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,5,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<5,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATNETPAYER-ENR_DETAILCALCUL<16>))
		END
	END

	* SI TOTAL#MONT PAYER
	IF W_TOTALECLATMONTPAYER#ENR_DETAILCALCUL<21> THEN
		IF W_TOTALECLATMONTPAYER<ENR_DETAILCALCUL<21> THEN
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,6,W_RANGPLUSFORT,1;W_ECLATDETAIL<6,W_RANGPLUSFORT,1>-(W_TOTALECLATMONTPAYER-ENR_DETAILCALCUL<21>))
		END ELSE
			W_ECLATDETAIL=REPLACE(W_ECLATDETAIL,6,W_RANGPLUSFAIBLE,1;W_ECLATDETAIL<6,W_RANGPLUSFAIBLE,1>-(W_TOTALECLATMONTPAYER-ENR_DETAILCALCUL<21>))
		END
	END

	GOSUB 503

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA
***************************************************
300 J=1
	LOOP 
	UNTIL ENR_DETAILCALCUL<2,I>=W_RUBSAISIECODE<1,W_RANGCATEGORIE,J> OR W_RUBSAISIECODE<1,W_RANGCATEGORIE,J>="" DO
		J=J+1
	REPEAT

	W_RANG=J
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE APRES CHG EXISTE DEJA
***************************************************
301 J=1
	LOOP 
	UNTIL ENR_DETAILCALCUL<17,I>=W_RUBSAISIEAPCODE<1,W_RANGCATEGORIE,J> OR W_RUBSAISIEAPCODE<1,W_RANGCATEGORIE,J>="" DO
		J=J+1
	REPEAT

	W_RANG=J
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE CHARGE EXISTE DEJA
***************************************************
302 J=1
	LOOP 
	UNTIL ENR_DETAILCALCUL<8,I>=W_RUBCHARGECODE<1,W_RANGCATEGORIE,J> OR W_RUBCHARGECODE<1,W_RANGCATEGORIE,J>="" DO
		J=J+1
	REPEAT

	W_RANG=J
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE SAISIE EXISTE DEJA (SUB 210)
***************************************************
310 K=1
	LOOP 
	UNTIL W_TABACTIVITE<2,I,1>=W_SECTIONANAL<1,K,2> AND W_TABACTIVITE<1,I>=W_SECTIONANAL<1,K,1> OR W_SECTIONANAL<1,K,2>="" DO
		K=K+1
	REPEAT

	IF W_SECTIONANAL<1,K,2>#"" THEN
		W_RANG=K
	END ELSE
		W_RANG=K
	END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE AP. CHARGE EXISTE DEJA (SUB 211)
***************************************************
313 K=1
	LOOP 
	UNTIL ENR_DETAILCALCUL<17,I>=W_SECTIONANALAPCHARGE<K,1,2> OR W_SECTIONANALAPCHARGE<K,1,2>="" DO
		K=K+1
	REPEAT

	IF W_SECTIONANALAPCHARGE<K,1,2>#"" THEN
		W_RANG=K
	END ELSE
		W_RANG=K
	END
RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE AP. CHARGE EXISTE DEJA (SUB 212)
***************************************************
3131 K=1
	LOOP 
	UNTIL ENR_RUBSAISIE<0>=W_SECTIONANALAPCHARGE<K,1,2> OR W_SECTIONANALAPCHARGE<K,1,2>="" DO
		K=K+1
	REPEAT

	IF W_SECTIONANALAPCHARGE<K,1,2>#"" THEN
		W_RANG=K
	END ELSE
		W_RANG=K
	END
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. SAISIE)
***************************************************
320 *

	K=2
	
	LOOP 
 	UNTIL W_REGROUPBRUT<1,K>=W_SECTIONANAL<I,J,1> OR W_REGROUPBRUT<1,K>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI RUB. SAISIE DEJA AFFECTEE
***************************************************
321 *

	K=2
	
	LOOP 
	UNTIL W_REGROUPBRUT<K,1>=W_SECTIONANAL<I,J,2> OR W_REGROUPBRUT<K,1>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. CHARGE)
***************************************************
330 *

	K=2
	
	LOOP 
 	UNTIL W_REGROUPCHARGE<1,K>=W_SECTIONANALCHARGE<I,J,1> OR W_REGROUPCHARGE<1,K>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI RUB. CHARGE DEJA AFFECTEE
***************************************************
331 *

	K=2
	
	LOOP 
 	UNTIL W_REGROUPCHARGE<K,1>=W_SECTIONANALCHARGE<I,J,2> OR W_REGROUPCHARGE<K,1>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (RUB. AP. CHARGE)
***************************************************
340 *

	K=2
	
	LOOP 
	UNTIL W_REGROUPAPCHARGE<1,K>=W_SECTIONANALAPCHARGE<I,J,1> OR W_REGROUPAPCHARGE<1,K>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI RUB. AP. CHARGE DEJA AFFECTEE
***************************************************
341 *

	K=2
	
	LOOP 
 	UNTIL W_REGROUPAPCHARGE<K,1>=W_SECTIONANALAPCHARGE<I,J,2> OR W_REGROUPAPCHARGE<K,1>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (ATT 6+7+15+16+21)
***************************************************
350 *

	K=1
	
	LOOP 
 	UNTIL W_REGROUPECLAT<1,K>=W_ECLATDETAIL<1,J,1> OR W_REGROUPECLAT<1,K>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* RECHERCHE SI ACTIVITE DEJA AFFECTEE (SUB 240)
***************************************************
360 *

	K=1
  
	LOOP 
	UNTIL W_ECLATDETAIL<1,K>=W_TABACTIVITE<1,I> OR W_ECLATDETAIL<1,K>="" DO
		K=K+1
	REPEAT

	W_RANGAFFECT=K
RETURN

***************************************************
* CALCUL DE LA SOMME DES HEURES
***************************************************
400 *
	I=1

	LOOP 
	UNTIL W_TABACTIVITE<1,I>=ENR_DETAILCALCUL<26,X> OR W_TABACTIVITE<1,I>="" DO
		I=I+1
	REPEAT

	IF W_TABACTIVITE<1,I>="" THEN
		W_TABACTIVITE=REPLACE(W_TABACTIVITE,1,I;ENR_DETAILCALCUL<26,X>)
	END 
	W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,1;ENR_DETAILCALCUL<24,X>)
	W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,2;W_TABACTIVITE<2,I,2>+ENR_DETAILCALCUL<25,X>)
	W_TABACTIVITE=REPLACE(W_TABACTIVITE,2,I,3;W_TABACTIVITE<2,I,3>+ENR_DETAILCALCUL<27,X>)

	W_TOTAL=W_TOTAL+ENR_DETAILCALCUL<25,X>

RETURN

***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI PROD.)
***************************************************
401 *
	I=1
   
	W_TOTALREPART=0
	W_REPARTPLUSFORT=""
	W_REPARTPLUSFAIBLE=""

	IF W_TOTAL#0 THEN
		W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,1,2>/W_TOTAL*10000+1/2))
	END ELSE
		W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;"0")
	END
	W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)

	LOOP 
	UNTIL W_TABACTIVITE<2,I,1>="" DO
		IF W_TOTAL#0 THEN W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,I;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
		* AFFECTE SECTION ANAL
		READ ENR_ACTIVITES FROM F.ACTIVITES,W_TABACTIVITE<1,I> THEN
			W_TABACTIVITE<4,I>=ENR_ACTIVITES<2>
		END
		
		W_TOTALREPART=W_TOTALREPART+W_TABACTIVITE<3,I>
		
		* STOCKE LE POURCENTAGE LE + FORT
		IF W_TOTAL#0 THEN
			IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)>W_REPARTPLUSFORT<1,1,1> THEN
				W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
				W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
			END
		END
		
			* STOCKE LE POURCENTAGE LE + FAIBLE
		IF W_TOTAL#0 THEN
			IF INT((W_TABACTIVITE<2,I,2>/W_TOTAL)*10000+1/2)<W_REPARTPLUSFAIBLE<1,1,1> THEN
				W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;INT(W_TABACTIVITE<2,I,2>/W_TOTAL*10000+1/2))
				W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
			END
		END
		I=I+1
	REPEAT

	IF W_TOTALREPART#10000 THEN
		IF W_TOTALREPART<10000 THEN
			W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
			W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>
			
			W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFORT;W_REPARTPLUSFORT<1,1,1>-(W_TOTALREPART-10000))
		END ELSE
			W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
			W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>
			
			W_TABACTIVITE=REPLACE(W_TABACTIVITE,3,W_RANGPLUSFAIBLE;W_REPARTPLUSFAIBLE<1,1,1>-(W_TOTALREPART-10000))
		END
	END ELSE
		W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
		W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>
	END

	IF W_TABACTIVITE<1,1>="" THEN
		READ ENR_SECTANAL FROM F.TABLES,"SECTANAL" ELSE ENR_SECTANAL=""
		W_TABACTIVITE<1,1>=ENR_SECTANAL<2,1>
		W_TABACTIVITE<3,1>="10000"
	END

RETURN

***************************************************
* CALCUL DU POURCENTAGE DE REPARTITION (SI ADM.)
***************************************************
402 *
	I=1

	W_TOTALREPART=0
	W_REPARTPLUSFORT=""
	W_REPARTPLUSFAIBLE=""
	W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
	W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;1)
	
	W_ENRC36 = ENR_CONTRAT<36>
	W_ENRC37 = ENR_CONTRAT<37>
	
	W_DATEHISTO = ICONV("01/":ENR_CONTRAT<104>[5,2]:"/":ENR_CONTRAT<104>[1,4],"D4/")
	IF W_DATEHISTO > W_PERIODECOURS THEN
		* RECHERCHE DANS L'HISTORIQUE
		IF ENR_CONTRAT<105> # "" THEN
			W_FINRECHHISTO="NON"
			I=1
			LOOP
			IF ENR_CONTRAT<105,I>="" THEN W_FINRECHHISTO="OUI"
			UNTIL W_FINRECHHISTO="OUI" DO	
				W_DATEHISTO = ICONV("01/":ENR_CONTRAT<105,I>[5,2]:"/":ENR_CONTRAT<105,I>[1,4],"D4/")
				IF W_DATEHISTO <= W_PERIODECOURS THEN
					ENR_CONTRAT<36> = ENR_CONTRAT<106,I>
					ENR_CONTRAT<37> = ENR_CONTRAT<107,I>
					ENR_CONTRAT<36> = CONVERT(CHAR(252),CHAR(253),ENR_CONTRAT<36>)
					ENR_CONTRAT<37> = CONVERT(CHAR(252),CHAR(253),ENR_CONTRAT<37>)
					W_FINRECHHISTO="OUI"
				END
				I=I+1
			REPEAT
		END
	END
	
	I=1
	LOOP 
		UNTIL ENR_CONTRAT<36,I>="" DO
		
		W_TABACTIVITE<1,I>=ENR_CONTRAT<36,I> 
		W_TABACTIVITE<3,I>=ENR_CONTRAT<37,I>
		
		* AFFECTE SECTION ANAL
		READ ENR_ACTIVITES FROM F.ACTIVITES,W_TABACTIVITE<1,I> THEN
 			W_TABACTIVITE<4,I>=ENR_ACTIVITES<2>
		END
		
		* STOCKE LE POURCENTAGE LE + FORT
		IF ENR_CONTRAT<37,I>>W_REPARTPLUSFORT<1,1> THEN
			W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,1;ENR_CONTRAT<37,I>)
			W_REPARTPLUSFORT=REPLACE(W_REPARTPLUSFORT,1,1,2;I)
 		END
		
		* STOCKE LE POURCENTAGE LE + FAIBLE
		IF ENR_CONTRAT<37,I><W_REPARTPLUSFAIBLE<1,1> THEN
			W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,1;ENR_CONTRAT<37,I>)
			W_REPARTPLUSFAIBLE=REPLACE(W_REPARTPLUSFAIBLE,1,1,2;I)
 		END
		I=I+1
	REPEAT

	W_RANGPLUSFORT=W_REPARTPLUSFORT<1,1,2>
	W_RANGPLUSFAIBLE=W_REPARTPLUSFAIBLE<1,1,2>

	IF W_TABACTIVITE<3,1>="" THEN
 		W_TABACTIVITE<3,1>="10000"
	END

	ENR_CONTRAT<36> = W_ENRC36 
	ENR_CONTRAT<37> = W_ENRC37 
	
	
RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (RUB. SAISIE)
***************************************************
500 *

	* COMPTE LE NOMBRE DE RUBRIQUE DE SAISIE
	W_NBRUBSAISIE=DCOUNT(W_SECTIONANAL,CHAR(254))

	FOR I=1 TO W_NBRUBSAISIE

		* COMPTE LE NOMBRE D'ACTIVITE
		W_NBACTIVITE=DCOUNT(W_SECTIONANAL<I>,CHAR(253))

		FOR J=1 TO W_NBACTIVITE	
		* VERIFICATION SI ACTIVITE DEJA AFFECTEE
		GOSUB 320

				* AFFECTATION DE L'ACTIVITE
			W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,1,K;W_SECTIONANAL<I,J,1>)

			W_RANGACT=K	

			* VERIFICATION SI RUBRIQUE DEJA AFFECTEE
			GOSUB 321

				* AFFECTATION DE LA RUBRIQUE - CODE
			W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,K,1;W_SECTIONANAL<I,J,2>)

			W_RANGRUB=K

			* BASE - MONTANT
			W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,W_RANGRUB,W_RANGACT,1;W_REGROUPBRUT<W_RANGRUB,W_RANGACT,1>+W_SECTIONANAL<I,J,4>)
			W_REGROUPBRUT=REPLACE(W_REGROUPBRUT,W_RANGRUB,W_RANGACT,2;W_REGROUPBRUT<W_RANGRUB,W_RANGACT,2>+W_SECTIONANAL<I,J,5>)
		NEXT 
	NEXT

RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (RUB. CHARGE)
***************************************************
501 *

	* COMPTE LE NOMBRE DE RUBRIQUE DE SAISIE
	W_NBRUBCHARGE=DCOUNT(W_SECTIONANALCHARGE,CHAR(254))

	FOR I=1 TO W_NBRUBCHARGE

		* COMPTE LE NOMBRE D'ACTIVITE
		W_NBACTIVITE=DCOUNT(W_SECTIONANALCHARGE<I>,CHAR(253))
		
		FOR J=1 TO W_NBACTIVITE	
			* VERIFICATION SI ACTIVITE DEJA AFFECTEE
			GOSUB 330
			
			* AFFECTATION DE L'ACTIVITE
			W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,1,K;W_SECTIONANALCHARGE<I,J,1>)
			W_RANGACT=K
			
			* VERIFICATION SI RUBRIQUE DEJA AFFECTEE
			GOSUB 331
			
			* AFFECTATION DE LA RUBRIQUE - CODE
			W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,K,1;W_SECTIONANALCHARGE<I,J,2>)
			
			W_RANGRUB=K
			
			* BASE 
			W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,1;W_REGROUPCHARGE<W_RANGRUB,W_RANGACT,1>+W_SECTIONANALCHARGE<I,J,4>)
			* TAUX - MONTANT PATRONAL
			W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,2;W_SECTIONANALCHARGE<I,J,5>)
			W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,3;W_REGROUPCHARGE<W_RANGRUB,W_RANGACT,3>+W_SECTIONANALCHARGE<I,J,6>)
			* TAUX - MONTANT SALARIAL
			W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,4;W_SECTIONANALCHARGE<I,J,7>)
			W_REGROUPCHARGE=REPLACE(W_REGROUPCHARGE,W_RANGRUB,W_RANGACT,5;W_REGROUPCHARGE<W_RANGRUB,W_RANGACT,5>+W_SECTIONANALCHARGE<I,J,8>)
		NEXT 
	NEXT

RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (RUB. AP. CHARGE)
***************************************************
502 *

	* COMPTE LE NOMBRE DE RUBRIQUE DE SAISIE APRES CHARGE
	W_NBRUBAPCHARGE=DCOUNT(W_SECTIONANALAPCHARGE,CHAR(254))

	FOR I=1 TO W_NBRUBAPCHARGE
		* COMPTE LE NOMBRE D'ACTIVITE
		W_NBACTIVITE=DCOUNT(W_SECTIONANALAPCHARGE<I>,CHAR(253))
		
		FOR J=1 TO W_NBACTIVITE	
			* VERIFICATION SI ACTIVITE DEJA AFFECTEE
			GOSUB 340
			
			* AFFECTATION DE L'ACTIVITE
			W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,1,K;W_SECTIONANALAPCHARGE<I,J,1>)
			
			W_RANGACT=K	
			
			* VERIFICATION SI RUBRIQUE DEJA AFFECTEE
			GOSUB 341
			
			* AFFECTATION DE LA RUBRIQUE - CODE
			W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,K,1;W_SECTIONANALAPCHARGE<I,J,2>)
			
			W_RANGRUB=K
			
			* BASE - MONTANT
			W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,W_RANGRUB,W_RANGACT,1;W_REGROUPAPCHARGE<W_RANGRUB,W_RANGACT,1>+W_SECTIONANALAPCHARGE<I,J,4>)
			W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,W_RANGRUB,W_RANGACT,2;W_REGROUPAPCHARGE<W_RANGRUB,W_RANGACT,2>+W_SECTIONANALAPCHARGE<I,J,5>)
			W_REGROUPAPCHARGE=REPLACE(W_REGROUPAPCHARGE,W_RANGRUB,W_RANGACT,3;W_REGROUPAPCHARGE<W_RANGRUB,W_RANGACT,3>+W_SECTIONANALAPCHARGE<I,J,6>)
		NEXT 
	NEXT

RETURN

***************************************************
* REGROUPE LES ACTIVITES ENSEMBLES (ATT 6+7+15+16+21)
***************************************************
503 *

	* COMPTE LE NOMBRE D'ACTIVITE
	W_NBACTIVITE=DCOUNT(W_ECLATDETAIL<1>,CHAR(253))

	FOR J=1 TO W_NBACTIVITE	
		* VERIFICATION SI ACTIVITE DEJA AFFECTEE
		GOSUB 350

		* AFFECTATION DE L'ACTIVITE
		W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,1,K;W_ECLATDETAIL<1,J,1>)

		W_RANGACT=K+1	

		* BASE - MONTANT BRUT
		W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,1;W_REGROUPECLAT<W_RANGACT,1>+W_ECLATDETAIL<2,J,1>)
		W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,2;W_REGROUPECLAT<W_RANGACT,2>+W_ECLATDETAIL<3,J,1>)

		* MONTANT IMPOSABLE
		W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,3;W_REGROUPECLAT<W_RANGACT,3>+W_ECLATDETAIL<4,J,1>)

		* NET A PAYER
		W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,4;W_REGROUPECLAT<W_RANGACT,4>+W_ECLATDETAIL<5,J,1>)

		* MONTANT A PAYER
		W_REGROUPECLAT=REPLACE(W_REGROUPECLAT,W_RANGACT,5;W_REGROUPECLAT<W_RANGACT,5>+W_ECLATDETAIL<6,J,1>)

	NEXT

RETURN

***************************************************
* AFFECTATION DES RUBRIQUES DE TYPE "DONT"
***************************************************
700 *

	W_NBATTRIBECLAT=DCOUNT(W_TABACTIVITE<1>,CHAR(253))
	IF W_NBATTRIBECLAT=0 THEN W_NBATTRIBECLAT=1

	I=1
	W_RANG=1

	IF ENR_DETAILCALCUL<33,I><>"" THEN
		LOOP 
		UNTIL ENR_DETAILCALCUL<33,I>="" DO
			GOSUB 710
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,I> ELSE STOP "ERREUR RUBSAISIE4 ":ENR_DETAILCALCUL<33,I>
				
			FOR X=1 TO W_NBATTRIBECLAT
				W_RUBSAISIEDONT<X,1,W_RANG>=ENR_DETAILCALCUL<33,I>
				W_RUBSAISIEDONT<X,2,W_RANG>="DONT ":ENR_RUBSAISIE<1>
					IF W_TABACTIVITE<3,X><>"" THEN
						W_RUBSAISIEDONT<X,3,W_RANG>=W_RUBSAISIEDONT<X,3,W_RANG>+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,X>/10000+1/2)
						W_RUBSAISIEDONT<X,4,W_RANG>=W_RUBSAISIEDONT<X,4,W_RANG>+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,X>/10000+1/2)
					END ELSE
						W_RUBSAISIEDONT<X,3,W_RANG>=W_RUBSAISIEDONT<X,3,W_RANG>+ENR_DETAILCALCUL<34,I>/100
						W_RUBSAISIEDONT<X,4,W_RANG>=W_RUBSAISIEDONT<X,4,W_RANG>+ENR_DETAILCALCUL<36,I>/100
					END
				W_RUBSAISIEDONT<X,5,W_RANG>=W_NEWSECTEUR
			NEXT
			I=I+1
		REPEAT
	END

	I=1
	W_RANG=1

	IF ENR_DETAILCALCUL<37,I><>"" THEN
		LOOP 
		UNTIL ENR_DETAILCALCUL<37,I>="" DO
				GOSUB 711
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<37,I> ELSE
				* PRINT "ERREUR RUBSAISIE5 ":ENR_DETAILCALCUL<37,I>
				STOP
			END
			
			FOR X=1 TO W_NBATTRIBECLAT
				W_RUBAPSAISIEDONT<X,1,W_RANG>=ENR_DETAILCALCUL<37,I>
				W_RUBAPSAISIEDONT<X,2,W_RANG>="DONT ":ENR_RUBSAISIE<1>
				IF W_TABACTIVITE<3,X><>"" THEN
					W_RUBAPSAISIEDONT<X,3,W_RANG>=W_RUBAPSAISIEDONT<X,3,W_RANG>+INT(ENR_DETAILCALCUL<38,I>*W_TABACTIVITE<3,X>/10000+1/2)
						W_RUBAPSAISIEDONT<X,4,W_RANG>=W_RUBAPSAISIEDONT<X,4,W_RANG>+INT(ENR_DETAILCALCUL<40,I>*W_TABACTIVITE<3,X>/10000+1/2)
				END ELSE
					W_RUBAPSAISIEDONT<X,3,W_RANG>=W_RUBAPSAISIEDONT<X,3,W_RANG>+ENR_DETAILCALCUL<38,I>/100
					W_RUBAPSAISIEDONT<X,4,W_RANG>=W_RUBAPSAISIEDONT<X,4,W_RANG>+ENR_DETAILCALCUL<40,I>/100
				END
				W_RUBAPSAISIEDONT<X,5,W_RANG>=W_NEWSECTEUR
			NEXT
			I=I+1
		REPEAT
	END

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE "DONT" EXISTE DEJA
***************************************************
710 *

	IF W_ECLATEMENT#"3" THEN
		J=1
		LOOP 
		UNTIL ENR_DETAILCALCUL<33,I>=W_RUBSAISIEDONT<1,1,J> OR W_RUBSAISIEDONT<1,1,J>="" DO
			J=J+1
		REPEAT
	END ELSE
		J=1
		LOOP 
		UNTIL (ENR_DETAILCALCUL<33,I>=W_RUBSAISIEDONT<1,1,J> AND W_NEWSECTEUR=W_RUBSAISIEDONT<1,5,J>) OR W_RUBSAISIEDONT<1,1,J>="" DO
			J=J+1
		REPEAT
	END

	W_RANG=J

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE "DONT" EXISTE DEJA
***************************************************
711 *

	IF W_ECLATEMENT#"3" THEN
		J=1
		LOOP 
		UNTIL ENR_DETAILCALCUL<37,I>=W_RUBAPSAISIEDONT<1,1,J> OR W_RUBAPSAISIEDONT<1,1,J>="" DO
			J=J+1
		REPEAT
	END ELSE
		J=1
		LOOP 
		UNTIL (ENR_DETAILCALCUL<33,I>=W_RUBAPSAISIEDONT<1,1,J> AND W_NEWSECTEUR=W_RUBAPSAISIEDONT<1,5,J>) OR W_RUBAPSAISIEDONT<1,1,J>="" DO
			J=J+1
		REPEAT
	END

	W_RANG=J

RETURN



***************************************************
* AFFECTATION DES RUBRIQUES DE TYPE "DONT"
***************************************************
740 *
	IF W_REGRBUD = "1" THEN
		X = W_RANGCATEGORIE:W_CODEREGRBUD
	END ELSE
		X = SEQ(W_CODECATEGORIE) -64
	END
	
	I=1
	W_RANG=1

	IF ENR_DETAILCALCUL<33,I><>"" THEN
		LOOP 
		UNTIL ENR_DETAILCALCUL<33,I>="" DO
			GOSUB 750
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<33,I> ELSE STOP "ERREUR RUBSAISIE6 ":ENR_DETAILCALCUL<33,I>		
			
			W_RUBSAISIEDONT<X,1,W_RANG>=ENR_DETAILCALCUL<33,I>
			W_RUBSAISIEDONT<X,2,W_RANG>="DONT ":ENR_RUBSAISIE<1>
			IF W_TABACTIVITE<3,X><>"" THEN
				W_RUBSAISIEDONT<X,3,W_RANG>=W_RUBSAISIEDONT<X,3,W_RANG>+INT(ENR_DETAILCALCUL<34,I>*W_TABACTIVITE<3,X>/10000+1/2)
 				W_RUBSAISIEDONT<X,4,W_RANG>=W_RUBSAISIEDONT<X,4,W_RANG>+INT(ENR_DETAILCALCUL<36,I>*W_TABACTIVITE<3,X>/10000+1/2)
			END ELSE
				W_RUBSAISIEDONT<X,3,W_RANG>=W_RUBSAISIEDONT<X,3,W_RANG>+ENR_DETAILCALCUL<34,I>/100
 				W_RUBSAISIEDONT<X,4,W_RANG>=W_RUBSAISIEDONT<X,4,W_RANG>+ENR_DETAILCALCUL<36,I>/100
			END
			W_RUBSAISIEDONT<X,5,W_RANG>=W_NEWSECTEUR
			I=I+1
		REPEAT
	END

	I=1
	W_RANG=1

	IF ENR_DETAILCALCUL<37,I><>"" THEN
		LOOP 
		UNTIL ENR_DETAILCALCUL<37,I>="" DO
				GOSUB 751
			READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<37,I> ELSE STOP "ERREUR RUBSAISIE7 ":ENR_DETAILCALCUL<37,I>
			
			W_RUBAPSAISIEDONT<X,1,W_RANG>=ENR_DETAILCALCUL<37,I>
			W_RUBAPSAISIEDONT<X,2,W_RANG>="DONT ":ENR_RUBSAISIE<1>
			IF W_TABACTIVITE<3,X><>"" THEN
				W_RUBAPSAISIEDONT<X,3,W_RANG>=W_RUBAPSAISIEDONT<X,3,W_RANG>+INT(ENR_DETAILCALCUL<38,I>*W_TABACTIVITE<3,X>/10000+1/2)
 				W_RUBAPSAISIEDONT<X,4,W_RANG>=W_RUBAPSAISIEDONT<X,4,W_RANG>+INT(ENR_DETAILCALCUL<40,I>*W_TABACTIVITE<3,X>/10000+1/2)
			END ELSE
				W_RUBAPSAISIEDONT<X,3,W_RANG>=W_RUBAPSAISIEDONT<X,3,W_RANG>+ENR_DETAILCALCUL<38,I>/100
 				W_RUBAPSAISIEDONT<X,4,W_RANG>=W_RUBAPSAISIEDONT<X,4,W_RANG>+ENR_DETAILCALCUL<40,I>/100
			END
			W_RUBAPSAISIEDONT<X,5,W_RANG>=W_NEWSECTEUR
			I=I+1
		REPEAT
	END

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE "DONT" EXISTE DEJA
***************************************************
750 *

	J=1
	LOOP 
		UNTIL ENR_DETAILCALCUL<33,I>=W_RUBSAISIEDONT<X,1,J> OR W_RUBSAISIEDONT<X,1,J>="" DO
		J=J+1
	REPEAT

	W_RANG=J

RETURN

***************************************************
* VERIFICATION SI LA RUBRIQUE "DONT" EXISTE DEJA
***************************************************
751 *

	J=1
	LOOP 
	UNTIL ENR_DETAILCALCUL<37,I>=W_RUBAPSAISIEDONT<X,1,J> OR W_RUBAPSAISIEDONT<X,1,J>="" DO
		J=J+1
	REPEAT

	W_RANG=J

RETURN

***************************************************
* CUMULE LES DONNEES EN ECLATEMENT ACTIVITE
***************************************************
800 *

IF W_REGRBUD = "1" THEN	
	W_MIN = 101
	W_MAX = 2699
END ELSE
	W_MIN = 1
	W_MAX = 26
END

	Y=W_MIN
	LOOP
	UNTIL Y > W_MAX DO
		IF W_REGRBUD = "1" THEN	
			W_CODEREGRBUD = Y[LEN(Y)-1,2]
			W_CODECAT = CHAR((Y[1,LEN(Y)-2])+64)
		END ELSE
			W_CODECAT = CHAR((Y)+64)
		END
		
		W_CLEFICP = W_SAUVEPER:W_CODEENTITE:W_TYPEACT:"P":W_CODECAT
		W_CLEFICA = W_SAUVEPER:W_CODEENTITE:W_TYPEACT:"A":W_CODECAT
		W_CLEFICG = W_SAUVEPER:W_CODEENTITE:W_TYPEACT:"G":W_CODECAT
		IF W_REGRBUD = "1" THEN
			W_CLEFICP = W_CLEFICP:W_CODEREGRBUD
			W_CLEFICA = W_CLEFICA:W_CODEREGRBUD
			W_CLEFICG = W_CLEFICG:W_CODEREGRBUD
		END
		
		IF W_RUBACTIVITE<Y,1>="X" AND W_RUBACTIVITE<Y,2>="X" THEN 
			GOSUB 810
			GOSUB 820
			GOSUB 830
			GOSUB 840
			GOSUB 850
* Didier le 20/04/2009 - ajout test sur ENR_ETATVENTIL<6>
			IF ENR_ETATVENTIL<9> # "" AND ENR_ETATVENTIL<10> # "" AND ENR_ETATVENTIL<6> # "" THEN 
				WRITE ENR_ETATVENTIL ON F.TEMPVENTILEDIT,W_CLEFICG
			END
		END ELSE
			ENR_ETATVENTIL = ""
			IF W_RUBACTIVITE<Y,1>="X" THEN READ ENR_ETATVENTIL FROM F.TEMPVENTILEDIT,W_CLEFICP ELSE ENR_ETATVENTIL = ""
			IF W_RUBACTIVITE<Y,2>="X" THEN READ ENR_ETATVENTIL FROM F.TEMPVENTILEDIT,W_CLEFICA ELSE ENR_ETATVENTIL = ""
			ENR_ETATVENTIL<4> = "G"
			ENR_ETATVENTIL<5> = W_CODECAT
			IF ENR_ETATVENTIL<9> # "" AND ENR_ETATVENTIL<10> # "" AND ENR_ETATVENTIL<6> # "" THEN WRITE ENR_ETATVENTIL ON F.TEMPVENTILEDIT,W_CLEFICG			
		END
		Y = Y + 1
	REPEAT

RETURN

***************************************************
* CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - SAISIE
***************************************************
810 *

	READ ENR_ETATVENTILP FROM F.TEMPVENTILEDIT,W_CLEFICP ELSE ENR_ETATVENTILP = ""	
	READ ENR_ETATVENTILA FROM F.TEMPVENTILEDIT,W_CLEFICA ELSE ENR_ETATVENTILA = ""
	
	ENR_ETATVENTIL = ""

	ENR_ETATVENTIL<1> = ENR_ETATVENTILP<1>
	ENR_ETATVENTIL<2> = ENR_ETATVENTILP<2>
	ENR_ETATVENTIL<3> = ENR_ETATVENTILP<3>
	ENR_ETATVENTIL<4> = "G"
	ENR_ETATVENTIL<5> = CHAR((Y)+64)

	ENR_ETATVENTIL<8,3> = ENR_ETATVENTILP<8,3> + ENR_ETATVENTILA<8,3>
	ENR_ETATVENTIL<8,4> = ENR_ETATVENTILP<8,4> + ENR_ETATVENTILA<8,4>
	ENR_ETATVENTIL<9> = ENR_ETATVENTILP<9> + ENR_ETATVENTILA<9>
	ENR_ETATVENTIL<10> = ENR_ETATVENTILP<10> + ENR_ETATVENTILA<10>
	ENR_ETATVENTIL<13> = ENR_ETATVENTILP<13> + ENR_ETATVENTILA<13>

	* TRAITEMENT RUBRIQUE DE SAISIE
	Z = 1
	LOOP
	UNTIL ENR_ETATVENTILP<6,1,Z> = "" DO

	* RECHERCHE DANS FICHIER ADM SI PRESENT
	W = 1
	LOOP
		UNTIL ENR_ETATVENTILA<6,1,W> = ENR_ETATVENTILP<6,1,Z> OR ENR_ETATVENTILA<6,1,W> = "" DO
		W = W + 1
	REPEAT
		
	IF ENR_ETATVENTILA<6,1,W> = "" THEN
		ENR_ETATVENTIL<6,1,-1> = ENR_ETATVENTILP<6,1,Z>
		ENR_ETATVENTIL<6,2,-1> = ENR_ETATVENTILP<6,2,Z>
		ENR_ETATVENTIL<6,3,-1> = ENR_ETATVENTILP<6,3,Z>
		ENR_ETATVENTIL<6,4,-1> = ENR_ETATVENTILP<6,4,Z>

		DEL ENR_ETATVENTILP<6,1,Z>
		DEL ENR_ETATVENTILP<6,2,Z>
		DEL ENR_ETATVENTILP<6,3,Z>
		DEL ENR_ETATVENTILP<6,4,Z>
		Z = Z - 1
	END ELSE
		ENR_ETATVENTIL<6,1,-1> = ENR_ETATVENTILP<6,1,Z>
		ENR_ETATVENTIL<6,2,-1> = ENR_ETATVENTILP<6,2,Z>
		ENR_ETATVENTIL<6,3,-1> = ENR_ETATVENTILP<6,3,Z> + ENR_ETATVENTILA<6,3,W>
		ENR_ETATVENTIL<6,4,-1> = ENR_ETATVENTILP<6,4,Z> + ENR_ETATVENTILA<6,4,W>

		DEL ENR_ETATVENTILP<6,1,Z>
		DEL ENR_ETATVENTILP<6,2,Z>
		DEL ENR_ETATVENTILP<6,3,Z>
		DEL ENR_ETATVENTILP<6,4,Z>
		DEL ENR_ETATVENTILA<6,1,W>
		DEL ENR_ETATVENTILA<6,2,W>
		DEL ENR_ETATVENTILA<6,3,W>
		DEL ENR_ETATVENTILA<6,4,W>
		Z = Z - 1
	END	
	Z = Z + 1
	REPEAT
	
	* SI IL RESTE DES RUB SAISIE EN ADM -> LES AFFECTES
	IF ENR_ETATVENTILA<6,1> # "" THEN
	ENR_ETATVENTIL<6,1,-1> = ENR_ETATVENTILA<6,1>
	ENR_ETATVENTIL<6,2,-1> = ENR_ETATVENTILA<6,2>
	ENR_ETATVENTIL<6,3,-1> = ENR_ETATVENTILA<6,3>
	ENR_ETATVENTIL<6,4,-1> = ENR_ETATVENTILA<6,4>
	END	

RETURN

***************************************************
* CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - AP SAISIE
***************************************************
820 *

	* TRAITEMENT RUBRIQUE DE AP. SAISIE
	Z = 1
	LOOP
	UNTIL ENR_ETATVENTILP<11,1,Z> = "" DO

	* RECHERCHE DANS FICHIER ADM SI PRESENT
	W = 1
	LOOP
		UNTIL ENR_ETATVENTILA<11,1,W> = ENR_ETATVENTILP<11,1,Z> OR ENR_ETATVENTILA<11,1,W> = "" DO
		W = W + 1
	REPEAT
		
	IF ENR_ETATVENTILA<11,1,W> = "" THEN
		ENR_ETATVENTIL<11,1,-1> = ENR_ETATVENTILP<11,1,Z>
		ENR_ETATVENTIL<11,2,-1> = ENR_ETATVENTILP<11,2,Z>
		ENR_ETATVENTIL<11,3,-1> = ENR_ETATVENTILP<11,3,Z>
		ENR_ETATVENTIL<11,4,-1> = ENR_ETATVENTILP<11,4,Z>

		DEL ENR_ETATVENTILP<11,1,Z>
		DEL ENR_ETATVENTILP<11,2,Z>
		DEL ENR_ETATVENTILP<11,3,Z>
		DEL ENR_ETATVENTILP<11,4,Z>
		Z = Z - 1
	END ELSE
		ENR_ETATVENTIL<11,1,-1> = ENR_ETATVENTILP<11,1,Z>
		ENR_ETATVENTIL<11,2,-1> = ENR_ETATVENTILP<11,2,Z>
		ENR_ETATVENTIL<11,3,-1> = ENR_ETATVENTILP<11,3,Z> + ENR_ETATVENTILA<11,3,W>
		ENR_ETATVENTIL<11,4,-1> = ENR_ETATVENTILP<11,4,Z> + ENR_ETATVENTILA<11,4,W>

		DEL ENR_ETATVENTILP<11,1,Z>
		DEL ENR_ETATVENTILP<11,2,Z>
		DEL ENR_ETATVENTILP<11,3,Z>
		DEL ENR_ETATVENTILP<11,4,Z>
		DEL ENR_ETATVENTILA<11,1,W>
		DEL ENR_ETATVENTILA<11,2,W>
		DEL ENR_ETATVENTILA<11,3,W>
		DEL ENR_ETATVENTILA<11,4,W>
		Z = Z - 1
	END	
	Z = Z + 1
	REPEAT
	
	* SI IL RESTE DES RUB SAISIE EN ADM -> LES AFFECTES
	IF ENR_ETATVENTILA<11,1> # "" THEN
	ENR_ETATVENTIL<11,1,-1> = ENR_ETATVENTILA<11,1>
	ENR_ETATVENTIL<11,2,-1> = ENR_ETATVENTILA<11,2>
	ENR_ETATVENTIL<11,3,-1> = ENR_ETATVENTILA<11,3>
	ENR_ETATVENTIL<11,4,-1> = ENR_ETATVENTILA<11,4>
	END	

RETURN

***************************************************
* CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - CHARGE
***************************************************
830 *

	* TRAITEMENT RUBRIQUE DE CHARGE
	Z = 1
	LOOP
	UNTIL ENR_ETATVENTILP<14,1,Z> = "" DO

	* RECHERCHE DANS FICHIER ADM SI PRESENT
	W = 1
	LOOP
		UNTIL ENR_ETATVENTILA<14,1,W> = ENR_ETATVENTILP<14,1,Z> OR ENR_ETATVENTILA<14,1,W> = "" DO
		W = W + 1
	REPEAT
		
	IF ENR_ETATVENTILA<14,1,W> = "" THEN
		ENR_ETATVENTIL<14,1,-1> = ENR_ETATVENTILP<14,1,Z>
		ENR_ETATVENTIL<14,2,-1> = ENR_ETATVENTILP<14,2,Z>
		ENR_ETATVENTIL<14,3,-1> = ENR_ETATVENTILP<14,3,Z>
		ENR_ETATVENTIL<14,4,-1> = ENR_ETATVENTILP<14,4,Z>
		ENR_ETATVENTIL<14,5,-1> = ENR_ETATVENTILP<14,5,Z>
		ENR_ETATVENTIL<14,6,-1> = ENR_ETATVENTILP<14,6,Z>
		ENR_ETATVENTIL<14,7,-1> = ENR_ETATVENTILP<14,7,Z>
		ENR_ETATVENTIL<14,8,-1> = ENR_ETATVENTILP<14,8,Z>
		ENR_ETATVENTIL<14,9,-1> = ENR_ETATVENTILP<14,9,Z>

		DEL ENR_ETATVENTILP<14,1,Z>
		DEL ENR_ETATVENTILP<14,2,Z>
		DEL ENR_ETATVENTILP<14,3,Z>
		DEL ENR_ETATVENTILP<14,4,Z>
		DEL ENR_ETATVENTILP<14,5,Z>
		DEL ENR_ETATVENTILP<14,6,Z>
		DEL ENR_ETATVENTILP<14,7,Z>
		DEL ENR_ETATVENTILP<14,8,Z>
		DEL ENR_ETATVENTILP<14,9,Z>
		Z = Z - 1
	END ELSE
		ENR_ETATVENTIL<14,1,-1> = ENR_ETATVENTILP<14,1,Z>
		ENR_ETATVENTIL<14,2,-1> = ENR_ETATVENTILP<14,2,Z>
		ENR_ETATVENTIL<14,3,-1> = ENR_ETATVENTILP<14,3,Z> + ENR_ETATVENTILA<14,3,W>
		ENR_ETATVENTIL<14,4,-1> = ENR_ETATVENTILP<14,4,Z> 
		ENR_ETATVENTIL<14,5,-1> = ENR_ETATVENTILP<14,5,Z> + ENR_ETATVENTILA<14,5,W>
		ENR_ETATVENTIL<14,6,-1> = ENR_ETATVENTILP<14,6,Z> 
		ENR_ETATVENTIL<14,7,-1> = ENR_ETATVENTILP<14,7,Z> + ENR_ETATVENTILA<14,7,W>
		ENR_ETATVENTIL<14,8,-1> = ENR_ETATVENTILP<14,8,Z> 
		ENR_ETATVENTIL<14,9,-1> = ENR_ETATVENTILP<14,9,Z> + ENR_ETATVENTILA<14,9,W>

		DEL ENR_ETATVENTILP<14,1,Z>
		DEL ENR_ETATVENTILP<14,2,Z>
		DEL ENR_ETATVENTILP<14,3,Z>
		DEL ENR_ETATVENTILP<14,4,Z>
		DEL ENR_ETATVENTILP<14,5,Z>
		DEL ENR_ETATVENTILP<14,6,Z>
		DEL ENR_ETATVENTILP<14,7,Z>
		DEL ENR_ETATVENTILP<14,8,Z>
		DEL ENR_ETATVENTILP<14,9,Z>
		DEL ENR_ETATVENTILA<14,1,W>
		DEL ENR_ETATVENTILA<14,2,W>
		DEL ENR_ETATVENTILA<14,3,W>
		DEL ENR_ETATVENTILA<14,4,W>
		DEL ENR_ETATVENTILA<14,5,W>
		DEL ENR_ETATVENTILA<14,6,W>
		DEL ENR_ETATVENTILA<14,7,W>
		DEL ENR_ETATVENTILA<14,8,W>
		DEL ENR_ETATVENTILA<14,9,W>
		Z = Z - 1
	END	
	Z = Z + 1
	REPEAT
	
	* SI IL RESTE DES RUB SAISIE EN ADM -> LES AFFECTES
	IF ENR_ETATVENTILA<14,1> # "" THEN
	ENR_ETATVENTIL<14,1,-1> = ENR_ETATVENTILA<14,1>
	ENR_ETATVENTIL<14,2,-1> = ENR_ETATVENTILA<14,2>
	ENR_ETATVENTIL<14,3,-1> = ENR_ETATVENTILA<14,3>
	ENR_ETATVENTIL<14,4,-1> = ENR_ETATVENTILA<14,4>
	ENR_ETATVENTIL<14,5,-1> = ENR_ETATVENTILA<14,5>
	ENR_ETATVENTIL<14,6,-1> = ENR_ETATVENTILA<14,6>
	ENR_ETATVENTIL<14,7,-1> = ENR_ETATVENTILA<14,7>
	ENR_ETATVENTIL<14,8,-1> = ENR_ETATVENTILA<14,8>
	ENR_ETATVENTIL<14,9,-1> = ENR_ETATVENTILA<14,9>
	END	

RETURN

***************************************************
* CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - DONT SAISIE
***************************************************
840 *

	* TRAITEMENT RUBRIQUE DE DONT SAISIE
	Z = 1
	LOOP
	UNTIL ENR_ETATVENTILP<7,1,Z> = "" DO

	* RECHERCHE DANS FICHIER ADM SI PRESENT
	W = 1
	LOOP
		UNTIL ENR_ETATVENTILA<7,1,W> = ENR_ETATVENTILP<7,1,Z> OR ENR_ETATVENTILA<7,1,W> = "" DO
		W = W + 1
	REPEAT
		
	IF ENR_ETATVENTILA<7,1,W> = "" THEN
		ENR_ETATVENTIL<7,1,-1> = ENR_ETATVENTILP<7,1,Z>
		ENR_ETATVENTIL<7,2,-1> = ENR_ETATVENTILP<7,2,Z>
		ENR_ETATVENTIL<7,3,-1> = ENR_ETATVENTILP<7,3,Z>
		ENR_ETATVENTIL<7,4,-1> = ENR_ETATVENTILP<7,4,Z>

		DEL ENR_ETATVENTILP<7,1,Z>
		DEL ENR_ETATVENTILP<7,2,Z>
		DEL ENR_ETATVENTILP<7,3,Z>
		DEL ENR_ETATVENTILP<7,4,Z>
		Z = Z - 1
	END ELSE
		ENR_ETATVENTIL<7,1,-1> = ENR_ETATVENTILP<7,1,Z>
		ENR_ETATVENTIL<7,2,-1> = ENR_ETATVENTILP<7,2,Z>
		ENR_ETATVENTIL<7,3,-1> = ENR_ETATVENTILP<7,3,Z> + ENR_ETATVENTILA<7,3,W>
		ENR_ETATVENTIL<7,4,-1> = ENR_ETATVENTILP<7,4,Z> + ENR_ETATVENTILA<7,4,W>

		DEL ENR_ETATVENTILP<7,1,Z>
		DEL ENR_ETATVENTILP<7,2,Z>
		DEL ENR_ETATVENTILP<7,3,Z>
		DEL ENR_ETATVENTILP<7,4,Z>
		DEL ENR_ETATVENTILA<7,1,W>
		DEL ENR_ETATVENTILA<7,2,W>
		DEL ENR_ETATVENTILA<7,3,W>
		DEL ENR_ETATVENTILA<7,4,W>
		Z = Z - 1
	END	
	Z = Z + 1
	REPEAT
	
	* SI IL RESTE DES RUB SAISIE EN ADM -> LES AFFECTES
	IF ENR_ETATVENTILA<7,1> # "" THEN
	ENR_ETATVENTIL<7,1,-1> = ENR_ETATVENTILA<7,1>
	ENR_ETATVENTIL<7,2,-1> = ENR_ETATVENTILA<7,2>
	ENR_ETATVENTIL<7,3,-1> = ENR_ETATVENTILA<7,3>
	ENR_ETATVENTIL<7,4,-1> = ENR_ETATVENTILA<7,4>
	END	

RETURN

***************************************************
* CUMULE LES DONNEES EN ECLATEMENT ACTIVITE - DONT AP SAISIE
***************************************************
850 *

	* TRAITEMENT RUBRIQUE DE DONT SAISIE
	Z = 1
	LOOP
	UNTIL ENR_ETATVENTILP<12,1,Z> = "" DO

		* RECHERCHE DANS FICHIER ADM SI PRESENT
		W = 1
		LOOP
			UNTIL ENR_ETATVENTILA<12,1,W> = ENR_ETATVENTILP<12,1,Z> OR ENR_ETATVENTILA<12,1,W> = "" DO
			W = W + 1
		REPEAT
			
		IF ENR_ETATVENTILA<12,1,W> = "" THEN
			ENR_ETATVENTIL<12,1,-1> = ENR_ETATVENTILP<12,1,Z>
			ENR_ETATVENTIL<12,2,-1> = ENR_ETATVENTILP<12,2,Z>
			ENR_ETATVENTIL<12,3,-1> = ENR_ETATVENTILP<12,3,Z>
			ENR_ETATVENTIL<12,4,-1> = ENR_ETATVENTILP<12,4,Z>

			DEL ENR_ETATVENTILP<12,1,Z>
			DEL ENR_ETATVENTILP<12,2,Z>
			DEL ENR_ETATVENTILP<12,3,Z>
			DEL ENR_ETATVENTILP<12,4,Z>
			Z = Z - 1
		END ELSE
			ENR_ETATVENTIL<12,1,-1> = ENR_ETATVENTILP<12,1,Z>
			ENR_ETATVENTIL<12,2,-1> = ENR_ETATVENTILP<12,2,Z>
			ENR_ETATVENTIL<12,3,-1> = ENR_ETATVENTILP<12,3,Z> + ENR_ETATVENTILA<12,3,W>
			ENR_ETATVENTIL<12,4,-1> = ENR_ETATVENTILP<12,4,Z> + ENR_ETATVENTILA<12,4,W>

			DEL ENR_ETATVENTILP<12,1,Z>
			DEL ENR_ETATVENTILP<12,2,Z>
			DEL ENR_ETATVENTILP<12,3,Z>
			DEL ENR_ETATVENTILP<12,4,Z>
			DEL ENR_ETATVENTILA<12,1,W>
			DEL ENR_ETATVENTILA<12,2,W>
			DEL ENR_ETATVENTILA<12,3,W>
			DEL ENR_ETATVENTILA<12,4,W>
			Z = Z - 1
		END	
		Z = Z + 1
	REPEAT
	
	* SI IL RESTE DES RUB SAISIE EN ADM -> LES AFFECTES
	IF ENR_ETATVENTILA<12,1> # "" THEN
	ENR_ETATVENTIL<12,1,-1> = ENR_ETATVENTILA<12,1>
	ENR_ETATVENTIL<12,2,-1> = ENR_ETATVENTILA<12,2>
	ENR_ETATVENTIL<12,3,-1> = ENR_ETATVENTILA<12,3>
	ENR_ETATVENTIL<12,4,-1> = ENR_ETATVENTILA<12,4>
	END	

RETURN

***************************************************
* CUMULE DES DONNEES REGROUPEMENT BUDGET
***************************************************
900 *

W_CODEREGRBUDSAUVE = ""
W_CODEREGRBUD = ""
W_CODEPERIODE = ""
EXECUTE 'SSELECT TEMPVENTILEDIT AVEC 4 = "G" PAR RegroupBudget'

W_TERMINE=0
ENR_TEMPVENTILREGR = ""
LOOP
	READNEXT CLE ELSE W_TERMINE=1
	W_CODEREGRBUD = CLE[LEN(CLE)-1,2]
	W_CODEPERIODE = CLE[1,10]
	
	IF W_CODEREGRBUDSAUVE = "" THEN
		W_CODEREGRBUDSAUVE = W_CODEREGRBUD
		W_CODEPERIODESAUVE = W_CODEPERIODE
	END
	
	**** ECRITURE DES DONNEES - RUPTURE REGROUPEMENT BUDGET
	IF W_CODEREGRBUDSAUVE # W_CODEREGRBUD OR W_CODEPERIODESAUVE # W_CODEPERIODE THEN
		W_CLEREGRBUD = W_CODEPERIODESAUVE:"G":W_CODEREGRBUDSAUVE
		
		WRITE ENR_TEMPVENTILREGR ON F.TEMPVENTILEDIT,W_CLEREGRBUD	
		W_CODEREGRBUDSAUVE = W_CODEREGRBUD
		W_CODEPERIODESAUVE = W_CODEPERIODE
		ENR_TEMPVENTILREGR = ""
	END

UNTIL W_TERMINE=1 DO
	READ ENR_TEMPVENTILEDIT FROM F.TEMPVENTILEDIT,CLE ELSE ENR_TEMPVENTILEDIT=""
	ENR_TEMPVENTILREGR<1> = ENR_TEMPVENTILEDIT<1>
	ENR_TEMPVENTILREGR<2> = ENR_TEMPVENTILEDIT<2>
	ENR_TEMPVENTILREGR<3> = ENR_TEMPVENTILEDIT<3>
	ENR_TEMPVENTILREGR<4> = "RBG"
	ENR_TEMPVENTILREGR<5> = W_CODEREGRBUD
	ENR_TEMPVENTILREGR<9> = ENR_TEMPVENTILREGR<9> + ENR_TEMPVENTILEDIT<9>
	ENR_TEMPVENTILREGR<10> = ENR_TEMPVENTILREGR<10> + ENR_TEMPVENTILEDIT<10>
	ENR_TEMPVENTILREGR<13> = ENR_TEMPVENTILREGR<13> + ENR_TEMPVENTILEDIT<13>
	
	Z = 6
	LOOP
	UNTIL Z > 14
		IF Z = 6 OR Z = 7 OR Z = 11 OR Z = 12 THEN
			W_LG = 4
			GOSUB 910
		END
		
		IF Z = 14 THEN
			W_LG = 9
			GOSUB 910		
		END
		
		IF Z = 8 THEN
			ENR_TEMPVENTILREGR<Z,3> = ENR_TEMPVENTILREGR<Z,3> + ENR_TEMPVENTILEDIT<Z,3>
			ENR_TEMPVENTILREGR<Z,4> = ENR_TEMPVENTILREGR<Z,4> + ENR_TEMPVENTILEDIT<Z,4>
		END
		
		Z += 1
	REPEAT
	
REPEAT

RETURN

***************************************************
* BOUCLE DE CUMUL SOUS VALEUR
***************************************************
910 *

X = 1
LOOP 
UNTIL ENR_TEMPVENTILEDIT<Z,1,X> = "" DO
	
	Y = 0
	LOOP
		Y += 1
	UNTIL ENR_TEMPVENTILREGR<Z,1,Y> = ENR_TEMPVENTILEDIT<Z,1,X> OR ENR_TEMPVENTILREGR<Z,1,Y> = ""
	REPEAT	
		
	IF ENR_TEMPVENTILREGR<Z,1,Y> = "" THEN
		ENR_TEMPVENTILREGR<Z,1,Y> = ENR_TEMPVENTILEDIT<Z,1,X>
		ENR_TEMPVENTILREGR<Z,2,Y> = ENR_TEMPVENTILEDIT<Z,2,X>
	END 
	
	FOR I = 3 TO W_LG
		II = MOD(I,2)
		IF Z=14 AND II = 0 THEN
			ENR_TEMPVENTILREGR<Z,I,Y> = ENR_TEMPVENTILEDIT<Z,I,X>
		END ELSE
			ENR_TEMPVENTILREGR<Z,I,Y> = ENR_TEMPVENTILREGR<Z,I,Y> + ENR_TEMPVENTILEDIT<Z,I,X>
		END
	NEXT I
		
	X += 1
REPEAT

RETURN


***************************************************
* MISE A ZERO DES VARIABLES
***************************************************
999 W_BRUTACQUISBASE=0
	W_BRUTACQUISMONT=0
	W_NETIMPOSABLE=0
	W_NETAPAYER=0
	W_MONTANTAPAYER=0
	W_TOTALTAUX=0
	W_TOTALMONT=0
	W_RANGANAL=0
	W_RANGANALRUB=0
	W_NBATTRIBUTECLAT=0
	W_TOTALREPART=0
	W_RUBSAISIECODE=""
	W_RUBSAISIELIB=""
	W_RUBSAISIEBASE=""
	W_RUBSAISIEMONT=""
	W_RUBSAISIEAPCODE=""
	W_RUBSAISIEAPLIB=""
	W_RUBSAISIEAPBASE=""
	W_RUBSAISIEAPMONT=""
	W_RUBCHARGECODE=""
	W_RUBCHARGELIB=""
	W_RUBCHARGEBASE=""
	W_RUBCHARGETAUXPAT=""
	W_RUBCHARGEMONTPAT=""
	W_RUBCHARGETAUXSAL=""
	W_RUBCHARGEMONTSAL=""
	W_RUBCHARGETOTALTAUX=""
	W_RUBCHARGETOTALMONT=""
	W_REPARTPLUSFORT=""
	W_RUBSAISIEDONT=""
	W_RUBAPSAISIEDONT=""
	W_PROD=0
	W_ADM=0
	ENR_CUMULS=""
	ENR_CUMULS2=""
	ENR_CUMULSGLOB=""
RETURN
