*******************************************************
* CLOTURE EXERCICE COMPTABLE ET PASSAGE SUR SUIVANT   *
*                                                     *
* JRME			MARS		2000  *
*                               NOVEMBRE        2000  *
* STEPHANE                                            *
*				DECEMBRE 2001	      *
* -> GENERATION FICHIERS ARCHIVE (SUB 1600)           *
* VANESSA			FEVRIER 2003	      *
* --> LETTRAGE PROVISOIRE CONSERVE     		      *
*******************************************************

******************************
* DESCRIPTION DES PROCEDURES *
******************************
* 100   -->  DETERMINANTION DU RESULTAT
* 200   -->  A NOUVEAU COMPTES GENERAUX NON DETAILLES
* 300   -->  A NOUVEAU COMPTES GENERAUX DETAILLES
* 400   -->  A NOUVEAU COMPTES AUXILIAIRES
* 500   -->  VIDAGE DES FICHIERS
* 600   -->  ACTUALISATION DES FICHIERS JOURNAL PLANCOMPTABLE ET PARAMENTITECOMPTA
* 700   -->  SAUVEGARDE POUR BROUILLARDTETE 
* 1000  -->  INCREMENTATION NUMERO LIGNE
* 1100  -->  MAJ BALANCE GENERALE / BALANCE AUXILIAIRE
* 1200  -->  MAJ DETAIL ECRITURE GENERAL / AUXILIAIRE
* 1300  -->  ACTUALISATION DU FICHIER JOURNAL
* 1400  -->  ACTUALISATION DU FICHIER PLAN COMPTABLE
* 1500  -->  ACTUALISATION DU FICHIER PARAMENTITECOMPTA
* 1600  -->  Vidage des "N0" dans PLANCOMPTABLE
* 1800  -->  APURATION DU FICHIER RAPPROCHDETAIL
* 1900  -->  APURATION DU FICHIER BUDGET

************
* FICHIERS *
************
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","BALANCEANAL" TO F.BALANCEANAL ELSE STOP
OPEN "","BALANCEGENE" TO F.BALANCEGENE ELSE STOP
OPEN "","BALANCEAUX" TO F.BALANCEAUX ELSE STOP
OPEN "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE STOP
OPEN "","BUDGET" TO F.BUDGET ELSE STOP
OPEN "","BUDGETCLES" TO F.BUDGETCLES ELSE STOP
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE STOP
OPEN "","DETAILECRITUREGENE" TO F.DETAILECRITUREGENE ELSE STOP
OPEN "","DETAILECRITUREAUX" TO F.DETAILECRITUREAUX ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP
OPEN "","JOURNAL" TO F.JOURNAL ELSE STOP
OPEN "","JOURNALPROVISOIRE" TO F.JOURNALPROVISOIRE ELSE STOP
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE STOP
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE STOP
OPEN "","RAPPROCHDETAIL" TO F.RAPPROCHDETAIL ELSE STOP
OPEN "","LETTREAUX" TO F.LETTREAUX ELSE STOP
OPEN "","LETTREGENE" TO F.LETTREGENE ELSE STOP

* FICHIERS ARCHIVE
OPEN "","BALANCEAUXARCHIVE" TO F.BALANCEAUXARCHIVE ELSE STOP
OPEN "","DETAILECRITUREAUXARCHIVE" TO F.DETAILECRITUREAUXARCHIVE ELSE STOP
OPEN "","BALANCEGENEARCHIVE" TO F.BALANCEGENEARCHIVE ELSE STOP
OPEN "","BALANCEANALARCHIVE" TO F.BALANCEANALARCHIVE ELSE STOP
OPEN "","DETAILECRITUREGENEARCHIVE" TO F.DETAILECRITUREGENEARCHIVE ELSE STOP
OPEN "","JOURNALARCHIVE" TO F.JOURNALARCHIVE ELSE STOP

******************************
* Recuperation des arguments *
******************************
PROCREAD ARGUMENTS ELSE PRINT "PROCREAD"

W_CODASSO=FIELD(ARGUMENTS," ",2)
W_DATEDEBUT=FIELD(ARGUMENTS," ",3)
W_JOURNAL=FIELD(ARGUMENTS," ",4)
W_LIGNE=FIELD(ARGUMENTS," ",5)
W_CLEBROUILLARD=FIELD(ARGUMENTS," ",6)
W_FINN=FIELD(ARGUMENTS," ",7)
W_DEBN1=FIELD(ARGUMENTS," ",8)
W_FINN1=FIELD(ARGUMENTS," ",9)

********************
* DEBUT TRAITEMENT *
********************

W_REQUETEBALANCE=""
W_REQUETEJOURNAL=""
W_REQUETEPLAN=""
W_REQUETEBUDG=""
W_REQUETEVIDAGE=""
W_REQUETEARCHIVE=""

	GOSUB 800

	* DETERMINATION DU RESULTAT
	W_DEBITTOT=0
	W_CREDITTOT=0

	GOSUB 100

	READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_CODASSO ELSE PRINT "PARAMENTITECOMPTA"
	IF ENR_PARAMENTITECOMPTA<16> # "" THEN
		W_COMPTECENTRAL=W_CODASSO:ENR_PARAMENTITECOMPTA<16>
	END ELSE
		W_COMPTECENTRAL=W_CODASSO:"4111100000"	
	END

	* A NOUVEAU COMPTE GENERAUX NON DETAILLES
	GOSUB 200

	* A NOUVEAU COMPTE GENERAUX DETAILLES
	ENR_TEMPO=""
	GOSUB 300

	* A NOUVEAU COMPTE AUXILIAIRE
	ENR_TEMPO=""
	GOSUB 400

	* VIDAGE DES FICHIERS
	GOSUB 500

	* ACTUALISATION FICHIERS
	GOSUB 600

	* SAUVEGARDE POUR BROUILLARDTETE
	GOSUB 700

STOP

