**********************************************************
*  Affectation en compta
*  Programme chaine  partir d'un projet VB
*  Vanessa
*  NOVEMBRE 1999
**********************************************************

* Ouvertures des fichiers
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ACTIVITES" TO F.ACTIVITES ELSE PRINT "OUVERTURE ACTIVITES" ;* en lecture
OPEN "","BROUILLARDTETE" TO F.BROUILLARDTETE ELSE PRINT "OUVERTURE BROUILLARDTETE" ;* en lecture criture
OPEN "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE PRINT "OUVERTURE BROUILLARDDETAIL" ;* en lecture criture
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE PRINT "OUVERTURE PLANCOMPTABLE" ;* en lecture criture
OPEN "","BALANCEANAL" TO F.BALANCEANAL ELSE PRINT "OUVERTURE BALANCEANAL" ;* en lecture criture
OPEN "","BALANCEAUX" TO F.BALANCEAUX ELSE PRINT "OUVERTURE BALANCEAUX" ;* en lecture criture
OPEN "","BALANCEGENE" TO F.BALANCEGENE ELSE PRINT "OUVERTURE BALANCEGENE" ;* en lecture criture
OPEN "","DETAILECRITUREAUX" TO F.DETAILECRITUREAUX ELSE PRINT "OUVERTURE DETAILECRITUREAUX" ;* en lecture criture
OPEN "","DETAILECRITUREGENE" TO F.DETAILECRITUREGENE ELSE PRINT "OUVERTURE DETAILECRITUREGENE" ;* en lecture criture
OPEN "","JOURNAL" TO F.JOURNAL ELSE PRINT "OUVERTURE JOURNAL" ;* en lecture criture
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE PRINT "OUVERTURE PARAMENTITECOMPTA" ;* en lecture
OPEN "","RAPPROCHDETAIL" TO F.RAPPROCHDETAIL ELSE PRINT "OUVERTURE RAPPROCHDETAIL" ;* en lecture
OPEN "","LETTREAUX" TO F.LETTREAUX ELSE PRINT "OUVERTURE LETTREAUX" ;* en lecture criture
OPEN "","LETTREGENE" TO F.LETTREGENE ELSE PRINT "OUVERTURE LETTREGENE" ;* en lecture criture
*********************************************************
* initialisation des variables
W_TabDyn = ""
W_Matrice = ""
W_SectAnal=""
W_SauveCle=""
W_AN="FAUX"
W_RequeteAct=""
W_Rapproch="FAUX"
W_SauveRemise=""
W_SauveDate=""
*********************************************************
*  Rcupration des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Sequence=FIELD(ARGUMENTS," ",2)

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

   W_CountSeq = LEN(W_Sequence)

   i=1
   LOOP
   UNTIL i >= W_CountSeq DO

      W_Matrice=""
      * extrait la cl de BROUILLARDTETE suivante
      W_CleSeq = W_Sequence[i,8]
      W_Rapproch="FAUX"

      READU ENR_JOURNAL FROM F.JOURNAL,W_CleSeq[1,5] ELSE ENR_JOURNAL=""
      READ ENR_BROUILLARDTETE FROM F.BROUILLARDTETE,W_CleSeq ELSE ENR_BROUILLARDTETE=""
      READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_CleSeq[1,3] ELSE ENR_PARAMENTITECOMPTA=""

      IF ENR_JOURNAL<2>="N" THEN
         W_AN="VRAI"
      END

      IF ENR_JOURNAL<18>="1" THEN
         W_Rapproch="VRAI"
      END

      W_Passe = "FAUX"
      * lit chaque ligne de BROUILLARDDETAIL
      FOR j = 1 TO ENR_BROUILLARDTETE<1>
	 W_CleBrouillardDetail = W_CleSeq:j "R%5"
         READ ENR_BROUILLARDDETAIL FROM F.BROUILLARDDETAIL,W_CleBrouillardDetail THEN

            * s'il s'agit d'un code aid
            IF ENR_BROUILLARDDETAIL<3> = "A" THEN
               GOSUB 10
               W_Passe="VRAI"
            END ELSE
               * s'il s'agit d'un compte comptable
               GOSUB 20
            END

	    IF W_Rapproch="VRAI" THEN
	    	* gnre fichier RAPPROCHDETAIL
	    	GOSUB 200
	    END

         END

         * efface l'article de BROUILLARDDETAIL
         DELETE F.BROUILLARDDETAIL,W_CleBrouillardDetail
      NEXT j

      IF W_Passe="VRAI" THEN
         GOSUB 60
      END
      WRITE ENR_JOURNAL ON F.JOURNAL,W_CleSeq[1,5]

      * efface l'article de BROUILLARDTETE
      DELETE F.BROUILLARDTETE,W_CleSeq

      i=i+9
   REPEAT

   IF W_AN="VRAI" THEN
      GOSUB 110
   END

