**********************************************************
*  ANNULATION DE FACTURATION EN DOUBLE
*  MOULINETTE QUI REPASSE LES ECRITURES EN BROUILLARD
*  ET QUI INVERSE LE DEBIT/CREDIT
*  VANESSA
*  MAI 2000
**********************************************************
* OUVERTURES DES FICHIERS

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
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 "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE PRINT "OUVERTURE BROUILLARDDETAIL" ;* en lecture criture
OPEN "","BROUILLARDTETE" TO F.BROUILLARDTETE ELSE PRINT "OUVERTURE BROUILLARDTETE" ;* 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 "","JOURNAL" TO F.JOURNAL ELSE PRINT "OUVERTURE JOURNAL" ;* en lecture criture
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE PRINT "OUVERTURE PARAMENTITECOMPTA" ;* en lecture

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

   W_Ligne=0
   W_Debit=0
   W_Credit=0
   W_SauveCle=""
   ENR_BROUILLARDDETAIL=""
   ENR_BROUILLARDTETE=""

   PRINT "CODE ENTITE"
   INPUT W_ENTITE

   READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_ENTITE ELSE ENR_PARAMENTITECOMPTA=""

   PRINT "CODE JOURNAL"
   INPUT W_JOURNAL

   PRINT "EXERCICE (N0 ou N1)"
   INPUT W_EXER

   PRINT "LIGNE AUXILIAIRE DEBUT"
   INPUT W_AUXDEB

   PRINT "LIGNE AUXILIAIRE FIN"
   INPUT W_AUXFIN

   PRINT "NUMERO ORDRE DU BROUILLARD"
   INPUT W_NUMORDRE

   W_CleEcr=W_ENTITE:W_JOURNAL:W_EXER
   EXECUTE 'SSELECT DETAILECRITUREAUX AVEC 0 >= "':W_CleEcr:W_AUXDEB:'" AND AVEC 0 <= "':W_CleEcr:W_AUXFIN:'" PAR 0'

   W_Fini="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=""
      ENR_BROUILLARDDETAIL<1>=ENR_DETAILECRITUREAUX<1>
      ENR_BROUILLARDDETAIL<2>=ENR_DETAILECRITUREAUX<2>
      ENR_BROUILLARDDETAIL<3>="A"
      ENR_BROUILLARDDETAIL<4>=ENR_DETAILECRITUREAUX<3>
      ENR_BROUILLARDDETAIL<5>=ENR_DETAILECRITUREAUX<4>
      ENR_BROUILLARDDETAIL<6>=ENR_DETAILECRITUREAUX<5>
      ENR_BROUILLARDDETAIL<7>=ENR_DETAILECRITUREAUX<7>
      ENR_BROUILLARDDETAIL<8>=ENR_DETAILECRITUREAUX<6>
      ENR_BROUILLARDDETAIL<9>=ENR_DETAILECRITUREAUX<8>
      ENR_BROUILLARDDETAIL<10>=-ENR_DETAILECRITUREAUX<9>
      ENR_BROUILLARDDETAIL<11>=""

      READ ENR_BROUILLARDTETE FROM F.BROUILLARDTETE,W_Cle[1,7]:W_NUMORDRE THEN
	 W_Ligne=ENR_BROUILLARDTETE<1>+1  "R%5"
         W_Debit=ENR_BROUILLARDTETE<2> + ENR_BROUILLARDDETAIL<7>
         W_Credit=ENR_BROUILLARDTETE<3> + ENR_BROUILLARDDETAIL<8>
      END ELSE
         W_Ligne="00001"
         W_Debit= ENR_BROUILLARDDETAIL<7>
         W_Credit= ENR_BROUILLARDDETAIL<8>
      END

      ENR_BROUILLARDTETE<1>=W_Ligne
      ENR_BROUILLARDTETE<2>=W_Debit
      ENR_BROUILLARDTETE<3>=W_Credit
      WRITE ENR_BROUILLARDTETE ON F.BROUILLARDTETE,W_Cle[1,7]:W_NUMORDRE

      WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_Cle[1,7]:W_NUMORDRE:W_Ligne

   REPEAT

   W_Ligne=0
   W_Debit=0
   W_Credit=0
   ENR_BROUILLARDDETAIL=""
   ENR_BROUILLARDTETE=""

   PRINT "LIGNE GENERALE DEBUT"
   INPUT W_GENEDEB

   PRINT "LIGNE GENERALE FIN"
   INPUT W_GENEFIN

   IF ENR_PARAMENTITECOMPTA<16> # "" THEN
   	W_Compte = W_ENTITE:ENR_PARAMENTITECOMPTA<16>
   END ELSE
   	W_Compte ="0014111100000"
   END

   EXECUTE 'SSELECT DETAILECRITUREGENE AVEC 3 # "':W_Compte:'" AND AVEC 0 >= "':W_CleEcr:W_GENEDEB:'" AND AVEC 0 <= "':W_CleEcr:W_GENEFIN:'" PAR 0'

   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_BROUILLARDDETAIL<1>=ENR_DETAILECRITUREGENE<1>
         ENR_BROUILLARDDETAIL<2>=ENR_DETAILECRITUREGENE<2>
         ENR_BROUILLARDDETAIL<3>=""
         ENR_BROUILLARDDETAIL<4>=ENR_DETAILECRITUREGENE<3>
         ENR_BROUILLARDDETAIL<5>=ENR_DETAILECRITUREGENE<4>
         ENR_BROUILLARDDETAIL<6>=ENR_DETAILECRITUREGENE<5>
         ENR_BROUILLARDDETAIL<7>=ENR_DETAILECRITUREGENE<7>
         ENR_BROUILLARDDETAIL<8>=ENR_DETAILECRITUREGENE<6>
         ENR_BROUILLARDDETAIL<9>=ENR_DETAILECRITUREGENE<8>
         ENR_BROUILLARDDETAIL<10>=-ENR_DETAILECRITUREGENE<9>
         IF ENR_DETAILECRITUREGENE<3>[4,1]="6" OR ENR_DETAILECRITUREGENE<3>[4,1]="7" THEN
            ENR_BROUILLARDDETAIL<11>=ENR_DETAILECRITUREGENE<10>
         END ELSE
	    ENR_BROUILLARDDETAIL<11>=""
         END

         READ ENR_BROUILLARDTETE FROM F.BROUILLARDTETE,W_Cle[1,7]:W_NUMORDRE THEN
	    W_Ligne=ENR_BROUILLARDTETE<1>+1  "R%5"
            W_Debit=ENR_BROUILLARDTETE<2> + ENR_BROUILLARDDETAIL<7>
            W_Credit=ENR_BROUILLARDTETE<3> + ENR_BROUILLARDDETAIL<8>
         END ELSE
            W_Ligne="00001"
            W_Debit= ENR_BROUILLARDDETAIL<7>
            W_Credit= ENR_BROUILLARDDETAIL<8>
         END

         ENR_BROUILLARDTETE<1>=W_Ligne
         ENR_BROUILLARDTETE<2>=W_Debit
         ENR_BROUILLARDTETE<3>=W_Credit
         WRITE ENR_BROUILLARDTETE ON F.BROUILLARDTETE,W_Cle[1,7]:W_NUMORDRE

         WRITE ENR_BROUILLARDDETAIL ON F.BROUILLARDDETAIL,W_Cle[1,7]:W_NUMORDRE:W_Ligne

   REPEAT

STOP
