*************************************************************************
*	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 PRESTAITRE     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                   *         
*************************************************************************

*  !!!!!!!!!!!!!!!!!!!!  IMPORTANT : ************************************
********** Renseigner ici le COMPTE  DE CENTRALISATION CAISSE !**********
*ATTENTION : doit tre sur 9 chiffres !!!
W_COMPTECENTRALISATIONCAISSE = "411211000"



************
* 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 "","LIENCOMPTA" TO F.LIENCOMPTA ELSE STOP
  
******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE PRINT "PROCREAD"

W_NomFichier=FIELD(ARGUMENTS,"|",2)
W_CodeJournal=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)
W_ENTITE=FIELD(ARGUMENTS,"|",10)
W_EXERCICE=FIELD(ARGUMENTS,"|",11)
W_DateEcheance = FIELD(ARGUMENTS,"|",12)
W_DateEcheance = W_DateEcheance[1,2]:W_DateEcheance[4,2]:W_DateEcheance[9,2]

W_LIGNE = "00000"
W_CLEBROUILLARD = "XXXXX"
****************************
* 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_JOURNAL=""
ENR_BROUILLARDDETAIL=""
ENR_JOURNAL=""
ENR_TEMPO=""
ENR_FACTURAIDE=""
ENR_FACTURORG=""
ENR_PLANCOMPTABLE=""
W_CLE=""
W_FINI=""
W_ANCIENCODE=""
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"

****************************
* 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

	W_DATEOPCLAIR = OCONV(W_DATEOP,"D4/")[1,2]:OCONV(W_DATEOP,"D4/")[4,2]:OCONV(W_DATEOP,"D4/")[9,2]

	ENR_LIENCOMPTA = ""
           
	* 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	

	READ ENR_COMPTESPARTICULIERS FROM F.COMPTESPARTICULIERS,W_ENTITE ELSE 
		PRINT " Comptes particuliers"
		ENR_COMPTESPARTICULIERS=""
	END
	
**	* TEST SI EXERCICE = N OU N+1
	IF ENR_COMPTESPARTICULIERS<11>#"" THEN 
	    W_COMPTANNEEPREC=ENR_COMPTESPARTICULIERS<11>
	END ELSE
	    W_COMPTANNEEPREC=""
	END

	
	IF W_TYPEACTIV="P" THEN
		*****************
		* FACTURORG 000 *
		*****************
	*	GOSUB 10 

		*************
		* FACTURORG *
		*************
		GOSUB 20 
	END

	W_TABLEAU=""
	W_DEBITORG=W_CUMULDEBORG
	W_TABLEAUANC = ""
	W_ListeSectFacturAide = ""
	W_NbSectFacturAide = 0

	**************
	* FACTURAIDE *
	**************
	GOSUB 30

	* SI AU MOINS UN DES TRAITEMENTS EFFECTUE -> ECRITURE	
	IF W_INDICECR # 0 THEN
		GOSUB 700
	END

	

	WRITE ENR_LIENCOMPTA ON F.LIENCOMPTA, W_NomFichier

STOP


***************************
* SELECTION FACTURORG 000 *
***************************
10
	EXECUTE 'SSELECT FACTURORG AVEC NumOrdreAccFacturOrg = "':W_ENTITE:'" AND AVEC @ID = "':"000]":'" 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 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:'" OR AVEC NumOrdreAccFacturOrg = "':W_ENTITE:'" AND AVEC @ID = "':"000]":'" 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
	EXECUTE 'SSELECT FACTURAIDE AVEC CodeEntiteFact = "':W_ENTITE:'" AND AVEC ActiviteFact = "':W_TYPEACTIV:'" AND AVEC PeriodeCleFactAide = "':W_PERIODETRAIT:'" PAR NomAideFact PAR CodeAideFact PAR-DECR @ID'
	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

		* ECRITURE TVA
		GOSUB 500

		W_CUMULDEBORG=W_DEBITORG
		* ECRITURE CONTREPARTIE
		GOSUB 600

	END