STOP

*********************************************************
*  Gestion si code aid

10

   * s'il s'agit de l'exercice N
   IF W_CleBrouillardDetail[6,2] = "N0" THEN
      IF ENR_JOURNAL<5> = "" THEN
	 ENR_JOURNAL<5>="00001"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:"00001"
      END ELSE
	 ENR_JOURNAL<5>=ENR_JOURNAL<5>+1 "R%5"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:ENR_JOURNAL<5>
      END
   END ELSE
      * s'il s'agit de l'exercice N+1
      IF ENR_JOURNAL<7> = "" THEN
	 ENR_JOURNAL<7>="00001"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:"00001"
      END ELSE
	 ENR_JOURNAL<7>=ENR_JOURNAL<7>+1 "R%5"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:ENR_JOURNAL<7>
      END
   END
   READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_CleEcriture ELSE ENR_DETAILECRITUREAUX=""
   GOSUB 30
   ENR_DETAILECRITUREAUX=W_TabDyn
   W_TabDyn=""

   * Sauvegarde cumuls dbit/crdit mois par mois
   GOSUB 50

   WRITE ENR_DETAILECRITUREAUX ON F.DETAILECRITUREAUX,W_CleEcriture

   * lecture du fichier BALANCEAUX
   W_CleBalance = W_CleBrouillardDetail[6,2]:W_CleBrouillardDetail[1,3]:ENR_BROUILLARDDETAIL<4>
   READ ENR_BALANCEAUX FROM F.BALANCEAUX,W_CleBalance ELSE ENR_BALANCEAUX =""
   W_TabDyn=ENR_BALANCEAUX
   GOSUB 40
   ENR_BALANCEAUX=W_TabDyn
   W_TabDyn=""

   WRITE ENR_BALANCEAUX ON F.BALANCEAUX,W_CleBalance

RETURN

*********************************************************
*  Gestion si compte comptable

20

   * exercice N
   IF W_CleBrouillardDetail[6,2] = "N0" THEN
      IF ENR_JOURNAL<4> = "" THEN
	 ENR_JOURNAL<4>="00001"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:"00001"
      END ELSE
	 ENR_JOURNAL<4>=ENR_JOURNAL<4>+1 "R%5"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:ENR_JOURNAL<4>
      END
   END ELSE
      * exercice N+1
      IF ENR_JOURNAL<6> = "" THEN
	 ENR_JOURNAL<6>="00001"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:"00001"
      END ELSE
	 ENR_JOURNAL<6>=ENR_JOURNAL<6>+1 "R%5"
         W_CleEcriture = W_CleBrouillardDetail[1,7]:ENR_JOURNAL<6>
      END
   END
   READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_CleEcriture ELSE ENR_DETAILECRITUREGENE=""
   GOSUB 30
   GOSUB 100
   ENR_DETAILECRITUREGENE=W_TabDyn
   W_TabDyn=""

   WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENE,W_CleEcriture

   * lecture et MAJ du fichier BALANCEGENE
   W_CleBalance = W_CleBrouillardDetail[6,2]:ENR_BROUILLARDDETAIL<4>
   READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CleBalance ELSE ENR_BALANCEGENE =""
   W_TabDyn=ENR_BALANCEGENE
   GOSUB 40
   IF W_TabDyn = ENR_BALANCEGENE THEN
      GOSUB 40
   END
   ENR_BALANCEGENE=W_TabDyn
   W_TabDyn=""
   WRITE ENR_BALANCEGENE ON F.BALANCEGENE,W_CleBalance

   * Lecture et MAJ du fichier BALANCEANAL
   IF ENR_BROUILLARDDETAIL<4>[4,1]="6" OR ENR_BROUILLARDDETAIL<4>[4,1]="7" THEN
      W_CleBalance = W_CleBrouillardDetail[6,2]:ENR_BROUILLARDDETAIL<4>:ENR_BROUILLARDDETAIL<11>
      READ ENR_BALANCEANAL FROM F.BALANCEANAL,W_CleBalance ELSE ENR_BALANCEANAL =""
      W_TabDyn=ENR_BALANCEANAL
      GOSUB 40
      ENR_BALANCEANAL=W_TabDyn
      W_TabDyn=""
      WRITE ENR_BALANCEANAL ON F.BALANCEANAL,W_CleBalance
   END

   * maj du fichier PLANCOMPTABLE
   READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,ENR_BROUILLARDDETAIL<4> ELSE ENR_PLANCOMPTABLE=""
   IF DCOUNT(ENR_PLANCOMPTABLE<10>,CHAR(253)) # 2 THEN
      IF ENR_PLANCOMPTABLE<10> = "" THEN
         ENR_PLANCOMPTABLE<10,1> = W_CleBrouillardDetail[6,2]
      END ELSE
         IF ENR_PLANCOMPTABLE<10,1> # W_CleBrouillardDetail[6,2] THEN
	    ENR_PLANCOMPTABLE<10,2> = W_CleBrouillardDetail[6,2]
         END
      END
   END
   WRITE ENR_PLANCOMPTABLE ON F.PLANCOMPTABLE,ENR_BROUILLARDDETAIL<4>

