*********************************************************************************
*	REMPLISSAGE DE BROUILLARD DETAIL											*
*             AFFECTATION PRODUITS              								*
*                                               								*
* JEROME						FEVRIER 2000    								*
*  - TRAITEMENT POUR ABS SECT ANAL MAJ 							MARS    2000	*
*  - SECONDE MAJ AVRIL 2000             						AVRIL   2000    *
*  - BUG PARIS / TOULOUSE (PAS COMPTE NI SECTION)  				MAI     2000    *
*  - BUG ILE BOUCHARD (PAS CONTREPARTIE FACTURORG)      		MAI     2000	*
*  - MODIF LIBELLE FACTURE NEGATIVE ET PERIODE          		JUIN    2000    *
*  - PRISE EN COMPTE INCIDENCE COMPTA OU PAS            		JUIN    2000    *
*  - PRISE EN COMPTE QTE ORGANISME 000                  		AOUT    2000    *
*  - PRISE EN COMPTE QTE PRESTATAIRE CONTREPARTIE       		AOUT    2000    *
*  - LIBELLE FACTURE ORG CHANGE                         		AOUT    2000    *
*  - MODIF REEQUILIBRAGE MANDATAIRE (650)               		OCTOBRE 2000    *
*  - PASSAGE MAJUSCULE LIBELLE                          		OCTOBRE 2000    *
* STEPHANE                                                              		*
*  - INTEGRATION DE LA GESTION RETROACTIVE              		MARS    2001    *
*           -> CAISSES ET BENEFICIAIRES                                 		*
*  - GESTION DU REEQUILABRE COMPTABLE MANDATAIRE        		JUIN    2001    *
*           -> SI DESEQUILIBRE => COMPTE ATT.  (650)                    		*
*  - GESTION PB AFFECTATION SECTION ANAL.               		JUIN    2001   	*
*    	    -> SUR COMPTE 1 A 5 : ANNULE LA SECTION                     		*
*           -> SUR COMPTE 6 A 7 : FORCE LA SECTION                     			*
*  - POSSIBILITE DE NE PAS INTEGRER LA FACTURATION PRESTATAIRE    AVRIL 2002  	*
*    -> Suppression du test de la facture mandataire pour l'incidence comptable *
*    -> On peut maintenant avoir des organismes prestataires complementaires    *
*        sans incidence comptable.                     CHRISTOPHE               *
*  - gestion d'intgration des produits pour une base fdration        		*
*                           VANES       						NOVEMBRE 2002   *
*********************************************************************************
* MODIF VANESSA 10/02/10 - DA 9170-01											*
* remplace dans le programme la variable W_COMPTANNEEPREC par 					*
* W_COMPTANNEEPRECORG OU W_COMPTANNEEPRECBENE									*
*********************************************************************************

************
* FICHIERS *
************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE STOP
OPEN "","JOURNAL" TO F.JOURNAL ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","FACTURAIDE" TO F.FACTURAIDE ELSE STOP
OPEN "","FACTURORG" TO F.FACTURORG ELSE STOP
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE STOP
OPEN "","ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE STOP
OPEN "","STATACTAIDE" TO F.STATACTAIDE ELSE STOP
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE STOP
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE STOP
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE STOP
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE STOP
OPEN "","FEDEASSOC" TO F.FEDEASSOC ELSE PRINT "FEDEASSOC"
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","ACCORD" TO F.ACCORD ELSE STOP

* modif vanessa 17/01/13 - MODIF POUR TOURS
* modif mikael 14/03/2014 - ticket ajout du compte 706102 pour base famille
OPEN "","FUSION" TO F.FUSION ELSE STOP
* modif vanessa 05/01/16 - DA 15094
OPEN "","CPTAINTEGRATION" TO F.CPTAINTEGRATION ELSE STOP

* modif vanessa 01/02/16 - DA 16002-01
OPEN "","TABLES" TO F.TABLES ELSE STOP

W_Fichier=""
W_Fichier706102=""
W_Fichier="Code aid;Num facture;Montant;Libell"
W_Fichier706102="Code aid;Num facture;Montant;Libell"
******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE PRINT "PROCREAD"

W_CLEBROUILLARD=FIELD(ARGUMENTS," ",2)
W_LIGNE=FIELD(ARGUMENTS," ",3)
W_PERIODETRAIT=FIELD(ARGUMENTS," ",4)
W_TYPEACTIV=FIELD(ARGUMENTS," ",5)
W_DATEOP=FIELD(ARGUMENTS," ",6)
W_COMPTEATTENTE=FIELD(ARGUMENTS," ",7)
W_COMPTETVA=FIELD(ARGUMENTS," ",8)
W_LIBPERIODETRAIT=FIELD(ARGUMENTS," ",9)
* modif vanessa 05/01/16 - DA 15094
W_Specif=FIELD(ARGUMENTS,"|",2)
****************************
* Procdures               *
****************************

*    10  -->  SELECTION FACTURORG 000
*    20  -->  SELECTION FACTURORG
*    30  -->  SELECTION FACTURAIDE
* FACTURE AIDE
*   100  -->  TRAITEMENTS DES FACTURES AIDES
*   150  -->  INITIALISATION BROUILLARDDETAIL
*   200  -->  CUMULS MONTANT FACTURES
*   250  -->  EXPLOSION MONTANT PAR SECTION ANALYTIQUE
*   260  -->  MISE EN TABLEAU DES ACTIVITES
*   270  -->  BOUCLE D'EXPLOSION
*   300  -->  MAJ TABLEAU CONTREPARTIE
*   400  -->  PARCOURS REQUETE FACTURAIDE
*   500  -->  ECRITURE COMPTE TVA
*   600  -->  ECRITURE CONTREPARTIE
*   650  -->  CORRECTION CONTREPARTIE MANDATAIRE
*   700  -->  MEMO POUR RECUP VB
* FACTURE ORG 
*   800  -->  PARCOURS REQUETE FACTURORG
*   900  -->  ECRITURE BROUILLARD PRECEDENT
*  1000  -->  CUMUL POUR MEME FACTURE
*  1100  -->  CREATION BROUILLARD
*  1200  -->  RENSEIGNEMENT DU BROUILLARD POUR EDITION
*  1201  -->  RENSEIGNEMENT DU BROUILLARD POUR EDITION -> PERIODE -1
*  1300  -->  RECUPERATION CPTE ORG PRISE CHARGE
*  1400  -->  ECRITURE CONTREPARTIE BROUILLARD PRECEDENT
*  1401  -->  ECRITURE CONTREPARTIE BROUILLARD PRECEDENT -> PERIODE -1
* FACTURE ORG 000
*  1500  -->  PARCOURS REQUETE FACTURORG 000
*  1550  -->  RECHERCHE COMPTE TAUX PRESTATION
*  1600  -->  ECRITURE BROUILLARD FACTURORG 000

****************************
* Initialisation           *
****************************
W_REQUETEACT=""
W_REQUETEFede = ""
W_ENTITE=""
W_JOURNAL=""
W_EXERCICE=""
ENR_BROUILLARDDETAIL=""
ENR_JOURNAL=""
ENR_TEMPO=""
ENR_FACTURAIDE=""
ENR_FACTURORG=""
ENR_PLANCOMPTABLE=""
W_CLE=""
W_FINI=""
W_ANCIENCODE=""
W_ANCIENSECTANAL=""
W_NBLIGNE=W_LIGNE
W_RECUP=""
W_COMPTEUR=""
W_COMPTEURBOUCLE=""
I=""
W_CUMUL=""
W_CUMULANC=""
W_CUMULTVATOT=""
W_TABLEAU=""
W_TABLEAUANC=""
W_NUMCOMPTE=""
W_VALEUR=""
W_VALEURANC=""
W_INDICTROUVE=""
W_REQUETEFACT=""
W_CUMULCREDIT=""
W_CUMULDEBIT=""
W_CUMULCREDITANC=""
W_CUMULDEBITANC=""
W_CLETEMPO=""
W_TAMPONDEB=""
W_TAMPONCRED=""
W_SECTION=""
W_SECTIONANC=""
W_REQUETEORG=""
W_CUMULDEBORG=""
W_CPTEORGDEB=""
W_CPTEORGCRED=""
W_CUMULDEBORGANC=""
W_CPTEORGDEBANC=""
W_CPTEORGCREDANC=""
W_CUMULVAL=""
W_CUMULQTE=""
ENR_STATACTAIDE=""
ENR_ACTIVITES=""
W_CHARGEACTIV=""
W_TABACTIV=""
W_TABTAMPON=""
W_CUMULACC=0
W_Fede="FAUX"
W_CUMULMANDORG=0
W_GestionTVA="FAUX"

****************************
* LECTURE DU FICHIER       *
****************************

	W_ENTITE=W_CLEBROUILLARD[1,3]
	W_JOURNAL=W_CLEBROUILLARD[1,5]
	W_EXERCICE=W_CLEBROUILLARD[6,2]
	W_LIBPERIODETRAIT=W_LIBPERIODETRAIT:" ":W_PERIODETRAIT[1,4]
	W_CHARGEACTIV="FAUX"
	W_PeriodeLib=W_PERIODETRAIT[5,2]:"/":W_PERIODETRAIT[3,2]
	* INDICATEUR D'ECRITURE
	W_INDICECR=0
	
	* modif vanessa 05/01/16 - DA 15094
	W_NumFact=0	
	IF W_Specif ="1" THEN
		W_CleTemp="PR":W_ENTITE:W_PERIODETRAIT:W_TYPEACTIV
		READ ENR_CPTAINTEGRATION FROM F.CPTAINTEGRATION,W_CleTemp THEN
			W_NumFact=ENR_CPTAINTEGRATION<1>
		END ELSE
			W_NumFact=0		
		END
	END	
	
	* MISE A DEFAUT DU COMPTE PAR DEFAUT SI VIDE
	IF W_COMPTEATTENTE="" THEN
		W_COMPTEATTENTE="4710000000"
	END ELSE
		W_COMPTEATTENTE=W_COMPTEATTENTE
	END
	
	READ ENR_COMPTEUR FROM F.COMPTEUR,"999" ELSE ENR_COMPTEUR=""
	IF ENR_COMPTEUR<17> # "" AND LEN(ENR_COMPTEUR<17>)=3 THEN
	   W_Fede="VRAI"
	END ELSE
	   W_Fede="FAUX"
	END
	READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_ENTITE ELSE ENR_PARAMENTITECOMPTA=""
	IF W_EXERCICE="N0" THEN
  	    W_DEBUTANNEE=OCONV(ENR_PARAMENTITECOMPTA<1>,"D4/")
	    W_DEBUTANNEE=W_DEBUTANNEE[7,4]:W_DEBUTANNEE[4,2]
 	END ELSE
  	    W_DEBUTANNEE=OCONV(ENR_PARAMENTITECOMPTA<3>,"D4/")
	    W_DEBUTANNEE=W_DEBUTANNEE[7,4]:W_DEBUTANNEE[4,2]
	END	
	
	* MODIF VANESSA 26/01/10 - DA 9217-01
	IF (ENR_PARAMENTITECOMPTA<5>="2" AND ENR_PARAMENTITECOMPTA<15>="1") OR (ENR_PARAMENTITECOMPTA<5>="3" AND ENR_PARAMENTITECOMPTA<15>="1") THEN
		W_GestionTVA="VRAI"
	END
	
	READ ENR_COMPTESPARTICULIERS FROM F.COMPTESPARTICULIERS,W_ENTITE ELSE ENR_COMPTESPARTICULIERS=""
	
	COMPTEATTENTECOMPTEPART=ENR_COMPTESPARTICULIERS<9>
        IF COMPTEATTENTECOMPTEPART="" THEN COMPTEATTENTECOMPTEPART=W_COMPTEATTENTE
**	* TEST SI EXERCICE = N OU N+1
	* MODIF VANESSA 10/02/10 - DA 9170-01
	IF ENR_COMPTESPARTICULIERS<11>#"" THEN 
	    W_COMPTANNEEPRECORG=ENR_COMPTESPARTICULIERS<11>
	END ELSE
	    W_COMPTANNEEPRECORG=""
	END
	IF ENR_COMPTESPARTICULIERS<12>#"" THEN 
	    W_COMPTANNEEPRECBENE=ENR_COMPTESPARTICULIERS<12>
	END ELSE
	    W_COMPTANNEEPRECBENE=""
	END	
	
	* modif vanessa 01/02/16 - DA 16002-01
	GOSUB 2100
	
	IF W_TYPEACTIV="P" THEN
		*****************
		* FACTURORG 000 *
		*****************
		W_ListeAssoFede = ""
		W_NbAssoFede = ""
		GOSUB 10 
	END
	
	*************
	* FACTURORG *
	*************
	W_ListeAssoFede = ""
	W_NbAssoFede = ""
	GOSUB 20 
	
	W_TABLEAU=""
	W_DEBITORG=W_CUMULDEBORG
	W_TABLEAUANC = ""
	**************
	* FACTURAIDE *
	**************
	GOSUB 30
	
	* SI AU MOINS UN DES TRAITEMENTS EFFECTUE -> ECRITURE	
	IF W_INDICECR # 0 THEN
		GOSUB 700
	END
	
	* modif vanessa 17/01/13 - MODIF POUR TOURS
	WRITE W_Fichier ON F.FUSION,"Compte706112-":W_PERIODETRAIT:".csv"
	
	IF W_Fichier706102<2> #"" THEN
		WRITE W_Fichier706102 ON F.FUSION,"Compte706102-":W_PERIODETRAIT:".csv"
	END
	
	* modif vanessa 05/01/16 - DA 15094
	IF W_Specif ="1" THEN
		W_CleTemp="PR":W_ENTITE:W_PERIODETRAIT:W_TYPEACTIV
		ENR_CPTAINTEGRATION=""
		ENR_CPTAINTEGRATION<1>=W_NumFact
		WRITE ENR_CPTAINTEGRATION ON F.CPTAINTEGRATION,W_CleTemp
	END
	