RETURN


******************************
* TRAITEMENT DES FACTURAIDES *
******************************
100
	* REINITIALISATION
	GOSUB 150

	READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CLE[1,5] THEN
		W_CodeSecteur = ENR_CIVILAIDE<40>[1,3]
		IF INDEX(W_ListeSectFacturAide,W_CodeSecteur,1) = 0 THEN
			W_NbSectFacturAide = W_NbSectFacturAide + 1
			W_ListeSectFacturAide<W_NbSectFacturAide> = W_CodeSecteur
		END
	END

	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
	
	IF ENR_FACTURAIDE<9> >= 0 THEN
		W_TAMPONDEB=ENR_FACTURAIDE<9>
		W_CUMULDEBIT=W_CUMULDEBIT+ENR_FACTURAIDE<9>	
	END ELSE
		W_TAMPONCRED=(ENR_FACTURAIDE<9> * -1)
		W_CUMULCREDIT=W_CUMULCREDIT+ (ENR_FACTURAIDE<9> * -1)	
	END

	* CUMUL DES MONTANTS TVA
	IF ENR_FACTURAIDE<9> # "" THEN
		W_CUMULTVATOT=W_CUMULTVATOT+ENR_FACTURAIDE<9>
	END

	* CUMUL DES MONTANTS DE FACTURE ATT 5
	GOSUB 200	

	IF W_CUMUL >= 0 THEN
		W_TAMPONDEB=W_TAMPONDEB+W_CUMUL
		W_CUMULDEBIT=W_CUMULDEBIT+W_CUMUL
		W_Mot="FACTURE "

	END ELSE
		W_TAMPONCRED=W_TAMPONCRED+(W_CUMUL* -1)
		W_CUMULCREDIT=W_CUMULCREDIT+(W_CUMUL* -1)
		W_Mot="AVOIR "
	END

	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

	* PAS D'ENREGISTREMENT DE VALEUR ZERO
	IF W_TAMPONCRED # 0 THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TAMPONCRED)
		GOSUB 2000
	END ELSE
		IF W_TAMPONDEB # 0 THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TAMPONDEB)
			GOSUB 2000
		END ELSE
			W_NBLIGNE=W_NBLIGNE-1
		END
	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

			IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN

			    * ANNEE EN COURS OU PAS ATT 11 COMPTEPART.
			    IF ENR_FACTURAIDE<1,I>>=W_DEBUTANNEE OR W_COMPTANNEEPREC="" THEN
				  IF ENR_FACTURAIDE<6,I>[1,1]="6" OR ENR_FACTURAIDE<6,I>[1,1]="7" OR ENR_FACTURAIDE<6,I>="" THEN

					IF ENR_FACTURAIDE<4,I> > 0 THEN
						W_QTE=ENR_FACTURAIDE<3,I>
					END ELSE
						W_QTE=0
					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 ENR_FACTURAIDE<4,I> > 0 THEN
						W_QTEANC=ENR_FACTURAIDE<3,I>
					END ELSE
						W_QTEANC=0
					END

					* SI SECTION ANAL.
					IF ENR_FACTURAIDE<7,I> # "" THEN
						* AFFECTATION COMPTE ANNEE PREC
						ENR_FACTURAIDE<6,I>=W_COMPTANNEEPREC

						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_COMPTANNEEPREC

						* 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