*****************************
* DETERMINATION DU RESULTAT *
*****************************
100

	W_SELECT6="N0":W_CODASSO:"6":"]"
	W_SELECT7="N0":W_CODASSO:"7":"]"
	EXECUTE 'SSELECT BALANCEGENE AVEC @ID = "':W_SELECT6:'" OR = "':W_SELECT7:'"'
	EXECUTE 'SAUVE-LISTE W_REQUETEBALANCE'
	EXECUTE "LISTE W_REQUETEBALANCE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		W_CUMUL=0

		SELECT F.BALANCEGENE TO W_REQUETEBALANCE

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEBALANCE ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO
			READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CLE ELSE PRINT "BALANCEGENE"
			W_CUMUL=W_CUMUL + ENR_BALANCEGENE<1> - ENR_BALANCEGENE<2>
		REPEAT

		ENR_BROUILLARDDETAIL=""
		ENR_BROUILLARDDETAIL<1>=DATE()
		ENR_BROUILLARDDETAIL<2>=W_DATEDEBUT
		READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_CODASSO ELSE PRINT "PARAMENTITECOMPTA"
		IF W_CUMUL<0 THEN
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_CODASSO:ENR_PARAMENTITECOMPTA<13>)
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_CUMUL*-1)
                   	W_CREDITTOT=W_CREDITTOT+ENR_BROUILLARDDETAIL<8>
		END ELSE
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_CODASSO:ENR_PARAMENTITECOMPTA<14>)
			ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_CUMUL)
                   	W_DEBITTOT=W_DEBITTOT+ENR_BROUILLARDDETAIL<7>
		END

		ENR_BROUILLARDDETAIL<5>="RESULTAT EXERCICE"	
		
		* INCREMENTATION LIGNE
		GOSUB 1000

		WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_LIGNE
	END

RETURN

*******************************************
* A NOUVEAU COMPTE GENERAUX NON DETAILLES *
*******************************************
200
	W_SELECT="N0":W_CODASSO:"6":"]"
   W_SELECT1="N0":W_CODASSO:"]"
	EXECUTE 'SSELECT BALANCEGENE AVEC @ID = "':W_SELECT1:'" AND AVEC @ID < "':W_SELECT:'" AND AVEC ANouvDetailPlan = "':"0":'"'
	EXECUTE 'SAUVE-LISTE W_REQUETEBALANCE'
	EXECUTE "LISTE W_REQUETEBALANCE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.BALANCEGENE TO W_REQUETEBALANCE

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEBALANCE ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO
			READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CLE ELSE PRINT "BALANCEGENE"
			
			IF ENR_BALANCEGENE<1> # ENR_BALANCEGENE<2> THEN			

				IF W_CLE <> "N0":W_COMPTECENTRAL THEN
					ENR_BROUILLARDDETAIL=""
					W_CUMUL= ENR_BALANCEGENE<1> - ENR_BALANCEGENE<2>
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,1;DATE())
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,2;W_DATEDEBUT)
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;W_CLE[3,13])


                                        * met N1 dans att 10 de PLANCOMPTABLE car si le compte est coch  ne plus utiliser
                                        * il ne faut pas le supprimer
			                READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_CLE[3,13] ELSE PRINT "PLANCOMPTABLE"

 			                W_NBVAL=DCOUNT(ENR_PLANCOMPTABLE<10>,CHAR(253))
                                        W_Passe="FAUX"
			                FOR IVAL = 1 TO W_NBVAL 
                                           IF ENR_PLANCOMPTABLE<10,IVAL>="N1" THEN
                                              W_Passe="VRAI" 
                                           END
			                NEXT IVAL
                                        IF W_Passe="FAUX" THEN
                                           ENR_PLANCOMPTABLE<10,W_NBVAL+1>="N1"
					   WRITE ENR_PLANCOMPTABLE ON F.PLANCOMPTABLE,W_CLE[3,13]
                                        END
 

					ENR_BROUILLARDDETAIL<5>="A NOUVEAU"
					IF W_CUMUL<0 THEN
						ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;W_CUMUL * -1)
                                          	W_CREDITTOT=W_CREDITTOT+ENR_BROUILLARDDETAIL<8>
					END ELSE
						ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;W_CUMUL)	
                                           	W_DEBITTOT=W_DEBITTOT+ENR_BROUILLARDDETAIL<7>
					END
				

					* INCREMENTATION LIGNE
					GOSUB 1000
					WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_LIGNE

				END

			END

		REPEAT
	END

RETURN


