**********************************************************
*  Edition du grand livre
*  Programme chaine  partir d'un projet VB
*  Vanessa
*  AVRIL 2000
**********************************************************

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "OUVERTURE ASSOCIATION" ;* en lecture
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO" ;* en lecture
OPEN "","BALANCEANAL" TO F.BALANCEANAL ELSE PRINT "OUVERTURE BALANCEANAL" ;* en lecture
OPEN "","BALANCEANALARCHIVE" TO F.BALANCEANALARCHIVE ELSE PRINT "OUVERTURE BALANCEANALARCHIVE" ;* en lecture
OPEN "","DETAILECRITUREGENE" TO F.DETAILECRITUREGENE ELSE PRINT "OUVERTURE DETAILECRITUREGENE" ;* en lecture
OPEN "","DETAILECRITUREGENEARCHIVE" TO F.DETAILECRITUREGENEARCHIVE ELSE PRINT "OUVERTURE DETAILECRITUREGENEARCHIVE" ;* en lecture
OPEN "","BALANCEANALTEMPO" TO F.BALANCEANALTEMPO ELSE PRINT "OUVERTURE BALANCEANALTEMPO" ;* en lecture
OPEN "","DETAILECRITUREGENETEMPO" TO F.DETAILECRITUREGENETEMPO ELSE PRINT "OUVERTURE DETAILECRITUREGENETEMPO" ;* en lecture
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE PRINT "OUVERTURE PARAMENTITECOMPTA" ;* en lecture
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE PRINT "OUVERTURE PLANCOMPTABLE" ;* en lecture
OPEN "","TABLES" TO F.TABLES ELSE PRINT "OUVERTURE TABLES" ;* en lecture
*********************************************************
* initialisation des variables
W_Requete=""
W_RequeteTempo=""
W_Ligne=0
W_SauveLigne=0
W_Page=0
W_SauveNumLigne = 0
W_SauveMont = ""
W_SauveDeb=0
W_SauveCred=0
W_TotGeneQte=0
W_TotGeneDebit=0
W_TotGeneCredit=0
W_TotGeneSolde=0
W_PageTotal="FAUX"

*********************************************************
* Recuperation des arguments
PROCREAD ARGUMENTS ELSE STOP
W_User=FIELD(ARGUMENTS," ",2)
W_PriseCpteBrouillard=FIELD(ARGUMENTS," ",3)
W_RupturePage=FIELD(ARGUMENTS," ",4)
W_Entite=FIELD(ARGUMENTS," ",5)
W_Exer=FIELD(ARGUMENTS," ",6)
W_DateDeb=FIELD(ARGUMENTS," ",7)
W_DateFin=FIELD(ARGUMENTS," ",8)
W_SectAnal=FIELD(ARGUMENTS," ",9)
*********************************************************
* PROGRAMME PRINCIPAL

   PRINTER ON

   READ ENR_TEMPO FROM F.TEMPO,"BALANCEANAL":W_User ELSE ENR_TEMPO=""
   W_Requete=""
   i=1
   LOOP 
      W_Field=FIELD(ENR_TEMPO,"|",i)
   WHILE W_Field # "" DO
      W_Requete<i>=W_Field
      i=i+1
   REPEAT

   IF W_PriseCpteBrouillard=1 THEN
      READ ENR_TEMPO FROM F.TEMPO,"BALANCEANALTEMPO":W_User ELSE ENR_TEMPO=""
      W_RequeteTempo=""
      i=1
      LOOP 
         W_Field=FIELD(ENR_TEMPO,"|",i)
      WHILE W_Field # "" DO
         W_RequeteTempo<i>=W_Field
         i=i+1
      REPEAT

      GOSUB 40
      GOSUB 10
   END ELSE
      GOSUB 40
      GOSUB 20
   END

   GOSUB 90

   PRINTER OFF
   PRINTER CLOSE

   EXECUTE 'VIDER-FICHIER TEMPO'