STOP

***************************
* SELECTION FACTURORG 000 *
***************************
10
	* Modif Greg - 11/06/14 - DA14044 - Ajout d'un tri sur la section analytique (SectAnalFactOrgMV1)
	EXECUTE 'SSELECT FACTURORG AVEC NumOrdreAccFacturOrg = "':W_ENTITE:'" AND AVEC @ID = "':"000]":'" AND AVEC TypeActiviteFacturOrg = "':W_TYPEACTIV:'" AND AVEC 10 = "':W_PERIODETRAIT:'" PAR 9 PAR SectAnalFactOrgMV1 PAR @ID'
	EXECUTE 'SAUVE-LISTE W_REQUETEORG'
	EXECUTE "LISTE W_REQUETEORG" RETURNING MSGCODE	
	
	IF MSGCODE<1>#209 THEN
	
		* TRAITEMENT DES FACTURES ORGA A 000
		W_INDICECR=W_INDICECR + 1
		W_CUMULDEBORG=0
		
		SELECT F.FACTURORG TO W_REQUETEORG
		
		* PARCOURS REQUETE
		GOSUB 1500
	END
RETURN

***********************
* SELECTION FACTURORG *
***********************
20
	EXECUTE 'SSELECT FACTURORG AVEC EntiteFacturOrg = "':W_ENTITE:'" AND AVEC TypeActiviteFacturOrg = "':W_TYPEACTIV:'" AND AVEC 10 = "':W_PERIODETRAIT:'" PAR 9 PAR @ID'
	EXECUTE 'SAUVE-LISTE W_REQUETEORG'
	EXECUTE "LISTE W_REQUETEORG" RETURNING MSGCODE	
	
	IF MSGCODE<1>#209 THEN
	
		* TRAITEMENT DES FACTURES ORGA
		W_INDICECR=W_INDICECR + 1
		W_CUMULDEBORG=0
		
		SELECT F.FACTURORG TO W_REQUETEORG
		
		* PARCOURS REQUETE
		GOSUB 800
	END
RETURN

************************
* SELECTION FACTURAIDE *
************************
30
	* modif vanessa 05/01/16 - DA 15094
	IF W_Specif ="1" THEN
		EXECUTE 'SSELECT FACTURAIDE AVEC NumFactFactAide > "':W_NumFact:'" AND AVEC CodeEntiteFact = "':W_ENTITE:'" AND AVEC ActiviteFact = "':W_TYPEACTIV:'" AND AVEC PeriodeCleFactAide = "':W_PERIODETRAIT:'" PAR NomAideFact PAR CodeAideFact PAR-DECR @ID'	
	END ELSE
		EXECUTE 'SSELECT FACTURAIDE AVEC CodeEntiteFact = "':W_ENTITE:'" AND AVEC ActiviteFact = "':W_TYPEACTIV:'" AND AVEC PeriodeCleFactAide = "':W_PERIODETRAIT:'" PAR NomAideFact PAR CodeAideFact PAR-DECR @ID'
	END

	EXECUTE 'SAUVE-LISTE W_REQUETEFACT'
	EXECUTE "LISTE W_REQUETEFACT" RETURNING MSGCODE	
	
	IF MSGCODE<1>#209 THEN
		W_PRODUITSAIDESMANDAT=ENR_COMPTESPARTICULIERS<7>
		W_PRODUITSAIDESPREST=ENR_COMPTESPARTICULIERS<1>
		
		*TRAITEMENT DES FACTURES AIDES
		W_INDICECR= W_INDICECR + 1
		W_CUMULDEBIT=0
		W_CUMULCREDIT=0
		W_CUMULTVATOT=0
		
		SELECT F.FACTURAIDE TO W_REQUETEFACT
		
		* PARCOURS REQUETE
		GOSUB 400
		
		* MODIF VANESSA 26/01/10 - DA9217-01
		IF W_GestionTVA="FAUX" THEN
			* ECRITURE TVA
			GOSUB 500
		END 
		
		W_CUMULDEBORG=W_DEBITORG
		* ECRITURE CONTREPARTIE
		GOSUB 600
		
	END
RETURN

******************************
* TRAITEMENT DES FACTURAIDES *
******************************
100
	* REINITIALISATION
	GOSUB 150
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,3;"A")
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_CLE[1,5])	
	
	W_RECUP=W_CLE[16,10] * 1
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_RECUP)	
	
	READ ENR_FACTURAIDE FROM F.FACTURAIDE,W_CLE ELSE STOP

	* Didier 17/04/2014 : gestion montant TVA en MV
	DTVA=DCOUNT(ENR_FACTURAIDE<9>,CHAR(253))
	* MODIF VANESSA 26/01/10 - DA9217-01
	IF W_GestionTVA="VRAI" THEN
		W_CUMULTVATOT=0
	END
	
	* Didier 23/11/2015 : gestion TVA sur les dbits (tickets 10912 + 11124 VENDOME)
	W_MONTTVASURDEBITTOT=0
	W_MONTTVASURDEBITDEB=0
	W_MONTTVASURDEBITCRED=0	
	FOR ETVA = 1 TO DTVA	
		IF ENR_FACTURAIDE<9,ETVA> >= 0 THEN
			W_TAMPONDEB=W_TAMPONDEB+ENR_FACTURAIDE<9,ETVA>
		    IF ENR_PARAMENTITECOMPTA<5>#"1" AND W_GestionTVA="FAUX" THEN			
               W_MONTTVASURDEBITDEB=W_MONTTVASURDEBITDEB+ENR_FACTURAIDE<9,ETVA>
			END
			W_CUMULDEBIT=W_CUMULDEBIT+ENR_FACTURAIDE<9,ETVA>	
		END ELSE
			W_TAMPONCRED=W_TAMPONCRED+(ENR_FACTURAIDE<9,ETVA> * -1)
		    IF ENR_PARAMENTITECOMPTA<5>#"1" AND W_GestionTVA="FAUX" THEN			
               W_MONTTVASURDEBITCRED=W_MONTTVASURDEBITCRED+(ENR_FACTURAIDE<9,ETVA> * -1)
            END			   
			W_CUMULCREDIT=W_CUMULCREDIT+ (ENR_FACTURAIDE<9,ETVA> * -1)	
		END
		* CUMUL DES MONTANTS TVA
		IF ENR_FACTURAIDE<9,ETVA> # "" THEN
			W_CUMULTVATOT=W_CUMULTVATOT+ENR_FACTURAIDE<9,ETVA>
		END
        * Didier 23/11/2015 : gestion TVA sur les dbits (tickets 10912 + 11124 VENDOME)
		IF ENR_PARAMENTITECOMPTA<5>#"1" AND W_GestionTVA="FAUX" THEN
           W_MONTTVASURDEBITTOT = W_MONTTVASURDEBITTOT + ENR_FACTURAIDE<9,ETVA>
        END		
	NEXT ETVA
	
	* CUMUL DES MONTANTS DE FACTURE ATT 5
	GOSUB 200	
    * Didier 23/11/2015 : gestion TVA sur les dbits (tickets 10912 + 11124 VENDOME)	
	IF W_CUMUL + W_MONTTVASURDEBITTOT >= 0 THEN
		W_TAMPONDEB=W_TAMPONDEB+W_CUMUL + W_MONTTVASURDEBITTOT - W_MONTTVASURDEBITDEB
		W_CUMULDEBIT=W_CUMULDEBIT+W_CUMUL + W_MONTTVASURDEBITTOT - W_MONTTVASURDEBITDEB
		W_Mot="FACTURE "
		
	END ELSE
		W_TAMPONCRED=W_TAMPONCRED+((W_CUMUL + W_MONTTVASURDEBITTOT) * -1) - W_MONTTVASURDEBITCRED
		W_CUMULCREDIT=W_CUMULCREDIT+((W_CUMUL + W_MONTTVASURDEBITTOT) * -1) - W_MONTTVASURDEBITCRED
		W_Mot="AVOIR "
	END
	
	* modif vanessa 01/02/16 - DA 16002-01
	GOSUB 2200
	IF W_MemeService="VRAI" THEN
		W_Mot=W_Mot:W_Lib
		IF LEN(W_Mot)>20 THEN
			W_Mot=W_Mot[1,20]
		END
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;W_Mot:" ":W_PeriodeLib)
	END ELSE
	
		BEGIN CASE
			CASE W_TYPEACTIV MATCHES "P"
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;W_Mot:"PRESTATAIRE ":W_PeriodeLib)
			CASE W_TYPEACTIV MATCHES "M"
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;W_Mot:"MANDATAIRE ":W_PeriodeLib)
			CASE W_TYPEACTIV MATCHES "I"
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;W_Mot:"INTERMEDIAIRE ":W_PeriodeLib)
		END CASE
	END
	
	* PAS D'ENREGISTREMENT DE VALEUR ZERO
	IF W_TAMPONCRED # 0 THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TAMPONCRED)
		WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
	END ELSE
		IF W_TAMPONDEB # 0 THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TAMPONDEB)
			WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
		END ELSE
			W_NBLIGNE=W_NBLIGNE-1
		END
	END
	
	* modif vanessa 05/01/16 - DA 15094
	IF W_Specif ="1" THEN
		IF W_NumFact = 0 THEN
			W_NumFact=W_RECUP
		END ELSE
			IF W_RECUP > W_NumFact THEN
				W_NumFact=W_RECUP
			END
		END
	END
	
	* MODIF VANESSA 26/01/10 - DA9217-01
	IF W_GestionTVA="VRAI" THEN
		READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CLE[1,5] ELSE ENR_CIVILAIDE=""	
		GOSUB 500
	END	
	
RETURN

***************************************************
* MISE A DEFAUT DES VALEURS BROUILLARD FACTURAIDE *
***************************************************
150
	ENR_BROUILLARDDETAIL=""
	
	* INCREMENTATION NB LIGNES
	W_NBLIGNE = W_NBLIGNE+1
	
	* CONVERSION NUMERO DE LIGNE POUR ECRITURE DE LA CLE
	W_LONGUEUR=LEN(W_NBLIGNE)
	
	BEGIN CASE
		CASE W_LONGUEUR MATCHES 1
			W_NBLIGNE="0000":W_NBLIGNE
		CASE W_LONGUEUR MATCHES 2
			W_NBLIGNE="000":W_NBLIGNE
		CASE W_LONGUEUR MATCHES 3
			W_NBLIGNE="00":W_NBLIGNE
		CASE W_LONGUEUR MATCHES 4
			W_NBLIGNE="0":W_NBLIGNE
	END CASE
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,1;DATE())
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,2;W_DATEOP)
	W_TAMPONDEB=0
	W_TAMPONCRED=0
	
RETURN

*****************************
* CUMUL ATT 5 DE FACTURAIDE *
*****************************

