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

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE PRINT "OUVERTURE ACTIVITES" ;* en lecture
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE PRINT "OUVERTURE ACTIVITESAIDE" ;* en lecture
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "OUVERTURE ASSOCIATION" ;* en lecture
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO" ;* en lecture
OPEN "","BALANCEAUX" TO F.BALANCEAUX ELSE PRINT "OUVERTURE BALANCEAUX" ;* en lecture
OPEN "","BALANCEAUXARCHIVE" TO F.BALANCEAUXARCHIVE ELSE PRINT "OUVERTURE BALANCEAUXARCHIVE" ;* en lecture
OPEN "","DETAILECRITUREAUX" TO F.DETAILECRITUREAUX ELSE PRINT "OUVERTURE DETAILECRITUREAUX" ;* en lecture
OPEN "","DETAILECRITUREAUXARCHIVE" TO F.DETAILECRITUREAUXARCHIVE ELSE PRINT "OUVERTURE DETAILECRITUREAUXARCHIVE" ;* 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 "","CIVILAIDE" TO F.CIVILAIDE ELSE PRINT "OUVERTURE CIVILAIDE" ;* en lecture
OPEN "","SECTEUR" TO F.SECTEUR ELSE PRINT "OUVERTURE SECTEUR" ;* en lecture
OPEN "","RESPONSABLE" TO F.RESPONSABLE ELSE PRINT "OUVERTURE RESPONSABLE" ;* en lecture
OPEN "","TABLES" TO F.TABLES ELSE PRINT "OUVERTURE TABLES" ;* en lecture
*********************************************************
* initialisation des variables
W_Requete=""
W_Ligne=0
W_SauveLigne=0
W_Page=0
W_SauveSect=""
W_SauveResp=""
W_SauveCommune=""
W_TotGeneQte=0
W_TotGeneDebit=0
W_TotGeneCredit=0
W_TotGeneSolde=0
W_PageTotal="FAUX"
W_SauveSolde=0
W_ImprimeTotal="FAUX"
W_ImprimePas="FAUX"
W_PageCpte = 1
ENR_CIVILANC=""
W_TotGeneDebitDetail = 0
W_TotGeneCreditDetail = 0
W_TotGeneSoldeDetail = 0
W_TotGeneQteDetail = 0

*********************************************************
* Recuperation des arguments
PROCREAD ARGUMENTS ELSE STOP
W_User=FIELD(ARGUMENTS," ",2)
W_EcrNonLettre=FIELD(ARGUMENTS," ",3)
W_RupturePage=FIELD(ARGUMENTS," ",4)
W_Entite=FIELD(ARGUMENTS," ",5)
W_Exer=FIELD(ARGUMENTS," ",6)
W_CumulAnt=FIELD(ARGUMENTS," ",7)
W_DateDeb=FIELD(ARGUMENTS," ",8)
W_DateFin=FIELD(ARGUMENTS," ",9)
W_Tri=FIELD(ARGUMENTS," ",10)
W_SERVICE=FIELD(ARGUMENTS," ",11)
*********************************************************
* PROGRAMME PRINCIPAL

   PRINTER ON
*EXECUTE 'COMO ON GRDLIVREAUX'
   W_CleTempo="BALANCEAUX":W_User

   READ ENR_TEMPO FROM F.TEMPO,W_CleTempo 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
   j=1
   GOSUB 10
   GOSUB 30

   GOSUB 60

   DELETE F.TEMPO,W_CleTempo
*EXECUTE 'COMO OFF'
   PRINTER OFF
   PRINTER CLOSE

STOP

*****************************************************************************
*  Entete page
10

   W_Ligne=0
   W_Page = W_Page+1
   PRINT "Date : ":OCONV(DATE(),"D4/"):SPACE(105):"Page : ":W_Page
   PRINT " "
   PRINT SPACE(50):"GRAND LIVRE AUXILIAIRE"
   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
      PRINT SPACE(19):W_Adresse
   END
   IF ENR_ASSOCIATION<7> # "" THEN
      PRINT SPACE(19):ENR_ASSOCIATION<7>
   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/")

   IF W_SERVICE # "" THEN
      PRINT " "
      READ ENR_TABLES FROM F.TABLES,"SERVICES" ELSE ENR_TABLES=""
      
      Ind=1
      LOOP 
      UNTIL ENR_TABLES<2,Ind> = W_SERVICE OR ENR_TABLES<2,Ind> = "" DO
         Ind=Ind+1
      REPEAT

      PRINT "Service          : ":ENR_TABLES<3,Ind>
   END

   PRINT " "

   IF W_PageTotal="FAUX" THEN
      IF W_Tri = "SECT" THEN
         READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Requete<j,1>[6,5] ELSE ENR_CIVILAIDE=""
         READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDE<40>[1,3] ELSE ENR_SECTEUR=""
         PRINT "Secteur          : ":ENR_CIVILAIDE<40>[1,3]:" ":ENR_SECTEUR<1>
         W_SauveSect=ENR_CIVILAIDE<40>[1,3]
      END ELSE
         IF W_Tri = "RESP" THEN
            READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Requete<j,1>[6,5] ELSE ENR_CIVILAIDE=""
            READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_CIVILAIDE<39> ELSE ENR_RESPONSABLE=""
            PRINT "Responsable      : ":ENR_CIVILAIDE<39>:" ":ENR_RESPONSABLE<1>
            W_SauveResp=ENR_CIVILAIDE<39>
          END ELSE
            IF W_Tri = "COMMUNE" THEN
               READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Requete<j,1>[6,5] ELSE ENR_CIVILAIDE=""
               PRINT "Commune          : ":ENR_CIVILAIDE<11>
               W_SauveCommune=ENR_CIVILAIDE<11>
            END
         END
      END
      PRINT " "
   END
   
   GOSUB 20