*****************************
* 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_COMPTANNEEPREC="" 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_COMPTANNEEPREC="" 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>	
	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

	* CONTROLE PREMIER PASSAGE OU PAS
	IF W_TABLEAU<1>="" THEN
   	   W_TABLEAU<1,1>=W_NUMCOMPTE
	   IF W_NUMCOMPTE[1,1] >= 6 THEN
		W_TABLEAU<1,2,W_CodeSecteur>=W_VALEUR
		IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTE > 0 THEN
			W_TABLEAU<1,3,W_CodeSecteur>=W_QTE
		END
	   END ELSE
		W_TABLEAU<1,2>=W_VALEUR
		IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTE > 0 THEN
			W_TABLEAU<1,3>=W_QTE
		END
	   END
	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
			   IF W_NUMCOMPTE[1,1] >= 6 THEN
				W_TABLEAU<ITAB,2,W_CodeSecteur>=W_TABLEAU<ITAB,2,W_CodeSecteur>+W_VALEUR
				IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTE > 0 THEN
					W_TABLEAU<ITAB,3,W_CodeSecteur>=W_TABLEAU<ITAB,3,W_CodeSecteur>+W_QTE
				END
				W_INDICTROUVE="VRAI"
				EXIT
			   END ELSE
				W_TABLEAU<ITAB,2>=W_TABLEAU<ITAB,2>+W_VALEUR
				IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTE > 0 THEN
					W_TABLEAU<ITAB,3>=W_TABLEAU<ITAB,3>+W_QTE
				END
			   END
			   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
			IF W_NUMCOMPTE[1,1] >= 6 THEN
				W_TABLEAU<W_COMPTEURTAB+1,2,W_CodeSecteur>=W_VALEUR
				IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTE > 0 THEN
					W_TABLEAU<W_COMPTEURTAB+1,3,W_CodeSecteur>=W_TABLEAU<W_COMPTEURTAB+1,3,W_CodeSecteur>+W_QTE
				END
			END ELSE
				W_TABLEAU<W_COMPTEURTAB+1,2>=W_VALEUR
				IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTE > 0 THEN
					W_TABLEAU<W_COMPTEURTAB+1,3>=W_TABLEAU<W_COMPTEURTAB+1,3>+W_QTE
				END
			END
				
		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
	   IF W_NUMCOMPTE[1,1] >= 6 THEN
		W_TABLEAUANC<1,2,W_CodeSecteur>=W_VALEURANC
		IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTEANC > 0 THEN
			W_TABLEAUANC<1,3,W_CodeSecteur>=W_QTEANC
		END ELSE
		        IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN W_TABLEAUANC<1,3,W_CodeSecteur>="0"
		END
	   END ELSE
		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

	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
			   IF W_NUMCOMPTE[1,1] >= 6 THEN
				W_TABLEAUANC<ITAB,2,W_CodeSecteur>=W_TABLEAUANC<ITAB,2,W_CodeSecteur>+W_VALEURANC
				IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTEANC > 0 THEN
					W_TABLEAUANC<ITAB,3,W_CodeSecteur>=W_TABLEAUANC<ITAB,3,W_CodeSecteur>+W_QTEANC
				END
			   END ELSE
				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
			   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
		   IF W_NUMCOMPTE[1,1] < 6 THEN	
			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 ELSE
			W_TABLEAUANC<W_COMPTEURTAB+1,2,W_CodeSecteur>=W_VALEURANC
			IF (W_TYPEACTIV="P" OR W_TYPEACTIV="I") AND W_QTEANC > 0 THEN
				W_TABLEAUANC<W_COMPTEURTAB+1,3,W_CodeSecteur>=W_TABLEAUANC<W_COMPTEURTAB+1,3,W_CodeSecteur>+W_QTEANC
			END ELSE
			      IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN W_TABLEAUANC<W_COMPTEURTAB+1,3,W_CodeSecteur>=0
			END
		   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
			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)	
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;"TVA PERIODE ":W_LIBPERIODETRAIT)

		* 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
		GOSUB 2000
	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
	
	* TEST TYPE COMPTE (1 A 5 PAS DE SECTION/6 ET 7 SECTION)
	IF W_TABLEAU<ITAB,1>[1,1]>=6 THEN

	   FOR W_IndSect = 1 TO W_NbSectFacturAide		

		GOSUB 150

	    	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

		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_TABLEAU<ITAB,1>[1,10])

		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,W_ListeSectFacturAide<W_IndSect>> >= 0 THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>>)	
			* CUMUL POUR BROUILLARDTETE
			W_CUMULCREDIT=W_CUMULCREDIT+W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>>
		
		END ELSE
			IF W_TABLEAU<ITAB,1>[1,1]=7 AND W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> < 0 THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1))			
				* CUMUL POUR BROUILLARDTETE
				W_CUMULDEBIT=W_CUMULDEBIT+(W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1)
			
			END ELSE
				IF W_TABLEAU<ITAB,1>[1,1]=6 AND W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> >= 0 THEN
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>>)			
					* CUMUL POUR BROUILLARDTETE
					W_CUMULDEBIT=W_CUMULDEBIT+W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>>

				END ELSE
					IF W_TABLEAU<ITAB,1>[1,1]=6 AND W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> < 0 THEN
						ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;(W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1))			
						* CUMUL POUR BROUILLARDTETE
						W_CUMULCREDIT=W_CUMULCREDIT+(W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1)
	
					END ELSE
						* COMPTE ATTENTE
						IF W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> >= 0 THEN
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>>)	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULCREDIT=W_CUMULCREDIT+W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>>
						
						END ELSE
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1))	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULDEBIT=W_CUMULDEBIT+(W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -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,W_ListeSectFacturAide<W_IndSect>>)
		END

		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;W_ListeSectFacturAide<W_IndSect>)

		GOSUB 2000

	   NEXT W_IndSect

	END ELSE

		GOSUB 150

		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_TABLEAU<ITAB,1>[1,10])

		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")

		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

		GOSUB 2000

	END

	