200
	W_CUMUL=0
	W_CHARGESTAT="FAUX"
	
	W_COMPTEUR=DCOUNT(ENR_FACTURAIDE<5>,CHAR(253))
	
	FOR I = 1 TO W_COMPTEUR
	
		IF ENR_FACTURAIDE<14,I> # "1" THEN
		
			GOSUB 210
			IF W_CpteSansPriseChg # "" THEN
				ENR_FACTURAIDE<6,I>=W_CpteSansPriseChg
				IF W_SectAnal # "" THEN
					ENR_FACTURAIDE<7,I>=W_SectAnal
				END
			END
			
			GOSUB 220
			IF W_CpteCotis # "" THEN
				ENR_FACTURAIDE<6,I>=W_CpteCotis
			END
			
			IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN
			
			    * ANNEE EN COURS OU PAS ATT 12 COMPTEPART.
			    IF ENR_FACTURAIDE<1,I>>=W_DEBUTANNEE OR W_COMPTANNEEPRECBENE="" THEN
				  IF ENR_FACTURAIDE<6,I>[1,1]="6" OR ENR_FACTURAIDE<6,I>[1,1]="7" OR ENR_FACTURAIDE<6,I>="" THEN
				
					IF W_Att56="VRAI" THEN
						W_QTE=0
					END ELSE
						IF ENR_FACTURAIDE<4,I> > 0 THEN
							W_QTE=ENR_FACTURAIDE<3,I>
							*Modif Jonathan le	20 juillet 2009	: Prise en compte de l'extra comptable ngatif ds lors que la ligne de   
							*facturation est rattache un compte comptable autre que le compte de liaison par dfault des produits des aids						
							IF W_QTE<0 THEN
								IF ENR_COMPTESPARTICULIERS<1>=ENR_FACTURAIDE<6,I> THEN
									W_QTE=0
								END ELSE
									W_QTE=W_QTE
								END
							END
							*Fin modif Jonathan									
						END ELSE
							W_QTE=0
						END
					END
					
					IF ENR_FACTURAIDE<7,I> # "" THEN
					
						IF ENR_FACTURAIDE<6,I>="" THEN
							ENR_FACTURAIDE<6,I>=W_PRODUITSAIDESPREST
						END
						
						W_CUMUL=W_CUMUL+ENR_FACTURAIDE<5,I>	
						* MISE EN TABLEAU POUR FINAL
						W_NUMCOMPTE=ENR_FACTURAIDE<6,I>:ENR_FACTURAIDE<7,I>
						W_VALEUR=ENR_FACTURAIDE<5,I>
						W_SECTION=ENR_FACTURAIDE<7,I>
						IF W_VALEUR # "0" THEN
							GOSUB 300
						END
					END ELSE
					
						IF ENR_FACTURAIDE<6,I>="" THEN
							ENR_FACTURAIDE<6,I>=W_PRODUITSAIDESPREST
						END
						
						* SECTION ANALYTIQUE NON RENSEIGNEE REPARTITION PAR POURCENTAGE
						GOSUB 250
					END
				  END
			    END ELSE
				  * TRAITEMENT ECRITURE ANNEE PREC.
				  IF ENR_FACTURAIDE<6,I>[1,1]="6" OR ENR_FACTURAIDE<6,I>[1,1]="7" OR ENR_FACTURAIDE<6,I>="" THEN
				
					IF W_Att56="VRAI" THEN
						W_QTEANC=0
					END ELSE				
						IF ENR_FACTURAIDE<4,I> > 0 THEN
							W_QTEANC=ENR_FACTURAIDE<3,I>
						END ELSE
							W_QTEANC=0
						END
					END
					
					* SI SECTION ANAL.
					IF ENR_FACTURAIDE<7,I> # "" THEN
						* AFFECTATION COMPTE ANNEE PREC
						ENR_FACTURAIDE<6,I>=W_COMPTANNEEPRECBENE
						
						W_CUMULANC=W_CUMULANC+ENR_FACTURAIDE<5,I>
						W_CUMUL=W_CUMUL+ENR_FACTURAIDE<5,I>	
						
						* MISE EN TABLEAU POUR FINAL
						W_NUMCOMPTE=ENR_FACTURAIDE<6,I>:ENR_FACTURAIDE<7,I>
						W_VALEURANC=ENR_FACTURAIDE<5,I>
						W_SECTIONANC=ENR_FACTURAIDE<7,I>
						
						IF W_VALEURANC # "0" THEN
							GOSUB 301
						END
					END ELSE
						* AFFECTATION COMPTE ANNEE PREC
						ENR_FACTURAIDE<6,I>=W_COMPTANNEEPRECBENE
						
						* SECTION ANALYTIQUE NON RENSEIGNEE REPARTITION PAR POURCENTAGE
						GOSUB 250
					END
				  END
			    END
			END ELSE
			
				* SI ACTIVITE <> "P"
				IF ENR_FACTURAIDE<6,I>[1,1]="6" OR ENR_FACTURAIDE<6,I>[1,1]="7" THEN
					IF ENR_FACTURAIDE<7,I> # "" THEN
						W_CUMUL=W_CUMUL+ENR_FACTURAIDE<5,I>	
						* MISE EN TABLEAU POUR FINAL
						W_NUMCOMPTE=ENR_FACTURAIDE<6,I>:ENR_FACTURAIDE<7,I>
						W_VALEUR=ENR_FACTURAIDE<5,I>
						W_SECTION=ENR_FACTURAIDE<7,I>
						IF W_VALEUR # "0" THEN
							GOSUB 300
						END
					END ELSE
						* SECTION ANALYTIQUE NON RENSEIGNEE REPARTITION PAR POURCENTAGE
						GOSUB 250
					END
					
				END ELSE
				
					IF ENR_FACTURAIDE<6,I>="" THEN
						ENR_FACTURAIDE<6,I>=W_PRODUITSAIDESMANDAT
					END
					GOSUB 250
				END
			END
		END
	NEXT I
	
RETURN

***************************************
* PRODUITS AIDES SANS PRISE EN CHARGE *
***************************************

210

	W_Att56="FAUX"
	W_DebPerFact=ICONV("01/":ENR_FACTURAIDE<1,I>[5,2]:"/":ENR_FACTURAIDE<1,I>[1,4],"D4/")
	W_Mois=ENR_FACTURAIDE<1,I>[5,2]
	W_An=ENR_FACTURAIDE<1,I>[1,4]
	W_Mois=W_Mois+1
	IF W_Mois="13" THEN
		W_Mois="01"
		W_An=W_An+1
	END
	W_FinPerFact=ICONV("01/":W_Mois:"/":W_An,"D4/")-1
	W_CpteSansPriseChg=""
	W_SectAnal=""
	
	* si pas de prise en charge
	* MODIF VANESSA 02/03/10
	IF ENR_FACTURAIDE<15,I> = "" OR ENR_FACTURAIDE<15,I> = "00000000" THEN
		READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CLE[1,5] THEN
		
			W_CountAct=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
			W_ActAide=""
			W_SauveDeb=""
			W_CpteSansPriseChg=""
			W_SectAnal=""
			
			FOR iact=1 TO W_CountAct
			
				* recherche si activites actives sur la priode facture
				IF (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> >= W_DebPerFact) OR (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> = "") THEN
					READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ACTIVITESAIDE<1,iact> ELSE ENR_ACTIVITES=""
					
					* recherche si la section analytique de la ligne facture correspond  celle de l'activit
					IF ENR_FACTURAIDE<7,I>=ENR_ACTIVITES<2> THEN
					
						* recherche si le taux prestation de la ligne facture correspond  celui de l'activit
						itx=1
						
						LOOP 
						UNTIL ENR_ACTIVITES<15,itx> <= W_DebPerFact  DO
							itx=itx+1
						REPEAT		
						
						IF ENR_ACTIVITES<15,itx> # "" THEN
						
							* Modif Greg - 11/06/14 - DA14044 - Gestion du taux major (ENR_ACTIVITE<16>)
							IF ENR_FACTURAIDE<4,I>=ENR_ACTIVITES<14,itx> OR ENR_FACTURAIDE<4,I>=ENR_ACTIVITES<16,itx> THEN
							
								* modif vanessa 17/01/13 - MODIF POUR TOURS
								IF ENR_FACTURAIDE<15,I> = "00000000" AND ENR_FACTURAIDE<2,I>= "TAUX ":ENR_ACTIVITES<1> THEN
									W_ActAide=ENR_ACTIVITESAIDE<1,iact>
									W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
									W_CpteSansPriseChg=ENR_ACTIVITES<23>
									EXIT
								END ELSE							
									* prendre l'activit la plus ancienne
									IF W_ActAide="" THEN
										W_ActAide=ENR_ACTIVITESAIDE<1,iact>
										W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
										W_CpteSansPriseChg=ENR_ACTIVITES<23>
									END ELSE
										IF W_SauveDeb > ENR_ACTIVITESAIDE<2,iact> THEN
											W_ActAide=ENR_ACTIVITESAIDE<1,iact>
											W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
											W_CpteSansPriseChg=ENR_ACTIVITES<23>
										END
									END
								END
							END
							
						END
						
					END
					
				END
				
			NEXT iact
			
		END
		
	END ELSE
	
		* si prise en charge
		* modif vanessa 16/04/12 - DA 12032
		IF LEN(ENR_FACTURAIDE<15,I>) = 8 OR ENR_FACTURAIDE<15,I>[1,1]="A" OR ENR_FACTURAIDE<15,I>[1,1]="R" THEN
			W_Traite = "FAUX" 
		
			IF LEN(ENR_FACTURAIDE<15,I>) = 8 THEN
				READ ENR_ACCORD FROM F.ACCORD,ENR_FACTURAIDE<15,I> THEN W_Traite = "VRAI" 
				W_CodeOrga=ENR_ACCORD<1>
			END ELSE
				W_CodeOrga=ENR_FACTURAIDE<15,I>[2,3]
				W_Traite = "VRAI"
			END
			
			IF W_Traite = "VRAI" THEN
				READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CodeOrga ELSE ENR_ORGPRISECHARGE=""
				
				* modif vanessa 21/05/12 - mis en commentaire car recherche qd mme le compte de produits des aids de la caisse si on est en cout global
				*IF ENR_ORGPRISECHARGE<55> # "1" THEN
					* recherche si le taux de remboursement de la caisse correspond au taux de la ligne facture
					W_Passe="FAUX"
					itx=1
					
					LOOP
					UNTIL ENR_ORGPRISECHARGE<25,itx> <= W_DebPerFact  DO
						itx=itx+1
					REPEAT
					
					IF ENR_ORGPRISECHARGE<25,itx> # "" THEN
						IF ENR_FACTURAIDE<4,I>=ENR_ORGPRISECHARGE<26,itx> OR ENR_FACTURAIDE<4,I>=ENR_ORGPRISECHARGE<27,itx> THEN
							W_Passe="VRAI"
						END
					END
					
					IF W_Passe="VRAI" THEN
						READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CLE[1,5] THEN
							W_CountAct=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
							W_ActAide=""
							W_SauveDeb=""
							W_CpteSansPriseChg=""
							W_SectAnal=""
							
							FOR iact=1 TO W_CountAct
							
								* recherche si activites actives sur la priode facture
								IF (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> >= W_DebPerFact) OR (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> = "") THEN
									W_CountOrg=DCOUNT(ENR_ORGPRISECHARGE<47>,CHAR(253))
									FOR iorg = 1 TO W_CountOrg
									
										* recherche si l'activit de l'aid correspond  celle de l'organisme
										IF ENR_ACTIVITESAIDE<1,iact>=ENR_ORGPRISECHARGE<47,iorg> THEN
											READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ACTIVITESAIDE<1,iact> ELSE ENR_ACTIVITES=""
											* prendre l'activit la plus ancienne
											IF W_ActAide="" THEN
												W_ActAide=ENR_ACTIVITESAIDE<1,iact>
												W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
												IF ENR_ORGPRISECHARGE<56>#"" THEN
													W_CpteSansPriseChg=ENR_ORGPRISECHARGE<56>
													W_Att56="VRAI"
												END ELSE
													W_CpteSansPriseChg=ENR_ACTIVITES<23>
												END
												W_SectAnal=ENR_ACTIVITES<2>
											END ELSE
												IF W_SauveDeb > ENR_ACTIVITESAIDE<2,iact> THEN
													W_ActAide=ENR_ACTIVITESAIDE<1,iact>
													W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
													IF ENR_ORGPRISECHARGE<56>#"" THEN
														W_CpteSansPriseChg=ENR_ORGPRISECHARGE<56>
														W_Att56="VRAI"
													END ELSE
														W_CpteSansPriseChg=ENR_ACTIVITES<23>
													END
													W_SectAnal=ENR_ACTIVITES<2>
												END
											END
										END
										
									NEXT iorg
								END
								
							NEXT iact
							
						END
					END ELSE
					
						READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CLE[1,5] THEN
							W_CountAct=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
							W_ActAide=""
							W_SauveDeb=""
							W_CpteSansPriseChg=""
							
							FOR iact=1 TO W_CountAct
							
								* recherche si activites actives sur la priode facture
								IF (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> >= W_DebPerFact) OR (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> = "") THEN
									W_CountOrg=DCOUNT(ENR_ORGPRISECHARGE<47>,CHAR(253))
									FOR iorg = 1 TO W_CountOrg
									
										* recherche si l'activit de l'aid correspond  celle de l'organisme
										IF ENR_ACTIVITESAIDE<1,iact>=ENR_ORGPRISECHARGE<47,iorg> THEN
											READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ACTIVITESAIDE<1,iact> ELSE ENR_ACTIVITES=""
											* prendre l'activit la plus ancienne
											IF W_ActAide="" THEN
												W_ActAide=ENR_ACTIVITESAIDE<1,iact>
												W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
												IF ENR_ORGPRISECHARGE<56>#"" THEN
													W_CpteSansPriseChg=ENR_ORGPRISECHARGE<56>
													W_Att56="VRAI"
													W_SectAnal=ENR_ACTIVITES<2>
												END
											END ELSE
												IF W_SauveDeb > ENR_ACTIVITESAIDE<2,iact> THEN
													W_ActAide=ENR_ACTIVITESAIDE<1,iact>
													W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
													IF ENR_ORGPRISECHARGE<56>#"" THEN
														W_CpteSansPriseChg=ENR_ORGPRISECHARGE<56>
														W_Att56="VRAI"
														W_SectAnal=ENR_ACTIVITES<2>
													END
												END
											END
										END
										
									NEXT iorg
								END
								
							NEXT iact
							
						END
					END
				*END
			END
		END
	END
	
RETURN

*************************************
* PRODUITS COTISATION ANNUELLE		* 
*************************************