RETURN

*********************************************************
*  MAJ des fichiers DETAILECRITURE (AUX ou GENE)

30

   W_TabDyn<1>=ENR_BROUILLARDDETAIL<1>
   W_TabDyn<2>=ENR_BROUILLARDDETAIL<2>
   W_TabDyn<3>=ENR_BROUILLARDDETAIL<4>
   W_TabDyn<4>=ENR_BROUILLARDDETAIL<5>
   W_TabDyn<5>=ENR_BROUILLARDDETAIL<6>
   W_TabDyn<6>=ENR_BROUILLARDDETAIL<7>
   W_TabDyn<7>=ENR_BROUILLARDDETAIL<8>
   W_TabDyn<8>=ENR_BROUILLARDDETAIL<9>
   W_TabDyn<9>=ENR_BROUILLARDDETAIL<10>
   W_TabDyn<10>=ENR_BROUILLARDDETAIL<11>
   W_TabDyn<11>=ENR_BROUILLARDDETAIL<12>

RETURN

*********************************************************
*  MAJ des fichiers BALANCE (AUX ou GENE)

40

   * cumul dbit
   IF ENR_BROUILLARDDETAIL<7> # "" THEN
      IF W_TabDyn<1>="" THEN
         W_TabDyn<1>=ENR_BROUILLARDDETAIL<7>
      END ELSE
         W_TabDyn<1>=W_TabDyn<1> + ENR_BROUILLARDDETAIL<7>
      END
   END

   * cumul crdit
   IF ENR_BROUILLARDDETAIL<8> # "" THEN
      IF W_TabDyn<2>="" THEN
         W_TabDyn<2>=ENR_BROUILLARDDETAIL<8>
      END ELSE
         W_TabDyn<2>=W_TabDyn<2> + ENR_BROUILLARDDETAIL<8>
      END
   END

   * cumul quantit
   IF ENR_BROUILLARDDETAIL<10> # "" THEN
      IF W_TabDyn<3>="" THEN
         W_TabDyn<3>=ENR_BROUILLARDDETAIL<10>
      END ELSE
         W_TabDyn<3>=W_TabDyn<3> + ENR_BROUILLARDDETAIL<10>
      END
   END

   * recherche le mois
   W_Date = OCONV(ENR_BROUILLARDDETAIL<2>,"D4/")
   W_Mois=W_Date[4,2]
   k=1
   LOOP
   WHILE INT(W_TabDyn<4,k>) < INT(W_Mois) AND W_TabDyn<4,k> # "" DO
      k=k+1
   REPEAT

   * dbit par mois
   IF ENR_BROUILLARDDETAIL<7> # "" THEN
      IF W_TabDyn<4,k>=W_Mois THEN
         W_TabDyn<5,k>=W_TabDyn<5,k> + ENR_BROUILLARDDETAIL<7>
      END ELSE
         W_TabDyn=INSERT(W_TabDyn,4,k;W_Mois)
         W_TabDyn=INSERT(W_TabDyn,5,k;ENR_BROUILLARDDETAIL<7>)
         W_TabDyn=INSERT(W_TabDyn,6,k;"0")
      END
   END ELSE
      IF W_TabDyn<4,k> = "" THEN
         W_TabDyn=INSERT(W_TabDyn,4,k;W_Mois)
         W_TabDyn=INSERT(W_TabDyn,5,k;"0")
      END
   END

   * crdit par mois
   IF ENR_BROUILLARDDETAIL<8> # "" THEN
      IF W_TabDyn<4,k>=W_Mois THEN
         W_TabDyn<6,k>=W_TabDyn<6,k> + ENR_BROUILLARDDETAIL<8>
      END ELSE
         W_TabDyn=INSERT(W_TabDyn,4,k;W_Mois)
         W_TabDyn=INSERT(W_TabDyn,5,k;"0")
         W_TabDyn=INSERT(W_TabDyn,6,k;ENR_BROUILLARDDETAIL<8>)
      END
   END ELSE
      IF W_TabDyn<6,k> = "" THEN
         W_TabDyn<6,k>="0"
      END
   END

   * quantit par mois
   k = 1
   LOOP
   WHILE INT(W_TabDyn<4,k>) # INT(W_Mois) AND W_TabDyn<4,k>#"" DO
      k=k+1
   REPEAT

   IF ENR_BROUILLARDDETAIL<10> # "" THEN
      IF W_TabDyn<7,k>="" THEN
         W_TabDyn<7,k>=ENR_BROUILLARDDETAIL<10>
      END ELSE
         W_TabDyn<7,k>=W_TabDyn<7,k> + ENR_BROUILLARDDETAIL<10>
      END
   END ELSE
      IF W_TabDyn<7,k> = "" THEN
         W_TabDyn=INSERT(W_TabDyn,7,k;"0")
      END
   END

   * date opration
   k=1
   LOOP
   WHILE INT(W_TabDyn<8,k>) <= INT(ENR_BROUILLARDDETAIL<2>) AND W_TabDyn<8,k>#"" DO
      k=k+1
   REPEAT

   W_TabDyn=INSERT(W_TabDyn,8,k;ENR_BROUILLARDDETAIL<2>)
   W_TabDyn=INSERT(W_TabDyn,9,k;W_CleEcriture)