STOP
*****************************************************************************
*  Impression Detail Brouillard
10

   W_SauveCpte=""
   W_FinTableau="FAUX"
   W_TotQte=0
   W_TotDebit=0
   W_TotCredit=0
   W_TotSolde=0
   W_Premier="FAUX"
   W_SauveBis=""

   k=1
   W_CountReq=DCOUNT(W_Requete,CHAR(254))
   FOR l=1 TO W_CountReq
      W_Imprime="FAUX"
      LOOP
      UNTIL W_RequeteTempo<k>[6,10] > W_Requete<l>[6,10] OR W_RequeteTempo<k>=""
         IF W_RequeteTempo<k> # "" THEN
            IF W_RequeteTempo<k>[6,10] < W_Requete<l>[6,10] THEN
               GOSUB 60
               W_Imprime="VRAI"
               W_Total="VRAI"
               GOSUB 30
               W_FinTableau="VRAI"
               k=k+1
            END ELSE
               IF W_RequeteTempo<k>[1,15] = W_Requete<l>[1,15] THEN
                  GOSUB 70
                  W_Imprime="VRAI"
                  IF W_Requete<l>[1,15] # W_Requete<l+1>[1,15] THEN
                     PRINT "|         |   |     |                              |          |           |          |           |    |           |             |"
                     W_SauveLigne=W_SauveLigne+1
                     W_Ligne=W_Ligne+1
                     W_SauveBis=W_RequeteTempo<k>[1,15]
                     LOOP
                     WHILE W_RequeteTempo<k>[1,15] = W_SauveBis AND W_RequeteTempo<k> # ""
                        GOSUB 60
                        W_Imprime="VRAI"
                        W_SauveBis=W_RequeteTempo<k>[1,15]
                        k=k+1
                     REPEAT
                     W_Total="VRAI"
                     GOSUB 30
                     W_FinTableau="VRAI"
                  END
                  l=l+1
               END
            END
         END
      REPEAT
      IF W_RequeteTempo<k>[6,10] > W_Requete<l>[6,10] OR W_RequeteTempo<k>="" THEN
         IF l # W_CountReq + 1 THEN
            W_Imprime = "FAUX"
         END
      END
      IF W_Imprime="FAUX" THEN
         GOSUB 70
         IF W_Requete<l>[1,15] # W_Requete<l+1>[1,15] THEN
            W_Total="VRAI"
            GOSUB 30
            W_FinTableau="VRAI"
         END
      END
      IF l=W_CountReq AND W_RequeteTempo<k>#"" THEN
         LOOP
         UNTIL W_RequeteTempo<k>="" DO
            GOSUB 60
            W_Imprime="VRAI"
            W_Total="VRAI"
            GOSUB 30
            W_FinTableau="VRAI"
            k=k+1

         REPEAT
      END

   NEXT l

RETURN