220

	W_CpteCotis=""
	IF ENR_FACTURAIDE<2,I>[1,19] = "COTISATION ANNUELLE" THEN
	
		* cumul montant par section analytique
		W_TabCumulSect=""
		FOR ifact = 1 TO W_COMPTEUR
		
			IF ENR_FACTURAIDE<7,ifact> # "" THEN
				IF W_TabCumulSect = "" THEN
					W_TabCumulSect<1,1>=ENR_FACTURAIDE<7,ifact>
					W_TabCumulSect<2,1>=ENR_FACTURAIDE<5,ifact>
				END ELSE
					itemp=1
					LOOP
					UNTIL W_TabCumulSect<1,itemp> = ENR_FACTURAIDE<7,ifact> OR W_TabCumulSect<1,itemp>=""
						itemp=itemp+1
					REPEAT
					IF W_TabCumulSect<1,itemp> = ENR_FACTURAIDE<7,ifact> THEN
						W_TabCumulSect<2,itemp>=W_TabCumulSect<2,itemp>+ENR_FACTURAIDE<5,ifact>	
					END ELSE
						W_TabCumulSect<1,itemp>=ENR_FACTURAIDE<7,ifact>
						W_TabCumulSect<2,itemp>=ENR_FACTURAIDE<5,ifact>						
					END
				END
			END
			
		NEXT ifact
		
		* recherche section avec montant le + fort
		W_CountTemp=DCOUNT(W_TabCumulSect<1>,CHAR(253))
		W_SauveMont=""
		W_SauveSect=""
		FOR itemp=1 TO W_CountTemp
			IF W_SauveMont="" THEN
				W_SauveMont=W_TabCumulSect<2,itemp>
				W_SauveSect=W_TabCumulSect<1,itemp>
			END ELSE
				IF W_SauveMont < W_TabCumulSect<2,itemp> THEN
					W_SauveMont=W_TabCumulSect<2,itemp>
					W_SauveSect=W_TabCumulSect<1,itemp>
				END
			END
		NEXT itemp
		
		READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CLE[1,5] THEN
			W_CountAct=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
			W_ActAide=""
			W_SauveDeb=""			
			W_CpteCotis=""
			
			FOR iact=1 TO W_CountAct
			
				* recherche si activites actives sur la priode facture
				IF (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> >= W_DebPerFact) OR (ENR_ACTIVITESAIDE<2,iact> <= W_FinPerFact AND ENR_ACTIVITESAIDE<3,iact> = "") THEN
					READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ACTIVITESAIDE<1,iact> ELSE ENR_ACTIVITES=""
					* recherche si activit  cette section
					IF W_SauveSect=ENR_ACTIVITES<2> THEN
					
						* prendre l'activit la plus ancienne
						IF W_ActAide="" THEN
							W_ActAide=ENR_ACTIVITESAIDE<1,iact>
							W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
							W_CpteCotis=ENR_ACTIVITES<24>
						END ELSE
							IF W_SauveDeb > ENR_ACTIVITESAIDE<2,iact> THEN
								W_ActAide=ENR_ACTIVITESAIDE<1,iact>
								W_SauveDeb=ENR_ACTIVITESAIDE<2,iact>
								W_CpteCotis=ENR_ACTIVITES<24>
							END
						END
						
					END
				END
				
			NEXT iact
		END
	END
	
RETURN

*****************************
* TRAITEMENT POUR EXPLOSION *
*****************************

250

	IF W_CHARGEACTIV="FAUX" THEN
		GOSUB 260
		W_CHARGEACTIV="VRAI"
	END 
	
	IF W_CHARGESTAT="FAUX" THEN
		READ ENR_STATACTAIDE FROM F.STATACTAIDE,W_CLE[1,8]:ENR_FACTURAIDE<1,I> THEN
			W_STATPRESENT="VRAI"
		END ELSE
			W_STATPRESENT="FAUX"
		END
		W_CHARGESTAT="VRAI"
	END
	
	IF W_STATPRESENT="VRAI" THEN
		GOSUB 270
	END ELSE
	    IF ENR_FACTURAIDE<1,I>>=W_DEBUTANNEE OR W_COMPTANNEEPRECBENE="" THEN
			W_CUMUL=W_CUMUL+ENR_FACTURAIDE<5,I>	
			* MISE EN TABLEAU POUR FINAL
			W_NUMCOMPTE=ENR_FACTURAIDE<6,I>
			W_VALEUR=ENR_FACTURAIDE<5,I>
			W_SECTION=""
			IF W_VALEUR # "0" THEN
				GOSUB 300
			END
	    END ELSE
			W_CUMULANC=W_CUMULANC+ENR_FACTURAIDE<5,I>	
			W_CUMUL=W_CUMUL+ENR_FACTURAIDE<5,I>
			* MISE EN TABLEAU POUR FINAL
			W_NUMCOMPTE=ENR_FACTURAIDE<6,I>
			W_VALEURANC=ENR_FACTURAIDE<5,I>
			W_SECTIONANC=""
			IF W_VALEURANC # "0" THEN
				GOSUB 301
			END
	    END
	END
	
RETURN

**********************************************************************
* MISE EN TABLEAU UNIQUE DES ACTIVITES POUR RECUP SECTION ANALYTIQUE *
**********************************************************************

260
	EXECUTE 'SSELECT ACTIVITES PAR @ID'
	EXECUTE 'SAUVE-LISTE W_REQUETEACT'
	EXECUTE "LISTE W_REQUETEACT" RETURNING MSGCODE
	
	IF MSGCODE<1>#209 THEN
	
		* TRAITEMENT DES FACTURES ORGA
		W_INDICECR=1
		W_CUMULDEBORG=0
		
		SELECT F.ACTIVITES TO W_REQUETEACT
		
		W_POSITION=0
		W_FINIACTIV="FAUX"
		LOOP
			READNEXT W_CLEACTIV FROM W_REQUETEACT ELSE W_FINIACTIV="VRAI"
		WHILE W_FINIACTIV="FAUX" DO
		
			READ ENR_ACTIVITES FROM F.ACTIVITES,W_CLEACTIV ELSE PRINT "ACTIVITES"
			IF ENR_ACTIVITES<12>=W_TYPEACTIV THEN
				W_POSITION=W_POSITION+1
				W_TABACTIV<W_POSITION,1>=W_CLEACTIV
				W_TABACTIV<W_POSITION,2>=ENR_ACTIVITES<2>
			END
		REPEAT
		
	END
	
RETURN

************************************
* EXPLOSION PAR SECTION ANALYTIQUE *
************************************
270
	W_TABTAMPON=""
	W_TABEXPLO=""
	
	W_COMPTEACTIV=DCOUNT(ENR_STATACTAIDE<1>,CHAR(253))
	W_COMPTESECT=DCOUNT(W_TABACTIV,CHAR(254))
	
	W_CUMULHEURE=0
	W_POSITION=0
	W_POSITIONMAX=0
	W_VALEURMAX=0
	W_CUMULVALEUR=0
	
	* PARCOURS DES ACTIVITES DE STATACTAIDE	
	FOR IACTIV = 1 TO W_COMPTEACTIV
	
		FOR JACTIV=1 TO W_COMPTESECT
		
			* CORRESPONDANCE DES SECTION ANALYTIQUE
			IF ENR_STATACTAIDE<1,IACTIV>=W_TABACTIV<JACTIV,1> THEN
			
				W_CUMULHEURE=W_CUMULHEURE+ENR_STATACTAIDE<2,IACTIV>
				W_TROUVEEXPLO="FAUX"
				
				* SAUVEGARDE POUR EXPLOSION AU PREMIER PASSAGE
				IF W_POSITION=0 THEN
					W_POSITION=W_POSITION+1
					W_TABEXPLO<W_POSITION,1>=W_TABACTIV<JACTIV,2>
					W_TABEXPLO<W_POSITION,2>=ENR_STATACTAIDE<2,IACTIV>	
					W_POSITIONMAX=W_POSITION
					W_VALEURMAX=ENR_STATACTAIDE<2,IACTIV>
					W_TROUVEEXPLO="VRAI"
				END ELSE
				
					W_COMPTEEXPLO=DCOUNT(W_TABEXPLO,CHAR(254))
					
					* PARCOURS DES SECTION DEJA RENSEIGNE
					FOR IEXPLO=1 TO W_COMPTEEXPLO
					
						* CORRESPONDANCE AVEC SECTION EXISTANT DEJA
						IF W_TABEXPLO<IEXPLO,1>=W_TABACTIV<JACTIV,2> THEN
						
							W_TABEXPLO<W_POSITION,2>=ENR_STATACTAIDE<2,IACTIV>+W_TABEXPLO<W_POSITION,2>
							W_TROUVEEXPLO="VRAI"
							
							* CONTROLE SI NOUVELLE VALEUR MAX
							IF W_VALEURMAX < W_TABEXPLO<W_POSITION,2> THEN
								W_POSITIONMAX=W_POSITION
								W_VALEURMAX=W_TABEXPLO<W_POSITION,2>
							END
							EXIT
						END
						
					NEXT IEXPLO
					
					IF W_TROUVEEXPLO="FAUX" THEN
					
						W_POSITION=W_POSITION+1
						W_TABEXPLO<W_POSITION,1>=W_TABACTIV<JACTIV,2>
						W_TABEXPLO<W_POSITION,2>=ENR_STATACTAIDE<2,IACTIV>
						
						IF W_VALEURMAX < ENR_STATACTAIDE<2,IACTIV> THEN
							W_POSITIONMAX=W_POSITION
							W_VALEURMAX=ENR_STATACTAIDE<2,IACTIV>
						END
					END
					
				END
				
				EXIT
			END
			
		NEXT JACTIV
		
	NEXT IACTIV 	
	
	W_COMPTEEXPLO=DCOUNT(W_TABEXPLO,CHAR(254))
	
	* ECRITURE PAR SECTION ANALYTIQUE
	
	IF ENR_FACTURAIDE<1,I>>=W_DEBUTANNEE OR W_COMPTANNEEPRECBENE="" THEN
 	    FOR IEXPLO=1 TO W_COMPTEEXPLO
		IF IEXPLO <> W_POSITIONMAX THEN
			W_CUMULVALEUR=W_CUMULVALEUR+INT((ENR_FACTURAIDE<5,I> * 	W_TABEXPLO<IEXPLO,2>) / W_CUMULHEURE +1/2)			
			W_NUMCOMPTE=ENR_FACTURAIDE<6,I>:W_TABEXPLO<IEXPLO,1>
			W_VALEUR=INT((ENR_FACTURAIDE<5,I> * W_TABEXPLO<IEXPLO,2>) / W_CUMULHEURE +1/2)
			W_SECTION=W_TABACTIV<JACTIV,1>
			IF W_VALEUR # "0" THEN
				GOSUB 300
			END	
		END
	    NEXT IEXPLO
		
	    * ECRITURE SECT ANAL LA PLUS GRANDE
  	    W_NUMCOMPTE=ENR_FACTURAIDE<6,I>:W_TABEXPLO<W_POSITIONMAX,1>
  	    W_VALEUR=ENR_FACTURAIDE<5,I> - W_CUMULVALEUR
	    W_SECTION=W_TABEXPLO<W_POSITIONMAX,1>
	    IF W_VALEUR # "0" THEN
		GOSUB 300
	    END	
	    W_CUMUL=W_CUMUL+ENR_FACTURAIDE<5,I>	
	END ELSE
 	    FOR IEXPLO=1 TO W_COMPTEEXPLO
		IF IEXPLO <> W_POSITIONMAX THEN
			W_CUMULVALEUR=W_CUMULVALEUR+INT((ENR_FACTURAIDE<5,I> * 	W_TABEXPLO<IEXPLO,2>) / W_CUMULHEURE +1/2)			
			W_NUMCOMPTE=ENR_FACTURAIDE<6,I>:W_TABEXPLO<IEXPLO,1>
			W_VALEURANC=INT((ENR_FACTURAIDE<5,I> * W_TABEXPLO<IEXPLO,2>) / W_CUMULHEURE +1/2)
			W_SECTIONANC=W_TABACTIV<JACTIV,1>
			IF W_VALEURANC # "0" THEN
				GOSUB 301
			END	
		END
	    NEXT IEXPLO
		
	    * ECRITURE SECT ANAL LA PLUS GRANDE
  	    W_NUMCOMPTE=ENR_FACTURAIDE<6,I>:W_TABEXPLO<W_POSITIONMAX,1>
  	    W_VALEURANC=ENR_FACTURAIDE<5,I> - W_CUMULVALEUR
	    W_SECTIONANC=W_TABEXPLO<W_POSITIONMAX,1>
	    IF W_VALEURANC # "0" THEN
		GOSUB 301
	    END	
	    W_CUMULANC=W_CUMULANC+ENR_FACTURAIDE<5,I>
	    W_CUMUL=W_CUMUL+ENR_FACTURAIDE<5,I>	
	END
RETURN