RETURN

*********************************************************
*  Sauvegarde cumuls dbit/crdit mois par mois

50

   W_Date = OCONV(ENR_DETAILECRITUREAUX<2>,"D4/")
   W_Mois = W_Date[4,2]
   IF ENR_DETAILECRITUREAUX<6> # "" THEN
      IF W_Matrice<1,W_Mois>="" THEN
         W_Matrice<1,W_Mois>=ENR_DETAILECRITUREAUX<6>
      END ELSE
         W_Matrice<1,W_Mois>=W_Matrice<1,W_Mois> + ENR_DETAILECRITUREAUX<6>
      END
   END

   IF ENR_DETAILECRITUREAUX<7> # "" THEN
      IF W_Matrice<2,W_Mois>="" THEN
         W_Matrice<2,W_Mois>=ENR_DETAILECRITUREAUX<7>
      END ELSE
         W_Matrice<2,W_Mois>=W_Matrice<2,W_Mois> + ENR_DETAILECRITUREAUX<7>
      END
   END

   IF W_Matrice<3,W_Mois>="" THEN
      W_Matrice<3,W_Mois>=ENR_DETAILECRITUREAUX<2>
   END ELSE
      IF INT(W_Matrice<3,W_Mois>) < INT(ENR_DETAILECRITUREAUX<2>) THEN
         W_Matrice<3,W_Mois> = ENR_DETAILECRITUREAUX<2>
      END
   END

   W_SauveCle=W_CleEcriture

RETURN

*********************************************************
*  Cration des fichiers DETAILECRITUREGENE de contre partie

60

   * lit la cl sauvegarde du fichier DETAILECRITUREAUX
   READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_SauveCle ELSE ENR_DETAILECRITUREAUX=""

   FOR k=1 TO 12
      FOR l = 1 TO 2
         IF W_Matrice<l,k> # "" THEN
            GOSUB 70
	    GOSUB 80
         END
      NEXT l
   NEXT k

   WRITE ENR_DETAILECRITUREAUX ON F.DETAILECRITUREAUX,W_SauveCle

RETURN

*********************************************************
*  Recherche cl DETAILECRITUREGENE