NEXT ITAB

*******************
* TRAITEMENT PERIODE - 1

W_COMPTEUR=DCOUNT(W_TABLEAUANC,CHAR(254))

FOR ITAB=1 TO W_COMPTEUR

	
	* TEST TYPE COMPTE (1 A 5 PAS DE SECTION/6 ET 7 SECTION)
	IF W_TABLEAU<ITAB,1>[1,1]>=6 THEN
		
	   FOR W_IndSect = 1 TO W_NbSectFacturAide		
	
		GOSUB 150
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_TABLEAUANC<ITAB,1>[1,10])


	    	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		

		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,W_ListeSectFacturAide<W_IndSect>> >= 0 THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>>)	
			* CUMUL POUR BROUILLARDTETE
			W_CUMULCREDITANC=W_CUMULCREDITANC+W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>>
		
		END ELSE
			IF W_TABLEAU<ITAB,1>[1,1]=7 AND W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> < 0 THEN
				ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1))			
				* CUMUL POUR BROUILLARDTETE
				W_CUMULDEBITANC=W_CUMULDEBITANC+(W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1)
			
			END ELSE
				IF W_TABLEAUANC<ITAB,1>[1,1]=6 AND W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> >= 0 THEN
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>>)			
					* CUMUL POUR BROUILLARDTETE
					W_CUMULDEBITANC=W_CUMULDEBITANC+W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>>

				END ELSE
					IF W_TABLEAUANC<ITAB,1>[1,1]=6 AND W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> < 0 THEN
						ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;(W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1))			
						* CUMUL POUR BROUILLARDTETE
						W_CUMULCREDITANC=W_CUMULCREDITANC+(W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1)
	
					END ELSE
						* COMPTE ATTENTE
						IF W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> >= 0 THEN
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>>)	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULCREDITANC=W_CUMULCREDITANC+W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>>
						
						END ELSE
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;(W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -1))	
							* CUMUL POUR BROUILLARDTETE
							W_CUMULDEBITANC=W_CUMULDEBITANC+(W_TABLEAUANC<ITAB,2,W_ListeSectFacturAide<W_IndSect>> * -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,W_ListeSectFacturAide<W_IndSect>>)
		END
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;W_ListeSectFacturAide<W_IndSect>)

		GOSUB 2000

	   NEXT W_IndSect
	
	END ELSE

		GOSUB 150
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_TABLEAUANC<ITAB,1>[1,10])
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;"")
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;"")

		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

		GOSUB 2000

	END

NEXT ITAB
RETURN


