******************************************************
* GENERATION DES FICHIERS BALANCEGENE ET BALANCEANAL *
* AU FORMAT ASCII AFIN DE LES EXPLOITER SOUS EXCEL   *
* DANS UN INTERVALLE DE DATE                         *
* MAI 2002                           STEPHANE HERVET *
******************************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","BALANCE" TO F.BALANCE ELSE 
	EXECUTE 'CREATE.FILE DIR BALANCE 1'
	OPEN "","BALANCE" TO F.BALANCE ELSE 
		PRINT "PB CREATION FICHIER BALANCE"
		STOP
	END
END
OPEN "","BALANCEGENE" TO F.BALANCEGENE ELSE STOP
OPEN "","BALANCEANAL" TO F.BALANCEANAL ELSE STOP
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE STOP
OPEN "","TABLES" TO F.TABLES ELSE STOP

W_ENTITE=""

10
PRINT "POUR QUELLE ENTITE SOUHAITEZ-VOUS CONVERTIR LES FICHIERS BALANCE"
INPUT W_ENTITE
IF W_ENTITE="" THEN GOSUB 10

11
PRINT "PERIODE DE DEBUT SOUS LA FORME MM - 01 POUR JANVIER"
INPUT W_PERIODEDEBUT
IF W_PERIODEDEBUT="" THEN GOSUB 11

12
PRINT "PERIODE DE FIN SOUS LA FORME MM - 01 POUR JANVIER"
INPUT W_PERIODEFIN
IF W_PERIODEFIN="" THEN GOSUB 12


* TRAITEMENT DU FICHIER BALANCEANAL
EXECUTE 'SELECT BALANCEANAL AVEC ExerBalAnal = "N0" AND AVEC EntiteBalAnal = "':W_ENTITE:'" PAR CompteBalAnal PAR CodeSectBalAnal'
EXECUTE 'SAUVE-LISTE LISTBALANCEANAL'
EXECUTE "LISTE LISTBALANCEANAL" RETURNING MSGCODE
SELECT F.BALANCEANAL TO LISTBALANCEANAL

IF MSGCODE<1>#209 THEN 
	* LECTURE FICHIER TABLES / SECTANAL
	READ ENR_SECTANAL FROM F.TABLES,"SECTANAL" ELSE ENR_SECTANAL=""

	W_FINANAL=0
	I=1
	ENR_BALANCEASCII=""
	LOOP
		READNEXT CLEANAL FROM LISTBALANCEANAL ELSE W_FINANAL=1
		UNTIL W_FINANAL=1 DO

		* LECTURE BALANCEANAL + PLANCOMPTABLE
		READ ENR_BALANCEANAL FROM F.BALANCEANAL,CLEANAL ELSE ENR_BALANCEANAL=""
		READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_ENTITE:CLEANAL[6,10] ELSE ENR_PLANCOMPTABLE=""
		
		W_TOTALDEB=0
		W_TOTALCRED=0

		* RECHERCHE DU LIBELLE DE SECTION ANALYTIQUE
		J=1
		LOOP
			UNTIL ENR_SECTANAL<2,J>=CLEANAL[16,3] OR ENR_SECTANAL<2,J>="" DO
			J=J+1
		REPEAT

		* FAIT LE TOTAL DES MOIS
		K=1
		LOOP
			UNTIL ENR_BALANCEANAL<4,K>="" DO
			IF ENR_BALANCEANAL<4,K>>=W_PERIODEDEBUT AND ENR_BALANCEANAL<4,K><=W_PERIODEFIN THEN
				W_TOTALDEB=W_TOTALDEB+ENR_BALANCEANAL<5,K>
				W_TOTALCRED=W_TOTALCRED+ENR_BALANCEANAL<6,K>
			END
			K=K+1
		REPEAT

		ENR_BALANCEASCII<I>=CLEANAL[6,10]:"|":ENR_PLANCOMPTABLE<1>:"|":W_TOTALDEB/100:"|":W_TOTALCRED/100:"|":(W_TOTALDEB-W_TOTALCRED)/100:"|":CLEANAL[16,3]:"|":ENR_SECTANAL<3,J>

		I=I+1
	REPEAT
	WRITE ENR_BALANCEASCII ON F.BALANCE,"BALANCEANALASCII"
END

* TRAITEMENT DU FICHIER BALANCEGENE
EXECUTE 'SELECT BALANCEGENE AVEC ExerBalGene = "N0" AND AVEC EntiteBalGene = "':W_ENTITE:'" PAR @ID'
EXECUTE 'SAUVE-LISTE LISTBALANCEGENE'
EXECUTE "LISTE LISTBALANCEGENE" RETURNING MSGCODE
SELECT F.BALANCEGENE TO LISTBALANCEGENE

IF MSGCODE<1>#209 THEN 
	W_FINGENE=0
	I=1
	ENR_BALANCEASCII=""
	LOOP
		READNEXT CLEGENE FROM LISTBALANCEGENE ELSE W_FINGENE=1
		UNTIL W_FINGENE=1 DO

		* LECTURE BALANCEGENE + PLANCOMPTABLE
		READ ENR_BALANCEGENE FROM F.BALANCEGENE,CLEGENE ELSE ENR_BALANCEGENE=""
		READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_ENTITE:CLEGENE[6,10] ELSE ENR_PLANCOMPTABLE=""

		W_TOTALDEB=0
		W_TOTALCRED=0

		* FAIT LE TOTAL DES MOIS
		K=1
		LOOP
			UNTIL ENR_BALANCEGENE<4,K>="" DO
			IF ENR_BALANCEGENE<4,K>>=W_PERIODEDEBUT AND ENR_BALANCEGENE<4,K><=W_PERIODEFIN THEN
				W_TOTALDEB=W_TOTALDEB+ENR_BALANCEGENE<5,K>
				W_TOTALCRED=W_TOTALCRED+ENR_BALANCEGENE<6,K>
			END
			K=K+1
		REPEAT
		
		ENR_BALANCEASCII<I>=CLEGENE[6,10]:"|":ENR_PLANCOMPTABLE<1>:"|":W_TOTALDEB/100:"|":W_TOTALCRED/100:"|":(W_TOTALDEB-W_TOTALCRED)/100

		I=I+1
	REPEAT
	WRITE ENR_BALANCEASCII ON F.BALANCE,"BALANCEGENEASCII"
END