*****************************************************************************
*  Impression Detail
20

   W_SauveCpte=""
   W_LignePage=42
   W_Premier="FAUX"
   W_Total="FAUX"
   W_TotQte=0
   W_TotDebit=0
   W_TotCredit=0
   W_TotSolde=0
   W_SauveNumLigne = 0
   W_SauveMont = ""
   W_Sauve = "FAUX"
   W_SauveDeb=0
   W_SauveCred=0

   W_Count=DCOUNT(W_Requete,CHAR(254))
   W_Temp=""
   FOR j = 1 TO W_Count
      W_Temp=""
      IF W_Exer="N-" THEN
      	READ ENR_BALANCEANAL FROM F.BALANCEANALARCHIVE,W_Requete<j,1> ELSE ENR_BALANCEANAL=""
      END ELSE
      	READ ENR_BALANCEANAL FROM F.BALANCEANAL,W_Requete<j,1> ELSE ENR_BALANCEANAL=""
      END
      W_CountDetail = DCOUNT(ENR_BALANCEANAL<9>,CHAR(253))

      FOR i = 1 TO W_CountDetail
         IF W_DateDeb <= ENR_BALANCEANAL<8,i> AND W_DateFin >= ENR_BALANCEANAL<8,i> THEN
      
            IF W_Exer="N-" THEN
            	READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENEARCHIVE,ENR_BALANCEANAL<9,i> ELSE ENR_DETAILECRITUREGENE=""
      	    END ELSE
            	READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,ENR_BALANCEANAL<9,i> ELSE ENR_DETAILECRITUREGENE=""
            END

            IF W_Ligne > W_LignePage THEN
               GOSUB 30
               PAGE
               GOSUB 40
               W_Ligne=W_Ligne+1
               W_SauveLigne=W_SauveLigne+1
            END
            IF W_SauveCpte # ENR_DETAILECRITUREGENE<3> THEN
               IF W_Premier="VRAI" THEN
                  W_Total="VRAI"
                  GOSUB 30
               END
               IF W_RupturePage=1 AND W_Premier="VRAI" THEN
                  PAGE
                  GOSUB 40 
               END
               W_SauveCpte=ENR_DETAILECRITUREGENE<3>
               PRINT "|                                                                                                                               |"
               READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_SauveCpte ELSE ENR_PLANCOMPTABLE=""
               PRINT "|":SPACE(2):W_SauveCpte[4,10]:SPACE(3):ENR_PLANCOMPTABLE<1>:SPACE(112-LEN(ENR_PLANCOMPTABLE<1>)):"|"
               PRINT "|                                                                                                                               |"
               W_Ligne=W_Ligne+3
               W_SauveLigne=W_SauveLigne+3
               GOSUB 50
               W_Premier="VRAI"
            END	   

            * date
            W_Temp="|":OCONV(ENR_DETAILECRITUREGENE<2>,"D2/"):" |" 
            * journal
	    IF ENR_BALANCEANAL<9,i>[6,1] = "N" THEN
            	W_Temp=W_Temp:ENR_BALANCEANAL<9,i>[4,2]:" |"
   	    END ELSE
            	W_Temp=W_Temp:ENR_BALANCEANAL<9,i>[4,2]:"P|"
    	    END
            * ligne
            W_Temp=W_Temp:ENR_BALANCEANAL<9,i>[8,5]:"|"
            * libelle
            IF LEN(ENR_DETAILECRITUREGENE<4>) > 30 THEN
               W_Temp=W_Temp:ENR_DETAILECRITUREGENE<4>[1,30]:"|"
            END ELSE
               W_Temp=W_Temp:ENR_DETAILECRITUREGENE<4>:SPACE(30-LEN(ENR_DETAILECRITUREGENE<4>)):"|"
            END
            * piece
            IF ENR_DETAILECRITUREGENE<5> # "" THEN
               W_Temp=W_Temp:SPACE(10-LEN(ENR_DETAILECRITUREGENE<5>)):ENR_DETAILECRITUREGENE<5>:"|"
            END ELSE
               W_Temp=W_Temp:SPACE(10):"|"
            END
            * quantite
            IF ENR_DETAILECRITUREGENE<9> # "" THEN
               W_TotQte=W_TotQte+ENR_DETAILECRITUREGENE<9>
               ENR_DETAILECRITUREGENE<9>=ENR_DETAILECRITUREGENE<9> "R26(#11)"
               W_Temp=W_Temp:ENR_DETAILECRITUREGENE<9>:"|"
            END ELSE
               W_Temp=W_Temp:SPACE(11):"|"
            END
            * section analytique
            IF ENR_DETAILECRITUREGENE<10> # "" THEN
               W_Temp=W_Temp:SPACE(4):ENR_DETAILECRITUREGENE<10>:SPACE(3):"|"
            END ELSE
               W_Temp=W_Temp:SPACE(10):"|"
            END
            * dbit
            IF ENR_DETAILECRITUREGENE<6> # "" THEN
               W_TotDebit=W_TotDebit+ENR_DETAILECRITUREGENE<6>
               ENR_DETAILECRITUREGENE<6>=ENR_DETAILECRITUREGENE<6> "R26(#11)"
               W_Temp=W_Temp:ENR_DETAILECRITUREGENE<6>:"| "
            END ELSE
               W_Temp=W_Temp:SPACE(11):"| "
            END
            * lettrage
            IF ENR_DETAILECRITUREGENE<11> # "" THEN
               IF LEN(ENR_DETAILECRITUREGENE<11>) = 1 THEN
                  W_Temp=W_Temp:ENR_DETAILECRITUREGENE<11>:"  |"
               END ELSE
                  W_Temp=W_Temp:ENR_DETAILECRITUREGENE<11>:" |"
               END
            END ELSE
               W_Temp=W_Temp:SPACE(3):"|"
            END
            * crdit
            IF ENR_DETAILECRITUREGENE<7> # "" THEN
               W_TotCredit=W_TotCredit+ENR_DETAILECRITUREGENE<7>
               ENR_DETAILECRITUREGENE<7>=ENR_DETAILECRITUREGENE<7> "R26(#11)"
               W_Temp=W_Temp:ENR_DETAILECRITUREGENE<7>:"|"
            END ELSE
               W_Temp=W_Temp:SPACE(11):"|"
            END
            * solde
            W_TotSolde=W_TotDebit-W_TotCredit
            W_Solde=W_TotSolde "R26(#11)"
            W_Temp=W_Temp:W_Solde:"  |"
            PRINT W_Temp
            W_Ligne=W_Ligne+1
            W_SauveLigne=W_SauveLigne+1

         END
      NEXT i

   NEXT j
   W_Total="VRAI"
   GOSUB 30

