**********************************************************
*  VISUALISATION GRAND LIVRE
*  Vanessa
*  Juillet 2004
**********************************************************
* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","BALANCEAUX" TO F.BALANCEAUX ELSE PRINT "OUVERTURE BALANCEAUX"
OPEN "","BALANCEGENE" TO F.BALANCEGENE ELSE PRINT "OUVERTURE BALANCEGENE"
OPEN "","BALANCEAUXARCHIVE" TO F.BALANCEAUXARCHIVE ELSE PRINT "OUVERTURE BALANCEAUXARCHIVE"
OPEN "","BALANCEGENEARCHIVE" TO F.BALANCEGENEARCHIVE ELSE PRINT "OUVERTURE BALANCEGENEARCHIVE"
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE PRINT "OUVERTURE CONSTANTESPAIE"
OPEN "","DETAILECRITUREAUX" TO F.DETAILECRITUREAUX ELSE PRINT "OUVERTURE DETAILECRITUREAUX"
OPEN "","DETAILECRITUREGENE" TO F.DETAILECRITUREGENE ELSE PRINT "OUVERTURE DETAILECRITUREGENE"
OPEN "","DETAILECRITUREAUXARCHIVE" TO F.DETAILECRITUREAUXARCHIVE ELSE PRINT "OUVERTURE DETAILECRITUREAUXARCHIVE"
OPEN "","DETAILECRITUREGENEARCHIVE" TO F.DETAILECRITUREGENEARCHIVE ELSE PRINT "OUVERTURE DETAILECRITUREGENEARCHIVE"
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE PRINT "OUVERTURE PARAMENTITECOMPTA"
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE PRINT "OUVERTURE PLANCOMPTABLE"
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO"

*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_User=FIELD(ARGUMENTS,"|",2)
W_Assoc=FIELD(ARGUMENTS,"|",3)
W_Exer=FIELD(ARGUMENTS,"|",4)
W_DateDeb=FIELD(ARGUMENTS,"|",5)
W_DateFin=FIELD(ARGUMENTS,"|",6)
W_Cpte=FIELD(ARGUMENTS,"|",7)
W_Affichage=FIELD(ARGUMENTS,"|",8)
W_ExerN=FIELD(ARGUMENTS,"|",9)
W_Section=FIELD(ARGUMENTS,"|",10)

*********************************************************
* variables
W_Debit = 0
W_Credit = 0
W_Quantite = 0
W_Solde = 0
W_Euro = "FAUX"
W_Fichier=""
W_TabDyn=""