***************************
* CORRECTION MANDATAIRE   * 
* REEQUILIBRAGE COMPTABLE *
***************************
650
	W_TOTALTAB=0
	W_POSMAX=0
	W_VALMAX=0

	FOR ITAB=1 TO W_COMPTEUR
	   IF W_TABLEAU<ITAB,1>[1,1] < 6 THEN
		W_TOTALTAB=W_TOTALTAB+W_TABLEAU<ITAB,2>
	   END ELSE
		FOR W_IndSect = 1 TO W_NbSectFacturAide
		   IF W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>> # "" THEN
			W_TOTALTAB=W_TOTALTAB+W_TABLEAU<ITAB,2,W_ListeSectFacturAide<W_IndSect>>
		   END
		NEXT W_IndSect
	   END
		IF W_TABLEAU<ITAB,1>[1,10]=W_PRODUITSAIDESMANDAT THEN
			W_POSMAX=ITAB
		END

	NEXT ITAB

	W_TOTALTAB=W_TOTALTAB-W_CUMULDEBIT+W_CUMULCREDIT-W_CUMULDEBORG-W_CUMULACC-W_CUMULDEBORGANC

**	IF W_TOTALTAB # 0 THEN
**		W_TABLEAU<W_POSMAX,2> = W_TABLEAU<W_POSMAX,2> - W_TOTALTAB
**	END

PRINT W_TOTALTAB
PRINT W_CUMULDEBIT
PRINT W_CUMULCREDIT
PRINT W_CUMULDEBORG
PRINT W_CUMULACC
PRINT W_CUMULDEBORGANC


	* 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_CUMULDEBORG+W_CUMULDEBORGANC)
		ENR_TEMPO=REPLACE(ENR_TEMPO,3;W_CUMULCREDIT)
	END
	WRITE ENR_TEMPO ON F.TEMPO,W_CLETEMPO
RETURN


******************************
* PARCOURS REQUETE FACTURORG *
******************************
800
	W_ANCIENCODE=""
	W_ANCIENORG=""
	W_FINI="FAUX"
	LOOP
		READNEXT W_CLE FROM W_REQUETEORG ELSE W_FINI="VRAI"
	WHILE W_FINI="FAUX" DO
		IF W_CLE[1,3] # "000" THEN
			READ ENR_ORGPRISECHARGE FROM F.ORGPRISECHARGE,W_CLE[1,3] ELSE PRINT "ORGPRISECHARGE"
		END
		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> = "" AND W_CLE[1,3] # "000" 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
				READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CLE[5,5] THEN
					W_CodeSect = ENR_CIVILAIDE<40>[1,3]
					IF INDEX(W_ListeSectFacturOrg, W_CodeSect,1) = 0 THEN
						W_NbSectFacturOrg = W_NbSectFacturOrg + 1
						W_ListeSectFacturOrg<W_NbSectFacturOrg> = W_CodeSect
					END
				END
				GOSUB 1000
			END
			W_ANCIENCODE = ENR_FACTURORG<9>
			W_ANCIENORG = ENR_ORGPRISECHARGE<1>

		END

	REPEAT

	* DERNIER LIGNES A ECRIRE
	GOSUB 900
RETURN