70

   * exercice N
   IF W_CleSeq[6,2]="N0" THEN
      IF ENR_JOURNAL<4> = "" THEN
         ENR_JOURNAL<4>="00001"
         W_CleEcriture = W_CleSeq[1,7]:"00001"
      END ELSE
	 ENR_JOURNAL<4>=ENR_JOURNAL<4>+1 "R%5"
         W_CleEcriture = W_CleSeq[1,7]:ENR_JOURNAL<4>
      END
      READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_CleEcriture[1,3] ELSE ENR_PARAMENTITECOMPTA=""
      W_Annee = OCONV(ENR_PARAMENTITECOMPTA<1>,"D4/")
      W_Annee = W_Annee[7,4]
   END ELSE
      * exercice N+1
      IF ENR_JOURNAL<6> = "" THEN
	 ENR_JOURNAL<6>="00001"
         W_CleEcriture = W_CleSeq[1,7]:"00001"
      END ELSE
	 ENR_JOURNAL<6>=ENR_JOURNAL<6>+1 "R%5"
         W_CleEcriture = W_CleSeq[1,7]:ENR_JOURNAL<6>
      END
      READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_CleEcriture[1,3] ELSE ENR_PARAMENTITECOMPTA=""
      W_Annee = OCONV(ENR_PARAMENTITECOMPTA<3>,"D4/")
      W_Annee = W_Annee[7,4]
   END
   READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_CleEcriture ELSE ENR_DETAILECRITUREGENE=""

RETURN

*********************************************************
*  MAJ du fichier DETAILECRITUREGENE

80

   ENR_DETAILECRITUREGENE<1>=DATE()
*   W_Mois = k+1 "R%2"
*   IF W_Mois = "13" THEN
*      W_Mois="01"
*      W_Annee=W_Annee+1
*   END
*   W_Date = ICONV("01/":W_Mois:"/":W_Annee,"D4/")-1
   ENR_DETAILECRITUREGENE<2>=W_Matrice<3,k>
   IF ENR_PARAMENTITECOMPTA<16>="" THEN
      ENR_DETAILECRITUREGENE<3>=W_CleEcriture[1,3]:"4111100000"
   END ELSE
      ENR_DETAILECRITUREGENE<3>=W_CleEcriture[1,3]:ENR_PARAMENTITECOMPTA<16>
   END
   ENR_DETAILECRITUREGENE<4>="CENTRALISATION AUXILIAIRE"
   IF l=1 THEN
      ENR_DETAILECRITUREGENE<6>=W_Matrice<l,k>
   END ELSE
      ENR_DETAILECRITUREGENE<7>=W_Matrice<l,k>
   END

   WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENE,W_CleEcriture

   W_CleBalance=W_CleEcriture[6,2]:ENR_DETAILECRITUREGENE<3>

   READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CleBalance ELSE ENR_BALANCEGENE=""

   GOSUB 90

   WRITE ENR_BALANCEGENE ON F.BALANCEGENE,W_CleBalance

   W_Count = DCOUNT(ENR_DETAILECRITUREAUX<12>,CHAR(253))
   ENR_DETAILECRITUREAUX<12,W_Count+1>=W_CleEcriture

RETURN

*********************************************************
*  MAJ du fichier BALANCEGENE pour la centralisation

90

   * cumul dbit
   IF ENR_DETAILECRITUREGENE<6> # "" THEN
      IF ENR_BALANCEGENE<1>="" THEN
         ENR_BALANCEGENE<1>=ENR_DETAILECRITUREGENE<6>
      END ELSE
         ENR_BALANCEGENE<1>=ENR_BALANCEGENE<1> + ENR_DETAILECRITUREGENE<6>
      END
   END

   * cumul crdit
   IF ENR_DETAILECRITUREGENE<7> # "" THEN
      IF ENR_BALANCEGENE<2>="" THEN
         ENR_BALANCEGENE<2>=ENR_DETAILECRITUREGENE<7>
      END ELSE
         ENR_BALANCEGENE<2>=ENR_BALANCEGENE<2> + ENR_DETAILECRITUREGENE<7>
      END
   END

   * recherche le mois
   W_Date = OCONV(ENR_DETAILECRITUREGENE<2>,"D4/")
   W_Mois=W_Date[4,2]
   m=1
   LOOP
   WHILE INT(ENR_BALANCEGENE<4,m>) < INT(W_Mois) AND ENR_BALANCEGENE<4,m> # "" DO
      m=m+1
   REPEAT

   * dbit par mois
   IF ENR_DETAILECRITUREGENE<6> # "" THEN
      IF ENR_BALANCEGENE<4,m>=W_Mois THEN
         ENR_BALANCEGENE<5,m>=ENR_BALANCEGENE<5,m> + ENR_DETAILECRITUREGENE<6>
      END ELSE
         ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,4,m;W_Mois)
         ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,5,m;ENR_DETAILECRITUREGENE<6>)
      END
   END ELSE
      IF ENR_BALANCEGENE<4,m>="" THEN
         ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,4,m;W_Mois)
         ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,5,m;"0")
      END
   END

   * crdit par mois
   IF ENR_DETAILECRITUREGENE<7> # "" THEN
      IF ENR_BALANCEGENE<4,m>=W_Mois THEN
         ENR_BALANCEGENE<6,m>=ENR_BALANCEGENE<6,m> + ENR_DETAILECRITUREGENE<7>
      END ELSE
         ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,4,m;W_Mois)
         ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,6,m;ENR_DETAILECRITUREGENE<7>)
      END
   END ELSE
      IF ENR_BALANCEGENE<6,m>="" THEN
         ENR_BALANCEGENE<6,m>="0"
      END
   END

   * date opration
   m=1
   LOOP
   WHILE INT(ENR_BALANCEGENE<8,m>) <= INT(ENR_DETAILECRITUREGENE<2>) AND ENR_BALANCEGENE<8,m>#"" DO
      m=m+1
   REPEAT

   ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,8,m;ENR_DETAILECRITUREGENE<2>)
   ENR_BALANCEGENE=INSERT(ENR_BALANCEGENE,9,m;W_CleEcriture)