***************************************
* A NOUVEAU COMPTE GENERAUX DETAILLES *
***************************************
300
	W_SELECT="N0":W_CODASSO:"6":"]"
   W_SELECT1="N0":W_CODASSO:"]"
	W_LIGNEERR=0
	EXECUTE 'SSELECT BALANCEGENE AVEC @ID = "':W_SELECT1:'" AND AVEC @ID < "':W_SELECT:'" AND AVEC ANouvDetailPlan # "':"0":'"'
	EXECUTE 'SAUVE-LISTE W_REQUETEBALANCE'
	EXECUTE "LISTE W_REQUETEBALANCE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.BALANCEGENE TO W_REQUETEBALANCE

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEBALANCE ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO
			READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CLE ELSE PRINT "BALANCEGENE"

			IF ENR_BALANCEGENE<1> # ENR_BALANCEGENE<2> THEN

				IF W_CLE <> "N0":W_COMPTECENTRAL THEN
					ENR_BROUILLARDDETAIL=""
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,1;DATE())
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,2;W_DATEDEBUT)
					W_CUMULD=0
					W_CUMULC=0
					W_COMPTEUR=DCOUNT(ENR_BALANCEGENE<9>,CHAR(253))
					FOR IECR=1 TO W_COMPTEUR

						READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,ENR_BALANCEGENE<9,IECR> ELSE PRINT "DETAILECRITUREGENE"		
                                    		W_LettrageDetEcrGene=ENR_DETAILECRITUREGENE<11>
						IF W_LettrageDetEcrGene = "" OR W_LettrageDetEcrGene[2,1]="1" THEN
							W_DEBITTOT=W_DEBITTOT+ENR_DETAILECRITUREGENE<6>
							W_CREDITTOT=W_CREDITTOT+ENR_DETAILECRITUREGENE<7>
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;ENR_DETAILECRITUREGENE<3>)


                                                        * met N1 dans att 10 de PLANCOMPTABLE car si le compte est coch  ne plus utiliser
                                                        * il ne faut pas le supprimer
			                                READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,ENR_DETAILECRITUREGENE<3> ELSE PRINT "PLANCOMPTABLE"

 			                                W_NBVAL=DCOUNT(ENR_PLANCOMPTABLE<10>,CHAR(253))
                                                        W_Passe="FAUX"
			                                FOR IVAL = 1 TO W_NBVAL 
                                                           IF ENR_PLANCOMPTABLE<10,IVAL>="N1" THEN
                                                              W_Passe="VRAI" 
                                                           END
			                                NEXT IVAL
                                                        IF W_Passe="FAUX" THEN
                                                           ENR_PLANCOMPTABLE<10,W_NBVAL+1>="N1"
				                 	   WRITE ENR_PLANCOMPTABLE ON F.PLANCOMPTABLE,ENR_DETAILECRITUREGENE<3>
                                                        END


							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;ENR_DETAILECRITUREGENE<4>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;ENR_DETAILECRITUREGENE<5>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;ENR_DETAILECRITUREGENE<6>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;ENR_DETAILECRITUREGENE<7>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,9;ENR_DETAILECRITUREGENE<8>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;ENR_DETAILECRITUREGENE<9>)
							ENR_BROUILLARDDETAIL<11>=ENR_DETAILECRITUREGENE<10>

							IF W_LettrageDetEcrGene # "" AND ENR_DETAILECRITUREGENE<3>[1,4] = W_CODASSO:"4" THEN
								ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;ENR_DETAILECRITUREGENE<11>[1,1])
							END ELSE
								ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;"")
                                                        END

							W_CUMULD=W_CUMULD+ENR_DETAILECRITUREGENE<6>
							W_CUMULC=W_CUMULC+ENR_DETAILECRITUREGENE<7>
							* INCREMENTATION LIGNE
							GOSUB 1000
							WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_LIGNE
						
						END 	
					NEXT IECR

					IF W_CUMULD="" THEN W_CUMULMULD=0
					IF ENR_BALANCEGENE<1>="" THEN ENR_BALANCEGENE<1>=0
					IF W_CUMULC="" THEN W_CUMULC=0
					IF ENR_BALANCEGENE<2>="" THEN ENR_BALANCEGENE<2>=0

					IF W_CUMULD-W_CUMULC # ENR_BALANCEGENE<1>-ENR_BALANCEGENE<2> THEN
						W_LIGNEERR=W_LIGNEERR+1
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,1;W_CLE[3,13])
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,2;ENR_BALANCEGENE<1>)
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,3;ENR_BALANCEGENE<2>)
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,4;W_CUMULD)
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,5;W_CUMULC)
					END
				END

			END

		REPEAT

		IF ENR_TEMPO<1,1> # "" THEN
			WRITE ENR_TEMPO ON F.TEMPO,"ERREURBALGEN"
		END
		
	END

RETURN

********************************
* A NOUVEAU COMPTES AUXILIAIRE *
********************************
400

	W_SELECT="N0":W_CODASSO:"]"
	W_LIGNEERR=0
	EXECUTE 'SSELECT BALANCEAUX AVEC @ID = "':W_SELECT:'"'
	EXECUTE 'SAUVE-LISTE W_REQUETEBALANCE'
	EXECUTE "LISTE W_REQUETEBALANCE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		W_LIGNEERR=0
		SELECT F.BALANCEAUX TO W_REQUETEBALANCE

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEBALANCE ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO
			READ ENR_BALANCEAUX FROM F.BALANCEAUX,W_CLE ELSE PRINT "BALANCEAUX"

			IF ENR_BALANCEAUX<1> # ENR_BALANCEAUX<2> THEN

				* IF W_CLE <> "N0":W_COMPTECENTRAL THEN
					ENR_BROUILLARDDETAIL=""
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,1;DATE())
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,2;W_DATEDEBUT)
					ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,3;"A")
					W_CUMULD=0
					W_CUMULC=0
					W_COMPTEUR=DCOUNT(ENR_BALANCEAUX<9>,CHAR(253))
					FOR IECR=1 TO W_COMPTEUR

						READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,ENR_BALANCEAUX<9,IECR> ELSE PRINT "DETAILECRITUREAUX"		

                                    		W_LettrageDetEcrGene=ENR_DETAILECRITUREAUX<11>
						IF W_LettrageDetEcrGene = "" OR W_LettrageDetEcrGene[2,1] ="1" THEN
							W_DEBITTOT=W_DEBITTOT+ENR_DETAILECRITUREAUX<6>
							W_CREDITTOT=W_CREDITTOT+ENR_DETAILECRITUREAUX<7>
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,4;ENR_DETAILECRITUREAUX<3>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,5;ENR_DETAILECRITUREAUX<4>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,6;ENR_DETAILECRITUREAUX<5>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,7;ENR_DETAILECRITUREAUX<6>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,8;ENR_DETAILECRITUREAUX<7>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,9;ENR_DETAILECRITUREAUX<8>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,10;ENR_DETAILECRITUREAUX<9>)
							ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,11;ENR_DETAILECRITUREAUX<10>)

							IF W_LettrageDetEcrGene # "" THEN
								ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;ENR_DETAILECRITUREAUX<11>[1,1])
							END ELSE
								ENR_BROUILLARDDETAIL=REPLACE(ENR_BROUILLARDDETAIL,12;"")
                                                        END

							W_CUMULD=W_CUMULD+ENR_DETAILECRITUREAUX<6>
							W_CUMULC=W_CUMULC+ENR_DETAILECRITUREAUX<7>

							* INCREMENTATION LIGNE
							GOSUB 1000
							WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_CLEBROUILLARD:W_LIGNE
						END	

					NEXT IECR

					IF W_CUMULD="" THEN W_CUMULMULD=0
					IF ENR_BALANCEAUX<1>="" THEN ENR_BALANCEAUX<1>=0
					IF W_CUMULC="" THEN W_CUMULC=0
					IF ENR_BALANCEAUX<2>="" THEN ENR_BALANCEAUX<2>=0

					IF W_CUMULD-W_CUMULC # ENR_BALANCEAUX<1>-ENR_BALANCEAUX<2> THEN
						W_LIGNEERR=W_LIGNEERR+1
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,1;W_CLE[6,5])
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,2;ENR_BALANCEAUX<1>)
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,3;ENR_BALANCEAUX<2>)
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,4;W_CUMULD)
						ENR_TEMPO=REPLACE(ENR_TEMPO,W_LIGNEERR,5;W_CUMULC)
					END
				* END

			END

		REPEAT

		IF ENR_TEMPO<1,1> # "" THEN
			WRITE ENR_TEMPO ON F.TEMPO,"ERREURBALAUX"
		END
		
	END