***************************************
* MAJ TABLEAU CONTREPARTIE FACTURAIDE *
***************************************
300
	W_INDICTROUVE="FAUX"
	
	* PASSAGE SUR COMPTE PAR DEFAUT SI PAS RENSEIGNEE COMME IL FAUT
	IF LEN(W_NUMCOMPTE) # 13 THEN
	
		IF LEN(W_SECTION)=3 THEN
		
			IF W_COMPTEATTENTE[1,1]="6" OR W_COMPTEATTENTE[1,1]="7" THEN
				W_NUMCOMPTE=W_COMPTEATTENTE[1,10]:W_SECTION
			END ELSE
				W_NUMCOMPTE=W_COMPTEATTENTE[1,10]
			END
			
		END ELSE
		
			IF LEN(W_NUMCOMPTE)=10 THEN
			
				READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_CLE[1,5] ELSE PRINT "ACTIVITESAIDE"
				W_COMPTEACTIVAIDE=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
				
				FOR IACTIAIDE=1 TO W_COMPTEACTIVAIDE
					READ ENR_ACTIVITES FROM	F.ACTIVITES,ENR_ACTIVITESAIDE<1,IACTIAIDE> ELSE PRINT "ACTIVITES"
					IF ENR_ACTIVITES<12>=W_TYPEACTIV THEN
						W_SECTION=ENR_ACTIVITES<2>
					END				
				NEXT IACTIAIDE	
				
				W_NUMCOMPTE=W_NUMCOMPTE:W_SECTION
				
			END ELSE
				W_NUMCOMPTE=W_COMPTEATTENTE
			END
		END
	END
	
	* modif vanessa 17/01/13 - MODIF POUR TOURS
	IF W_NUMCOMPTE[1,10]="7061120000" THEN
		W_Fichier<-1>= W_CLE[1,5]:";":W_CLE[16,10]:";":W_VALEUR/100:";":ENR_FACTURAIDE<2,I>:";":ENR_FACTURAIDE<15,I>
	END
	IF W_NUMCOMPTE[1,10]="7061020000" THEN
		W_Fichier706102<-1>= W_CLE[1,5]:";":W_CLE[16,10]:";":W_VALEUR/100:";":ENR_FACTURAIDE<2,I>:";":ENR_FACTURAIDE<15,I>
	END
	* CONTROLE PREMIER PASSAGE OU PAS
	IF W_TABLEAU <1,1>="" THEN
		W_TABLEAU<1,1>=W_NUMCOMPTE
		W_TABLEAU<1,2>=W_VALEUR
		*Modif Jonathan le 20 juillet 2009 : Plus de test sur une quantit positive
		IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") THEN
			W_TABLEAU<1,3>=W_QTE
		END
		*Fin modif Jonathan
		
	END ELSE
		* RECHERCHE SI COMPTE EXISTE DEJA
		W_COMPTEURTAB=DCOUNT(W_TABLEAU,CHAR(254))
		FOR ITAB=1 TO W_COMPTEURTAB
			IF W_TABLEAU<ITAB,1> = W_NUMCOMPTE THEN
				W_TABLEAU<ITAB,2>=W_TABLEAU<ITAB,2>+W_VALEUR
				*Modif Jonathan le 20 juillet 2009 : Plus de test sur une quantit positive
				IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") THEN
					W_TABLEAU<ITAB,3>=W_TABLEAU<ITAB,3>+W_QTE
				END
				*Fin modif Jonathan
				W_INDICTROUVE="VRAI"
				EXIT
			END
		NEXT ITAB
		
		* SI COMPTE PAS TROUVE, CREATION
		IF W_INDICTROUVE="FAUX" THEN
		
			W_TABLEAU<W_COMPTEURTAB+1,1>=W_NUMCOMPTE
			W_TABLEAU<W_COMPTEURTAB+1,2>=W_VALEUR
			*Modif Jonathan le 20 juillet 2009 : Plus de test sur une quantit positive
			IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") THEN
				W_TABLEAU<W_COMPTEURTAB+1,3>=W_TABLEAU<W_COMPTEURTAB+1,3>+W_QTE
			END
			*Fin modif Jonathan
			
		END
		
	END
	
RETURN

***************************************
* MAJ TABLEAU CONTREPARTIE FACTURAIDE * PERIODE -1
***************************************
301
	W_INDICTROUVE="FAUX"
	
	* CONTROLE PREMIER PASSAGE OU PAS
	IF W_TABLEAUANC<1,1>="" THEN
		W_TABLEAUANC<1,1>=W_NUMCOMPTE
		W_TABLEAUANC<1,2>=W_VALEURANC
		IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTEANC > 0 THEN
			W_TABLEAUANC<1,3>=W_QTEANC
		END ELSE
			IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN W_TABLEAUANC<1,3>="0"
		END
		
	END ELSE
		* RECHERCHE SI COMPTE EXISTE DEJA
		W_COMPTEURTAB=DCOUNT(W_TABLEAUANC,CHAR(254))
		FOR ITAB=1 TO W_COMPTEURTAB
			IF W_TABLEAUANC<ITAB,1> = W_NUMCOMPTE THEN
				W_TABLEAUANC<ITAB,2>=W_TABLEAUANC<ITAB,2>+W_VALEURANC
				IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTEANC > 0 THEN
					W_TABLEAUANC<ITAB,3>=W_TABLEAUANC<ITAB,3>+W_QTEANC
				END
				W_INDICTROUVE="VRAI"
				EXIT
			END
		NEXT ITAB
		
		* SI COMPTE PAS TROUVE, CREATION
		IF W_INDICTROUVE="FAUX" THEN
			W_TABLEAUANC<W_COMPTEURTAB+1,1>=W_NUMCOMPTE
			W_TABLEAUANC<W_COMPTEURTAB+1,2>=W_VALEURANC
			IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTEANC > 0 THEN
				W_TABLEAUANC<W_COMPTEURTAB+1,3>=W_TABLEAUANC<W_COMPTEURTAB+1,3>+W_QTEANC
			END ELSE
				IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN W_TABLEAUANC<W_COMPTEURTAB+1,3>=0
			END
		END
		
	END
	
RETURN

*******************************
* PARCOURS REQUETE FACTURAIDE *
*******************************
400

	W_FINI="FAUX"
	LOOP
		READNEXT W_CLE FROM W_REQUETEFACT ELSE W_FINI="VRAI"
	WHILE W_FINI="FAUX" DO
		IF W_ANCIENCODE # W_CLE[1,25] THEN
			*-- Modification mikael le 12/12/2012 suite au ticket 1720
			* MODIF VANESSA 19/03/15 - DA 15021 - MIS EN COMMENTAIRE
			* W_CUMULTVATOT = 0
			*-- Fin modification
			GOSUB 100
			W_ANCIENCODE=W_CLE[1,25]
		END
	REPEAT
	
RETURN

***************************
* ECRITURE TVA FACTURAIDE *
***************************
500

	IF W_CUMULTVATOT # 0 THEN
		GOSUB 150
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_COMPTETVA)
		
		* MODIF VANESSA 26/01/10 - DA9217-01
		IF W_GestionTVA="VRAI" THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>)
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_RECUP)
		END ELSE
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"TVA PERIODE ":W_LIBPERIODETRAIT)
		END
		
		* CUMUL POUR BROUILLARDTETE
		IF W_CUMULTVATOT >= 0 THEN
			W_CUMULCREDIT=W_CUMULCREDIT+W_CUMULTVATOT
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_CUMULTVATOT)
		END ELSE
			W_CUMULDEBIT=W_CUMULDEBIT+(W_CUMULTVATOT * -1)
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_CUMULTVATOT * -1))
		END
		
		* ECRITURE INFO
		WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
	END
	
RETURN

***************************
* CONTREPARTIE FACTURAIDE *
***************************
600

*******************
* TRAITEMENT PERIODE EN COURS
	W_COMPTEUR=DCOUNT(W_TABLEAU,CHAR(254))
	
	IF W_TYPEACTIV="M" THEN
		GOSUB 650
	END
	
	FOR ITAB=1 TO W_COMPTEUR
	
		GOSUB 150
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_TABLEAU<ITAB,1>[1,10])
		* TEST TYPE COMPTE (1 A 5 PAS DE SECTION/6 ET 7 SECTION)
		IF W_TABLEAU<ITAB,1>[1,1]>=6 THEN
		    IF W_TABLEAU<ITAB,1>[11,3]<>"" THEN 
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAU<ITAB,1>[11,3])
		    END ELSE
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABACTIV<1,2>)
		    END
		END ELSE
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")
		END
		READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_ENTITE:W_TABLEAU<ITAB,1>[1,10] ELSE 
			PRINT "PLAN COMPTABLE"
		END
		
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;ENR_PLANCOMPTABLE<1>:" ":W_LIBPERIODETRAIT)
		
		IF W_TABLEAU<ITAB,1>[1,1]=7 AND W_TABLEAU<ITAB,2> >= 0 THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAU<ITAB,2>)	
			* CUMUL POUR BROUILLARDTETE
			W_CUMULCREDIT=W_CUMULCREDIT+W_TABLEAU<ITAB,2>
			
		END ELSE
			IF W_TABLEAU<ITAB,1>[1,1]=7 AND W_TABLEAU<ITAB,2> < 0 THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAU<ITAB,2> * -1))			
				* CUMUL POUR BROUILLARDTETE
				W_CUMULDEBIT=W_CUMULDEBIT+(W_TABLEAU<ITAB,2> * -1)
				
			END ELSE
				IF W_TABLEAU<ITAB,1>[1,1]=6 AND W_TABLEAU<ITAB,2> >= 0 THEN
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAU<ITAB,2>)			
					* CUMUL POUR BROUILLARDTETE
					W_CUMULDEBIT=W_CUMULDEBIT+W_TABLEAU<ITAB,2>
					
				END ELSE
					IF W_TABLEAU<ITAB,1>[1,1]=6 AND W_TABLEAU<ITAB,2> < 0 THEN
						ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;(W_TABLEAU<ITAB,2> * -1))			
						* CUMUL POUR BROUILLARDTETE
						W_CUMULCREDIT=W_CUMULCREDIT+(W_TABLEAU<ITAB,2> * -1)
						
					END ELSE
						* COMPTE ATTENTE
						IF W_TABLEAU<ITAB,2> >= 0 THEN
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAU<ITAB,2>)	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULCREDIT=W_CUMULCREDIT+W_TABLEAU<ITAB,2>
							
						END ELSE
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAU<ITAB,2> * -1))	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULDEBIT=W_CUMULDEBIT+(W_TABLEAU<ITAB,2> * -1)
							
						END
					END
				END
			END
		END
		
		IF W_TYPEACTIV ="P" OR W_TYPEACTIV="I" THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_TABLEAU<ITAB,3>)
		END
		
		IF ENR_BROUILLARDDETAIL<4>[4,10]=COMPTEATTENTECOMPTEPART AND W_TYPEACTIV="M" THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"PRISE EN CHARGE MANDAT. ":W_PeriodeLib)
		END
		
		WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
		
	NEXT ITAB
	
*******************
* TRAITEMENT PERIODE - 1

	W_COMPTEUR=DCOUNT(W_TABLEAUANC,CHAR(254))
	
	FOR ITAB=1 TO W_COMPTEUR
		GOSUB 150
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_TABLEAUANC<ITAB,1>[1,10])
		* TEST TYPE COMPTE (1 A 5 PAS DE SECTION/6 ET 7 SECTION)
		IF W_TABLEAU<ITAB,1>[1,1]>=6 THEN
		    IF W_TABLEAU<ITAB,1>[11,3]<>"" THEN 
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAUANC<ITAB,1>[11,3])	
		    END ELSE		
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABACTIV<1,2>)	
		    END		
		END ELSE
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")
		END
		READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_ENTITE:W_TABLEAUANC<ITAB,1>[1,10] ELSE 
			PRINT "PLAN COMPTABLE"
		END
		
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;ENR_PLANCOMPTABLE<1>:" ":W_LIBPERIODETRAIT)
		
		IF W_TABLEAUANC<ITAB,1>[1,1]=7 AND W_TABLEAUANC<ITAB,2> >= 0 THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAUANC<ITAB,2>)	
			* CUMUL POUR BROUILLARDTETE
			W_CUMULCREDITANC=W_CUMULCREDITANC+W_TABLEAUANC<ITAB,2>
			
		END ELSE
			IF W_TABLEAU<ITAB,1>[1,1]=7 AND W_TABLEAU<ITAB,2> < 0 THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAUANC<ITAB,2> * -1))			
				* CUMUL POUR BROUILLARDTETE
				W_CUMULDEBITANC=W_CUMULDEBITANC+(W_TABLEAUANC<ITAB,2> * -1)
				
			END ELSE
				IF W_TABLEAUANC<ITAB,1>[1,1]=6 AND W_TABLEAUANC<ITAB,2> >= 0 THEN
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAUANC<ITAB,2>)			
					* CUMUL POUR BROUILLARDTETE
					W_CUMULDEBITANC=W_CUMULDEBITANC+W_TABLEAUANC<ITAB,2>
					
				END ELSE
					IF W_TABLEAUANC<ITAB,1>[1,1]=6 AND W_TABLEAUANC<ITAB,2> < 0 THEN
						ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;(W_TABLEAUANC<ITAB,2> * -1))			
						* CUMUL POUR BROUILLARDTETE
						W_CUMULCREDITANC=W_CUMULCREDITANC+(W_TABLEAUANC<ITAB,2> * -1)
						
					END ELSE
						* COMPTE ATTENTE
						IF W_TABLEAUANC<ITAB,2> >= 0 THEN
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAUANC<ITAB,2>)	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULCREDITANC=W_CUMULCREDITANC+W_TABLEAUANC<ITAB,2>
							
						END ELSE
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAUANC<ITAB,2> * -1))	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULDEBITANC=W_CUMULDEBITANC+(W_TABLEAUANC<ITAB,2> * -1)
							
						END
					END
				END
			END
		END
		
		IF W_TYPEACTIV ="P" OR W_TYPEACTIV="I" THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_TABLEAUANC<ITAB,3>)
		END
		
		IF ENR_BROUILLARDDETAIL<4>[4,10]=COMPTEATTENTECOMPTEPART AND W_TYPEACTIV="M" THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"PRISE EN CHARGE MANDAT. ":W_PeriodeLib)
		END
		
		WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
		
	NEXT ITAB
RETURN