RETURN

*********************************************************
*  MAJ la section analytique si pas renseigne

100

   IF ENR_BROUILLARDDETAIL<4>[4,1]="6" OR ENR_BROUILLARDDETAIL<4>[4,1]="7" THEN
      IF ENR_BROUILLARDDETAIL<11> = "" THEN

         * cherche la section analytique
         EXECUTE 'SELECT ACTIVITES AVEC 0 = "':ENR_BROUILLARDDETAIL<4>[1,3]:']" PAR 0'
         EXECUTE 'SAUVE-LISTE W_RequeteAct'
         EXECUTE "LISTE W_RequeteAct" RETURNING MSGCODE

         IF MSGCODE<1> # 209 THEN

            SELECT F.ACTIVITES TO W_RequeteAct

            W_End="FAUX"

            LOOP
               READNEXT W_CleAct FROM W_RequeteAct ELSE W_End = "VRAI"
            WHILE W_End = "FAUX" DO

               READ ENR_ACTIVITES FROM F.ACTIVITES,W_CleAct ELSE ENR_ACTIVITES=""

               W_SectAnal=ENR_ACTIVITES<2>
               W_End="VRAI"

            REPEAT
         END

         W_TabDyn<10>=W_SectAnal

      END
   END

RETURN

*********************************************************
*  Requete pour le contrle le lettrage

110

   EXECUTE 'SSELECT DETAILECRITUREAUX AVEC 11 # "" PAR 3 PAR 11'

   GOSUB 140
   W_Gene="FAUX"

   LOOP
      READNEXT W_Cle ELSE W_Fini="VRAI"
   WHILE W_Fini = "FAUX" DO
      READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_Cle ELSE ENR_DETAILECRITUREAUX=""
      W_TabDyn = ENR_DETAILECRITUREAUX
      GOSUB 130

   REPEAT

   IF W_Debit # W_Credit THEN
      GOSUB 120
      IF W_LettreHaute="A" THEN
         W_LettreHaute=""
      END
   END ELSE
      W_LettreHaute=W_SauveLettre
   END
   GOSUB 150

   EXECUTE 'SSELECT DETAILECRITUREGENE AVEC 11 # "" PAR 3 PAR 11'

   GOSUB 140
   W_Gene="VRAI"

   LOOP
      READNEXT W_Cle ELSE W_Fini="VRAI"
   WHILE W_Fini = "FAUX" DO
      READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_Cle ELSE ENR_DETAILECRITUREGENE=""
      W_TabDyn = ENR_DETAILECRITUREGENE
      GOSUB 130

   REPEAT

   IF W_Debit # W_Credit THEN
      GOSUB 120
      IF W_LettreHaute="A" THEN
         W_LettreHaute=""
      END
   END ELSE
      W_LettreHaute=W_SauveLettre
   END
   GOSUB 150

RETURN

******************************************************************************************
* delettre les critures avec dbit # crdit et imprime le compte concern

120

   W_CountCle = DCOUNT(W_SauveCle,CHAR(254))

   FOR i = 1 TO W_CountCle

      IF W_Gene="FAUX" THEN
         READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_SauveCle<i> ELSE ENR_DETAILECRITUREAUX=""
         ENR_DETAILECRITUREAUX<11> = ""
         WRITE ENR_DETAILECRITUREAUX ON F.DETAILECRITUREAUX,W_SauveCle<i>
      END ELSE
         READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_SauveCle<i> ELSE ENR_DETAILECRITUREGENE=""
         ENR_DETAILECRITUREGENE<11> = ""
         WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENE,W_SauveCle<i>
      END
   NEXT i