RETURN


***********************
* VIDAGE DES FICHIERS *
***********************
500

	* VIDAGE DE N0
	GOSUB 1600

	* BALANCE GENERALE
	W_CHOIX="GEN"
	GOSUB 1100

	* BALANCE AUXILIAIRE
	W_CHOIX="AUX"
	GOSUB 1100

	* BALANCE ANALYTIQUE
	W_CHOIX="ANA"
	GOSUB 1100

	* DETAIL ECRITURE GENERAL
	W_CHOIX="GEN"
	GOSUB 1200

	* DETAIL ECRITURE AUXILIAIRE
	W_CHOIX="AUX"
	GOSUB 1200

	* RAPPROCHDETAIL
	GOSUB 1800

	* BUDGET
	GOSUB 1900

RETURN

******************************
* ACTUALISATION DES FICHIERS *
******************************
600
	* JOURNAL
	GOSUB 1300

	* PLAN COMPTABLE
	GOSUB 1400

	* BUDGETCLES
	GOSUB 2000

	* PARAMENTITECOMPTA
	GOSUB 1500

RETURN


**********************************
* SAUVEGARDE POUR BROUILLARDTETE *
**********************************
700
	IF W_DEBITTOT # 0 OR W_CREDITTOT # 0 THEN
		ENR_TEMPO=""
		ENR_TEMPO=REPLACE(ENR_TEMPO,1;W_LIGNE)
		ENR_TEMPO=REPLACE(ENR_TEMPO,2;W_DEBITTOT)
		ENR_TEMPO=REPLACE(ENR_TEMPO,3;W_CREDITTOT)
		WRITE ENR_TEMPO ON F.TEMPO,"INFOTETE"
	END
RETURN


**************************
* VIDAGE FICHIER ARCHIVE *
**************************
800

* BALANCEAUXARCHIVE

   EXECUTE 'SELECT BALANCEAUXARCHIVE AVEC @ID = "':"N0":W_CODASSO:']" PAR @ID'
   EXECUTE 'SAUVE-LISTE W_REQUETEARCHIVE'
   EXECUTE "LISTE W_REQUETEARCHIVE" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.BALANCEAUXARCHIVE TO W_REQUETEARCHIVE

      W_End="FAUX"

      LOOP
         READNEXT W_CleArchive FROM W_REQUETEARCHIVE ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         DELETE F.BALANCEAUXARCHIVE,W_CleArchive
      REPEAT
   END

   W_REQUETEARCHIVE=""

* DETAILECRITUREAUXARCHIVE

   EXECUTE 'SELECT DETAILECRITUREAUXARCHIVE AVEC @ID = "':W_CODASSO:']" PAR @ID'
   EXECUTE 'SAUVE-LISTE W_REQUETEARCHIVE'
   EXECUTE "LISTE W_REQUETEARCHIVE" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.DETAILECRITUREAUXARCHIVE TO W_REQUETEARCHIVE

      W_End="FAUX"

      LOOP
         READNEXT W_CleArchive FROM W_REQUETEARCHIVE ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         DELETE F.DETAILECRITUREAUXARCHIVE,W_CleArchive
      REPEAT
   END

   W_REQUETEARCHIVE=""

* BALANCEGENEARCHIVE

   EXECUTE 'SELECT BALANCEGENEARCHIVE AVEC @ID = "':"N0":W_CODASSO:']" PAR @ID'
   EXECUTE 'SAUVE-LISTE W_REQUETEARCHIVE'
   EXECUTE "LISTE W_REQUETEARCHIVE" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.BALANCEGENEARCHIVE TO W_REQUETEARCHIVE

      W_End="FAUX"

      LOOP
         READNEXT W_CleArchive FROM W_REQUETEARCHIVE ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         DELETE F.BALANCEGENEARCHIVE,W_CleArchive
      REPEAT
   END

   W_REQUETEARCHIVE=""

* BALANCEANALARCHIVE

   EXECUTE 'SELECT BALANCEANALARCHIVE AVEC @ID = "':"N0":W_CODASSO:']" PAR @ID'
   EXECUTE 'SAUVE-LISTE W_REQUETEARCHIVE'
   EXECUTE "LISTE W_REQUETEARCHIVE" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.BALANCEANALARCHIVE TO W_REQUETEARCHIVE

      W_End="FAUX"

      LOOP
         READNEXT W_CleArchive FROM W_REQUETEARCHIVE ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         DELETE F.BALANCEANALARCHIVE,W_CleArchive
      REPEAT
   END

   W_REQUETEARCHIVE=""

* DETAILECRITUREGENEARCHIVE

   EXECUTE 'SELECT DETAILECRITUREGENEARCHIVE AVEC @ID = "':W_CODASSO:']" PAR @ID'
   EXECUTE 'SAUVE-LISTE W_REQUETEARCHIVE'
   EXECUTE "LISTE W_REQUETEARCHIVE" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.DETAILECRITUREGENEARCHIVE TO W_REQUETEARCHIVE

      W_End="FAUX"

      LOOP
         READNEXT W_CleArchive FROM W_REQUETEARCHIVE ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         DELETE F.DETAILECRITUREGENEARCHIVE,W_CleArchive
      REPEAT
   END

   W_REQUETEARCHIVE=""