RETURN

*****************************************************************************
*  Imprime fin tableau
30

   IF W_Total="VRAI" THEN

      W_TotGeneQte=W_TotGeneQte+W_TotQte
      W_TotGeneDebit=W_TotGeneDebit+W_TotDebit
      W_TotGeneCredit=W_TotGeneCredit+W_TotCredit
      W_TotGeneSolde=W_TotGeneSolde+W_TotSolde
      PRINT "|         |   |     |                              |          |           |          |           |    |           |             |"
      W_TotQte=W_TotQte "R26(#11)"
      W_TotDebit=W_TotDebit "R26(#11)"
      W_TotCredit=W_TotCredit "R26(#11)"
      W_TotSolde=W_TotSolde "R26(#11)"
      PRINT "|         |   |     |TOTAL COMPTE                  |          |":W_TotQte:"|          |":W_TotDebit:"|    |":W_TotCredit:"|":W_TotSolde:"  |"
      PRINT "|         |   |     |                              |          |           |          |           |    |           |             |"
      PRINT "*********************************************************************************************************************************"
      W_Total="FAUX"
      W_TotQte=0
      W_TotDebit=0
      W_TotCredit=0
      W_TotSolde=0
      W_Ligne=W_Ligne+4
   END ELSE
      IF W_Total="FAUX" THEN
         PRINT "|         |   |     |                              |          |           |          |           |    |           |             |"
         PRINT "|---------|---|-----|------------------------------|----------|-----------|----------|-----------|----|-----------|-------------|"
   	 W_Ligne=W_Ligne+2
      END
   END

   W_SauveLigne=0

RETURN