*********************************************************
* PROGRAMME PRINCIPAL

	READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_Assoc ELSE ENR_PARAMENTITECOMPTA=""
	READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE=""

	READ ENR_TEMPO FROM F.TEMPO,"GRANDLIVRE":W_Cpte:W_User THEN
		DELETE F.TEMPO,"GRANDLIVRE":W_Cpte:W_User
	END
	READ ENR_TEMPO FROM F.TEMPO,"CUMULGRANDLIVRE":W_Cpte:W_User THEN
		DELETE F.TEMPO,"CUMULGRANDLIVRE":W_Cpte:W_User
	END
	ENR_TEMPO=""

        W_Euro = "FAUX"
        
	IF W_Exer="N-" THEN
		W_Cle = "N0":W_Assoc:W_Cpte
        END ELSE
		W_Cle = W_Exer:W_Assoc:W_Cpte
	END

	IF LEN(W_Cpte) = 5 THEN
		IF W_Exer="N-" THEN
			READ ENR_BALANCEAUX FROM F.BALANCEAUXARCHIVE,W_Cle ELSE ENR_BALANCEAUX=""
		END ELSE
			READ ENR_BALANCEAUX FROM F.BALANCEAUX,W_Cle ELSE ENR_BALANCEAUX=""
		END
		W_Fichier = ENR_BALANCEAUX
	END ELSE
		IF W_Exer="N-" THEN
			READ ENR_BALANCEGENE FROM F.BALANCEGENEARCHIVE,W_Cle ELSE ENR_BALANCEGENE=""
		END ELSE
			READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_Cle ELSE ENR_BALANCEGENE=""
		END
		W_Fichier = ENR_BALANCEGENE
	END
        
	IF W_Fichier<9> # "" THEN
		GOSUB 10
	END

	IF W_ExerN = 1 THEN
		W_Cle = "N0":W_Assoc:W_Cpte
            
		IF OCONV(ENR_PARAMENTITECOMPTA<1>,"D4/")[7,4] = "2001" AND ENR_CONSTANTESPAIE<9> = "12420" THEN
			W_Euro = "VRAI"
		END
            
		IF LEN(W_Cpte) = 5 THEN
			READ ENR_BALANCEAUX FROM F.BALANCEAUX,W_Cle ELSE ENR_BALANCEAUX=""
			W_Fichier = ENR_BALANCEAUX
		END ELSE
			READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_Cle ELSE ENR_BALANCEGENE=""
			W_Fichier = ENR_BALANCEGENE
		END
            
		IF W_Fichier<9> # "" THEN
                	GOSUB 10
		END
	END

	IF ENR_TEMPO # "" THEN
		WRITE ENR_TEMPO ON F.TEMPO,"GRANDLIVRE":W_Cpte:W_User

		ENR_TEMPO=""
		ENR_TEMPO<1> = W_Debit "R26(#12)"
		ENR_TEMPO<2> = W_Credit "R26(#12)"
		ENR_TEMPO<3> = W_Quantite "R26(#12)"
        	W_Solde = INT(W_Debit) - INT(W_Credit)
	        IF W_Solde >= 0 THEN
			ENR_TEMPO<4> = W_Solde "R26(#12)"
			ENR_TEMPO<5> = ""
		END ELSE
			ENR_TEMPO<4> = ""
			ENR_TEMPO<5> = W_Solde "R26(#12)"
		END

		WRITE ENR_TEMPO ON F.TEMPO,"CUMULGRANDLIVRE":W_Cpte:W_User
	END

STOP

********************************************************************************************
* Remplir Liste
10

	W_SauveLib = ""
	W_SauvePiece = ""
	W_SauveJournal = ""
	W_SauveDate = ""
	W_SauveLigne = 0
	W_SauveMont = ""
	W_Temp = ""
	W_DateDebut = ""
    
	W_Count = DCOUNT(W_Fichier<9>,CHAR(253))

	IF W_ExerN = 1 THEN
		W_DateDeb = ENR_PARAMENTITECOMPTA<1>
	END

	FOR i = W_Count TO 1 STEP-1

		IF INT(W_DateDeb) <= INT(W_Fichier<8,i>) AND INT(W_DateFin) >= INT(W_Fichier<8,i>) THEN
           
			IF LEN(W_Cpte) = 5 THEN
				IF W_Exer="N-" THEN
					READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUXARCHIVE,W_Fichier<9,i> ELSE ENR_DETAILECRITUREAUX=""
				END ELSE
					READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_Fichier<9,i> ELSE ENR_DETAILECRITUREAUX=""
				END
				W_TabDyn = ENR_DETAILECRITUREAUX
			END ELSE
				IF W_Exer="N-" THEN
					READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENEARCHIVE,W_Fichier<9,i> ELSE ENR_DETAILECRITUREGENE=""
				END ELSE
					READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_Fichier<9,i> ELSE ENR_DETAILECRITUREGENE=""
				END				
				W_TabDyn = ENR_DETAILECRITUREGENE
			END
               
			IF W_Fichier<9,i>[6,1]="N" THEN
				W_Provisoire="N"
			END ELSE
				W_Provisoire="P"
			END

			IF W_Euro = "VRAI" THEN
				IF W_TabDyn<6> # "" THEN
					W_TabDyn<6> = INT(W_TabDyn<6> / (ENR_CONSTANTESPAIE<7> / 100000) + (1 / 2))
				END ELSE
					IF W_TabDyn<7> # "" THEN
						W_TabDyn<7> = INT(W_TabDyn<7> / (ENR_CONSTANTESPAIE<7> / 100000) + (1 / 2))
					END
				END
			END
               
			IF LEN(W_TabDyn<3>) = 13 AND (W_TabDyn<3>[4,1] = "6" OR W_TabDyn<3>[4,1] = "7") THEN
				IF W_Section # "" THEN
					IF W_TabDyn<10> = W_Section THEN
						GOSUB 20
					END
				END ELSE
					GOSUB 20
				END
			END ELSE
				GOSUB 20
			END
		END
	NEXT i