* JOURNALARCHIVE

   EXECUTE 'SELECT JOURNALARCHIVE AVEC @ID = "':W_CODASSO:']" PAR @ID'
   EXECUTE 'SAUVE-LISTE W_REQUETEARCHIVE'
   EXECUTE "LISTE W_REQUETEARCHIVE" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.JOURNALARCHIVE TO W_REQUETEARCHIVE

      W_End="FAUX"

      LOOP
         READNEXT W_CleArchive FROM W_REQUETEARCHIVE ELSE W_End = "VRAI"
      WHILE W_End = "FAUX" DO
         DELETE F.JOURNALARCHIVE,W_CleArchive
      REPEAT
   END

RETURN


*******************************
* INCREMENTATION NUMERO LIGNE *
*******************************
1000

	* INCREMENTATION NB LIGNES
	W_LIGNE = W_LIGNE+1

	* CONVERSION NUMERO DE LIGNE POUR ECRITURE DE LA CLE
	W_LONGUEUR=LEN(W_LIGNE)

	BEGIN CASE
		CASE W_LONGUEUR MATCHES 1
			W_LIGNE="0000":W_LIGNE
		CASE W_LONGUEUR MATCHES 2
			W_LIGNE="000":W_LIGNE
		CASE W_LONGUEUR MATCHES 3
			W_LIGNE="00":W_LIGNE
		CASE W_LONGUEUR MATCHES 4
			W_LIGNE="0":W_LIGNE
	END CASE	

RETURN

****************************************************************
* BALANCE GENERALE ET BALANCE AUXILIAIRE ET BALANCE ANALYTIQUE *
****************************************************************
1100

	IF W_CHOIX ="GEN" THEN
		EXECUTE 'SSELECT BALANCEGENE AVEC EntiteBalGene = "':W_CODASSO:'" PAR @ID'
	END ELSE
         IF W_CHOIX ="AUX" THEN
		EXECUTE 'SSELECT BALANCEAUX AVEC EntiteBalAux = "':W_CODASSO:'" PAR @ID'
         END ELSE
		EXECUTE 'SSELECT BALANCEANAL AVEC EntiteBalAnal = "':W_CODASSO:'" PAR @ID'
         END
	END

	EXECUTE 'SAUVE-LISTE W_REQUETEBALANCE'
	EXECUTE "LISTE W_REQUETEBALANCE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		IF W_CHOIX ="GEN" THEN
			SELECT F.BALANCEGENE TO W_REQUETEBALANCE
		END ELSE
               IF W_CHOIX ="AUX" THEN
			SELECT F.BALANCEAUX TO W_REQUETEBALANCE
		   END ELSE
			SELECT F.BALANCEANAL TO W_REQUETEBALANCE
               END
		END

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEBALANCE ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO

			IF W_CLE[1,2]="N1" THEN

			   	IF W_CHOIX ="GEN" THEN
					READ ENR_FICHIER FROM F.BALANCEGENE,W_CLE ELSE PRINT "BALANCEGENE"
					READ ENR_LETTRE FROM F.LETTREGENE,W_CLE ELSE ENR_LETTRE=""
			   	END ELSE
      					IF W_CHOIX ="AUX" THEN
  					   READ ENR_FICHIER FROM F.BALANCEAUX,W_CLE ELSE PRINT "BALANCEAUX"
					   READ ENR_LETTRE FROM F.LETTREAUX,W_CLE ELSE ENR_LETTRE=""
					END ELSE
    					   READ ENR_FICHIER FROM F.BALANCEANAL,W_CLE ELSE PRINT "BALANCEANAL"
					   ENR_LETTRE=""
					END
				END

				W_NBVAL=DCOUNT(ENR_FICHIER<9>,CHAR(253))
				FOR IVAL=1 TO W_NBVAL
					ENR_FICHIER=REPLACE(ENR_FICHIER,9,IVAL;ENR_FICHIER<9,IVAL>[1,6]:"0":ENR_FICHIER<9,IVAL>[8,5])
				NEXT IVAL	

                                IF ENR_LETTRE<2> # "" THEN
          				ENR_LETTRE=REPLACE(ENR_LETTRE,1;ENR_LETTRE<2>[1,1])
          				ENR_LETTRE=REPLACE(ENR_LETTRE,2;"")
  				END

				IF W_CHOIX ="GEN" THEN	
					WRITE ENR_FICHIER ON F.BALANCEGENE,"N0":W_CLE[3,13]
					WRITE ENR_LETTRE ON F.LETTREGENE,"N0":W_CLE[3,13]
				END ELSE
 				   IF W_CHOIX ="AUX" THEN
					WRITE ENR_FICHIER ON F.BALANCEAUX,"N0":W_CLE[3,8]
					WRITE ENR_LETTRE ON F.LETTREAUX,"N0":W_CLE[3,8]
				   END ELSE
					WRITE ENR_FICHIER ON F.BALANCEANAL,"N0":W_CLE[3,16]
                          	   END
				END	

			END

		      	IF W_CHOIX ="GEN" THEN
       				DELETE F.BALANCEGENE,W_CLE
       				DELETE F.LETTREGENE,W_CLE
			END ELSE
                      		IF W_CHOIX ="AUX" THEN
 				 	DELETE F.BALANCEAUX,W_CLE
 				 	DELETE F.LETTREAUX,W_CLE
                      		END ELSE
 				 	DELETE F.BALANCEANAL,W_CLE
                     	 	END
			END

		REPEAT
	END
RETURN