*****************************************************************************
*  Entete page
40

   W_Ligne=0
   W_Page = W_Page+1
   PRINT "Date : ":OCONV(DATE(),"D4/"):SPACE(105):"Page : ":W_Page
   PRINT " "
   PRINT SPACE(50):"GRAND LIVRE ANALYTIQUE"
   PRINT " "
   READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_Entite ELSE ENR_ASSOCIATION=""
   PRINT "Entite juridique : ":ENR_ASSOCIATION<1>
   W_Adresse=""
   IF ENR_ASSOCIATION<3> # "" THEN
      W_Adresse=ENR_ASSOCIATION<3>:" "
   END
   IF ENR_ASSOCIATION<4> # "" THEN
      W_Adresse=W_Adresse:ENR_ASSOCIATION<4>:" "
   END
   IF ENR_ASSOCIATION<5> # "" THEN
      W_Adresse=W_Adresse:ENR_ASSOCIATION<5>:" "
   END
   IF ENR_ASSOCIATION<6> # "" THEN
      W_Adresse=W_Adresse:ENR_ASSOCIATION<6>:" "
   END
   IF W_Adresse # "" THEN
      IF W_SectAnal # 0 THEN
         READ ENR_SECTANAL FROM F.TABLES,"SECTANAL" ELSE ENR_SECTANAL=""
         m=1
         LOOP
         UNTIL W_SectAnal=ENR_SECTANAL<2,m> OR ENR_SECTANAL<2,m>=""
            m=m+1
         REPEAT
         PRINT SPACE(19):W_Adresse:SPACE(50-LEN(W_Adresse)):"Section analytique : ":W_SectAnal:" ":ENR_SECTANAL<3,m>
      END ELSE
         PRINT SPACE(19):W_Adresse
      END
   END
   IF ENR_ASSOCIATION<7> # "" THEN
      IF W_SectAnal # 0  AND W_Adresse = "" THEN
         READ ENR_SECTANAL FROM F.TABLES,"SECTANAL" ELSE ENR_SECTANAL=""
         m=1
         LOOP
         UNTIL W_SectAnal=ENR_SECTANAL<2,m> OR ENR_SECTANAL<2,m>=""
            m=m+1
         REPEAT
         PRINT SPACE(19):ENR_ASSOCIATION<7>:SPACE(50-LEN(ENR_ASSOCIATION<7>)):"Section analytique : ":W_SectAnal:" ":ENR_SECTANAL<3,m>
      END ELSE
      	 PRINT SPACE(19):ENR_ASSOCIATION<7>
      END
   END
   PRINT SPACE(19):ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>
   PRINT " "
   READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_Entite ELSE ENR_PARAMENTITECOMPTA=""
   IF W_Exer="N-" THEN
      W_ExerTemp="N - 1" 
   END ELSE
      IF W_Exer="N0" THEN
         W_ExerTemp="N" 
      END ELSE
         W_ExerTemp="N + 1" 
      END
   END
   PRINT "Exercice         : ":W_ExerTemp:SPACE(10):"Date debut : ":OCONV(W_DateDeb,"D4/"):SPACE(5):"Date fin : ":OCONV(W_DateFin,"D4/")
   PRINT " "
   IF W_PriseCpteBrouillard=1 THEN
      PRINT "PRISE EN COMPTE DES BROUILLARDS DE SAISIE"
   END ELSE
      PRINT " "
   END

   GOSUB 80

RETURN

*****************************************************************************
*  Imprime tableau compte
50

   PRINT "|---------|---|-----|------------------------------|----------|-----------|----------|-----------|----|-----------|-------------|"
   PRINT "|         |   |     |                              |          |           |          |           |    |           |             |"
   W_SauveLigne=1
   W_Ligne=W_Ligne+2

RETURN

*****************************************************************************
*  Imprime Tempo
60

   W_Total="FAUX"
   W_LignePage=42

   READ ENR_BALANCEANALTEMPO FROM F.BALANCEANALTEMPO,W_RequeteTempo<k,1> ELSE ENR_BALANCEANALTEMPO=""
   W_CountDetail = DCOUNT(ENR_BALANCEANALTEMPO<9>,CHAR(253))
   FOR i = 1 TO W_CountDetail

      IF W_DateDeb <= ENR_BALANCEANALTEMPO<8,i> AND W_DateFin >= ENR_BALANCEANALTEMPO<8,i> THEN

         READ ENR_DETAILECRITUREGENETEMPO FROM F.DETAILECRITUREGENETEMPO,ENR_BALANCEANALTEMPO<9,i> ELSE ENR_DETAILECRITUREGENETEMPO=""
         IF W_Ligne > W_LignePage THEN
            IF W_FinTableau="FAUX" THEN
               GOSUB 30
            END
            PAGE
            GOSUB 40
         END
         IF W_SauveCpte # ENR_DETAILECRITUREGENETEMPO<3> THEN