RETURN

********************************************************************************************
* Test selon affichage
20

	IF W_Affichage = 1 THEN
		IF (W_TabDyn<11> = "") OR (W_Exer = "N0" AND W_TabDyn<11>[2,1] = "1") THEN
			GOSUB 30
		END
	END ELSE
		IF W_Affichage = 2 THEN
			IF (W_Exer = "N0" AND LEN(W_TabDyn<11>) = 1) OR (W_Exer # "N0" AND W_TabDyn<11> # "") THEN
				GOSUB 30
			END 
		END ELSE
			GOSUB 30
		END
	END

RETURN

********************************************************************************************
* Ecrire Ligne
30

	W_Eclat = "FAUX"
    
	IF LEN(W_TabDyn<3>) = 13 AND (W_TabDyn<3>[4,1] = "6" OR W_TabDyn<3>[4,1] = "7") THEN
		IF W_Section = "" THEN
			W_Sauve = "FAUX"
            
			IF W_SauveMont = "CREDIT" THEN
				IF W_TabDyn<7> # "" THEN
					W_Sauve = "VRAI"
				END
			END ELSE
				IF W_TabDyn<6> # "" THEN
					W_Sauve = "VRAI"
				END
			END
            
			IF W_SauvePiece = W_TabDyn<5> AND W_SauveJournal = W_Fichier<9,i>[4,2] AND W_SauveLib = W_TabDyn<4> AND W_SauveDate = W_TabDyn<2> AND W_SauveLigne - 1 "R%5" = W_Fichier<9,i>[8,5] AND W_Sauve = "VRAI" THEN
				* dbit
				IF W_TabDyn<6> # "" THEN
					*Modification mikael le 23/01/2006
					*ne grait mal les montant ngatif
						W_SauveDeb = TRIM(W_Temp[48,11])*100 + TRIM(W_TabDyn<6>)
						W_SauveDeb = W_SauveDeb "R26(#11)"
						*W_SauveDeb = W_TabDyn<6> + ICONV(W_Temp[48,11],"MCN")
					*Fin modification
					
					IF W_TabDyn<9> = "" THEN
						W_TabDyn<9> = 0
					END

					IF W_Temp[86,11] # "           " THEN
						W_SauveQte = W_TabDyn<9> + ICONV(W_Temp[86,11],"MCN")
					END
					
					*Modification mikael le 23/01/2006
					W_Temp = W_Temp[1,15]:W_Fichier<9,i>[8,5]:W_Temp[21,27]:W_SauveDeb:" ":W_Temp[60,26]:W_SauveQte "R26(#11)":W_Temp[97,999]
					*W_Temp = W_Temp[1,15]:W_Fichier<9,i>[8,5]:W_Temp[21,27]:W_SauveDeb "R26(#11)":" ":W_Temp[60,26]:W_SauveQte "R26(#11)":W_Temp[97,999]
					*Fin Modification
*					W_Temp = W_Temp[1,47]:W_SauveDeb "R26(#11)":" ":W_Temp[60,26]:W_SauveQte "R26(#11)":W_Temp[97,999]
					ENR_TEMPO<DCOUNT(ENR_TEMPO,CHAR(254))> = W_Temp
					W_Debit = W_Debit + W_TabDyn<6>
					W_Quantite = W_Quantite + W_TabDyn<9>
				END
				* Crdit
				IF W_TabDyn<7> # "" THEN
					W_SauveCred = W_TabDyn<7> + ICONV(W_Temp[63,11],"MCN")
					IF W_TabDyn<9> = "" THEN
						W_TabDyn<9> = 0
					END
					IF W_Temp[86,11] # "           " THEN
						W_SauveQte = W_TabDyn<9> + ICONV(W_Temp[86,11],"MCN")
					END
					W_Temp = W_Temp[1,15]:W_Fichier<9,i>[8,5]:W_Temp[21,42]:W_SauveCred "R26(#11)":" ":W_Temp[75,11]:W_SauveQte "R26(#11)":W_Temp[97,999]
*					W_Temp = W_Temp[1,62]:W_SauveCred "R26(#11)":" ":W_Temp[75,11]:W_SauveQte "R26(#11)":W_Temp[97,999]
					ENR_TEMPO<DCOUNT(ENR_TEMPO,CHAR(254))> = W_Temp
					W_Credit = W_Credit + W_TabDyn<7>
					W_Quantite = W_Quantite + W_TabDyn<9>
				END
                
			END ELSE
            
				GOSUB 40

				ENR_TEMPO<-1> = W_Temp
                
			END
            
			W_SauvePiece = W_TabDyn<5>
			W_SauveJournal = W_Fichier<9,i>[4,2]
			W_SauveLib = W_TabDyn<4>
			W_SauveDate = W_TabDyn<2>
			W_SauveLigne = W_Fichier<9,i>[8,5]
			IF W_TabDyn<6> # "" THEN
				W_SauveMont = "DEBIT"
			END ELSE
				IF W_TabDyn<7> # "" THEN
					W_SauveMont = "CREDIT"
				END
			END
            
		END ELSE
        
			GOSUB 40

			ENR_TEMPO<-1> = W_Temp
		END
        
	END ELSE
    
		GOSUB 40

		ENR_TEMPO<-1> = W_Temp

	END

RETURN

********************************************************************************************
* mise en forme
40

	* date opration
	W_Temp = OCONV(W_TabDyn<2>,"D4/"):" "
	* journal
	IF W_Provisoire="N" THEN
		W_Temp = W_Temp:W_Fichier<9,i>[4,2]:"  "
	END ELSE
		W_Temp = W_Temp:W_Fichier<9,i>[4,2]:"P "
	END
	* ligne
	W_Temp = W_Temp:W_Fichier<9,i>[8,5]:" "
	* libell
	IF LEN(W_TabDyn<4>) > 25 THEN
		W_Temp = W_Temp:W_TabDyn<4>[1,25]:" "
	END ELSE
		W_Temp = W_Temp:W_TabDyn<4>:SPACE(26 - LEN(W_TabDyn<4>))
	END
	* dbit
	IF W_TabDyn<6> # "" THEN
		W_Temp = W_Temp:W_TabDyn<6> "R26(#11)":" "
		W_Debit = W_Debit + W_TabDyn<6>
	END ELSE
		W_Temp = W_Temp:SPACE(12)
	END
	* lettrage
	IF W_TabDyn<11> # "" THEN
		IF LEN(W_TabDyn<11>) = 1 THEN
			W_Temp = W_Temp:W_TabDyn<11>:"  "
		END ELSE
			W_Temp = W_Temp:W_TabDyn<11>:" "
		END
	END ELSE
		W_Temp = W_Temp:SPACE(3)
	END
	* crdit
	IF W_TabDyn<7> # "" THEN
		W_Temp = W_Temp:W_TabDyn<7> "R26(#11)":" "
		W_Credit = W_Credit + W_TabDyn<7>
	END ELSE
		W_Temp = W_Temp:SPACE(12)
	END
	* pice
	IF W_TabDyn<5> # "" THEN
		W_Temp = W_Temp:SPACE(10 - LEN(W_TabDyn<5>)):W_TabDyn<5>:SPACE(1)
	END ELSE
		W_Temp = W_Temp:SPACE(11)
	END
	* quantit
	IF W_TabDyn<9> # "" THEN
		W_Temp = W_Temp:W_TabDyn<9> "R26(#11)":" "
		W_Quantite = W_Quantite + W_TabDyn<9>
	END ELSE
		W_Temp = W_Temp:SPACE(12)
	END
	* chancier
	IF W_TabDyn<8> # "" THEN
		W_Temp = W_Temp:OCONV(W_TabDyn<8>,"D4/")
	END

RETURN