*****************************
* ECRITURE BROUILLARDDETAIL *
*****************************
900
	IF W_TYPEACTIV="P" OR W_TYPEACTIV="I" THEN
		W_COMPTEUR=DCOUNT(W_TABLEAU,CHAR(254))
		FOR I= 1 TO W_COMPTEUR

		   FOR W_IndSect = 1 TO W_NbSectFacturOrg
		     *IF W_TABLEAU<I,1,W_ListeSectFacturOrg<W_IndSect>> # "" THEN
			* DEBUT CREATION BROUILLARDDETAIL
			GOSUB 150
		
			*RENSEIGNEMENT BROUILLARDDETAIL
			GOSUB 1200

			GOSUB 2000		
		     *END
		   NEXT W_IndSect
		NEXT I

		W_COMPTEUR=DCOUNT(W_TABLEAUANC,CHAR(254))
		FOR I= 1 TO W_COMPTEUR
		   FOR W_IndSect = 1 TO W_NbSectFacturOrg
		     *IF W_TABLEAUANC<I,1,W_ListeSectFacturOrg<W_IndSect>> # "" THEN
			* DEBUT CREATION BROUILLARDDETAIL
			GOSUB 150
		
			*RENSEIGNEMENT BROUILLARDDETAIL
			GOSUB 1201

			GOSUB 2000		
		     *END
		   NEXT W_IndSect
		NEXT I
	END

	*IF W_CLE[1,3] # "000" THEN
		* A priori pas ncessaire pourle taux plein car mtnt = 0 et pas de ventil analytique !
		* ECRITURE CONTREPARTIE
		IF W_TABLEAU<>"" THEN GOSUB 1400
		IF W_TABLEAUANC<>"" THEN GOSUB 1401
	*END

RETURN


*********************************
* MAJ BROUILLARDDETAIL EXISTANT *
*********************************
1000
	W_COMPTEUR=DCOUNT(ENR_FACTURORG<11>,CHAR(253))

	W_INDICTROUVE="FAUX"
	W_INDICTROUVEANC=0
	
** TRAVAILLE BROUILLARD EN COURS
	IF W_CLE[13,6]>=W_DEBUTANNEE OR W_COMPTANNEEPREC="" 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,W_CodeSect> THEN
			    W_TABLEAU<ITAB,2,W_CodeSect>=ENR_FACTURORG<12,I>+W_TABLEAU<ITAB,2,W_CodeSect>
			    W_TABLEAU<ITAB,3,W_CodeSect>=ENR_FACTURORG<13,I>+W_TABLEAU<ITAB,3,W_CodeSect>
			    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,W_CodeSect>=ENR_FACTURORG<11,I>
			W_TABLEAU<W_COMPTEURBOUCLE+1,2,W_CodeSect>=ENR_FACTURORG<12,I>
			W_TABLEAU<W_COMPTEURBOUCLE+1,3,W_CodeSect>=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_COMPTANNEEPREC<>"" THEN
 	   	   	        W_INDICTROUVEANC=1
				IF ENR_FACTURORG<11,I> = W_TABLEAUANC<ITAB,1,W_CodeSect> THEN
				    W_TABLEAUANC<ITAB,2,W_CodeSect>=ENR_FACTURORG<12,I>+W_TABLEAUANC<ITAB,2,W_CodeSect>
	  	  	  	    W_TABLEAUANC<ITAB,3,W_CodeSect>=ENR_FACTURORG<13,I>+W_TABLEAUANC<ITAB,3,W_CodeSect>
				    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_COMPTANNEEPREC<>"" 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,W_CodeSect>=ENR_FACTURORG<11,I>
			W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,2,W_CodeSect>=ENR_FACTURORG<12,I>
			W_TABLEAUANC<W_COMPTEURBOUCLEANC+1,3,W_CodeSect>=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