***************************
* CORRECTION MANDATAIRE   * 
* REEQUILIBRAGE COMPTABLE *
***************************
650
	W_TOTALTAB=0
	W_POSMAX=0
	W_VALMAX=0
	
	FOR ITAB=1 TO W_COMPTEUR
	
		W_TOTALTAB=W_TOTALTAB+W_TABLEAU<ITAB,2>
		IF W_TABLEAU<ITAB,1>[1,10]=W_PRODUITSAIDESMANDAT THEN
			W_POSMAX=ITAB
		END
		
	NEXT ITAB
	
	W_TOTALTABANC=0
        W_COMPTEURANC=DCOUNT(W_TABLEAUANC,CHAR(254))
	FOR ITABANC=1 TO W_COMPTEURANC
		W_TOTALTABANC=W_TOTALTABANC+W_TABLEAUANC<ITABANC,2>
	NEXT ITABANC
	W_TOTALTAB=W_TOTALTAB+W_TOTALTABANC-W_CUMULDEBIT+W_CUMULCREDIT-W_CUMULDEBORG-W_CUMULACC-W_CUMULDEBORGANC+W_CUMULMANDORG
	
**	IF W_TOTALTAB # 0 THEN
**		W_TABLEAU<W_POSMAX,2> = W_TABLEAU<W_POSMAX,2> - W_TOTALTAB
**	END

	* SI MONTANT PRISE EN CHARGE AVEC VENTILATION COMPTABLE -> PAS DANS PRESTATIONS SERVICES MAIS DANS COMPTE ATTENTE
	* REEQUILIBRE BROUILLARD
	IF W_TOTALTAB # 0 THEN
		W_TABLEAU<W_COMPTEUR+1,1> = W_COMPTEATTENTE
		W_TABLEAU<W_COMPTEUR+1,2> = -W_TOTALTAB-W_CUMULACC
		W_COMPTEUR=W_COMPTEUR+1
	END
	
RETURN

******************
* VALEUR POUR VB *
******************
700
	W_CLETEMPO="AFFECTPROD"
	ENR_TEMPO=""
	ENR_TEMPO=REPLACE(ENR_TEMPO,1;W_NBLIGNE)
	IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN
		ENR_TEMPO=REPLACE(ENR_TEMPO,2;W_CUMULDEBIT+W_CUMULDEBITANC+W_CUMULDEBORG+W_CUMULDEBORGANC)
		ENR_TEMPO=REPLACE(ENR_TEMPO,3;W_CUMULCREDIT+W_CUMULCREDITANC+W_CUMULDEBORG+W_CUMULDEBORGANC)
	END ELSE
		ENR_TEMPO=REPLACE(ENR_TEMPO,2;W_CUMULDEBIT+W_CUMULDEBITANC+W_CUMULDEBORG+W_CUMULDEBORGANC)
		ENR_TEMPO=REPLACE(ENR_TEMPO,3;W_CUMULCREDIT+W_CUMULCREDITANC+W_CUMULMANDORG)
	END
	WRITE ENR_TEMPO ON F.TEMPO,W_CLETEMPO
RETURN

******************************
* PARCOURS REQUETE FACTURORG *
******************************
800
	W_ANCIENCODE=""
	W_ANCIENORG=""
	W_AncienType=""
	
	W_FINI="FAUX"
	W_TabAsso = ""
	LOOP
		READNEXT W_CLE FROM W_REQUETEORG ELSE W_FINI="VRAI"
	WHILE W_FINI="FAUX" DO
		IF W_Fede # "VRAI" THEN 	
		
			READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CLE[1,3] ELSE PRINT "ORGPRISECHARGE"
			
			IF W_ANCIENORG="" THEN W_ANCIENORG=ENR_ORGPRISECHARGE<1>
			
			IF ENR_ORGPRISECHARGE<50>="1" THEN
			
			END ELSE
			
				READ ENR_FACTURORG FROM F.FACTURORG,W_CLE ELSE STOP
				
				IF ENR_FACTURORG <11> = "" THEN
				
					W_COMPTORG=DCOUNT(ENR_FACTURORG<1>,CHAR(253))
					W_CUMUL4=0
					W_CUMUL5=0
					
					FOR I=1 TO W_COMPTORG
						W_CUMUL4=W_CUMUL4+ENR_FACTURORG<4,I>
						W_CUMUL5=W_CUMUL5+ENR_FACTURORG<1,I>
					NEXT I 
					
					W_CUMUL4=W_CUMUL4+ENR_FACTURORG<8>
					W_CUMUL5=W_CUMUL5+ENR_FACTURORG<5>
					READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CLE[1,3] ELSE PRINT "ORGPRISECHARGE"
					READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ORGPRISECHARGE<47,1> ELSE PRINT "ACTIVITES"
					ENR_FACTURORG=REPLACE(ENR_FACTURORG,11;ENR_ACTIVITES<2>)
					ENR_FACTURORG=REPLACE(ENR_FACTURORG,12;W_CUMUL4)
					ENR_FACTURORG=REPLACE(ENR_FACTURORG,13;W_CUMUL5)
					WRITE ENR_FACTURORG ON F.FACTURORG,W_CLE 
					
				END
				
				IF W_ANCIENCODE # ENR_FACTURORG<9> THEN
					IF W_ANCIENCODE # "" THEN
						* ECRITURE PRECEDENT
						GOSUB 900
					END
					* CREATION NOUVEAU
					GOSUB 1100
					
				END ELSE
					* MAJ BROUILLARD
					GOSUB 1000
				END
				W_ANCIENCODE = ENR_FACTURORG<9>
				W_ANCIENORG = ENR_ORGPRISECHARGE<1>
				W_AncienType=ENR_ORGPRISECHARGE<18>
				
			END
		END ELSE
		
			READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CLE[1,3] ELSE PRINT "ORGPRISECHARGE"
			
			IF W_ANCIENORG="" THEN W_ANCIENORG=ENR_ORGPRISECHARGE<1>
			
			IF ENR_ORGPRISECHARGE<50>="1" THEN
			
			END ELSE
			
				READ ENR_FACTURORG FROM F.FACTURORG,W_CLE ELSE STOP
				
				IF ENR_FACTURORG <11> = "" THEN
				
					W_COMPTORG=DCOUNT(ENR_FACTURORG<1>,CHAR(253))
					W_CUMUL4=0
					W_CUMUL5=0
					
					FOR I=1 TO W_COMPTORG
						W_CUMUL4=W_CUMUL4+ENR_FACTURORG<4,I>
						W_CUMUL5=W_CUMUL5+ENR_FACTURORG<1,I>
					NEXT I 
					
					W_CUMUL4=W_CUMUL4+ENR_FACTURORG<8>
					W_CUMUL5=W_CUMUL5+ENR_FACTURORG<5>
					READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CLE[1,3] ELSE PRINT "ORGPRISECHARGE"
					READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ORGPRISECHARGE<47,1> ELSE PRINT "ACTIVITES"
					ENR_FACTURORG=REPLACE(ENR_FACTURORG,11;ENR_ACTIVITES<2>)
					ENR_FACTURORG=REPLACE(ENR_FACTURORG,12;W_CUMUL4)
					ENR_FACTURORG=REPLACE(ENR_FACTURORG,13;W_CUMUL5)
					WRITE ENR_FACTURORG ON F.FACTURORG,W_CLE 
					
				END
				
				READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CLE[5,5] THEN
					* Mise en tableau pour criture crdit en final (GOSUB 2000)
					*GOSUB 1700
					IF W_TabAsso<ENR_CIVILAIDE<40>[1,3]> = "" THEN
						W_TabAsso<ENR_CIVILAIDE<40>[1,3],1> = 0
						W_TabAsso<ENR_CIVILAIDE<40>[1,3],2> = 0
						W_NbAssoFede = W_NbAssoFede + 1
						W_ListeAssoFede<W_NbAssoFede> = ENR_CIVILAIDE<40>[1,3] 
					END
					W_COMPTEUR=DCOUNT(ENR_FACTURORG<11>,CHAR(253))
					FOR I = 1 TO W_COMPTEUR
						W_TabAsso<ENR_CIVILAIDE<40>[1,3],1> = W_TabAsso<ENR_CIVILAIDE<40>[1,3],1> + ENR_FACTURORG<12,I>
						W_TabAsso<ENR_CIVILAIDE<40>[1,3],2> = W_TabAsso<ENR_CIVILAIDE<40>[1,3],2> + ENR_FACTURORG<13,I>
					NEXT I
					
				END
				
				IF W_ANCIENCODE # ENR_FACTURORG<9> THEN
					IF W_ANCIENCODE # "" THEN
						* ECRITURE PRECEDENT
						GOSUB 900
					END
					* CREATION NOUVEAU
					GOSUB 1100
					
				END ELSE
					* MAJ BROUILLARD
					GOSUB 1000
				END
				W_ANCIENCODE = ENR_FACTURORG<9>
				W_ANCIENORG = ENR_ORGPRISECHARGE<1>
				W_AncienType=ENR_ORGPRISECHARGE<18>
				
			END
			
		END
	REPEAT
	
	* DERNIER LIGNES A ECRIRE
	GOSUB 900
	
	IF W_Fede = "VRAI" THEN
		GOSUB 2000
	END
	
	IF W_TYPEACTIV="M" THEN
		IF W_CUMULMANDORG#0 THEN
			GOSUB 150
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:COMPTEATTENTECOMPTEPART)	
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"PRISE EN CHARGE MANDAT. ":W_PeriodeLib)	
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;"")	
			IF W_CUMULMANDORG>=0 THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_CUMULMANDORG)
			END ELSE
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_CUMULMANDORG * -1)
			END
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;"")	
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")	
			WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
		END
	END
	
RETURN

*****************************
* ECRITURE BROUILLARDDETAIL *
*****************************
900
IF W_Fede = "VRAI" THEN
   * On ne fait plus rien !!!
   
END ELSE
	IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN
		W_COMPTEUR=DCOUNT(W_TABLEAU,CHAR(254))
		FOR I= 1 TO W_COMPTEUR
			* DEBUT CREATION BROUILLARDDETAIL
			GOSUB 150
			
			*RENSEIGNEMENT BROUILLARDDETAIL
			GOSUB 1200
			
		NEXT I
		
		W_COMPTEUR=DCOUNT(W_TABLEAUANC,CHAR(254))
		FOR I= 1 TO W_COMPTEUR
			* DEBUT CREATION BROUILLARDDETAIL
			GOSUB 150
			
			*RENSEIGNEMENT BROUILLARDDETAIL
			GOSUB 1201
			
		NEXT I
	END
END

* ECRITURE CONTREPARTIE
IF W_TABLEAU<>"" THEN GOSUB 1400
IF W_TABLEAUANC<>"" THEN GOSUB 1401

RETURN

*********************************
* MAJ BROUILLARDDETAIL EXISTANT *
*********************************
1000

	W_COMPTEUR=DCOUNT(ENR_FACTURORG<11>,CHAR(253))
	
	W_INDICTROUVE="FAUX"
	W_INDICTROUVEANC=0
	W_PassePs="FAUX"
	
	IF ENR_ORGPRISECHARGE<54> # "" THEN
		W_CptePsCred=ENR_ORGPRISECHARGE<54>
	END ELSE
		W_CptePsCred=""
	END	
	
	IF ENR_FACTURORG<15> # "" AND ENR_FACTURORG<15> # "0" AND W_CptePsCred # "" THEN
		W_PassePs="VRAI"
		IF W_COMPTEUR # 1 THEN
			GOSUB 1001
		END
	END	
	
** TRAVAILLE BROUILLARD EN COURS
	IF W_CLE[13,6]>=W_DEBUTANNEE OR W_COMPTANNEEPRECORG="" THEN
	
	    FOR I=1 TO W_COMPTEUR
			W_COMPTEURBOUCLE=DCOUNT(W_TABLEAU,CHAR(254))
			
			FOR ITAB=1 TO W_COMPTEURBOUCLE
		  		IF ENR_FACTURORG<11,I> = W_TABLEAU<ITAB,1> THEN
					IF W_PassePs="VRAI" THEN
						W_TABLEAU<ITAB,4>=ENR_FACTURORG<15,I>+W_TABLEAU<ITAB,4>
						W_TABLEAU<ITAB,2>=(ENR_FACTURORG<12,I>-ENR_FACTURORG<15,I>)+W_TABLEAU<ITAB,2>
					END ELSE
						W_TABLEAU<ITAB,2>=ENR_FACTURORG<12,I>+W_TABLEAU<ITAB,2>
						W_TABLEAU<ITAB,4>=""
					END
				    W_TABLEAU<ITAB,3>=ENR_FACTURORG<13,I>+W_TABLEAU<ITAB,3>
				    W_CUMULDEBORG=W_CUMULDEBORG + ABS(ENR_FACTURORG<12,I>)
				    W_CUMULVAL=W_CUMULVAL + ENR_FACTURORG<12,I>
				    W_CUMULQTE=W_CUMULQTE + ENR_FACTURORG<13,I>
				    W_INDICTROUVE="VRAI"
				    EXIT
				END
			NEXT ITAB
			
			IF W_INDICTROUVE="FAUX" THEN
				W_TABLEAU<W_COMPTEURBOUCLE+1,1>=ENR_FACTURORG<11,I>
				IF W_PassePs="VRAI" THEN
					W_TABLEAU<W_COMPTEURBOUCLE+1,4>=ENR_FACTURORG<15,I>
					W_TABLEAU<W_COMPTEURBOUCLE+1,2>=ENR_FACTURORG<12,I>-ENR_FACTURORG<15,I>
				END ELSE				
					W_TABLEAU<W_COMPTEURBOUCLE+1,2>=ENR_FACTURORG<12,I>
					W_TABLEAU<W_COMPTEURBOUCLE+1,4>=""
				END
				W_TABLEAU<W_COMPTEURBOUCLE+1,3>=ENR_FACTURORG<13,I>
				W_CUMULDEBORG=W_CUMULDEBORG+ ABS(ENR_FACTURORG<12,I>)
				W_CUMULVAL=W_CUMULVAL + ENR_FACTURORG<12,I>
				W_CUMULQTE=W_CUMULQTE + ENR_FACTURORG<13,I>
			END
			
			W_INDICTROUVE="FAUX"
	    NEXT I
		
	END
	
