**********************************************************
*  MOULINETTE POUR RETABLIR LES QUANTITES
*  VANESSA
*  AVRIL 2001
**********************************************************
* OUVERTURES DES FICHIERS

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","BALANCEGENE" TO F.BALANCEGENE ELSE PRINT "OUVERTURE BALANCEGENE" ;* en lecture criture
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 = "0017]" AND AVEC 3 # "0017061110000" AND AVEC 6 = "0" AND AVEC TypeJournal # "P" OR AVEC 3 = "0017]" AND AVEC 3 # "0017061110000" AND AVEC 7 = "0" AND AVEC TypeJournal # "P"'

   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<9>="0"
      WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENE,W_Cle

   REPEAT

   * remonte fichier BALANCEANAL ET BALANCEGENE
   EXECUTE 'SSELECT DETAILECRITUREGENE AVEC 3 = "0017]" AND AVEC 0 = "[N0]" PAR 3'

   W_Fini="FAUX"
   W_SauveCompte=""

   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_CleBalAnal = W_CleDetail[6,2]:ENR_DETAILECRITUREGENE<3>:ENR_DETAILECRITUREGENE<10>
      W_CleBalGene = W_CleDetail[6,2]:ENR_DETAILECRITUREGENE<3>

      READ ENR_BALANCEANAL FROM F.BALANCEANAL,W_CleBalAnal ELSE ENR_BALANCEANAL=""
      READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CleBalGene ELSE ENR_BALANCEGENE=""

      IF W_SauveCompte # ENR_DETAILECRITUREGENE<3> THEN
         ENR_BALANCEANAL<3>=""
         ENR_BALANCEANAL<7>=""

         ENR_BALANCEGENE<3>=""
         ENR_BALANCEGENE<7>=""
         W_SauveCompte = ENR_DETAILECRITUREGENE<3>
      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

      IF ENR_DETAILECRITUREGENE<9> # "" THEN
         IF ENR_BALANCEGENE<3>="" THEN
            ENR_BALANCEGENE<3>=ENR_DETAILECRITUREGENE<9>
         END ELSE
            ENR_BALANCEGENE<3>=ENR_BALANCEGENE<3> + ENR_DETAILECRITUREGENE<9>
         END
      END

      * recherche le mois
      W_Date=OCONV(ENR_DETAILECRITUREGENE<2>,"D4/")
      W_Mois=W_Date[4,2]

      * 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

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

      WRITE ENR_BALANCEANAL ON F.BALANCEANAL,W_CleBalAnal
      WRITE ENR_BALANCEGENE ON F.BALANCEGENE,W_CleBalGene

   REPEAT

STOP
