**********************************************************
*  dition des brouillards
*  Vanessa
*  mai 2003
*  Grgory
*  juin 2004 : gestion de l'impression matricielle
*              directement dans le pr
**********************************************************
* Ouvertures des fichiers

EXECUTE "DATE.FORMAT"
OPEN "","BROUILLARDDETAIL" TO F.BROUILLARDDETAIL ELSE PRINT "OUVERTURE BROUILLARDDETAIL" ;* en lecture
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE PRINT "OUVERTURE CIVILAIDE" ;* en lecture
OPEN "","PLANCOMPTABLE" TO F.PLANCOMPTABLE ELSE PRINT "OUVERTURE PLANCOMPTABLE" ;* en lecture
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO" ;* en lecture
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "OUVERTURE ASSOCIATION" ;* en lecture
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE PRINT "OUVERTURE PARAMENTITECOMPTA" ;* en lecture
*********************************************************
* initialisation des variables

W_RequeteBr=""
W_Nom=""
W_TotalDebit=0
W_TotalCredit=0
W_NumOrdre=1
W_Page=0
W_PremPass="VRAI"
ENR_TEMPO=""
ENR_ASSOCIATION=""
ENR_PARAMENTITECOMPTA=""
*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_User=FIELD(ARGUMENTS,"|",2)
W_Cle=FIELD(ARGUMENTS,"|",3)
W_LigneDeb=FIELD(ARGUMENTS,"|",4)
W_LigneFin=FIELD(ARGUMENTS,"|",5)
W_Imp=FIELD(ARGUMENTS,"|",6)
IF W_Imp="MATRIC" THEN
	W_Entite=FIELD(ARGUMENTS,"|",7)
	W_LigneBrouillard=FIELD(ARGUMENTS,"|",8)
END

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

   EXECUTE "SET-DEC ,"
   EXECUTE "SET-THOUS ."

   * efface l'article de TEMPO
   READ ENR_TEMPO FROM F.TEMPO,"EDITIONBROUILLARD":W_User:W_NumOrdre ELSE ENR_TEMPO=""
   LOOP
   UNTIL ENR_TEMPO = "" DO
      DELETE F.TEMPO,"EDITIONBROUILLARD":W_User:W_NumOrdre
      W_NumOrdre = W_NumOrdre + 1
      READ ENR_TEMPO FROM F.TEMPO,"EDITIONBROUILLARD":W_User:W_NumOrdre ELSE ENR_TEMPO=""
   REPEAT
    
   W_Temp = 'SSELECT BROUILLARDDETAIL AVEC 0 = "':W_Cle:']" AND AVEC LigneBrouillardDetail <= "':W_LigneFin:'" AND AVEC LigneBrouillardDetail >= "':W_LigneDeb:'" PAR LigneBrouillardDetail'

   EXECUTE W_Temp
   EXECUTE 'SAUVE-LISTE W_RequeteBr'
   EXECUTE "LISTE W_RequeteBr" RETURNING MSGCODE

   IF MSGCODE<1> = 209 THEN
      STOP
   END ELSE
      SELECT F.BROUILLARDDETAIL TO W_RequeteBr

      GOSUB 10

   END

   IF W_Imp="MATRIC" THEN
      PRINTER ON
      GOSUB 100
      PRINTER OFF
      PRINTER CLOSE
   END

   EXECUTE "SET-DEC ."
   EXECUTE "SET-THOUS ,"

STOP

*********************************************************
*  Remplit le fichier TEMPO