RETURN

******************************************************************************************
* contrle le lettrage

130

   IF W_SauveCpte = W_TabDyn<3> THEN
      * rupture sur la lettre
      IF W_SauveLettre # W_TabDyn<11> AND W_Premier = "VRAI" THEN

         IF W_Debit # W_Credit THEN
            GOSUB 120
            IF W_LettreHaute="A" THEN
               W_LettreHaute=""
            END
         END ELSE
            W_LettreHaute=W_SauveLettre
         END

         W_SauveLettre = W_TabDyn<11>
         W_SauveCle=""
         W_Credit=""
         W_Debit=""
      END
      W_Premier = "VRAI"

      IF W_TabDyn<6> # "" THEN
         W_Debit = W_Debit + W_TabDyn<6>
      END
      IF W_TabDyn<7> # "" THEN
         W_Credit = W_Credit + W_TabDyn<7>
      END

      * sauvegarde la cl
      W_Count=DCOUNT(W_SauveCle,CHAR(254))
      W_SauveCle<W_Count+1>=W_Cle

   END ELSE
      IF W_Debit # W_Credit THEN
         GOSUB 120
         IF W_LettreHaute="A" THEN
            W_LettreHaute=""
         END
      END ELSE
         W_LettreHaute=W_SauveLettre
      END
      IF W_SauveCpte # "" THEN
         GOSUB 150
      END

      W_SauveLettre = W_TabDyn<11>
      W_SauveCpte = W_TabDyn<3>
      W_LettreHaute=W_SauveLettre
      W_SauveCle=""
      W_Credit=""
      W_Debit=""

      IF W_TabDyn<6> # "" THEN
         W_Debit = W_Debit + W_TabDyn<6>
      END
      IF W_TabDyn<7> # "" THEN
         W_Credit = W_Credit + W_TabDyn<7>
      END

      * sauvegarde la cl
      W_Count=DCOUNT(W_SauveCle,CHAR(254))
      W_SauveCle<W_Count+1>=W_Cle

   END

RETURN

******************************************************************************************
* RAZ variables

140

   W_Fini="FAUX"
   W_SauveCpte=""
   W_SauveLettre=""
   W_SauveCle=""
   W_Credit=""
   W_Debit=""
   W_Premier="FAUX"
   W_TabDyn=""
   W_LettreHaute=""

RETURN

******************************************************************************************
* MAJ lettre BALANCE

150

   IF W_Gene="FAUX" THEN
      READ ENR_LETTREAUX FROM F.LETTREAUX,"N0":W_SauveCle<1>[1,3]:W_SauveCpte ELSE ENR_LETTREAUX=""
      ENR_LETTREAUX<1> = W_LettreHaute
      WRITE ENR_LETTREAUX ON F.LETTREAUX,"N0":W_SauveCle<1>[1,3]:W_SauveCpte
   END ELSE
      READ ENR_LETTREGENE FROM F.LETTREGENE,"N0":W_SauveCpte ELSE ENR_LETTREGENE=""
      ENR_LETTREGENE<1> = W_LettreHaute
      WRITE ENR_LETTREGENE ON F.LETTREGENE,"N0":W_SauveCpte
   END

RETURN

******************************************************************************************
* gnration RAPPROCHDETAIL

200

	IF ENR_BROUILLARDDETAIL<13>="" THEN
	
		IF ENR_JOURNAL<3> # ENR_BROUILLARDDETAIL<4> THEN
			W_SauveRemise=""
			W_SauveDate=""
			ENR_RAPPROCHDETAIL=""
			GOSUB 220
		END
	END ELSE
		IF W_SauveRemise="" THEN
			IF ENR_JOURNAL<3> # ENR_BROUILLARDDETAIL<4> THEN
				W_SauveRemise=ENR_BROUILLARDDETAIL<13>
				W_SauveDate=ENR_BROUILLARDDETAIL<2>
				ENR_RAPPROCHDETAIL=""
				GOSUB 220
			END
		END ELSE
			IF W_SauveRemise=ENR_BROUILLARDDETAIL<13> AND W_SauveDate=ENR_BROUILLARDDETAIL<2> THEN
				IF ENR_JOURNAL<3> # ENR_BROUILLARDDETAIL<4> THEN
					GOSUB 230
				END
			END ELSE
				IF ENR_JOURNAL<3> # ENR_BROUILLARDDETAIL<4> THEN
					W_SauveRemise=ENR_BROUILLARDDETAIL<13>
					W_SauveDate=ENR_BROUILLARDDETAIL<2>
					ENR_RAPPROCHDETAIL=""
					GOSUB 220
				END
			END
		END
	END

