**********************************************************
*  Affectation en compta des critures provisoires vers 
*  des critures dfinitives
*  Vanessa
*  juin 2006
**********************************************************

* 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 "","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 "","JOURNALPROVISOIRE" TO F.JOURNALPROVISOIRE ELSE PRINT "OUVERTURE JOURNALPROVISOIRE" ;* en lecture criture
OPEN "","PARAMENTITECOMPTA" TO F.PARAMENTITECOMPTA ELSE PRINT "OUVERTURE PARAMENTITECOMPTA" ;* en lecture

*********************************************************
* initialisation des variables
W_TabDyn = ""
W_Matrice = ""
W_SectAnal=""
W_SauveCle=""
W_RequeteAct=""
W_SauveRemise=""
W_SauveDate=""
W_TabCentral=""
iCentral=1
*********************************************************
*  Rcupration des arguments

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

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

   READ ENR_PARAMENTITECOMPTA FROM F.PARAMENTITECOMPTA,W_Sequence[1,3] ELSE ENR_PARAMENTITECOMPTA=""
   IF ENR_PARAMENTITECOMPTA<16>="" THEN
	W_CpteCentral="4111100000"
   END ELSE
	W_CpteCentral=ENR_PARAMENTITECOMPTA<16>
   END

   W_CountSeq = LEN(W_Sequence)

   i=1
   LOOP
   UNTIL i >= W_CountSeq DO

      W_Matrice=""
      W_TabCentral=""
      iCentral=1

      W_CleSeq = W_Sequence[i,8]
      W_CleSeq = W_CleSeq[1,5]:"P":W_CleSeq[7,1]

      W_Exer=W_CleSeq[6,2]

      READU ENR_JOURNALPROVISOIRE FROM F.JOURNALPROVISOIRE,W_CleSeq[1,5] ELSE ENR_JOURNALPROVISOIRE=""
      READ ENR_JOURNAL FROM F.JOURNAL,W_CleSeq[1,5] ELSE ENR_JOURNAL=""

      IF W_Exer="P0" THEN
	 W_Att=4
      END ELSE
	 W_Att=6
      END

      FOR j = 1 TO ENR_JOURNALPROVISOIRE<W_Att>
	 W_CleDetail = W_CleSeq:j "R%5"
         READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_CleDetail THEN
               GOSUB 20
         END

         DELETE F.DETAILECRITUREGENE,W_CleDetail
      NEXT j
      ENR_JOURNALPROVISOIRE<W_Att>=0
      ENR_JOURNALPROVISOIRE<W_Att+4>=0

      IF W_Exer="P0" THEN
	 W_Att=5
      END ELSE
	 W_Att=7
      END

      FOR j = 1 TO ENR_JOURNALPROVISOIRE<W_Att>
	 W_CleDetail = W_CleSeq:j "R%5"
         READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_CleDetail THEN
               GOSUB 10
         END

         DELETE F.DETAILECRITUREAUX,W_CleDetail
      NEXT j
      ENR_JOURNALPROVISOIRE<W_Att>=0
      ENR_JOURNALPROVISOIRE<W_Att+4>=0

      IF W_Exer="P0" THEN
      	ENR_JOURNALPROVISOIRE<19,1>=0
      	ENR_JOURNALPROVISOIRE<20,1>=0
      END ELSE
      	ENR_JOURNALPROVISOIRE<19,2>=0
      	ENR_JOURNALPROVISOIRE<20,2>=0
      END

      WRITE ENR_JOURNAL ON F.JOURNAL,W_CleSeq[1,5]
      WRITE ENR_JOURNALPROVISOIRE ON F.JOURNALPROVISOIRE,W_CleSeq[1,5]

      W_Trouve="FAUX"
      FOR j=4 TO 11
	IF ENR_JOURNALPROVISOIRE<j>#0 AND ENR_JOURNALPROVISOIRE<j>#"" THEN
		W_Trouve="VRAI"
	END
      NEXT j

      IF W_Trouve="FAUX" THEN
         DELETE F.JOURNALPROVISOIRE,W_CleSeq[1,5]
      END

      i=i+9
   REPEAT

STOP

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