*            IF W_Premier="VRAI" THEN
*               W_Total="VRAI"
*               GOSUB 30
*            END
            IF W_RupturePage=1 AND W_Premier="VRAI" THEN
               PAGE
               GOSUB 40
            END
            W_SauveCpte=ENR_DETAILECRITUREGENETEMPO<3>
            PRINT "|                                                                                                                               |"
            READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_SauveCpte ELSE ENR_PLANCOMPTABLE=""
            PRINT "|":SPACE(2):W_SauveCpte[4,10]:SPACE(3):ENR_PLANCOMPTABLE<1>:SPACE(112-LEN(ENR_PLANCOMPTABLE<1>)):"|"
            PRINT "|                                                                                                                               |"
            W_Ligne=W_Ligne+3
            W_SauveLigne=W_SauveLigne+3
            GOSUB 50
         END

         * date
         W_Temp="|":OCONV(ENR_DETAILECRITUREGENETEMPO<2>,"D2/"):" |" 
         * journal
	 IF ENR_BALANCEANALTEMPO<9,i>[6,1] = "N" THEN
            W_Temp=W_Temp:ENR_BALANCEANALTEMPO<9,i>[4,2]:" |"
   	 END ELSE
            W_Temp=W_Temp:ENR_BALANCEANALTEMPO<9,i>[4,2]:"P|"
         END
         * ligne
         W_Temp=W_Temp:ENR_BALANCEANALTEMPO<9,i>[8,5]:"|"
         * libelle
         IF LEN(ENR_DETAILECRITUREGENETEMPO<4>) > 30 THEN
            W_Temp=W_Temp:ENR_DETAILECRITUREGENETEMPO<4>[1,30]:"|" 
         END ELSE
            W_Temp=W_Temp:ENR_DETAILECRITUREGENETEMPO<4>:SPACE(30-LEN(ENR_DETAILECRITUREGENETEMPO<4>)):"|"
         END
         * piece
         IF ENR_DETAILECRITUREGENETEMPO<5> # "" THEN
            W_Temp=W_Temp:SPACE(10-LEN(ENR_DETAILECRITUREGENETEMPO<5>)):ENR_DETAILECRITUREGENETEMPO<5>:"|"
         END ELSE
            W_Temp=W_Temp:SPACE(10):"|"
         END 
         * quantite
         IF ENR_DETAILECRITUREGENETEMPO<9> # "" THEN
            W_TotQte=W_TotQte+ENR_DETAILECRITUREGENETEMPO<9>
            ENR_DETAILECRITUREGENETEMPO<9>=ENR_DETAILECRITUREGENETEMPO<9> "R26(#11)"
            W_Temp=W_Temp:ENR_DETAILECRITUREGENETEMPO<9>:"|"
         END ELSE
            W_Temp=W_Temp:SPACE(11):"|" 
         END
         * section analytique
         IF ENR_DETAILECRITUREGENETEMPO<10> # "" THEN
            W_Temp=W_Temp:SPACE(4):ENR_DETAILECRITUREGENETEMPO<10>:SPACE(3):"|"
         END ELSE
            W_Temp=W_Temp:SPACE(10):"|"
         END
         * dbit
         IF ENR_DETAILECRITUREGENETEMPO<6> # "" THEN
            W_TotDebit=W_TotDebit+ENR_DETAILECRITUREGENETEMPO<6>
            ENR_DETAILECRITUREGENETEMPO<6>=ENR_DETAILECRITUREGENETEMPO<6> "R26(#11)"
            W_Temp=W_Temp:ENR_DETAILECRITUREGENETEMPO<6>:"| "
         END ELSE
            W_Temp=W_Temp:SPACE(11):"| "
         END 
         * lettrage
         IF ENR_DETAILECRITUREGENETEMPO<11> # "" THEN
            IF LEN(ENR_DETAILECRITUREGENETEMPO<11>) = 1 THEN
               W_Temp=W_Temp:ENR_DETAILECRITUREGENETEMPO<11>:"  |"
            END ELSE
               W_Temp=W_Temp:ENR_DETAILECRITUREGENETEMPO<11>:" |"
            END
         END ELSE
            W_Temp=W_Temp:SPACE(3):"|"
         END
         * crdit
         IF ENR_DETAILECRITUREGENETEMPO<7> # "" THEN
            W_TotCredit=W_TotCredit+ENR_DETAILECRITUREGENETEMPO<7>
            ENR_DETAILECRITUREGENETEMPO<7>=ENR_DETAILECRITUREGENETEMPO<7> "R26(#11)"
            W_Temp=W_Temp:ENR_DETAILECRITUREGENETEMPO<7>:"|"
         END ELSE
            W_Temp=W_Temp:SPACE(11):"|"
         END
         * solde
         W_TotSolde=W_TotDebit-W_TotCredit
         W_Solde=W_TotSolde "R26(#11)"
         W_Temp=W_Temp:W_Solde:"  |"
         PRINT W_Temp
         W_Ligne=W_Ligne+1
         W_SauveLigne=W_SauveLigne+1
         W_FinTableau="FAUX"
         W_Premier="VRAI"
      END
   NEXT i

