**********************************************************
*  MOULINETTE POUR RAJOUTER LA SECTION ANALYTIQUE DANS
*  LES BASES COMPTA DEJA MIGREES 
*  VANESSA
*  MAI 2000
**********************************************************
* OUVERTURES DES FICHIERS

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","BALANCEANAL" TO F.BALANCEANAL ELSE PRINT "OUVERTURE BALANCEANAL" ;* en lecture criture
OPEN "","DETAILECRITUREGENE" TO F.DETAILECRITUREGENE ELSE PRINT "OUVERTURE DETAILECRITUREGENE" ;* en lecture criture

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

   EXECUTE 'SSELECT DETAILECRITUREGENE AVEC 3 = "':0016:']" OR = "':0017:']"'

   W_Fini="FAUX"
   LOOP
      READNEXT W_Cle ELSE W_Fini="VRAI"
   WHILE W_Fini = "FAUX" DO
      READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_Cle ELSE ENR_DETAILECRITUREGENE=""
      ENR_DETAILECRITUREGENE<10>="100"
      WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENE,W_Cle
 
   REPEAT

   * vide fichier BALANCEANAL
   EXECUTE 'SSELECT BALANCEANAL AVEC 0 = "N0001]"'

   W_Fini="FAUX"
   LOOP
      READNEXT W_CleBal ELSE W_Fini="VRAI"
   WHILE W_Fini = "FAUX" DO
      DELETE F.BALANCEANAL,W_CleBal
   REPEAT

   * remonte fichier BALANCEANAL
   EXECUTE 'SSELECT DETAILECRITUREGENE AVEC 3 = "0016]" OR = "0017]" PAR 3'

   W_Fini="FAUX"
   LOOP
      READNEXT W_CleDetail ELSE W_Fini="VRAI"
   WHILE W_Fini = "FAUX" DO
      READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_CleDetail ELSE ENR_DETAILECRITUREGENE=""
      W_CleBalance = W_CleDetail[6,2]:ENR_DETAILECRITUREGENE<3>:ENR_DETAILECRITUREGENE<10>
      READ ENR_BALANCEANAL FROM F.BALANCEANAL,W_CleBalance ELSE ENR_BALANCEANAL=""

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

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

      * cumul quantit
      IF ENR_DETAILECRITUREGENE<9> # "" THEN
         IF ENR_BALANCEANAL<3>="" THEN
            ENR_BALANCEANAL<3>=ENR_DETAILECRITUREGENE<9>
         END ELSE
            ENR_BALANCEANAL<3>=ENR_BALANCEANAL<3> + ENR_DETAILECRITUREGENE<9>
         END
      END

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

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

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

      * quantit par mois
      k=1
      LOOP
      WHILE INT(ENR_BALANCEANAL<4,k>) # INT(W_Mois) AND ENR_BALANCEANAL<4,k> # "" DO
         k=k+1
      REPEAT
      IF ENR_DETAILECRITUREGENE<9> # "" THEN
         IF ENR_BALANCEANAL<7,k>="" THEN
            ENR_BALANCEANAL<7,k>=ENR_DETAILECRITUREGENE<9>
         END ELSE
            ENR_BALANCEANAL<7,k>=ENR_BALANCEANAL<7,k> + ENR_DETAILECRITUREGENE<9>
         END
      END ELSE
         IF ENR_BALANCEANAL<7,k>="" THEN
            ENR_BALANCEANAL=INSERT(ENR_BALANCEANAL,7,k;"0")
         END
      END

      * date opration
      k=1
      LOOP
      WHILE INT(ENR_BALANCEANAL<8,k>) <= INT(ENR_DETAILECRITUREGENE<2>) AND ENR_BALANCEANAL<8,k> # "" DO
         k=k+1
      REPEAT
      ENR_BALANCEANAL=INSERT(ENR_BALANCEANAL,8,k;ENR_DETAILECRITUREGENE<2>)
      ENR_BALANCEANAL=INSERT(ENR_BALANCEANAL,9,k;W_CleDetail)

      WRITE ENR_BALANCEANAL ON F.BALANCEANAL,W_CleBalance
   REPEAT

STOP