10

   W_Fini = "FAUX"
   ENR_TEMPO =""
   W_Rang=1
   W_NumOrdre=1

   LOOP
      READNEXT W_Cle FROM W_RequeteBr ELSE W_Fini = "VRAI"
   WHILE W_Fini = "FAUX" DO
 
      READ ENR_BROUILLARDDETAIL FROM F.BROUILLARDDETAIL,W_Cle ELSE ENR_BROUILLARDDETAIL=""

      * ligne
      ENR_TEMPO<W_Rang>=SPACE(1):W_Cle[9,5]

      * date saisie
      ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:SPACE(1):OCONV(ENR_BROUILLARDDETAIL<1>,"D4/")

      * date opration
      ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:SPACE(1):OCONV(ENR_BROUILLARDDETAIL<2>,"D4/")

      * n compte
      IF ENR_BROUILLARDDETAIL<3>="A" THEN
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:SPACE(2):ENR_BROUILLARDDETAIL<4>:SPACE(6)
      END ELSE
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:SPACE(2):ENR_BROUILLARDDETAIL<4>[4,10]:SPACE(1)
      END

      * dsignation
      IF ENR_BROUILLARDDETAIL<3>="A" THEN
         READ ENR_CIVILAIDE FROM F.CIVILAIDE,ENR_BROUILLARDDETAIL<4> ELSE ENR_CIVILAIDE=""
         W_Nom=ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>
         IF LEN(W_Nom) > 20 THEN
            ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:W_Nom[1,20]:" "
         END ELSE
            ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:W_Nom:SPACE(21 - LEN(W_Nom))
         END
      END ELSE
         READ ENR_PLANCOMPTABLE FROM F.PLANCOMPTABLE,ENR_BROUILLARDDETAIL<4> ELSE ENR_PLANCOMPTABLE=""
         IF LEN(ENR_PLANCOMPTABLE<1>) > 20 THEN
            ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:ENR_PLANCOMPTABLE<1>[1,20]:" "
         END ELSE
            ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:ENR_PLANCOMPTABLE<1>:SPACE(21 - LEN(ENR_PLANCOMPTABLE<1>))
         END

      END

      * libell criture
      IF LEN(ENR_BROUILLARDDETAIL<5>) > 20 THEN
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:ENR_BROUILLARDDETAIL<5>[1,20]:" "
      END ELSE
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:ENR_BROUILLARDDETAIL<5>:SPACE(21 - LEN(ENR_BROUILLARDDETAIL<5>))
      END

      * pice
      ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:ENR_BROUILLARDDETAIL<6>:SPACE(11 - LEN(ENR_BROUILLARDDETAIL<6>))

      * dbit
      IF ENR_BROUILLARDDETAIL<7> # "" THEN
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:ENR_BROUILLARDDETAIL<7> "R26(#11)":" "
         W_TotalDebit = W_TotalDebit + ENR_BROUILLARDDETAIL<7>
      END ELSE
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:SPACE(12)
      END

      * crdit
      IF ENR_BROUILLARDDETAIL<8> # "" THEN
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:ENR_BROUILLARDDETAIL<8> "R26(#11)":" "
         W_TotalCredit = W_TotalCredit + ENR_BROUILLARDDETAIL<8>
      END ELSE
         ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:SPACE(12)
      END

      * section analytique
      ENR_TEMPO<W_Rang>=ENR_TEMPO<W_Rang>:SPACE(4):ENR_BROUILLARDDETAIL<11>
        
      W_Rang = W_Rang + 1

      IF MOD(W_Rang,200)=0 AND ENR_TEMPO<1> # "" THEN
         WRITE ENR_TEMPO ON F.TEMPO,"EDITIONBROUILLARD":W_User:W_NumOrdre
         W_NumOrdre=W_NumOrdre+1
         W_Rang=1
         ENR_TEMPO=""
      END


   REPEAT

   ENR_TEMPO<W_Rang> = " "
   W_Rang = W_Rang + 1

   ENR_TEMPO<W_Rang> = SPACE(62):"Total : ":SPACE(24):W_TotalDebit "R26(#11)":SPACE(1):W_TotalCredit "R26(#11)"

   IF ENR_TEMPO<1> # "" THEN
      WRITE ENR_TEMPO ON F.TEMPO,"EDITIONBROUILLARD":W_User:W_NumOrdre
   END