RETURN

*****************************************************************************
*  Imprime Detail
70

   W_Total="FAUX"
   W_LignePage=42


   IF W_Exer="N-" THEN
   	READ ENR_BALANCEANAL FROM F.BALANCEANALARCHIVE,W_Requete<l,1> ELSE ENR_BALANCEANAL=""
   END ELSE
   	READ ENR_BALANCEANAL FROM F.BALANCEANAL,W_Requete<l,1> ELSE ENR_BALANCEANAL=""
   END
   W_CountDetail = DCOUNT(ENR_BALANCEANAL<9>,CHAR(253))
   FOR i = 1 TO W_CountDetail
      IF W_DateDeb <= ENR_BALANCEANAL<8,i> AND W_DateFin >= ENR_BALANCEANAL<8,i> THEN
         IF W_Exer="N-" THEN
         	READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENEARCHIVE,ENR_BALANCEANAL<9,i> ELSE ENR_DETAILECRITUREGENE=""
         END ELSE
         	READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,ENR_BALANCEANAL<9,i> ELSE ENR_DETAILECRITUREGENE=""
         END
         IF W_Ligne > W_LignePage THEN
            IF W_FinTableau="FAUX" THEN
               GOSUB 30
            END
            PAGE
            GOSUB 40
         END
         IF W_SauveCpte # ENR_DETAILECRITUREGENE<3> THEN
*            IF W_RupturePage=0 AND W_Premier="VRAI" THEN
*               W_Total="VRAI"
*               GOSUB 30
*            END
            IF W_RupturePage=1 AND W_Premier="VRAI" THEN
               PAGE
               GOSUB 40
            END
            W_SauveCpte=ENR_DETAILECRITUREGENE<3>
            PRINT "|                                                                                                                               |"
            READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,W_SauveCpte ELSE ENR_PLANCOMPTABLE=""
            PRINT "|":SPACE(2):W_SauveCpte[4,10]:SPACE(3):ENR_PLANCOMPTABLE<1>:SPACE(112-LEN(ENR_PLANCOMPTABLE<1>)):"|"
            PRINT "|                                                                                                                               |"
            W_Ligne=W_Ligne+3
            W_SauveLigne=W_SauveLigne+3
            GOSUB 50
         END

         * date
         W_Temp="|":OCONV(ENR_DETAILECRITUREGENE<2>,"D2/"):" |" 
         * journal
	 IF ENR_BALANCEANAL<9,i>[6,1] = "N" THEN
            	W_Temp=W_Temp:ENR_BALANCEANAL<9,i>[4,2]:" |"
   	 END ELSE
         	W_Temp=W_Temp:ENR_BALANCEANAL<9,i>[4,2]:"P|"
    	 END
         * ligne
         W_Temp=W_Temp:ENR_BALANCEANAL<9,i>[8,5]:"|"
         * libelle
         IF LEN(ENR_DETAILECRITUREGENE<4>) > 30 THEN
            W_Temp=W_Temp:ENR_DETAILECRITUREGENE<4>[1,30]:"|" 
         END ELSE
            W_Temp=W_Temp:ENR_DETAILECRITUREGENE<4>:SPACE(30-LEN(ENR_DETAILECRITUREGENE<4>)):"|"
         END
         * piece
         IF ENR_DETAILECRITUREGENE<5> # "" THEN
            W_Temp=W_Temp:SPACE(10-LEN(ENR_DETAILECRITUREGENE<5>)):ENR_DETAILECRITUREGENE<5>:"|"
         END ELSE
            W_Temp=W_Temp:SPACE(10):"|"
         END
         * quantite
         IF ENR_DETAILECRITUREGENE<9> # "" THEN
            W_TotQte=W_TotQte+ENR_DETAILECRITUREGENE<9>
            ENR_DETAILECRITUREGENE<9>=ENR_DETAILECRITUREGENE<9> "R26(#11)"
            W_Temp=W_Temp:ENR_DETAILECRITUREGENE<9>:"|"
         END ELSE
            W_Temp=W_Temp:SPACE(11):"|" 
         END
         * section analytique
         IF ENR_DETAILECRITUREGENE<10> # "" THEN
            W_Temp=W_Temp:SPACE(4):ENR_DETAILECRITUREGENE<10>:SPACE(3):"|"
         END ELSE
            W_Temp=W_Temp:SPACE(10):"|"
         END
         * dbit
         IF ENR_DETAILECRITUREGENE<6> # "" THEN
            W_TotDebit=W_TotDebit+ENR_DETAILECRITUREGENE<6>
            ENR_DETAILECRITUREGENE<6>=ENR_DETAILECRITUREGENE<6> "R26(#11)"
            W_Temp=W_Temp:ENR_DETAILECRITUREGENE<6>:"| "
         END ELSE
            W_Temp=W_Temp:SPACE(11):"| "
         END 
         * lettrage
         IF ENR_DETAILECRITUREGENE<11> # "" THEN
            IF LEN(ENR_DETAILECRITUREGENE<11>) = 1 THEN
               W_Temp=W_Temp:ENR_DETAILECRITUREGENE<11>:"  |"
            END ELSE
               W_Temp=W_Temp:ENR_DETAILECRITUREGENE<11>:" |"
            END
         END ELSE
            W_Temp=W_Temp:SPACE(3):"|"
         END
         * crdit
         IF ENR_DETAILECRITUREGENE<7> # "" THEN
            W_TotCredit=W_TotCredit+ENR_DETAILECRITUREGENE<7>
            ENR_DETAILECRITUREGENE<7>=ENR_DETAILECRITUREGENE<7> "R26(#11)"
            W_Temp=W_Temp:ENR_DETAILECRITUREGENE<7>:"|"
         END ELSE
            W_Temp=W_Temp:SPACE(11):"|"
         END 
         * solde
         W_TotSolde=W_TotDebit-W_TotCredit
         W_Solde=W_TotSolde "R26(#11)"
         W_Temp=W_Temp:W_Solde:"  |"
         PRINT W_Temp
         W_Ligne=W_Ligne+1
         W_SauveLigne=W_SauveLigne+1 
         W_FinTableau="FAUX"
         W_Premier="VRAI"
      END

   NEXT i