**************************************************
* DETAIL ECRITURE GENERAL ET DETAIL ECRITURE AUX *
**************************************************
1200
	IF W_CHOIX ="GEN" THEN
		EXECUTE 'SSELECT DETAILECRITUREGENE AVEC @ID = "':W_CODASSO:"]":'" PAR @ID'
	END ELSE
		EXECUTE 'SSELECT DETAILECRITUREAUX AVEC @ID = "':W_CODASSO:"]":'" PAR @ID'
	END

	EXECUTE 'SAUVE-LISTE W_REQUETEBALANCE'
	EXECUTE "LISTE W_REQUETEBALANCE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		IF W_CHOIX ="GEN" THEN
			SELECT F.DETAILECRITUREGENE TO W_REQUETEBALANCE
		END ELSE
			SELECT F.DETAILECRITUREAUX TO W_REQUETEBALANCE
		END

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEBALANCE ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO
		
			IF W_CLE[6,2]="N1" OR W_CLE[6,2]="P1" THEN

				IF W_CHOIX ="GEN" THEN
					READ ENR_FICHIER FROM F.DETAILECRITUREGENE,W_CLE ELSE PRINT "DETAILECRITUREGENE"
                              		W_LettrageDetECrGene=ENR_FICHIER<11>
					IF W_LettrageDetECrGene[2,1]="1" THEN
						ENR_FICHIER=REPLACE(ENR_FICHIER,11;W_LettrageDetECrGene[1,1])
					END ELSE
						ENR_FICHIER=REPLACE(ENR_FICHIER,11;"")
					END

					WRITE ENR_FICHIER ON F.DETAILECRITUREGENE,W_CLE[1,6]:"0":W_CLE[8,5]

				END ELSE
					READ ENR_FICHIER FROM F.DETAILECRITUREAUX,W_CLE ELSE PRINT "DETAILECRITUREAUX"

					W_NBVAL=DCOUNT(ENR_FICHIER<12>,CHAR(253))
					FOR IVAL=1 TO W_NBVAL
						ENR_FICHIER=REPLACE(ENR_FICHIER,12,IVAL;ENR_FICHIER<12,IVAL>[1,5]:"N0":ENR_FICHIER<12,IVAL>[8,5])
					NEXT IVAL	
                              		W_LettrageDetECrAux=ENR_FICHIER<11>
					IF W_LettrageDetECrAux[2,1]="1" THEN
						ENR_FICHIER=REPLACE(ENR_FICHIER,11;W_LettrageDetECrAux[1,1])
					END ELSE
						ENR_FICHIER=REPLACE(ENR_FICHIER,11;"")
					END
					WRITE ENR_FICHIER ON F.DETAILECRITUREAUX,W_CLE[1,6]:"0":W_CLE[8,5]
				END

			END

			IF W_CHOIX ="GEN" THEN
        			DELETE F.DETAILECRITUREGENE,W_CLE
			END ELSE
				DELETE F.DETAILECRITUREAUX,W_CLE
			END

		REPEAT
	END

RETURN

*****************************************************
* ACTUALISATION FICHIER JOURNAL + JOURNALPROVISOIRE *
*****************************************************
1300

	W_An=OCONV(DATE(),"D4/")
	W_An=W_An[9,2]
	W_An=W_An-3

   	EXECUTE 'SSELECT JOURNAL AVEC @ID = "':W_CODASSO:']"'
	EXECUTE 'SAUVE-LISTE W_REQUETEJOURNAL'
	EXECUTE "LISTE W_REQUETEJOURNAL" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		SELECT F.JOURNAL TO W_REQUETEJOURNAL

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEJOURNAL ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO	
			READ ENR_JOURNAL FROM F.JOURNAL,W_CLE ELSE PRINT "JOURNAL"
			ENR_JOURNALARCHIVE=ENR_JOURNAL
			ENR_JOURNALARCHIVE<6>=""
			ENR_JOURNALARCHIVE<7>=""
			ENR_JOURNALARCHIVE<10>=""
			ENR_JOURNALARCHIVE<11>=""
			WRITE ENR_JOURNALARCHIVE ON F.JOURNALARCHIVE,W_CLE

			ENR_JOURNAL=REPLACE(ENR_JOURNAL,4;ENR_JOURNAL<6>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,5;ENR_JOURNAL<7>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,6;"")
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,7;"")
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,8;ENR_JOURNAL<10>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,9;ENR_JOURNAL<11>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,10;"")
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,11;"")

			IF ENR_JOURNAL<19> # "" THEN
				W_CountJournal=DCOUNT(ENR_JOURNAL<19>,CHAR(253))
				FOR iJournal = 1 TO W_CountJournal
					IF INT(ENR_JOURNAL<19,iJournal>) <= INT(W_An) THEN
						ENR_JOURNAL=DELETE(ENR_JOURNAL,19,iJournal)
						ENR_JOURNAL=DELETE(ENR_JOURNAL,20,iJournal)
					END
				NEXT iJournal
			END

			WRITE ENR_JOURNAL ON F.JOURNAL,W_CLE
		REPEAT
	END
	
	*********************
	* JOURNALPROVISOIRE *
	*********************

   	EXECUTE 'SSELECT JOURNALPROVISOIRE AVEC @ID = "':W_CODASSO:']"'
	EXECUTE 'SAUVE-LISTE W_REQUETEJOURNAL'
	EXECUTE "LISTE W_REQUETEJOURNAL" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		SELECT F.JOURNALPROVISOIRE TO W_REQUETEJOURNAL

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEJOURNAL ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO	
			READ ENR_JOURNAL FROM F.JOURNALPROVISOIRE,W_CLE ELSE PRINT "JOURNALPROVISOIRE"

			ENR_JOURNAL=REPLACE(ENR_JOURNAL,4;ENR_JOURNAL<6>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,5;ENR_JOURNAL<7>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,6;"")
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,7;"")
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,8;ENR_JOURNAL<10>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,9;ENR_JOURNAL<11>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,10;"")
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,11;"")

			ENR_JOURNAL=REPLACE(ENR_JOURNAL,19,1;ENR_JOURNAL<19,2>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,20,1;ENR_JOURNAL<20,2>)
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,19,2;"")
			ENR_JOURNAL=REPLACE(ENR_JOURNAL,20,2;"")

			WRITE ENR_JOURNAL ON F.JOURNALPROVISOIRE,W_CLE
		REPEAT
	END

RETURN