10

   * s'il s'agit de l'exercice N
   IF W_CleDetail[6,2] = "P0" THEN
      IF ENR_JOURNAL<5> = "" THEN
	 ENR_JOURNAL<5>="00001"
         W_CleEcriture = W_CleDetail[1,5]:"N000001"
      END ELSE
	 ENR_JOURNAL<5>=ENR_JOURNAL<5>+1 "R%5"
         W_CleEcriture = W_CleDetail[1,5]:"N0":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_CleDetail[1,5]:"N100001"
      END ELSE
	 ENR_JOURNAL<7>=ENR_JOURNAL<7>+1 "R%5"
         W_CleEcriture = W_CleDetail[1,5]:"N1":ENR_JOURNAL<7>
      END
   END

   * MAJ ATT 12 de DETAILECRITUREAUX
   IF ENR_DETAILECRITUREAUX<12> # "" THEN
	W_CountMV=DCOUNT(ENR_DETAILECRITUREAUX<12>,CHAR(253))
	FOR k=1 TO W_CountMV
		W_CountTab=DCOUNT(W_TabCentral,CHAR(254))
		FOR l=1 TO W_CountTab
			IF ENR_DETAILECRITUREAUX<12,k>=W_TabCentral<l,1> THEN
				ENR_DETAILECRITUREAUX<12,k>=W_TabCentral<l,2>
				EXIT
			END
		NEXT l
	NEXT k
   END

   WRITE ENR_DETAILECRITUREAUX ON F.DETAILECRITUREAUX,W_CleEcriture

   * lecture du fichier BALANCEAUX
   W_CleBalance = W_CleEcriture[6,2]:W_CleDetail[1,3]:ENR_DETAILECRITUREAUX<3>
   READ ENR_BALANCEAUX FROM F.BALANCEAUX,W_CleBalance ELSE ENR_BALANCEAUX =""
   W_CountMV=DCOUNT(ENR_BALANCEAUX<9>,CHAR(253))
   FOR k=1 TO W_CountMV
	IF ENR_BALANCEAUX<9,k>=W_CleDetail THEN
		ENR_BALANCEAUX<9,k>=W_CleEcriture
		EXIT
	END
   NEXT k

   WRITE ENR_BALANCEAUX ON F.BALANCEAUX,W_CleBalance

RETURN

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

20

   * exercice N
   IF W_CleDetail[6,2] = "P0" THEN
      IF ENR_JOURNAL<4> = "" THEN
	 ENR_JOURNAL<4>="00001"
         W_CleEcriture = W_CleDetail[1,5]:"N000001"
      END ELSE
	 ENR_JOURNAL<4>=ENR_JOURNAL<4>+1 "R%5"
         W_CleEcriture = W_CleDetail[1,5]:"N0":ENR_JOURNAL<4>
      END
   END ELSE
      * exercice N+1
      IF ENR_JOURNAL<6> = "" THEN
	 ENR_JOURNAL<6>="00001"
         W_CleEcriture = W_CleDetail[1,5]:"N100001"
      END ELSE
	 ENR_JOURNAL<6>=ENR_JOURNAL<6>+1 "R%5"
         W_CleEcriture = W_CleDetail[1,5]:"N1":ENR_JOURNAL<6>
      END
   END

   WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENE,W_CleEcriture

   IF ENR_DETAILECRITUREGENE<3>[4,10]=W_CpteCentral THEN
	W_TabCentral<iCentral,1>=W_CleDetail
	W_TabCentral<iCentral,2>=W_CleEcriture
	iCentral=iCentral+1
   END

   * lecture et MAJ du fichier BALANCEGENE
   W_CleBalance = W_CleEcriture[6,2]:ENR_DETAILECRITUREGENE<3>
   READ ENR_BALANCEGENE FROM F.BALANCEGENE,W_CleBalance ELSE ENR_BALANCEGENE =""
   W_CountMV=DCOUNT(ENR_BALANCEGENE<9>,CHAR(253))
   FOR k=1 TO W_CountMV
	IF ENR_BALANCEGENE<9,k>=W_CleDetail THEN
		ENR_BALANCEGENE<9,k>=W_CleEcriture
		EXIT
	END
   NEXT k

   WRITE ENR_BALANCEGENE ON F.BALANCEGENE,W_CleBalance

   * Lecture et MAJ du fichier BALANCEANAL
   IF ENR_DETAILECRITUREGENE<3>[4,1]="6" OR ENR_DETAILECRITUREGENE<3>[4,1]="7" THEN
      W_CleBalance = W_CleEcriture[6,2]:ENR_DETAILECRITUREGENE<3>:ENR_DETAILECRITUREGENE<10>
      READ ENR_BALANCEANAL FROM F.BALANCEANAL,W_CleBalance ELSE ENR_BALANCEANAL =""
      W_CountMV=DCOUNT(ENR_BALANCEANAL<9>,CHAR(253))
      FOR k=1 TO W_CountMV
	IF ENR_BALANCEANAL<9,k>=W_CleDetail THEN
		ENR_BALANCEANAL<9,k>=W_CleEcriture
		EXIT
	END
      NEXT k
      WRITE ENR_BALANCEANAL ON F.BALANCEANAL,W_CleBalance
   END

RETURN