RETURN

*****************************************************************************
*  Imprime Entete tableau
80

   IF W_PageTotal="FAUX" THEN

      PRINT "|---------|---|-----|------------------------------|----------|-----------|----------|-----------|----|-----------|-------------|"
      PRINT "|  DATE   |JO |LIGNE|            LIBELLE           |   PIECE  | QUANTITE  |SECT.ANAL.|  DEBIT    |LET.|  CREDIT   |   SOLDE     |"
      PRINT "|         |   |     |                              |          |           |          |           |    |           |             |"
      PRINT "|---------|---|-----|------------------------------|----------|-----------|----------|-----------|----|-----------|-------------|"
   END ELSE
      PRINT "|-------------------------------------------------------------|-----------|----------|-----------|----|-----------|-------------|" 
      PRINT "|                                                             | QUANTITE  |          |  DEBIT    |    |  CREDIT   |   SOLDE     |"
      PRINT "|                                                             |           |          |           |    |           |             |"
      PRINT "|-------------------------------------------------------------|-----------|----------|-----------|----|-----------|-------------|"
   END

RETURN

*****************************************************************************
*  Imprime Page Total
90

   W_PageTotal="VRAI"
   PAGE
   GOSUB 40

   PRINT "|                                                             |           |          |           |    |           |             |"
   W_TotGeneQte=W_TotGeneQte "R26(#11)"
   W_TotGeneDebit=W_TotGeneDebit "R26(#11)"
   W_TotGeneCredit=W_TotGeneCredit "R26(#11)"
   W_TotGeneSolde=W_TotGeneSolde "R26(#11)"
   PRINT "|     TOTAL DES MOUVEMENTS EDITES                             |":W_TotGeneQte:"|          |":W_TotGeneDebit:"|    |":W_TotGeneCredit:"|":W_TotGeneSolde:"  |"
   PRINT "|                                                             |           |          |           |    |           |             |"
   PRINT "|-------------------------------------------------------------|-----------|----------|-----------|----|-----------|-------------|"

RETURN