RETURN

*****************************************************************************
*  Imprime Entete tableau
20

   IF W_PageTotal="FAUX" THEN

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

RETURN

*****************************************************************************
*  Impression Detail
30

   W_SauveCpte=""
   W_LignePage=42
   W_Premier="FAUX"
   W_Total="FAUX"
   W_TotQte=0
   W_TotDebit=0
   W_TotCredit=0
   W_TotSolde=0
   W_Rupture="FAUX"

   W_Count=DCOUNT(W_Requete,CHAR(254))
   W_Temp=""

   FOR j = 1 TO W_Count
      W_Temp=""

      IF W_Exer="N-" THEN
         READ ENR_BALANCEAUX FROM F.BALANCEAUXARCHIVE,W_Requete<j,1> ELSE ENR_BALANCEAUX=""
      END ELSE
         READ ENR_BALANCEAUX FROM F.BALANCEAUX,W_Requete<j,1> ELSE ENR_BALANCEAUX=""
      END
      W_CountDetail = DCOUNT(ENR_BALANCEAUX<9>,CHAR(253))
      W_Rupture="FAUX"

      READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_Requete<j,1>[6,5] ELSE ENR_CIVILAIDE=""

	PASBON = "FAUX"

   	IF W_SERVICE # "" THEN
		GOSUB 80
    	END