**********************************
* CREATION POUR BROUILLARDDETAIL *
**********************************
1100
	W_TABLEAU=""
	W_TABLEAUANC=""
	W_CUMULVAL=0
	W_CUMULQTE=0
	W_CUMULVALANC=0
	W_CUMULQTEANC=0
	W_ListeSectFacturOrg = ""
	W_NbSectFacturOrg = 0
	READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CLE[5,5] THEN
		W_CodeSect = ENR_CIVILAIDE<40>[1,3]
		W_ListeSectFacturOrg<1> = W_CodeSect
		W_NbSectFacturOrg = 1
	END

        IF W_COMPTANNEEPREC<>"" 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,W_CodeSect>=ENR_FACTURORG<11,I>
		    W_TABLEAUANC<I,2,W_CodeSect>=ENR_FACTURORG<12,I>
		    W_TABLEAUANC<I,3,W_CodeSect>=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,W_CodeSect>=ENR_FACTURORG<11,I>
		    W_TABLEAU<I,2,W_CodeSect>=ENR_FACTURORG<12,I>
		    W_TABLEAU<I,3,W_CodeSect>=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,W_CodeSect>=ENR_FACTURORG<11,I>
		W_TABLEAU<I,2,W_CodeSect>=ENR_FACTURORG<12,I>
		W_TABLEAU<I,3,W_CodeSect>=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
	IF W_ANCIENORG # "000" THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CPTEORGCRED)	
	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)	

	IF W_TABLEAU<I,2,W_ListeSectFacturOrg<W_IndSect>> >=0 THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAU<I,2,W_ListeSectFacturOrg<W_IndSect>>)	
	END ELSE
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAU<I,2,W_ListeSectFacturOrg<W_IndSect>> * -1)	
	END

	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_TABLEAU<I,3,W_ListeSectFacturOrg<W_IndSect>>)	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAU<I,1,W_ListeSectFacturOrg<W_IndSect>>)	

	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;W_ListeSectFacturOrg<W_IndSect>)	


RETURN


****************************************
* MAJ DE L'ENR_BROUILLARDDETAIL CREDIT * PERIODE -1
****************************************
1201
*	IF W_ANCIENORG # "000" THEN
		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_COMPTANNEEPREC)	
*	END ELSE
* Nb : contrairement  ce qui est fait dans le menu, on mets le tout dans le compte de produits sur l'exercice antrieur  
* => modif  envisager sur l'xe gnral
*		ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_ENTITE:W_CPTEORGCRED)	
*	END

**	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,W_ListeSectFacturOrg<W_IndSect>> >=0 THEN
	    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_TABLEAUANC<I,2,W_ListeSectFacturOrg<W_IndSect>>)	
	END ELSE
	    ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_TABLEAUANC<I,2,W_ListeSectFacturOrg<W_IndSect>> * -1)	
	END

 	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_TABLEAUANC<I,3,W_ListeSectFacturOrg<W_IndSect>>)	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;W_TABLEAUANC<I,1,W_ListeSectFacturOrg<W_IndSect>>)	

	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;W_ListeSectFacturOrg<W_IndSect>)	

	

RETURN

****************************************
* RECUPERATION COMPTE ORG PRISE CHARGE *
****************************************
1300

IF W_CLE[1,3] # "000" THEN

	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

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 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_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)	

	ENR_BROUILLARDDETAIL = REPLACE(ENR_BROUILLARDDETAIL,3;"O")	


	GOSUB 2000	

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_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)	

	ENR_BROUILLARDDETAIL = REPLACE(ENR_BROUILLARDDETAIL,3;"O")	

	GOSUB 2000	

RETURN

********************************************
* PARCOURS REQUETE FACTURORG ORGANISME 000 *
********************************************
1500
	W_ANCIENCODE=""
	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

   		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>

		IF W_ANCIENCODE # ENR_FACTURORG<9> 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>

	REPEAT

	GOSUB 1600

RETURN


****************************
* RECUPERATION COMPTE TAUX *
****************************
1550

	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

RETURN


********************************
* ECRITURE INFO ORGANISEME 000 *
********************************
1600
	GOSUB 150

	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)
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;"0")	
	ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;W_CUMULQTE)

	GOSUB 2000		
	
RETURN

********************************
*   REQUETE SUR FEDEASSOC      *
********************************
1700
	W_REQUETEFede = ""
	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 = ""
         END
           
	END	
	
RETURN

*******************************************
* Ecriture des lignes du fichier rsultat	*
*******************************************
2000

W_CodePieceRes = ""
W_CpteGeneRes = ""
W_CpteTiersRes = ""
W_LibelleRes = ""
W_SensEcrRes = ""
W_MtntEntierRes = ""
W_MtntDecRes = ""
W_QtteEntierRes = ""
W_QtteDecRes = ""
W_CodeAnalRes = ""
W_CodeSectRes = ""