****************************************
* ACTUALISATION FICHIER PLAN COMPTABLE *
****************************************
1400
   EXECUTE 'SSELECT PLANCOMPTABLE AVEC @ID = "':W_CODASSO:']"'
	EXECUTE 'SAUVE-LISTE W_REQUETEPLAN'
	EXECUTE "LISTE W_REQUETEPLAN" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		SELECT F.PLANCOMPTABLE TO W_REQUETEPLAN

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEPLAN ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO	
			READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_CLE ELSE PRINT "PLANCOMPTABLE"

			IF ENR_PLANCOMPTABLE<10,1> = "" AND ENR_PLANCOMPTABLE<9>="1" THEN
				DELETE F.PLANCOMPTABLE,W_CLE
			END ELSE

 				IF ENR_PLANCOMPTABLE<10> # "" THEN
 			  		W_NBVAL=DCOUNT(ENR_PLANCOMPTABLE<10>,CHAR(253))
			   		IVAL=1
			   		LOOP 
			   		WHILE IVAL<=W_NBVAL DO
				   		IF ENR_PLANCOMPTABLE<10,IVAL>= "N0" THEN
					   		ENR_PLANCOMPTABLE=DELETE(ENR_PLANCOMPTABLE,10,IVAL)
					   		W_NBVAL=W_NBVAL-1
				   		END ELSE
					   		ENR_PLANCOMPTABLE<10,IVAL>= "N0"
					   		IVAL=IVAL+1
				   		END			
			   		REPEAT
                        	END

				IF ENR_PLANCOMPTABLE<5> # "" THEN
					W_Passe="FAUX"
					W_CountSect=DCOUNT(ENR_PLANCOMPTABLE<5>,CHAR(253))
					FOR IVAL=1 TO W_CountSect
						IF ENR_PLANCOMPTABLE<12,IVAL> # "" THEN
							W_Passe="VRAI"
							EXIT
						END
					NEXT IVAL

					IF W_Passe="VRAI" THEN
						ENR_PLANCOMPTABLE<6>=ENR_PLANCOMPTABLE<12>
						FOR IVAL=1 TO W_CountSect
							IF ENR_PLANCOMPTABLE<6,IVAL>="" THEN
								ENR_PLANCOMPTABLE=DELETE(ENR_PLANCOMPTABLE,5,IVAL)
								ENR_PLANCOMPTABLE=DELETE(ENR_PLANCOMPTABLE,6,IVAL)
								ENR_PLANCOMPTABLE=DELETE(ENR_PLANCOMPTABLE,12,IVAL)
							END
						NEXT IVAL
					END
				END

				WRITE ENR_PLANCOMPTABLE ON F.PLANCOMPTABLE,W_CLE
			END 

		REPEAT
	END
RETURN


***********************************
* ACTUALISATION PARAMENTITECOMPTA *
***********************************
1500
	READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_CODASSO THEN
		ENR_PARAMENTITECOMPTA=REPLACE(ENR_PARAMENTITECOMPTA,1;W_DATEDEBUT)
		ENR_PARAMENTITECOMPTA=REPLACE(ENR_PARAMENTITECOMPTA,2;W_FINN)
		ENR_PARAMENTITECOMPTA=REPLACE(ENR_PARAMENTITECOMPTA,3;W_DEBN1)
		ENR_PARAMENTITECOMPTA=REPLACE(ENR_PARAMENTITECOMPTA,4;W_FINN1)
		WRITE ENR_PARAMENTITECOMPTA ON F.PARAMENTITECOMPTA,W_CODASSO	
	END ELSE
		PRINT "PARAMENTITECOMPTA"
	END
RETURN

***********************************
* VIDAGE DE N0                    *
***********************************
1600
   	EXECUTE 'SSELECT DETAILECRITUREGENE AVEC @ID = "':W_CODASSO:"]":'" AND AVEC ExerciceDetailEcrGene = "N0" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETEVIDAGE'
	EXECUTE "LISTE W_REQUETEVIDAGE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.DETAILECRITUREGENE TO W_REQUETEVIDAGE

		W_FINIVID="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEVIDAGE ELSE W_FINIVID="VRAI"
		WHILE W_FINIVID="FAUX" DO
			* LECTURE + ECRITURE ARTICLE N0 -> ARCHIVE
			READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_CLE ELSE ENR_DETAILECRITUREGENE=""
			WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENEARCHIVE,W_CLE

		   	DELETE F.DETAILECRITUREGENE,W_CLE
		REPEAT
	END

   	EXECUTE 'SSELECT DETAILECRITUREAUX AVEC @ID = "':W_CODASSO:"]":'" AND AVEC ExerciceDetailEcrAux = "N0" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETEVIDAGE'
	EXECUTE "LISTE W_REQUETEVIDAGE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.DETAILECRITUREAUX TO W_REQUETEVIDAGE

		W_FINIVID="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEVIDAGE ELSE W_FINIVID="VRAI"
		WHILE W_FINIVID="FAUX" DO
			* LECTURE + ECRITURE ARTICLE N0 -> ARCHIVE
			READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_CLE ELSE ENR_DETAILECRITUREAUX=""
			WRITE ENR_DETAILECRITUREAUX ON F.DETAILECRITUREAUXARCHIVE,W_CLE

		   	DELETE F.DETAILECRITUREAUX,W_CLE
		REPEAT
	END

   	EXECUTE 'SSELECT BALANCEGENE AVEC EntiteBalGene = "':W_CODASSO:'" AND AVEC @ID = "N0]" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETEVIDAGE'
	EXECUTE "LISTE W_REQUETEVIDAGE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.BALANCEGENE TO W_REQUETEVIDAGE

		W_FINIVID="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEVIDAGE ELSE W_FINIVID="VRAI"
		WHILE W_FINIVID="FAUX" DO
			* LECTURE + ECRITURE ARTICLE N0 -> ARCHIVE
			READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CLE ELSE ENR_BALANCEGENE=""
			WRITE ENR_BALANCEGENE ON F.BALANCEGENEARCHIVE,W_CLE

		   	DELETE F.BALANCEGENE,W_CLE
		   	DELETE F.LETTREGENE,W_CLE
		REPEAT
	END

   	EXECUTE 'SSELECT BALANCEAUX AVEC EntiteBalAux = "':W_CODASSO:'" AND AVEC @ID = "N0]" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETEVIDAGE'
	EXECUTE "LISTE W_REQUETEVIDAGE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.BALANCEAUX TO W_REQUETEVIDAGE

		W_FINIVID="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEVIDAGE ELSE W_FINIVID="VRAI"
		WHILE W_FINIVID="FAUX" DO
			* LECTURE + ECRITURE ARTICLE N0 -> ARCHIVE
			READ ENR_BALANCEAUX FROM F.BALANCEAUX,W_CLE ELSE ENR_BALANCEAUX=""
			WRITE ENR_BALANCEAUX ON F.BALANCEAUXARCHIVE,W_CLE

		   	DELETE F.BALANCEAUX,W_CLE
		   	DELETE F.LETTREAUX,W_CLE
		REPEAT
	END

   	EXECUTE 'SSELECT BALANCEANAL AVEC EntiteBalAnal = "':W_CODASSO:'" AND AVEC @ID = "N0]" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETEVIDAGE'
	EXECUTE "LISTE W_REQUETEVIDAGE" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.BALANCEANAL TO W_REQUETEVIDAGE

		W_FINIVID="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEVIDAGE ELSE W_FINIVID="VRAI"
		WHILE W_FINIVID="FAUX" DO
			* LECTURE + ECRITURE ARTICLE N0 -> ARCHIVE
			READ ENR_BALANCEANAL FROM F.BALANCEANAL,W_CLE ELSE ENR_BALANCEANAL=""
			WRITE ENR_BALANCEANAL ON F.BALANCEANALARCHIVE,W_CLE

		   	DELETE F.BALANCEANAL,W_CLE
		REPEAT
	END