** TRAVAILLE BROUILLARD PREC
	IF W_CLE[13,6]<W_DEBUTANNEE THEN
	    FOR I=1 TO W_COMPTEUR
		W_COMPTEURBOUCLEANC=DCOUNT(W_TABLEAUANC,CHAR(254))
		
		FOR ITAB=1 TO W_COMPTEURBOUCLEANC
		    IF W_COMPTANNEEPRECORG<>"" THEN
 	   	   	    W_INDICTROUVEANC=1
				IF ENR_FACTURORG<11,I> = W_TABLEAUANC<ITAB,1> THEN
					IF W_PassePs="VRAI" THEN
						W_TABLEAUANC<ITAB,4>=ENR_FACTURORG<15,I>+W_TABLEAUANC<ITAB,4>
						W_TABLEAUANC<ITAB,2>=(ENR_FACTURORG<12,I>-ENR_FACTURORG<15,I>)+W_TABLEAUANC<ITAB,2>
					END ELSE
					    W_TABLEAUANC<ITAB,2>=ENR_FACTURORG<12,I>+W_TABLEAUANC<ITAB,2>
						W_TABLEAUANC<ITAB,4>=""
					END				
	  	  	  	    W_TABLEAUANC<ITAB,3>=ENR_FACTURORG<13,I>+W_TABLEAUANC<ITAB,3>
				    W_CUMULDEBORGANC=W_CUMULDEBORGANC+ ABS(ENR_FACTURORG<12,I>)
				    W_CUMULVALANC=W_CUMULVALANC + ENR_FACTURORG<12,I>
				    W_CUMULQTEANC=W_CUMULQTEANC + ENR_FACTURORG<13,I>
				    W_INDICTROUVEANC=2
				    EXIT
				END
			END
		NEXT ITAB
		
	    IF W_COMPTANNEEPRECORG<>"" AND W_INDICTROUVEANC=0 THEN
		    IF W_CLE[13,6]<W_DEBUTANNEE THEN W_INDICTROUVEANC=1
		END
		
		IF W_INDICTROUVEANC=1 THEN
			W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,1>=ENR_FACTURORG<11,I>
			IF W_PassePs="VRAI" THEN
				W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,4>=ENR_FACTURORG<15,I>
				W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,2>=ENR_FACTURORG<12,I>-ENR_FACTURORG<15,I>
			END ELSE				
				W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,2>=ENR_FACTURORG<12,I>
				W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,4>=""
			END	
			W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,3>=ENR_FACTURORG<13,I>
			W_CUMULDEBORGANC=W_CUMULDEBORGANC+ ABS(ENR_FACTURORG<12,I>)
			W_CUMULVALANC=W_CUMULVALANC + ENR_FACTURORG<12,I>
			W_CUMULQTEANC=W_CUMULQTEANC + ENR_FACTURORG<13,I>
		END
		
		W_INDICTROUVEANC=0
 	    NEXT I
	END
RETURN

**********************************
* Eclatement de la PS			 *
**********************************
1001

	W_TotalMont=0
	W_TabPourc=""
	W_PlusFort=""
	W_IndPlusFort=0
	W_MontPS=ENR_FACTURORG<15>
	
	FOR iMV=1 TO W_COMPTEUR
		W_TotalMont=W_TotalMont+ENR_FACTURORG<12,iMV>
	NEXT iMV
	
	FOR iMV=1 TO W_COMPTEUR
		W_TabPourc<iMV,1>=ENR_FACTURORG<11,iMV>
		W_TabPourc<iMV,2>=(ENR_FACTURORG<12,iMV>/W_TotalMont)*10000
		W_TabPourc<iMV,2>=INT(W_TabPourc<iMV,2>	+ (1/2))
		IF W_PlusFort="" THEN
			W_PlusFort=W_TabPourc<iMV,2>
			W_IndPlusFort=iMV
		END ELSE
			IF W_PlusFort < W_TabPourc<iMV,2> THEN
				W_PlusFort=W_TabPourc<iMV,2>
				W_IndPlusFort=iMV
			END
		END
	NEXT iMV
	
	W_TotalMont=0
	FOR iMV=1 TO W_COMPTEUR
		ENR_FACTURORG<15,iMV>=(W_MontPS*W_TabPourc<iMV,2>)/10000
		ENR_FACTURORG<15,iMV>=INT(ENR_FACTURORG<15,iMV> +(1/2))
		W_TotalMont=W_TotalMont+ENR_FACTURORG<15,iMV>
	NEXT iMV
	
	IF W_TotalMont # W_MontPS THEN
		W_Diff=W_MontPS-W_TotalMont
		ENR_FACTURORG<15,iMV>=ENR_FACTURORG<15,iMV>+W_Diff
	END
RETURN

**********************************
* CREATION POUR BROUILLARDDETAIL *
**********************************
1100

	W_TABLEAU=""
	W_TABLEAUANC=""
	W_CUMULVAL=0
	W_CUMULQTE=0
	W_CUMULVALANC=0
	W_CUMULQTEANC=0
    
	W_PassePs="FAUX"
	W_COMPTEUR=DCOUNT(ENR_FACTURORG<11>,CHAR(253))
	
	IF ENR_ORGPRISECHARGE<54> # "" THEN
		W_CptePsCred=ENR_ORGPRISECHARGE<54>
	END ELSE
		W_CptePsCred=""
	END		
	IF ENR_FACTURORG<15> # "" AND ENR_FACTURORG<15> # "0" AND W_CptePsCred # "" THEN
		W_PassePs="VRAI"
		IF W_COMPTEUR # 1 THEN
			GOSUB 1001
		END
	END		
	
	IF W_COMPTANNEEPRECORG<>"" THEN
	    IF W_CLE[13,6]<W_DEBUTANNEE THEN        
   	        W_COMPTEUR=DCOUNT(ENR_FACTURORG<11>,CHAR(253))
	        FOR I=1 TO W_COMPTEUR
		    W_TABLEAUANC<I,1>=ENR_FACTURORG<11,I>
			IF W_PassePs="VRAI" THEN
				W_TABLEAUANC<I,4>=ENR_FACTURORG<15,I>
				W_TABLEAUANC<I,2>=ENR_FACTURORG<12,I>-ENR_FACTURORG<15,I>
			END ELSE				
			    W_TABLEAUANC<I,2>=ENR_FACTURORG<12,I>
				W_TABLEAUANC<I,4>=""
			END				
		    W_TABLEAUANC<I,3>=ENR_FACTURORG<13,I>
		    W_CUMULDEBORGANC=W_CUMULDEBORGANC+ ABS(ENR_FACTURORG<12,I>)
		    W_CUMULVALANC=W_CUMULVALANC + ENR_FACTURORG<12,I>
		    W_CUMULQTEANC=W_CUMULQTEANC + ENR_FACTURORG<13,I>
	        NEXT I	
	    END ELSE
   	        W_COMPTEUR=DCOUNT(ENR_FACTURORG<11>,CHAR(253))
	        FOR I=1 TO W_COMPTEUR
		    W_TABLEAU<I,1>=ENR_FACTURORG<11,I>
			IF W_PassePs="VRAI" THEN
				W_TABLEAU<I,4>=ENR_FACTURORG<15,I>
				W_TABLEAU<I,2>=ENR_FACTURORG<12,I>-ENR_FACTURORG<15,I>
			END ELSE				
			    W_TABLEAU<I,2>=ENR_FACTURORG<12,I>
				W_TABLEAU<I,4>=""
			END				
		    W_TABLEAU<I,3>=ENR_FACTURORG<13,I>
		    W_CUMULDEBORG=W_CUMULDEBORG+ ABS(ENR_FACTURORG<12,I>)
		    W_CUMULVAL=W_CUMULVAL + ENR_FACTURORG<12,I>
		    W_CUMULQTE=W_CUMULQTE + ENR_FACTURORG<13,I>
	        NEXT I
	    END
	END ELSE
   	    W_COMPTEUR=DCOUNT(ENR_FACTURORG<11>,CHAR(253))
	    FOR I=1 TO W_COMPTEUR
		W_TABLEAU<I,1>=ENR_FACTURORG<11,I>
		IF W_PassePs="VRAI" THEN
			W_TABLEAU<I,4>=ENR_FACTURORG<15,I>
			W_TABLEAU<I,2>=ENR_FACTURORG<12,I>-ENR_FACTURORG<15,I>
		END ELSE				
			W_TABLEAU<I,2>=ENR_FACTURORG<12,I>
			W_TABLEAU<I,4>=""
		END			
		W_TABLEAU<I,3>=ENR_FACTURORG<13,I>
		W_CUMULDEBORG=W_CUMULDEBORG+ ABS(ENR_FACTURORG<12,I>)
		W_CUMULVAL=W_CUMULVAL + ENR_FACTURORG<12,I>
		W_CUMULQTE=W_CUMULQTE + ENR_FACTURORG<13,I>
	    NEXT I
	END
	
	*RECUP COMPTE ORG PRISE CHARGE
	GOSUB 1300
RETURN

****************************************
* MAJ DE L'ENR_BROUILLARDDETAIL CREDIT *
****************************************
1200

	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CPTEORGCRED)
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURATION DE ":W_PeriodeLib)
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)
	
	IF W_TABLEAU<I,2> >=0 THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAU<I,2>)
	END ELSE
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAU<I,2> * -1)
	END
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_TABLEAU<I,3>)
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAU<I,1>)
	
	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
	
	IF W_TABLEAU<I,4> # "" THEN
		GOSUB 150
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CptePsCred)
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURATION DE ":W_PeriodeLib)
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)
		IF W_TABLEAU<I,4> >=0 THEN
		    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAU<I,4>)
		END ELSE
		    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAU<I,4> * -1)
		END
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;"")
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAU<I,1>)
		
		WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
	END
	
RETURN

****************************************
* MAJ DE L'ENR_BROUILLARDDETAIL CREDIT * PERIODE -1
****************************************
1201

	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_COMPTANNEEPRECORG)
	
**	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURE N ":ENR_FACTURORG<9>*1:" ":ENR_ORGPRISECHARGE<1>)
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURE N ":W_ANCIENCODE*1:" ":W_ANCIENORG)
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)
	
	IF W_TABLEAUANC<I,2> >=0 THEN
	    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAUANC<I,2>)
	END ELSE
	    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAUANC<I,2> * -1)
	END
	* MODIF VANESSA 10/02/10 - DA 9170-01
	IF W_AncienType#"C" THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_TABLEAUANC<I,3>)
	END ELSE
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;"")
	END
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAUANC<I,1>)
	
	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
	
	IF W_TABLEAUANC<I,4> # "" THEN
		GOSUB 150
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CptePsCred)
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURE N ":W_ANCIENCODE*1:" ":W_ANCIENORG)
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)
		IF W_TABLEAUANC<I,4> >=0 THEN
		    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAUANC<I,4>)
		END ELSE
		    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAUANC<I,4> * -1)
		END
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;"")
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAUANC<I,1>)
		
		WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE
	END
	
RETURN

****************************************
* RECUPERATION COMPTE ORG PRISE CHARGE *
****************************************
1300
	READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CLE[1,3] ELSE STOP
	
       * IF W_Fede="VRAI" THEN
          * READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CLE[5,5] ELSE STOP
          * GOSUB 1700
       * END
		
	IF LEN(ENR_ORGPRISECHARGE<22>) > 1 THEN
		W_CPTEORGDEB=ENR_ORGPRISECHARGE<22>
	END ELSE
		IF W_COMPTEATTENTE # "" THEN
			W_CPTEORGDEB=W_COMPTEATTENTE
		END ELSE
			W_CPTEORGDEB="4710000000"
		END
	END
	
	IF W_Fede = "VRAI" THEN
	
		IF LEN(ENR_FEDEASSOC<45>) > 1 THEN
			W_CPTEORGCRED=ENR_FEDEASSOC<45>[4,10]
		END ELSE
			IF W_COMPTEATTENTE # "" THEN
				W_CPTEORGCRED=W_COMPTEATTENTE
			END ELSE
				W_CPTEORGCRED="4710000000"
			END
		END
		
	END ELSE
	
		IF LEN(ENR_ORGPRISECHARGE<23>) > 1 THEN
			W_CPTEORGCRED=ENR_ORGPRISECHARGE<23>
		END ELSE
			IF W_COMPTEATTENTE # "" THEN
				W_CPTEORGCRED=W_COMPTEATTENTE
			END ELSE
				W_CPTEORGCRED="4710000000"
			END
		END
	END
	
RETURN

**********************************************
* ECRITURE CONTREPARTIE BROUILLARD PRECEDENT *
**********************************************
1400
	GOSUB 150
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CPTEORGDEB)	
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURATION DE ":W_PeriodeLib)	
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)	
	
	IF W_TYPEACTIV="M" THEN W_CUMULMANDORG=W_CUMULMANDORG+W_CUMULVAL
	
	IF W_CUMULVAL >=0 THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_CUMULVAL)	
	END ELSE
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_CUMULVAL * -1)	
	END
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_CUMULQTE)	
	
	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE	
	
RETURN

**********************************************
* ECRITURE CONTREPARTIE BROUILLARD PRECEDENT * PERIODE - 1
**********************************************
1401
	GOSUB 150
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CPTEORGDEB)	