IF PASBON = "FAUX" THEN

      IF (W_Tri="SECT" AND W_SauveSect # ENR_CIVILAIDE<40>[1,3]) OR (W_Tri="RESP" AND W_SauveResp # ENR_CIVILAIDE<39>) OR (W_Tri="COMMUNE" AND W_SauveCommune # ENR_CIVILAIDE<11>) THEN
         W_Total="VRAI"
         GOSUB 40
         PAGE
         GOSUB 70
         W_Rupture="VRAI"
         PAGE
         GOSUB 10
      END

      FOR i = 1 TO W_CountDetail
         IF W_CumulAnt = 0 AND W_DateDeb <= ENR_BALANCEAUX<8,i> AND W_DateFin >= ENR_BALANCEAUX<8,i> THEN

            IF W_Exer="N-" THEN
               READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUXARCHIVE,ENR_BALANCEAUX<9,i> ELSE ENR_DETAILECRITUREAUX=""
            END ELSE
               READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,ENR_BALANCEAUX<9,i> ELSE ENR_DETAILECRITUREAUX=""
            END
            IF W_EcrNonLettre=1 THEN
               IF (ENR_DETAILECRITUREAUX<11> = "") OR (W_Exer # "N1" AND ENR_DETAILECRITUREAUX<11>[2,1] = "1") THEN
                  IF W_Ligne > W_LignePage THEN
                     GOSUB 40
                     PAGE
                     GOSUB 10             
                     IF W_ImprimeTotal = "FAUX" THEN
                        W_PageCpte = W_PageCpte + 1
                        PRINT "|                                                                                                                               |"
                        READ ENR_CIVILANC FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILANC=""
			Tab=ENR_CIVILANC
			GOSUB 90
                        PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(105-LEN(W_AdresseAide)):"Page : ":W_PageCpte:SPACE(5-LEN(W_PageCpte)):"|"
                        PRINT "|                                                                                                                               |"
                        W_Ligne=W_Ligne+3
                        W_SauveLigne=W_SauveLigne+3
                        GOSUB 50
   		     END

                  END
                  IF W_SauveCpte # ENR_DETAILECRITUREAUX<3> THEN
                     IF W_Premier="VRAI" AND W_Rupture="FAUX" THEN
                        W_Total="VRAI"
                        GOSUB 40
                     END
                     IF (W_RupturePage=1 AND W_Premier="VRAI") OR (W_Ligne > W_LignePage) THEN
                        PAGE
                        GOSUB 10 
                     END
                     W_SauveCpte=ENR_DETAILECRITUREAUX<3>
                     PRINT "|                                                                                                                               |"
                     READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILAIDE=""
		     Tab=ENR_CIVILAIDE
		     GOSUB 90
                     PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(117-LEN(W_AdresseAide)):"|"
                     PRINT "|                                                                                                                               |"
                     W_Ligne=W_Ligne+3
                     W_SauveLigne=W_SauveLigne+3
                     W_PageCpte = 1
                     GOSUB 50
                     W_Premier="VRAI"
                  END

                  * date
                  W_Temp="|":OCONV(ENR_DETAILECRITUREAUX<2>,"D2/"):" |"
                  * journal
		  IF ENR_BALANCEAUX<9,i>[6,1] = "N" THEN
                  	W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:" |"
		  END ELSE
	                W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:"P|"
		  END
                  * ligne
                  W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[8,5]:"|"
                  * libelle
                  IF LEN(ENR_DETAILECRITUREAUX<4>) > 30 THEN
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>[1,30]:"|"
                  END ELSE
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>:SPACE(30-LEN(ENR_DETAILECRITUREAUX<4>)):"|"
                  END
                  * piece
                  IF ENR_DETAILECRITUREAUX<5> # "" THEN
                     W_Temp=W_Temp:SPACE(10-LEN(ENR_DETAILECRITUREAUX<5>)):ENR_DETAILECRITUREAUX<5>:"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(10):"|"
                  END
                  * quantite
                  IF ENR_DETAILECRITUREAUX<9> # "" THEN
                     W_TotQte=W_TotQte+ENR_DETAILECRITUREAUX<9>
                     ENR_DETAILECRITUREAUX<9>=ENR_DETAILECRITUREAUX<9> "R26(#11)"
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<9>:"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(11):"|"
                  END
                  * chance
                  IF ENR_DETAILECRITUREAUX<8> # "" THEN
                     W_Temp=W_Temp:OCONV(ENR_DETAILECRITUREAUX<8>,"D4/"):"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(10):"|"
                  END
                  * dbit
                  IF ENR_DETAILECRITUREAUX<6> # "" THEN
                     W_TotDebit=W_TotDebit+ENR_DETAILECRITUREAUX<6>
                     ENR_DETAILECRITUREAUX<6>=ENR_DETAILECRITUREAUX<6> "R26(#11)"
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<6>:"| "
                  END ELSE
                     W_Temp=W_Temp:SPACE(11):"| "
                  END
                  * lettrage
                  IF ENR_DETAILECRITUREAUX<11> # "" THEN
                     IF LEN(ENR_DETAILECRITUREAUX<11>) = 1 THEN
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:"  |"
                     END ELSE
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:" |"
                     END
                  END ELSE
                     W_Temp=W_Temp:SPACE(3):"|"
                  END
                  * crdit
                  IF ENR_DETAILECRITUREAUX<7> # "" THEN
                     W_TotCredit=W_TotCredit+ENR_DETAILECRITUREAUX<7>
                     ENR_DETAILECRITUREAUX<7>=ENR_DETAILECRITUREAUX<7> "R26(#11)"
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<7>:"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(11):"|"
                  END
                  * solde
                  W_TotSolde=W_TotDebit-W_TotCredit
                  W_SauveSolde = W_TotSolde 
                  W_TotSolde=W_TotSolde "R26(#11)"
                  W_Temp=W_Temp:W_TotSolde:"  |"
 
                  PRINT W_Temp
                  W_Ligne=W_Ligne+1
                  W_SauveLigne=W_SauveLigne+1
  
               END
            END ELSE
 
               IF W_Ligne > W_LignePage THEN
                  GOSUB 40
                  PAGE
                  GOSUB 10
                  IF W_ImprimeTotal = "FAUX" THEN
                     W_PageCpte = W_PageCpte + 1
                     PRINT "|                                                                                                                               |"
                     READ ENR_CIVILANC FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILANC=""
		     Tab=ENR_CIVILANC
		     GOSUB 90
                     PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(105-LEN(W_AdresseAide)):"Page : ":W_PageCpte:SPACE(5-LEN(W_PageCpte)):"|"
                     PRINT "|                                                                                                                               |"
                     W_Ligne=W_Ligne+3
                     W_SauveLigne=W_SauveLigne+3
                     GOSUB 50
   		  END
               END
               IF W_SauveCpte # ENR_DETAILECRITUREAUX<3> THEN
                  IF W_Premier="VRAI" AND W_Rupture="FAUX" THEN
                     W_Total="VRAI"
                     GOSUB 40
                  END
                  IF (W_RupturePage=1 AND W_Premier="VRAI") OR (W_Ligne > W_LignePage) THEN
                     PAGE
                     GOSUB 10 
                  END
                  W_SauveCpte=ENR_DETAILECRITUREAUX<3>
                  PRINT "|                                                                                                                               |"
                  READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILAIDE=""
		  Tab=ENR_CIVILAIDE
		  GOSUB 90
                  PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(117-LEN(W_AdresseAide)):"|"
                  PRINT "|                                                                                                                               |"
                  W_Ligne=W_Ligne+3
                  W_SauveLigne=W_SauveLigne+3
                  W_PageCpte = 1
                  GOSUB 50
                  W_Premier="VRAI"
               END
	     
               * date
               W_Temp="|":OCONV(ENR_DETAILECRITUREAUX<2>,"D2/"):" |"
               * journal
	       IF ENR_BALANCEAUX<9,i>[6,1] = "N" THEN
                  W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:" |"
	       END ELSE
	          W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:"P|"
	       END
               * ligne 
               W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[8,5]:"|"
               * libelle
               IF LEN(ENR_DETAILECRITUREAUX<4>) > 30 THEN
                  W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>[1,30]:"|"
               END ELSE
                  W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>:SPACE(30-LEN(ENR_DETAILECRITUREAUX<4>)):"|"
               END
               * piece
               IF ENR_DETAILECRITUREAUX<5> # "" THEN
                  W_Temp=W_Temp:SPACE(10-LEN(ENR_DETAILECRITUREAUX<5>)):ENR_DETAILECRITUREAUX<5>:"|"
               END ELSE
                  W_Temp=W_Temp:SPACE(10):"|"
               END
               * quantite
               IF ENR_DETAILECRITUREAUX<9> # "" THEN
                  W_TotQte=W_TotQte+ENR_DETAILECRITUREAUX<9>
                  ENR_DETAILECRITUREAUX<9>=ENR_DETAILECRITUREAUX<9> "R26(#11)"
                  W_Temp=W_Temp:ENR_DETAILECRITUREAUX<9>:"|"
               END ELSE
                  W_Temp=W_Temp:SPACE(11):"|"
               END
               * chance
               IF ENR_DETAILECRITUREAUX<8> # "" THEN
                  W_Temp=W_Temp:OCONV(ENR_DETAILECRITUREAUX<8>,"D4/"):"|"
               END ELSE
                  W_Temp=W_Temp:SPACE(10):"|"
               END
               * dbit
               IF ENR_DETAILECRITUREAUX<6> # "" THEN
                  W_TotDebit=W_TotDebit+ENR_DETAILECRITUREAUX<6>
                  ENR_DETAILECRITUREAUX<6>=ENR_DETAILECRITUREAUX<6> "R26(#11)"
                  W_Temp=W_Temp:ENR_DETAILECRITUREAUX<6>:"| "
               END ELSE
                  W_Temp=W_Temp:SPACE(11):"| "
               END
               * lettrage
               IF ENR_DETAILECRITUREAUX<11> # "" THEN
                  IF LEN(ENR_DETAILECRITUREAUX<11>) = 1 THEN
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:"  |"
                  END ELSE
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:" |"
                  END
               END ELSE
                  W_Temp=W_Temp:SPACE(3):"|"
               END
               * crdit
               IF ENR_DETAILECRITUREAUX<7> # "" THEN
                  W_TotCredit=W_TotCredit+ENR_DETAILECRITUREAUX<7>
                  ENR_DETAILECRITUREAUX<7>=ENR_DETAILECRITUREAUX<7> "R26(#11)"
                  W_Temp=W_Temp:ENR_DETAILECRITUREAUX<7>:"|"
               END ELSE
                  W_Temp=W_Temp:SPACE(11):"|"
               END
               * solde
               W_TotSolde=W_TotDebit-W_TotCredit
               W_SauveSolde = W_TotSolde 

               W_TotSolde=W_TotSolde "R26(#11)"
               W_Temp=W_Temp:W_TotSolde:"  |"
 
               PRINT W_Temp
               W_Ligne=W_Ligne+1
               W_SauveLigne=W_SauveLigne+1
            END
         END ELSE
            IF W_CumulAnt = 1 AND W_DateFin >= ENR_BALANCEAUX<8,i> THEN

               IF W_Exer="N-" THEN
                  READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUXARCHIVE,ENR_BALANCEAUX<9,i> ELSE ENR_DETAILECRITUREAUX=""
               END ELSE
                  READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,ENR_BALANCEAUX<9,i> ELSE ENR_DETAILECRITUREAUX=""
               END

               IF W_EcrNonLettre=1 THEN
                  IF (ENR_DETAILECRITUREAUX<11> = "") OR (W_Exer # "N1" AND ENR_DETAILECRITUREAUX<11>[2,1] = "1") THEN
                     IF W_Ligne > W_LignePage THEN
                        GOSUB 40
                        PAGE
                        GOSUB 10               
                        IF W_ImprimeTotal = "FAUX" THEN
                           W_PageCpte = W_PageCpte + 1
                           PRINT "|                                                                                                                               |"
                           READ ENR_CIVILANC FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILANC=""
		  	   Tab=ENR_CIVILANC
		  	   GOSUB 90
                           PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(105-LEN(W_AdresseAide)):"Page : ":W_PageCpte:SPACE(5-LEN(W_PageCpte)):"|"
                           PRINT "|                                                                                                                               |"
                           W_Ligne=W_Ligne+3
                           W_SauveLigne=W_SauveLigne+3
                           GOSUB 50
   	   	        END
                     END
                     IF W_SauveCpte # ENR_DETAILECRITUREAUX<3> THEN
                        IF W_Premier="VRAI" AND W_Rupture="FAUX" THEN
                           W_Total="VRAI"
                           GOSUB 40
                        END
                        IF (W_RupturePage=1 AND W_Premier="VRAI") OR (W_Ligne > W_LignePage) THEN
                           PAGE
                           GOSUB 10 
                        END
                        W_SauveCpte=ENR_DETAILECRITUREAUX<3>
                        PRINT "|                                                                                                                               |"
                        READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILAIDE=""

		        Tab=ENR_CIVILAIDE
		  	GOSUB 90
                        PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(117-LEN(W_AdresseAide)):"|"
                        PRINT "|                                                                                                                               |"
                        W_Ligne=W_Ligne+3
                        W_SauveLigne=W_SauveLigne+3
                        W_PageCpte = 1
                        GOSUB 50
                        W_Premier="VRAI"
                     END

                     * date
                     W_Temp="|":OCONV(ENR_DETAILECRITUREAUX<2>,"D2/"):" |"
                     * journal
		     IF ENR_BALANCEAUX<9,i>[6,1] = "N" THEN
                  	W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:" |"
		     END ELSE
	                W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:"P|"
		     END
                     * ligne
                     W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[8,5]:"|"
                     * libelle
                     IF LEN(ENR_DETAILECRITUREAUX<4>) > 30 THEN
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>[1,30]:"|"
                     END ELSE
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>:SPACE(30-LEN(ENR_DETAILECRITUREAUX<4>)):"|"
                     END
                     * piece
                     IF ENR_DETAILECRITUREAUX<5> # "" THEN
                        W_Temp=W_Temp:SPACE(10-LEN(ENR_DETAILECRITUREAUX<5>)):ENR_DETAILECRITUREAUX<5>:"|"
                     END ELSE
                        W_Temp=W_Temp:SPACE(10):"|"
                     END
                     * quantite
                     IF ENR_DETAILECRITUREAUX<9> # "" THEN
                        W_TotQte=W_TotQte+ENR_DETAILECRITUREAUX<9>
                        ENR_DETAILECRITUREAUX<9>=ENR_DETAILECRITUREAUX<9> "R26(#11)"
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<9>:"|"
                     END ELSE
                        W_Temp=W_Temp:SPACE(11):"|"
                     END
                     * chance
                     IF ENR_DETAILECRITUREAUX<8> # "" THEN
                        W_Temp=W_Temp:OCONV(ENR_DETAILECRITUREAUX<8>,"D4/"):"|"
                     END ELSE
                        W_Temp=W_Temp:SPACE(10):"|"
                     END
                     * dbit
                     IF ENR_DETAILECRITUREAUX<6> # "" THEN
                        W_TotDebit=W_TotDebit+ENR_DETAILECRITUREAUX<6>
                        ENR_DETAILECRITUREAUX<6>=ENR_DETAILECRITUREAUX<6> "R26(#11)"
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<6>:"| "
                     END ELSE
                        W_Temp=W_Temp:SPACE(11):"| "
                     END
                     * lettrage
                     IF ENR_DETAILECRITUREAUX<11> # "" THEN
                        IF LEN(ENR_DETAILECRITUREAUX<11>) = 1 THEN
                           W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:"  |"
                        END ELSE
                           W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:" |"
                        END
                     END ELSE
                        W_Temp=W_Temp:SPACE(3):"|"
                     END
                     * crdit
                     IF ENR_DETAILECRITUREAUX<7> # "" THEN
                        W_TotCredit=W_TotCredit+ENR_DETAILECRITUREAUX<7>
                        ENR_DETAILECRITUREAUX<7>=ENR_DETAILECRITUREAUX<7> "R26(#11)"
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<7>:"|"
                     END ELSE
                        W_Temp=W_Temp:SPACE(11):"|"
                     END
                     * solde
                     W_TotSolde=W_TotDebit-W_TotCredit
                     W_SauveSolde = W_TotSolde 
                     W_TotSolde=W_TotSolde "R26(#11)"
                     W_Temp=W_Temp:W_TotSolde:"  |"
  
                     PRINT W_Temp
                     W_Ligne=W_Ligne+1
                     W_SauveLigne=W_SauveLigne+1
    
                  END
               END ELSE
 
                  IF W_Ligne > W_LignePage THEN
                     GOSUB 40
                     PAGE
                     GOSUB 10
                     IF W_ImprimeTotal = "FAUX" THEN
                        W_PageCpte = W_PageCpte + 1
                        PRINT "|                                                                                                                               |"
                        READ ENR_CIVILANC FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILANC=""
		  	Tab=ENR_CIVILANC
		  	GOSUB 90
                        PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(105-LEN(W_AdresseAide)):"Page : ":W_PageCpte:SPACE(5-LEN(W_PageCpte)):"|"
                        PRINT "|                                                                                                                               |"
                        W_Ligne=W_Ligne+3
                        W_SauveLigne=W_SauveLigne+3
                        GOSUB 50
   		     END
                  END
                  IF W_SauveCpte # ENR_DETAILECRITUREAUX<3> THEN
                     IF W_Premier="VRAI" AND W_Rupture="FAUX" THEN
                        W_Total="VRAI"
                        GOSUB 40
                     END
                     IF (W_RupturePage=1 AND W_Premier="VRAI") OR (W_Ligne > W_LignePage) THEN
                        PAGE
                        GOSUB 10 
                     END
                     W_SauveCpte=ENR_DETAILECRITUREAUX<3>
                     PRINT "|                                                                                                                               |"
                     READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_SauveCpte ELSE ENR_CIVILAIDE=""
		     Tab=ENR_CIVILAIDE
		     GOSUB 90
                     PRINT "|":SPACE(2):W_SauveCpte:SPACE(3):W_AdresseAide:SPACE(117-LEN(W_AdresseAide)):"|"
                     PRINT "|                                                                                                                               |"
                     W_Ligne=W_Ligne+3
                     W_SauveLigne=W_SauveLigne+3
                     W_PageCpte = 1
                     GOSUB 50
                     W_Premier="VRAI"
                  END
	     
                  * date
                  W_Temp="|":OCONV(ENR_DETAILECRITUREAUX<2>,"D2/"):" |"
                  * journal
		  IF ENR_BALANCEAUX<9,i>[6,1] = "N" THEN
                  	W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:" |"
		  END ELSE
	                W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[4,2]:"P|"
		  END
                  * ligne 
                  W_Temp=W_Temp:ENR_BALANCEAUX<9,i>[8,5]:"|"
                  * libelle
                  IF LEN(ENR_DETAILECRITUREAUX<4>) > 30 THEN
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>[1,30]:"|"
                  END ELSE
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<4>:SPACE(30-LEN(ENR_DETAILECRITUREAUX<4>)):"|"
                  END
                  * piece
                  IF ENR_DETAILECRITUREAUX<5> # "" THEN
                     W_Temp=W_Temp:SPACE(10-LEN(ENR_DETAILECRITUREAUX<5>)):ENR_DETAILECRITUREAUX<5>:"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(10):"|"
                  END
                  * quantite
                  IF ENR_DETAILECRITUREAUX<9> # "" THEN
                     W_TotQte=W_TotQte+ENR_DETAILECRITUREAUX<9>
                     ENR_DETAILECRITUREAUX<9>=ENR_DETAILECRITUREAUX<9> "R26(#11)"
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<9>:"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(11):"|"
                  END
                  * chance
                  IF ENR_DETAILECRITUREAUX<8> # "" THEN
                     W_Temp=W_Temp:OCONV(ENR_DETAILECRITUREAUX<8>,"D4/"):"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(10):"|"
                  END
                  * dbit
                  IF ENR_DETAILECRITUREAUX<6> # "" THEN
                     W_TotDebit=W_TotDebit+ENR_DETAILECRITUREAUX<6>
                     ENR_DETAILECRITUREAUX<6>=ENR_DETAILECRITUREAUX<6> "R26(#11)"
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<6>:"| "
                  END ELSE
                     W_Temp=W_Temp:SPACE(11):"| "
                  END
                  * lettrage
                  IF ENR_DETAILECRITUREAUX<11> # "" THEN
                     IF LEN(ENR_DETAILECRITUREAUX<11>) = 1 THEN
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:"  |"
                     END ELSE
                        W_Temp=W_Temp:ENR_DETAILECRITUREAUX<11>:" |"
                     END
                  END ELSE
                     W_Temp=W_Temp:SPACE(3):"|"
                  END
                  * crdit
                  IF ENR_DETAILECRITUREAUX<7> # "" THEN
                     W_TotCredit=W_TotCredit+ENR_DETAILECRITUREAUX<7>
                     ENR_DETAILECRITUREAUX<7>=ENR_DETAILECRITUREAUX<7> "R26(#11)"
                     W_Temp=W_Temp:ENR_DETAILECRITUREAUX<7>:"|"
                  END ELSE
                     W_Temp=W_Temp:SPACE(11):"|"
                  END
                  * solde
                  W_TotSolde=W_TotDebit-W_TotCredit
                  W_SauveSolde = W_TotSolde 
                  W_TotSolde=W_TotSolde "R26(#11)"
                  W_Temp=W_Temp:W_TotSolde:"  |"
 
                  PRINT W_Temp
                  W_Ligne=W_Ligne+1
                  W_SauveLigne=W_SauveLigne+1
               END

            END
         END
      NEXT i
END
   NEXT j

   W_Total="VRAI"
   GOSUB 40

   IF W_Tri # "TOUS" THEN
      PAGE
      GOSUB 70
   END

RETURN
*****************************************************************************
*  Imprime fin tableau
40

   W_ImprimeTotal = "FAUX"
   IF W_Total="VRAI" THEN

      W_TotGeneQteDetail = W_TotGeneQteDetail + W_TotQte
      W_TotGeneDebitDetail = W_TotGeneDebitDetail + W_TotDebit
      W_TotGeneCreditDetail = W_TotGeneCreditDetail + W_TotCredit
      W_TotGeneSoldeDetail = W_TotGeneSoldeDetail + W_SauveSolde

      W_TotGeneQte=W_TotGeneQte+W_TotQte
      W_TotGeneDebit=W_TotGeneDebit+W_TotDebit
      W_TotGeneCredit=W_TotGeneCredit+W_TotCredit
      W_TotGeneSolde=W_TotGeneSolde+W_SauveSolde
      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)"
      IF W_TotQte # "       0,00" THEN
      PRINT "|         |   |     |TOTAL COMPTE                  |          |":W_TotQte:"|          |":W_TotDebit:"|    |":W_TotCredit:"|":W_TotSolde:"  |"
      END ELSE
      PRINT "|         |   |     |TOTAL COMPTE                  |          |           |          |":W_TotDebit:"|    |":W_TotCredit:"|":W_TotSolde:"  |"
      END
      PRINT "|         |   |     |                              |          |           |          |           |    |           |             |"
      PRINT "*********************************************************************************************************************************"
      W_Total="FAUX"
      W_TotQte=0
      W_TotDebit=0
      W_TotCredit=0
      W_TotSolde=0
W_SauveSolde=0
      W_ImprimeTotal = "VRAI"
      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

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

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

RETURN

*****************************************************************************
*  Imprime Page Total
60

   W_PageTotal="VRAI"
   PAGE
   GOSUB 10

   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)"
   IF W_TotGeneQte # "       0,00" THEN
   PRINT "|     TOTAL DES MOUVEMENTS EDITES                             |":W_TotGeneQte:"|          |":W_TotGeneDebit:"|    |":W_TotGeneCredit:"|":W_TotGeneSolde:"  |"
   END ELSE
   PRINT "|     TOTAL DES MOUVEMENTS EDITES                             |           |          |":W_TotGeneDebit:"|    |":W_TotGeneCredit:"|":W_TotGeneSolde:"  |"
   END
   PRINT "|                                                             |           |          |           |    |           |             |"
   PRINT "|-------------------------------------------------------------|-----------|----------|-----------|----|-----------|-------------|"

RETURN

*****************************************************************************
*  Total Detail
70
    
   W_Lib=""
   W_Ligne=0
   W_Page = W_Page + 1

   PRINT "Date : ":OCONV(DATE(),"D4/"):SPACE(105):"Page : ":W_Page
   PRINT " "
   PRINT SPACE(50):"GRAND LIVRE AUXILIAIRE"
   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
      PRINT SPACE(19):W_Adresse
   END
   IF ENR_ASSOCIATION<7> # "" THEN
      PRINT SPACE(19):ENR_ASSOCIATION<7>
   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 " "
    
   W_PageTotal="VRAI" 
   GOSUB 20
   W_PageTotal="FAUX" 
    
   IF W_Tri = "SECT" THEN
      W_Lib="TOTAL SECTEUR : ":W_SauveSect:" ":ENR_SECTEUR<1>[1,36]:SPACE(41 - LEN(ENR_SECTEUR<1>[1,36]))
   END ELSE
      IF W_Tri = "RESP" THEN
         W_Lib="TOTAL RESPONSABLE : ":W_SauveResp:" ":ENR_RESPONSABLE<1>[1,32]:SPACE(37 - LEN(ENR_RESPONSABLE<1>[1,32]))
      END ELSE
         IF W_Tri = "COMMUNE" THEN
            W_Lib="TOTAL COMMUNE : ":W_SauveCommune[1,40]:SPACE(45 - LEN(W_SauveCommune[1,40]))
	 END
      END
   END

   PRINT "|                                                             |           |          |           |    |           |             |"
   W_TotGeneQteDetail=W_TotGeneQteDetail "R26(#11)"
   W_TotGeneDebitDetail=W_TotGeneDebitDetail "R26(#11)"
   W_TotGeneCreditDetail=W_TotGeneCreditDetail "R26(#11)"
   W_TotGeneSoldeDetail=W_TotGeneSoldeDetail "R26(#11)"
   IF W_TotGeneQteDetail # "       0,00" THEN
   PRINT "|":W_Lib:"|":W_TotGeneQteDetail:"|          |":W_TotGeneDebitDetail:"|    |":W_TotGeneCreditDetail:"|":W_TotGeneSoldeDetail:"  |"
   END ELSE
   PRINT "|":W_Lib:"|           |          |":W_TotGeneDebitDetail:"|    |":W_TotGeneCreditDetail:"|":W_TotGeneSoldeDetail:"  |"
   END
   PRINT "|                                                             |           |          |           |    |           |             |"
   PRINT "|-------------------------------------------------------------|-----------|----------|-----------|----|-----------|-------------|"

   W_TotGeneDebitDetail = 0
   W_TotGeneCreditDetail = 0
   W_TotGeneSoldeDetail = 0
   W_TotGeneQteDetail = 0

RETURN

****************
* TEST SERVICE *
****************

80

READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE,W_Requete<j,1>[6,5] ELSE PRINT "LECTURE ACTIVITESAIDE"

W_CountAct=DCOUNT(ENR_ACTIVITESAIDE<1>,CHAR(253))
W_SansDateFin="FAUX"
W_ActServ = 1
FOR X = 1 TO W_CountAct
	IF ENR_ACTIVITESAIDE<1,X>[1,3] = W_Entite THEN
		IF ENR_ACTIVITESAIDE<3,X> = "" OR ENR_ACTIVITESAIDE<3,X> > DATE() THEN
			W_SansDateFin="VRAI"
				IF ENR_ACTIVITESAIDE<2,X> <= ENR_ACTIVITESAIDE<2,W_ActServ> THEN
					W_ActServ = X
				END
		END
	END ELSE
		IF W_SansDateFin = "FAUX" THEN
			W_ActServ = W_ActServ + 1
		END
	END
NEXT X

IF W_SansDateFin="FAUX" THEN
	W_ImprimePas="VRAI"
	W_ActServ = 1
	FOR X = 1 TO W_CountAct
		IF ENR_ACTIVITESAIDE<1,X>[1,3] = W_Entite THEN
			IF ENR_ACTIVITESAIDE<3,X> => ENR_ACTIVITESAIDE<3,W_ActServ> THEN
				W_ImprimePas="FAUX" 
				W_ActServ = X
			END
		END ELSE
			IF W_ImprimePas = "VRAI" THEN
				W_ActServ = W_ActServ + 1
			END
		END
	NEXT X
END ELSE
	W_ImprimePas="FAUX"
END
       
READ ENR_ACTIVITES FROM F.ACTIVITES,ENR_ACTIVITESAIDE<1,W_ActServ> ELSE PRINT "LECTURE ACTIVITES"

IF ENR_ACTIVITES<13> # W_SERVICE THEN
	W_ImprimePas="VRAI"
END

* Gestion service prestataire
IF ENR_ACTIVITES<12>="P" THEN
	IF ENR_ACTIVITESAIDE<6>#W_SERVICE THEN
		W_ImprimePas="VRAI"
	END ELSE
		W_ImprimePas="FAUX"
	END
END

IF W_ImprimePas="VRAI" THEN
	PASBON = "VRAI"
END

RETURN

*****************************************************************************
*  adresse aide
90

    W_AdresseAide = ""
    W_Temp = ""
    W_AdresseAide = Tab<2>:" ":Tab<3>

    IF Tab<5> # "" THEN W_Temp = Tab<5>:" "
    IF Tab<6> # "" THEN W_Temp = W_Temp:Tab<6>:" "
    IF Tab<7> # "" THEN W_Temp = W_Temp:Tab<7>:" "
    IF Tab<8> # "" THEN W_Temp = W_Temp:Tab<8>

    IF W_Temp # "" THEN
        W_AdresseAide = W_AdresseAide:" - ":W_Temp
    END

    IF Tab<9> # "" THEN
        W_AdresseAide = W_AdresseAide:" - ":Tab<9>
    END

    W_AdresseAide = W_AdresseAide:" - ":Tab<10>:" ":Tab<11>

    IF Tab<14> # "" THEN
        W_AdresseAide = W_AdresseAide:" - ":Tab<14>
    END
    IF LEN(W_AdresseAide) > 100 THEN
        W_AdresseAide = W_AdresseAide[1,100]
    END

RETURN