RETURN

***************************************
* APURATION DU FICHIER RAPPROCHDETAIL *
***************************************
1800

	W_REQUETERAPPROCH = ""

	W_An=OCONV(DATE(),"D4/")
	W_An=W_An[9,2]
	W_An=W_An-3

	EXECUTE 'SSELECT RAPPROCHDETAIL AVEC @ID = "':W_CODASSO:"]":'" AND AVEC 6 # "" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETERAPPROCH'
	EXECUTE "LISTE W_REQUETERAPPROCH" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.RAPPROCHDETAIL TO W_REQUETERAPPROCH

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLERAPPR FROM W_REQUETERAPPROCH ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO
		
			IF INT(W_CLERAPPR[6,2]) <= INT(W_An) THEN
        			DELETE F.RAPPROCHDETAIL,W_CLERAPPR
			END

		REPEAT
	END

RETURN

*******************************
* APURATION DU FICHIER BUDGET *
*******************************
1900

	W_REQUETEBUDGET = ""

	EXECUTE 'SSELECT BUDGET AVEC @ID = "N0':W_CODASSO:"]":'" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETEBUDGET'
	EXECUTE "LISTE W_REQUETEBUDGET" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.BUDGET TO W_REQUETEBUDGET

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLEBUD FROM W_REQUETEBUDGET ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO

			READ ENR_BUDGET FROM F.BUDGET,W_CLEBUD ELSE ENR_BUDGET = ""

        		DELETE F.BUDGET,W_CLEBUD

		REPEAT
	END

	W_REQUETEBUDGET = ""

	EXECUTE 'SSELECT BUDGET AVEC @ID = "N1':W_CODASSO:"]":'" PAR @ID'

	EXECUTE 'SAUVE-LISTE W_REQUETEBUDGET'
	EXECUTE "LISTE W_REQUETEBUDGET" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN

		SELECT F.BUDGET TO W_REQUETEBUDGET

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLEBUD FROM W_REQUETEBUDGET ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO

			READ ENR_BUDGET FROM F.BUDGET,W_CLEBUD ELSE ENR_BUDGET = ""
			WRITE ENR_BUDGET ON F.BUDGET,"N0":W_CLEBUD[3,99]

        		DELETE F.BUDGET,W_CLEBUD

		REPEAT
	END

RETURN

****************************************
* ACTUALISATION FICHIER BUDGETCLES     *
****************************************
2000
   EXECUTE 'SSELECT BUDGETCLES AVEC @ID = "':W_CODASSO:']"'
	EXECUTE 'SAUVE-LISTE W_REQUETEBUDG'
	EXECUTE "LISTE W_REQUETEBUDG" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		SELECT F.BUDGETCLES TO W_REQUETEBUDG

		W_FINI="FAUX"
		LOOP
			READNEXT W_CLE FROM W_REQUETEBUDG ELSE W_FINI="VRAI"
		WHILE W_FINI="FAUX" DO	
			READ ENR_BUDGETCLES FROM F.BUDGETCLES,W_CLE ELSE PRINT "BUDGETCLES"

			IF ENR_BUDGETCLES<2> # "" THEN
				W_CountBudg=DCOUNT(ENR_BUDGETCLES<2>,CHAR(253))
				W_Passe="FAUX"
				FOR IVAL=1 TO W_CountBudg
					IF ENR_BUDGETCLES<4,IVAL> # "" THEN
						W_Passe="VRAI"
						EXIT
					END
				NEXT IVAL
				IF W_Passe="VRAI" THEN
					ENR_BUDGETCLES<3>=ENR_BUDGETCLES<4>
					FOR IVAL=1 TO W_CountBudg
						IF ENR_BUDGETCLES<3,IVAL>="" THEN
							ENR_BUDGETCLES=DELETE(ENR_BUDGETCLES,2,IVAL)
							ENR_BUDGETCLES=DELETE(ENR_BUDGETCLES,3,IVAL)
							ENR_BUDGETCLES=DELETE(ENR_BUDGETCLES,4,IVAL)
						END
					NEXT IVAL

					WRITE ENR_BUDGETCLES ON F.BUDGETCLES,W_CLE

				END
			END

		REPEAT
	END
RETURN