**	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURE N ":ENR_FACTURORG<9>*1:" ":ENR_ORGPRISECHARGE<1>)	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURE N ":W_ANCIENCODE*1:" ":W_ANCIENORG)	
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)
	
	IF W_TYPEACTIV="M" THEN W_CUMULMANDORG=W_CUMULMANDORG+W_CUMULVALANC
	
	IF W_CUMULVALANC >=0 THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_CUMULVALANC)	
	END ELSE
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_CUMULVALANC * -1)	
	END
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_CUMULQTEANC)	
	
	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE	
	
RETURN

********************************************
* PARCOURS REQUETE FACTURORG ORGANISME 000 *
********************************************
1500
	W_ANCIENCODE=""
	* Modif Greg - 11/06/14 - DA14044
	W_ANCIENSECTANAL=""
	W_PERIODFACT=""
	W_FINI="FAUX"
	* RECUPERATION NUMERO COMPTE
	GOSUB 1550
	
	LOOP
		READNEXT W_CLE FROM W_REQUETEORG ELSE W_FINI="VRAI"
		
	WHILE W_FINI="FAUX" DO
	
	   READ ENR_FACTURORG FROM F.FACTURORG,W_CLE ELSE STOP
           * Didier 05/04/2013 : gestion section analytique sur organisme 000
           
	   IF W_Fede = "VRAI" THEN
	     READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CLE[5,5] THEN
		IF W_CUMULQTE<ENR_CIVILAIDE<40>[1,3]> = "" THEN
			W_CUMULQTE<ENR_CIVILAIDE<40>[1,3]> = 0
			W_NbAssoFede = W_NbAssoFede + 1
			W_ListeAssoFede<W_NbAssoFede> = ENR_CIVILAIDE<40>[1,3] 
		END
		
   		W_COMPTORG=DCOUNT(ENR_FACTURORG<1>,CHAR(253))
		W_CUMUL5=0
		
  		FOR I=1 TO W_COMPTORG
			W_CUMUL5=W_CUMUL5+ENR_FACTURORG<1,I>
		NEXT I 
		
   		W_CUMUL5=W_CUMUL5+ENR_FACTURORG<5>
		
		* Modif Greg - 11/06/14 - DA14044
		IF W_ANCIENCODE # ENR_FACTURORG<9> OR W_ANCIENSECTANAL#ENR_FACTURORG<11,1> THEN
		
			W_CUMULQTE<ENR_CIVILAIDE<40>[1,3]>=W_CUMULQTE<ENR_CIVILAIDE<40>[1,3]> + W_CUMUL5
			
		END ELSE
			* MAJ BROUILLARD
			W_CUMULQTE<ENR_CIVILAIDE<40>[1,3]>=W_CUMULQTE<ENR_CIVILAIDE<40>[1,3]> + W_CUMUL5
		END
		W_ANCIENCODE = ENR_FACTURORG<9>
		* Modif Greg - 11/06/14 - DA14044
		W_ANCIENSECTANAL=ENR_FACTURORG<11,1>
		W_SECTANAL000=W_ANCIENSECTANAL	
		W_PERIODFACT = W_CLE[13,6]
	     END
	   END ELSE	
   		W_COMPTORG=DCOUNT(ENR_FACTURORG<1>,CHAR(253))
		W_CUMUL5=0
		
  		FOR I=1 TO W_COMPTORG
			W_CUMUL5=W_CUMUL5+ENR_FACTURORG<1,I>
		NEXT I 
		
   		W_CUMUL5=W_CUMUL5+ENR_FACTURORG<5>
		
		* Modif Greg - 11/06/14 - DA14044
		IF W_ANCIENCODE # ENR_FACTURORG<9> OR W_ANCIENSECTANAL#ENR_FACTURORG<11,1> THEN
		
			IF W_ANCIENCODE # "" THEN
				* ECRITURE PRECEDENT
				GOSUB 1600
			END
			
			W_CUMULQTE=W_CUMUL5
			
		END ELSE
			* MAJ BROUILLARD
			W_CUMULQTE=W_CUMULQTE + W_CUMUL5
		END
		W_ANCIENCODE = ENR_FACTURORG<9>
		* Modif Greg - 11/06/14 - DA14044
		W_ANCIENSECTANAL=ENR_FACTURORG<11,1>
		W_SECTANAL000=W_ANCIENSECTANAL	
		W_PERIODFACT = W_CLE[13,6]
	   END
	REPEAT
	
	GOSUB 1600
	
RETURN

****************************
* RECUPERATION COMPTE TAUX *
****************************
1550
IF W_Fede = "VRAI" THEN
	* On s'en fiche : on a mis le code secteur dans une liste. 
	* => on ira lire le n cpte au moment de l'criture dans BROUILLARDDETAIL (cf 1600)
*	IF LEN(ENR_FEDEASSOC<45>) > 1 THEN
*		W_CPTEORGCRED=ENR_FEDEASSOC<45>[4,10]
*	END ELSE
*		IF W_COMPTEATTENTE # "" THEN
*			W_CPTEORGCRED=W_COMPTEATTENTE
*		END ELSE
*			W_CPTEORGCRED="4710000000"
*		END
*	END
END ELSE
	IF LEN(ENR_COMPTESPARTICULIERS<10>) > 1 THEN
		W_CPTEORGCRED=ENR_COMPTESPARTICULIERS<10>
	END ELSE
		IF W_COMPTEATTENTE # "" THEN
			W_CPTEORGCRED=W_COMPTEATTENTE
		END ELSE
			W_CPTEORGCRED="4710000000"
		END
	END
END
RETURN

********************************
* ECRITURE INFO ORGANISEME 000 *
********************************
1600
IF W_Fede = "VRAI" THEN
   FOR W_IndAsso = 1 TO W_NbAssoFede
	ENR_CIVILAIDE<40> = W_ListeAssoFede<W_IndAsso>
	GOSUB 1700
	
	GOSUB 150
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CpteAssoFede<W_IndAsso>)
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURATION DE ":W_PeriodeLib)	
*	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;"0")	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_CUMULQTE<W_ListeAssoFede<W_IndAsso>>)
        * Didier 05/04/2013 : gestion section analytique sur organisme 000
        IF ENR_BROUILLARDDETAIL<4>[4,1]>=6 THEN
           ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_SECTANAL000)
        END ELSE
           ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")
        END	
	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE		
	
   NEXT W_IndAsso
END ELSE
	GOSUB 150 
	
	IF W_PERIODFACT<W_DEBUTANNEE AND W_COMPTANNEEPRECORG # "" THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_COMPTANNEEPRECORG)	
	END ELSE
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CPTEORGCRED)	
	END
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURATION DE ":W_PeriodeLib)	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;"0")	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_CUMULQTE)
        * Didier 05/04/2013 : gestion section analytique sur organisme 000
        IF ENR_BROUILLARDDETAIL<4>[4,1]>=6 THEN
           ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_SECTANAL000)
        END ELSE
           ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")
        END
	
	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE		
END
RETURN

********************************
*   REQUETE SUR FEDEASSOC      *
********************************
1700

	EXECUTE 'SSELECT FEDEASSOC AVEC 41 = "':ENR_CIVILAIDE<40>[1,3]:'"'
	EXECUTE 'SAUVE-LISTE W_REQUETEFede'
	EXECUTE "LISTE W_REQUETEFede" RETURNING MSGCODE	
	
	IF MSGCODE<1>#209 THEN
	
	   SELECT F.FEDEASSOC TO W_REQUETEFede
	   READNEXT W_CLEFEDE FROM W_REQUETEFede THEN
	      READ ENR_FEDEASSOC FROM F.FEDEASSOC,W_CLEFEDE ELSE ENR_FEDEASSOC = ""
		W_CpteAssoFede<W_IndAsso>=ENR_FEDEASSOC<45>[4,10]	
         END
           
	END	
	
RETURN

2000
*******************************
* ecriture crdit fdration	*
*******************************
EXECUTE 'SSELECT FEDEASSOC'
EXECUTE 'SAUVE-LISTE W_REQUETEFede'
EXECUTE "LISTE W_REQUETEFede" RETURNING MSGCODE	

IF MSGCODE<1> # 209 THEN

   SELECT F.FEDEASSOC TO W_REQUETEFede
   W_FinFede = "F"
   LOOP
	READNEXT W_CleFede FROM W_REQUETEFede ELSE W_FinFede = "V"
   WHILE W_FinFede = "F"
	READ ENR_FEDEASSOC FROM F.FEDEASSOC,W_CleFede ELSE ENR_FEDEASSOC = ""
	W_IndSectFedeAssoc  = 0
	W_MtntFedeAssoc = 0
	W_QtteFedeAssoc = 0
	LOOP
		W_IndSectFedeAssoc = W_IndSectFedeAssoc + 1
	WHILE ENR_FEDEASSOC<41,W_IndSectFedeAssoc> # ""
		W_MtntFedeAssoc = W_MtntFedeAssoc + W_TabAsso<ENR_FEDEASSOC<41,W_IndSectFedeAssoc>,1>
		W_QtteFedeAssoc = W_QtteFedeAssoc + W_TabAsso<ENR_FEDEASSOC<41,W_IndSectFedeAssoc>,2>
	REPEAT
	IF W_MtntFedeAssoc # 0 OR W_QtteFedeAssoc # 0 THEN 
	* DEBUT CREATION BROUILLARDDETAIL
	GOSUB 150
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:ENR_FEDEASSOC<45>[4,10])	
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"FACTURATION DE ":W_PeriodeLib)	
*	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;W_ANCIENCODE)	
	
	IF W_MtntFedeAssoc >=0 THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_MtntFedeAssoc)	
	END ELSE
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_MtntFedeAssoc * -1)	
	END
	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_QtteFedeAssoc)	
* Pas de section analytique car cpte asso <> cpte produit
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")	
	
	WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_NBLIGNE		
	END
	
   REPEAT	
END
RETURN

*********************************************************************
* REMPLIR TABLEAU AVEC ACTIVITE + CODE SECTION + SERVICE			*
* modif vanessa 01/02/16 - DA 16002-01								*
*********************************************************************

2100

	W_REQACT=""
	W_TabActServ=""
	READ ENR_TABLES FROM F.TABLES,"SERVICES" ELSE ENR_TABLES=""
	
	EXECUTE 'SSELECT ACTIVITES AVEC 12 = "':W_TYPEACTIV:'" PAR @ID'
	EXECUTE 'SAUVE-LISTE W_REQACT'
	EXECUTE "LISTE W_REQACT" RETURNING MSGCODE
	
	IF MSGCODE<1>#209 THEN
		SELECT F.ACTIVITES TO W_REQACT
		
		W_POSITION=0		
		W_FINIACTIV="FAUX"
		LOOP
			READNEXT W_CLEACTIV FROM W_REQACT ELSE W_FINIACTIV="VRAI"
		WHILE W_FINIACTIV="FAUX" DO
		
			READ ENR_ACTIVITES FROM F.ACTIVITES,W_CLEACTIV ELSE PRINT "ACTIVITES"
			IF ENR_ACTIVITES<12>=W_TYPEACTIV THEN
				W_POSITION=W_POSITION+1
				W_TabActServ<W_POSITION,1>=W_CLEACTIV
				W_TabActServ<W_POSITION,2>=ENR_ACTIVITES<2>
				W_TabActServ<W_POSITION,3>=ENR_ACTIVITES<13>
				
				iTab=1
				LOOP
				UNTIL ENR_TABLES<2,iTab>=ENR_ACTIVITES<13> OR ENR_TABLES<2,iTab>=""
					iTab=iTab+1
				REPEAT
				IF ENR_TABLES<2,iTab>=ENR_ACTIVITES<13> THEN
					W_TabActServ<W_POSITION,4>=ENR_TABLES<3,iTab>
				END
			END
		REPEAT
		
	END
	
RETURN

*********************************************************************
* VERIFIE SI MEME SERVICE DANS UNE MEME FACTURE						*
* modif vanessa 01/02/16 - DA 16002-01								*
*********************************************************************

2200

	W_MemeService="VRAI"
	W_SauveServ=""
	W_Lib=""
	W_Trouve="FAUX"
	FOR i7 = 1 TO DCOUNT(ENR_FACTURAIDE<7>,CHAR(253))
		* modif vanessa 17/03/16 - ticket 12294
		IF ENR_FACTURAIDE<7,i7> # "" THEN
			W_Sect=ENR_FACTURAIDE<7,i7>
			iTab=1
			LOOP
			UNTIL W_TabActServ<iTab,2>=W_Sect OR W_TabActServ<iTab,2>=""
				iTab=iTab+1
			REPEAT
			IF W_TabActServ<iTab,2>=W_Sect AND W_Sect # "" THEN
				IF W_SauveServ="" THEN
					W_SauveServ=W_TabActServ<iTab,3>
					W_Lib=W_TabActServ<iTab,4>
				END ELSE
					IF W_SauveServ # W_TabActServ<iTab,3> THEN
						W_MemeService="FAUX"
						W_Lib=""
					END
				END
			END ELSE
				IF W_Sect = "" THEN
					W_MemeService="FAUX"
					W_Lib=""
				END
			END
			W_Trouve="VRAI"
		END
	NEXT i7
	
	* modif vanessa 17/03/16 - ticket 12361
	IF W_Trouve="FAUX" THEN
		W_MemeService="FAUX"
		W_Lib=""	
	END
	
RETURN