IF ENR_BROUILLARDDETAIL<3> = "A" THEN
	
	W_CpteGeneRes = ENR_PARAMENTITECOMPTA<16>[1,9]
	W_CpteTiersRes = ENR_BROUILLARDDETAIL<4>
	W_CodePieceRes = ENR_BROUILLARDDETAIL<6>[1,7]

END ELSE
	IF ENR_BROUILLARDDETAIL<3> = "O" THEN
		W_CpteGeneRes = W_COMPTECENTRALISATIONCAISSE
		W_CpteTiersRes = ENR_BROUILLARDDETAIL<4>[4,9]
		W_CodePieceRes = ENR_BROUILLARDDETAIL<6>[4,7]
	END ELSE
		W_CpteGeneRes = ENR_BROUILLARDDETAIL<4>[4,9]
		W_CpteTiersRes = ""
		W_CodePieceRes = ""
	END
END

IF ENR_BROUILLARDDETAIL<7> = "" THEN
	IF LEN(ENR_BROUILLARDDETAIL<8>) < 3 THEN ENR_BROUILLARDDETAIL<8> = STR("0",3-LEN(ENR_BROUILLARDDETAIL<8>)):ENR_BROUILLARDDETAIL<8>
	* ecriture au crdit 
	W_SensEcrRes = "C"	
	W_MtntEntierRes = ENR_BROUILLARDDETAIL<8>[1,LEN(ENR_BROUILLARDDETAIL<8>)-2]
	W_MtntDecRes = ENR_BROUILLARDDETAIL<8>[LEN(ENR_BROUILLARDDETAIL<8>)-2+1,2]
END ELSE
	IF LEN(ENR_BROUILLARDDETAIL<7>) < 3 THEN ENR_BROUILLARDDETAIL<7> = STR("0",3-LEN(ENR_BROUILLARDDETAIL<7>)):ENR_BROUILLARDDETAIL<7>
	W_SensEcrRes = "D"
	W_MtntEntierRes = ENR_BROUILLARDDETAIL<7>[1,LEN(ENR_BROUILLARDDETAIL<7>)-2]
	W_MtntDecRes = ENR_BROUILLARDDETAIL<7>[LEN(ENR_BROUILLARDDETAIL<7>)-2+1,2]
END
IF LEN(ENR_BROUILLARDDETAIL<10>) < 3 THEN ENR_BROUILLARDDETAIL<10> = STR("0",3-LEN(ENR_BROUILLARDDETAIL<10>)):ENR_BROUILLARDDETAIL<10>

W_QtteEntierRes = ENR_BROUILLARDDETAIL<10>[1,LEN(ENR_BROUILLARDDETAIL<10>)-2]
W_QtteDecRes = ENR_BROUILLARDDETAIL<10>[LEN(ENR_BROUILLARDDETAIL<10>)-2+1,2]

IF W_CodePieceRes # "" THEN
	W_CodePieceRes = W_CodePieceRes * 1
END

IF ENR_BROUILLARDDETAIL<11>#"" THEN
	W_CodeAnalRes = ENR_BROUILLARDDETAIL<11>
	W_CodeSectRes = ENR_BROUILLARDDETAIL<12>
END ELSE
	W_CodeAnalRes = ""
	W_CodeSectRes = ""
END

W_LibelleRes = TRIM(ENR_BROUILLARDDETAIL<5>[1,25])
IF W_MtntEntierRes + W_MtntDecRes + W_QtteEntierRes + W_QtteDecRes # 0 THEN
ENR_LIENCOMPTA<W_NBLIGNE> = W_DATEOPCLAIR:";":W_CodeJournal:";":W_CodePieceRes:";":W_CpteGeneRes:";":W_CpteTiersRes:";":W_LibelleRes:";":W_SensEcrRes:";":W_MtntEntierRes:".":W_MtntDecRes:";":W_QtteEntierRes:".":W_QtteDecRes:";":W_CodeAnalRes:";":W_CodeSectRes:";":W_DateEcheance
END ELSE
	W_NBLIGNE = W_NBLIGNE - 1
END

RETURN