RETURN

******************************************************************************************
* recherche cl RAPPROCHDETAIL

210

	W_AnRap=OCONV(ENR_BROUILLARDDETAIL<2>,"D4/")
	W_AnRap=W_AnRap[9,2]

   	iAn=1
   	LOOP
   	UNTIL W_AnRap = ENR_JOURNAL<19,iAn> OR ENR_JOURNAL<19,iAn> = "" DO
     		iAn=iAn+1
   	REPEAT
	IF ENR_JOURNAL<19,iAn> # "" THEN
		IF ENR_JOURNAL<20,iAn> = "" THEN
			W_CleRapproch=W_CleSeq[1,5]:W_AnRap:"00001"
			ENR_JOURNAL<20,iAn>="00001"
		END ELSE
			W_CleRapproch=W_CleSeq[1,5]:W_AnRap:ENR_JOURNAL<20,iAn>+1 "R%5"
			ENR_JOURNAL<20,iAn>=ENR_JOURNAL<20,iAn>+1 "R%5"
		END
	END ELSE
		W_CleRapproch=W_CleSeq[1,5]:W_AnRap:"00001"
		ENR_JOURNAL<20,iAn>="00001"
		ENR_JOURNAL<19,iAn>=W_AnRap
	END

RETURN

******************************************************************************************
* remplit RAPPROCHDETAIL

220

	GOSUB 210

	ENR_RAPPROCHDETAIL<1>=ENR_BROUILLARDDETAIL<2>
	ENR_RAPPROCHDETAIL<2>=ENR_BROUILLARDDETAIL<5>
	ENR_RAPPROCHDETAIL<3>=ENR_BROUILLARDDETAIL<6>
	ENR_RAPPROCHDETAIL<4>=ENR_BROUILLARDDETAIL<7>
	ENR_RAPPROCHDETAIL<5>=ENR_BROUILLARDDETAIL<8>
	ENR_RAPPROCHDETAIL<6>=""
	ENR_RAPPROCHDETAIL<7>=""
	ENR_RAPPROCHDETAIL<8>=""
	IF ENR_BROUILLARDDETAIL<13> = "" THEN
		ENR_RAPPROCHDETAIL<9>=ENR_BROUILLARDDETAIL<4>
	END ELSE
		ENR_RAPPROCHDETAIL<9>=""
	END
	WRITE ENR_RAPPROCHDETAIL ON F.RAPPROCHDETAIL,W_CleRapproch

RETURN

******************************************************************************************
* cumule RAPPROCHDETAIL

230

	ENR_RAPPROCHDETAIL<1>=ENR_BROUILLARDDETAIL<2>
	IF ENR_BROUILLARDDETAIL<13>="0000000" THEN
		ENR_RAPPROCHDETAIL<2>="PRELEVEMENTS"
	END ELSE
		ENR_RAPPROCHDETAIL<2>="REMISE CHEQUES"
	END
	ENR_RAPPROCHDETAIL<3>=W_SauveRemise
	ENR_RAPPROCHDETAIL<4>=ENR_RAPPROCHDETAIL<4> + ENR_BROUILLARDDETAIL<7>
	ENR_RAPPROCHDETAIL<5>=ENR_RAPPROCHDETAIL<5> + ENR_BROUILLARDDETAIL<8>
	ENR_RAPPROCHDETAIL<6>=""
	ENR_RAPPROCHDETAIL<7>=""
	ENR_RAPPROCHDETAIL<8>=""

	IF ENR_BROUILLARDDETAIL<13> = "" THEN
		ENR_RAPPROCHDETAIL<9>=ENR_BROUILLARDDETAIL<4>
	END ELSE
		ENR_RAPPROCHDETAIL<9>=""
	END

	IF ENR_RAPPROCHDETAIL<4> # "" AND  ENR_RAPPROCHDETAIL<5> # "" THEN
		W_Solde=ENR_RAPPROCHDETAIL<4>-ENR_RAPPROCHDETAIL<5>
		IF W_Solde >= 0 THEN
			ENR_RAPPROCHDETAIL<4>=W_Solde
			ENR_RAPPROCHDETAIL<5>=""
		END ELSE
			ENR_RAPPROCHDETAIL<4>=""
			ENR_RAPPROCHDETAIL<5>=ABS(W_Solde)
		END
	END

	WRITE ENR_RAPPROCHDETAIL ON F.RAPPROCHDETAIL,W_CleRapproch

RETURN