RETURN
**************************
* Impression matricielle *
* (entete page)          *
**************************
100

	W_Adresse=""
	W_Ligne=0
	W_Page=W_Page+1
	PRINT " "
	PRINT " Date : ":OCONV(DATE(),"D4/"):SPACE(105):"Page : ":W_Page
	PRINT " "
	PRINT " "
	PRINT SPACE(31):"EDITION DU BROUILLARD DE SAISIE"
	PRINT " "
	PRINT " "
	READ ENR_ASSOCIATION FROM F.ASSOCIATION,W_Entite ELSE PRINT "LECTURE ASSOCIATION"
	PRINT " Entit juridique : ":ENR_ASSOCIATION<1>
	IF ENR_ASSOCIATION<3>#"" THEN W_Adresse=ENR_ASSOCIATION<3>:" "
	IF ENR_ASSOCIATION<4>#"" THEN W_Adresse=W_Adresse:ENR_ASSOCIATION<4>:" "
	IF ENR_ASSOCIATION<5>#"" THEN W_Adresse=W_Adresse:ENR_ASSOCIATION<5>:" "
	IF ENR_ASSOCIATION<6>#"" THEN W_Adresse=W_Adresse:ENR_ASSOCIATION<6>:" "
	IF W_Adresse#"" THEN
		PRINT SPACE(20):W_Adresse
	END
	IF ENR_ASSOCIATION<7>#"" THEN
		PRINT SPACE(20):ENR_ASSOCIATION<7>
	END
	PRINT SPACE(20):ENR_ASSOCIATION<8>:" ":ENR_ASSOCIATION<9>
	PRINT " "
	W_LigneImp=" Journal          : ":W_LigneBrouillard[1,30]:SPACE(3):"Exercice : ":W_LigneBrouillard[31,6]:SPACE(3)
	READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA, W_Entite ELSE PRINT "LECTURE PARAMENTITECOMPTA"
	IF W_LigneBrouillard[31,6]="N     " THEN
		W_LigneImp=W_LigneImp:"Dbut : ":OCONV(ENR_PARAMENTITECOMPTA<1>,"D4/"):"  ":"Fin : ":OCONV(ENR_PARAMENTITECOMPTA<2>,"D4/"):"    "
	END ELSE
		W_LigneImp=W_LigneImp:"Dbut : ":OCONV(ENR_PARAMENTITECOMPTA<3>,"D4/"):"  ":"Fin : ":OCONV(ENR_PARAMENTITECOMPTA<4>,"D4/"):"    "
	END
	W_LigneImp=W_LigneImp:"Ordre : ":W_LigneBrouillard[37,1]
	PRINT W_LigneImp
	PRINT " "
	PRINT " "
	GOSUB 110
	IF W_PremPass="VRAI" THEN
		W_PremPass="FAUX"
		GOSUB 120
	END

RETURN
************************
* Entete tableau       *
************************
110
	PRINT " LIGNE   DATE      DATE       N. COMPTE   DESIGNATION           LIBELLE ECRITURE     PIECE      DEBIT       CREDIT       ANAL."
	PRINT "        SAISIE    OPERATION"
	PRINT " "
RETURN
************************
* Dtail               *
************************
120
	W_Count=0
	W_NumOrdre=0
	W_LigneMax=45
	W_Sortir="NON"
	LOOP
		W_NumOrdre=W_NumOrdre+1
	WHILE W_Sortir="NON" DO
		READ ENR_TEMPO FROM F.TEMPO, "EDITIONBROUILLARD":W_User:W_NumOrdre THEN
			W_Count=DCOUNT(ENR_TEMPO,CHAR(254))
			FOR I=1 TO W_Count
				IF W_Ligne>W_LigneMax THEN
					PAGE
					GOSUB 100
				END
				PRINT ENR_TEMPO<I,1>
				W_Ligne=W_Ligne+1
			NEXT I
		END ELSE
			W_Sortir="OUI"
		END
	REPEAT
RETURN
