**********************************************************
*  Lettrage automatique des comptes
*  Programme chaine  partir d'un projet VB
*  Vanessa
*  NOVEMBRE 1999

*  MODIF POUR LETTRAGE PROVISOIRE SUR EXERCICE N+1
*  JANVIER 2001
**********************************************************

* Ouvertures des fichiers

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CONSTANTESPAIE" TO F.CONSTANTESPAIE ELSE PRINT "OUVERTURE CONSTANTESPAIE"
OPEN "","DETAILECRITUREAUX" TO F.DETAILECRITUREAUX ELSE PRINT "OUVERTURE DETAILECRITUREAUX" ;* en lecture criture
OPEN "","DETAILECRITUREGENE" TO F.DETAILECRITUREGENE ELSE PRINT "OUVERTURE DETAILECRITUREGENE" ;* en lecture
OPEN "","BALANCEAUX" TO F.BALANCEAUX ELSE PRINT "OUVERTURE BALANCEAUX" ;* en lecture
OPEN "","BALANCEGENE" TO F.BALANCEGENE ELSE PRINT "OUVERTURE BALANCEGENE" ;* en lecture
OPEN "","LETTREAUX" TO F.LETTREAUX ELSE PRINT "OUVERTURE LETTREAUX" ;* en lecture
OPEN "","LETTREGENE" TO F.LETTREGENE ELSE PRINT "OUVERTURE LETTREGENE" ;* en lecture

*********************************************************
* initialisation des variables
W_TabDyn=""
W_Credit=0
W_Debit=0
W_SauveCle=""
W_Premier="FAUX"
W_Requete=""

*********************************************************
* Recuperation des arguments

PROCREAD ARGUMENTS ELSE STOP
W_Entite=FIELD(ARGUMENTS," ",2)
W_Exercice=FIELD(ARGUMENTS," ",3)
W_Aux=FIELD(ARGUMENTS," ",4)
W_Gene=FIELD(ARGUMENTS," ",5)
W_NumPiece=FIELD(ARGUMENTS," ",6)
W_Montant=FIELD(ARGUMENTS," ",7)
W_Solde=FIELD(ARGUMENTS," ",8)
*********************************************************
* PROGRAMME PRINCIPAL

   READ ENR_CONSTANTESPAIE FROM F.CONSTANTESPAIE,"1" ELSE ENR_CONSTANTESPAIE=""

   IF W_NumPiece="1" THEN
      IF W_Aux = "1" THEN
         *  requete si auxiliaire
         IF W_Exercice="N0" THEN
            W_Temp = 'SSELECT DETAILECRITUREAUX AVEC 0 = "':W_Entite:"]":'" AND AVEC ExerciceDetailEcrAux = "':W_Exercice:'" OR = "P0" AND AVEC 11 = "" PAR 3 PAR 5'
         END ELSE
            W_Temp = 'SSELECT DETAILECRITUREAUX AVEC 0 = "':W_Entite:"]":'" AND AVEC 11 = "" PAR 3 PAR 5'
         END
         EXECUTE W_Temp

         W_Auxiliaire="VRAI"

         GOSUB 10

      END

      IF W_Gene = "1" THEN
         *  requete si gnral
         IF W_Exercice="N0" THEN
            W_Temp = 'SSELECT DETAILECRITUREGENE AVEC 0 = "':W_Entite:"]":'" AND AVEC ExerciceDetailEcrGene = "':W_Exercice:'" OR = "P0" AND AVEC 11 = "" AND AVEC CompteLettrableGene = "1" PAR 3 PAR 5'
         END ELSE
            W_Temp = 'SSELECT DETAILECRITUREGENE AVEC 0 = "':W_Entite:"]":'" AND AVEC 11 = "" AND AVEC CompteLettrableGene = "1" PAR 3 PAR 5'
         END
         EXECUTE W_Temp

         W_Auxiliaire="FAUX"

         GOSUB 10

      END
   END

   IF W_Montant="1" THEN
      IF W_Aux = "1" THEN
         *  requete si auxiliaire
         IF W_Exercice="N0" THEN
            W_Temp = 'SSELECT DETAILECRITUREAUX AVEC 0 = "':W_Entite:"]":'" AND AVEC ExerciceDetailEcrAux = "':W_Exercice:'" OR = "P0" AND AVEC 11 = "" PAR 3 PAR 7 PAR 6'
         END ELSE
            W_Temp = 'SSELECT DETAILECRITUREAUX AVEC 0 = "':W_Entite:"]":'" AND AVEC 11 = "" PAR 3 PAR 7 PAR 6'
         END
         EXECUTE W_Temp

         W_Auxiliaire="VRAI"

         GOSUB 30

      END

      IF W_Gene = "1" THEN
         *  requete si gnral
         IF W_Exercice="N0" THEN
            W_Temp = 'SSELECT DETAILECRITUREGENE AVEC 0 = "':W_Entite:"]":'" AND AVEC ExerciceDetailEcrGene = "':W_Exercice:'" OR = "P0" AND AVEC 11 = "" AND AVEC CompteLettrableGene = "1" PAR 3 PAR 7 PAR 6'
         END ELSE
            W_Temp = 'SSELECT DETAILECRITUREGENE AVEC 0 = "':W_Entite:"]":'" AND AVEC 11 = "" AND AVEC CompteLettrableGene = "1" PAR 3 PAR 7 PAR 6'
         END
         EXECUTE W_Temp

         W_Auxiliaire="FAUX"

         GOSUB 30

      END
   END

STOP

*********************************************************
* Boucle du dtail des critures

10

   W_End="FAUX"
   W_SauvePiece = ""
   W_SauveCpte = ""

   LOOP
      READNEXT W_Cle ELSE W_End = "VRAI"

   WHILE W_End = "FAUX" DO
      IF W_Auxiliaire = "VRAI" THEN
         READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_Cle ELSE ENR_DETAILECRITUREAUX=""
         W_TabDyn=ENR_DETAILECRITUREAUX 
      END ELSE
         READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_Cle ELSE ENR_DETAILECRITUREGENE=""
      	 W_TabDyn=ENR_DETAILECRITUREGENE
      END

      IF W_Exercice#"N0" AND ENR_CONSTANTESPAIE<9>#"12328" THEN
	 IF W_TabDyn<2><"12420" THEN
	     IF W_TabDyn<6>#"" THEN W_TabDyn<6>=INT((W_TabDyn<6>/6.55957)+1/2)
   	     IF W_TabDyn<7>#"" THEN W_TabDyn<7>=INT((W_TabDyn<7>/6.55957)+1/2)
	 END
      END

      IF W_SauveCpte=W_TabDyn<3> THEN

         IF W_Solde = "1" THEN
            IF W_Cle[6,2] = "N0" OR W_Cle[6,2] = "P0" THEN
               IF W_Auxiliaire = "VRAI" THEN
                  READ ENR_BALANCEAUX FROM F.BALANCEAUX,"N0":W_Entite:W_SauveCpte ELSE ENR_BALANCEAUX=""
                  W_TabBalance = ENR_BALANCEAUX
               END ELSE
                  READ ENR_BALANCEGENE FROM F.BALANCEGENE,"N0":W_SauveCpte ELSE ENR_BALANCEGENE=""
                  W_TabBalance = ENR_BALANCEGENE
               END

               IF W_TabBalance<1>=W_TabBalance<2> THEN
                  IF W_TabDyn<6>#"" THEN
                     W_Debit=W_Debit + W_TabDyn<6>
                  END
                  IF W_TabDyn<7>#"" THEN
                     W_Credit=W_Credit + W_TabDyn<7>
                  END
                  * sauvegarde la cl
                  W_Count=DCOUNT(W_SauveCle,CHAR(254))
                  W_SauveCle<W_Count+1>=W_Cle
 
               END ELSE
                  IF W_TabDyn<5> # "" THEN
                     * rupture sur le numro de pice
                     IF W_SauvePiece # W_TabDyn<5> AND W_Premier = "VRAI" THEN

                        IF W_Debit=W_Credit THEN
                           GOSUB 20
   	                END

                        W_SauvePiece = W_TabDyn<5>
                        W_Debit=0
                        W_Credit=0
                        W_SauveCle=""

                     END
 
                     W_Premier="VRAI"

                     IF W_TabDyn<6>#"" THEN
                        W_Debit=W_Debit + W_TabDyn<6>
                     END
                     IF W_TabDyn<7>#"" THEN
                        W_Credit=W_Credit + W_TabDyn<7>
                     END

                     * sauvegarde la cl
                     W_Count=DCOUNT(W_SauveCle,CHAR(254))
                     W_SauveCle<W_Count+1>=W_Cle
                  END
               END
            END

         * si pas sold
         END ELSE

            IF W_TabDyn<5> # "" THEN
               * rupture sur le numro de pice
               IF W_SauvePiece # W_TabDyn<5> AND W_Premier = "VRAI" THEN
                  IF W_Debit=W_Credit THEN
                     GOSUB 20
	          END

                  W_SauvePiece = W_TabDyn<5>
                  W_Debit=0
                  W_Credit=0
                  W_SauveCle=""

               END

               W_Premier="VRAI"

               IF W_TabDyn<6>#"" THEN
                  W_Debit=W_Debit + W_TabDyn<6>
               END
               IF W_TabDyn<7>#"" THEN
                  W_Credit=W_Credit + W_TabDyn<7>
               END

               * sauvegarde la cl
               W_Count=DCOUNT(W_SauveCle,CHAR(254))
               W_SauveCle<W_Count+1>=W_Cle
            END
         END

      END ELSE

         IF W_Debit=W_Credit AND W_Premier = "VRAI" THEN
            GOSUB 20
	 END

         W_SauveCpte=W_TabDyn<3>
         W_SauvePiece = W_TabDyn<5>
         W_Debit=0
         W_Credit=0
         W_SauveCle=""
         W_Premier="VRAI"

         IF W_TabDyn<6>#"" THEN
            W_Debit=W_Debit + W_TabDyn<6>
         END
         IF W_TabDyn<7>#"" THEN
            W_Credit=W_Credit + W_TabDyn<7>
         END

         * sauvegarde la cl
         W_Count=DCOUNT(W_SauveCle,CHAR(254))
         W_SauveCle<W_Count+1>=W_Cle

      END

   REPEAT

   IF W_Debit=W_Credit THEN
      GOSUB 20
   END

RETURN

*********************************************************
* Affectation de la lettre

20

   W_SurDeuxExer="FAUX"
   W_SurExerN="FAUX"
   W_SurExerN1="FAUX"
   W_DernLettre=""
   W_Lettre=""
   W_TabBalance=""

   IF W_Exercice="N0" THEN

      IF W_Auxiliaire = "VRAI" THEN
         READ ENR_LETTREAUX FROM F.LETTREAUX,W_Exercice:W_Entite:W_SauveCpte ELSE ENR_LETTREAUX=""
         W_TabBalance = ENR_LETTREAUX
      END ELSE
         READ ENR_LETTREGENE FROM F.LETTREGENE,W_Exercice:W_SauveCpte ELSE ENR_LETTREGENE=""
         W_TabBalance = ENR_LETTREGENE
      END
   END ELSE

      GOSUB 40

      IF W_SurDeuxExer="VRAI" OR W_SurExerN="VRAI" THEN

         IF W_Auxiliaire = "VRAI" THEN
            READ ENR_LETTREAUX FROM F.LETTREAUX,"N0":W_Entite:W_SauveCpte ELSE ENR_LETTREAUX=""
            W_TabBalance = ENR_LETTREAUX
         END ELSE
            READ ENR_LETTREGENE FROM F.LETTREGENE,"N0":W_SauveCpte ELSE ENR_LETTREGENE=""
            W_TabBalance = ENR_LETTREGENE
         END
      END ELSE
         IF W_SurExerN1="VRAI" THEN
            IF W_Auxiliaire = "VRAI" THEN
               READ ENR_LETTREAUX FROM F.LETTREAUX,"N1":W_Entite:W_SauveCpte ELSE ENR_LETTREAUX=""
               W_TabBalance = ENR_LETTREAUX
            END ELSE
               READ ENR_LETTREGENE FROM F.LETTREGENE,"N1":W_SauveCpte ELSE ENR_LETTREGENE=""
               W_TabBalance = ENR_LETTREGENE
            END
         END
      END
   END

   IF W_SurDeuxExer="VRAI" OR W_SurExerN1="VRAI" THEN
      W_DernLettre=W_TabBalance<2>[1,1]
   END ELSE
      W_DernLettre=W_TabBalance<1>
   END

   IF W_DernLettre="" THEN
      W_Lettre="A"
   END ELSE
      IF SEQ(W_DernLettre)="90" THEN
	 W_Lettre="a"
      END ELSE
         IF SEQ(W_DernLettre)="122" THEN
	    W_Lettre="A"
         END ELSE
      	    W_Lettre=CHAR(SEQ(W_DernLettre)+1)
	 END
      END
   END

   W_CountCle=DCOUNT(W_SauveCle,CHAR(254))

   FOR l=1 TO W_CountCle
      IF W_Auxiliaire="VRAI" THEN
         READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_SauveCle<l> ELSE ENR_DETAILECRITUREAUX=""

         IF W_SurDeuxExer="VRAI" OR W_SurExerN1="VRAI" THEN
            ENR_DETAILECRITUREAUX<11>=W_Lettre:"1"
         END ELSE
            ENR_DETAILECRITUREAUX<11>=W_Lettre
         END

	 WRITE ENR_DETAILECRITUREAUX ON F.DETAILECRITUREAUX,W_SauveCle<l>
      END ELSE
         READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_SauveCle<l> ELSE ENR_DETAILECRITUREGENE=""

         IF W_SurDeuxExer="VRAI" OR W_SurExerN1="VRAI" THEN
            ENR_DETAILECRITUREGENE<11>=W_Lettre:"1"
         END ELSE
            ENR_DETAILECRITUREGENE<11>=W_Lettre
         END

	 WRITE ENR_DETAILECRITUREGENE ON F.DETAILECRITUREGENE,W_SauveCle<l>
      END

   NEXT l

   IF W_Auxiliaire="VRAI" THEN
      IF W_SurDeuxExer="VRAI" OR W_SurExerN1="VRAI" THEN
         ENR_LETTREAUX<2>=W_Lettre:"1"
      END ELSE
         ENR_LETTREAUX<1>=W_Lettre
      END

      IF W_Exercice="N0" THEN
         WRITE ENR_LETTREAUX ON F.LETTREAUX,W_Exercice:W_Entite:W_SauveCpte
      END ELSE
         IF W_SurDeuxExer="VRAI" OR W_SurExerN="VRAI" THEN
            WRITE ENR_LETTREAUX ON F.LETTREAUX,"N0":W_Entite:W_SauveCpte
         END ELSE
            IF W_SurExerN1="VRAI" THEN
               WRITE ENR_LETTREAUX ON F.LETTREAUX,"N1":W_Entite:W_SauveCpte
            END
         END
      END
   END ELSE
      IF W_SurDeuxExer="VRAI" OR W_SurExerN1="VRAI" THEN
         ENR_LETTREGENE<2>=W_Lettre:"1"
      END ELSE
         ENR_LETTREGENE<1>=W_Lettre
      END

      IF W_Exercice="N0" THEN
         WRITE ENR_LETTREGENE ON F.LETTREGENE,W_Exercice:W_SauveCpte
      END ELSE
         IF W_SurDeuxExer="VRAI" OR W_SurExerN="VRAI" THEN
            WRITE ENR_LETTREGENE ON F.LETTREGENE,"N0":W_SauveCpte
         END ELSE
            IF W_SurExerN1="VRAI" THEN
               WRITE ENR_LETTREGENE ON F.LETTREGENE,"N1":W_SauveCpte
            END
         END 
      END
   END

RETURN

*********************************************************
* lettrage  partir des montants

30

   W_End="FAUX"
   W_SauveCpte = ""
   W_Premier="FAUX"
   i=1
   W_TabDyn="" 
   W_Requete=""

   LOOP
      READNEXT W_Cle ELSE W_End = "VRAI"
   WHILE W_End = "FAUX" DO
      IF W_Auxiliaire = "VRAI" THEN
         READ ENR_DETAILECRITUREAUX FROM F.DETAILECRITUREAUX,W_Cle ELSE ENR_DETAILECRITUREAUX=""
         W_TabDyn=ENR_DETAILECRITUREAUX 
      END ELSE
         READ ENR_DETAILECRITUREGENE FROM F.DETAILECRITUREGENE,W_Cle ELSE ENR_DETAILECRITUREGENE=""
      	 W_TabDyn=ENR_DETAILECRITUREGENE
      END
      W_SauveCle=""

      IF W_SauveCpte="" THEN
         W_SauveCpte=W_TabDyn<3>
      END

      IF W_SauveCpte=W_TabDyn<3> THEN
         W_Requete<i,1>=W_Cle
         W_Requete<i,2>=W_TabDyn<6>
         W_Requete<i,3>=W_TabDyn<7>
	 W_Requete<i,4>=W_TabDyn<11>
         i=i+1

      END ELSE
         W_Debit=0
         W_Credit=0
	 W_Passe="FAUX"
         W_SauveCle=""

         * pour chaque criture de dbit non lettre, recherche l'criture
         * de crdit non lettre de mme montant
	 i=1
	 LOOP
         WHILE W_Requete<i,1> # "" DO
 	    IF W_Requete<i,2> # "" AND W_Requete<i,4>="" THEN
               W_Passe="FAUX"
	       W_Debit=W_Requete<i,2>
               W_SauveCle=""
               W_SauveCle<1>=W_Requete<i,1>
	       j=1
    	       LOOP
               WHILE W_Requete<j,1> # "" DO
	          IF W_Requete<j,3> # "" AND W_Requete<j,4>="" THEN

                     IF W_Debit=W_Requete<j,3> THEN
		        W_SauveCle<2>=W_Requete<j,1>
                        GOSUB 20
		        W_Passe="VRAI"
			W_Requete<j,4>="A"
 			W_Requete<i,4>="A"
			EXIT
                     END
	          END 
	          j=j+1
               REPEAT

               * pour chaque criture de dbit non lettre, recherche la combinaison de 2 critures 
               * de crdit non lettres dont la somme fait le montant du dbit
               IF W_Passe="FAUX" THEN
                  W_Credit=0
		  W_SauveCredit=0
	          j=1
    	          LOOP
                  WHILE W_Requete<j,1> # "" DO
	             IF W_Requete<j,3> # "" AND W_Requete<j,4>="" THEN
			W_Credit=W_Requete<j,3>
			k=j+1
			LOOP
                        WHILE W_Requete<k,1> # "" DO
	                   IF W_Requete<k,3> # "" AND W_Requete<k,4>="" THEN
     			      W_SauveCredit=0
			      W_SauveCredit=W_Credit+W_Requete<k,3>
                              IF W_Debit=W_SauveCredit THEN
		                 W_SauveCle<2>=W_Requete<j,1>
		                 W_SauveCle<3>=W_Requete<k,1>
                                 GOSUB 20
				 W_Requete<j,4>="A"
 				 W_Requete<i,4>="A"
 				 W_Requete<k,4>="A"
                                 W_Passe="VRAI"
				 EXIT
                              END
			   END
			   k=k+1
			REPEAT
	             END   
                     IF W_Passe = "VRAI" THEN
                        EXIT
		     END
	             j=j+1
                  REPEAT
               END 

            END 
            i=i+1
         REPEAT

         * pour chaque criture de crdit non lettre, recherche la combinaison de 2 critures 
         * de dbit non lettres dont la somme fait le montant du crdit
         W_Credit=0
         W_Debit=0
         W_SauveDebit=0
         W_SauveCle=""
         W_Passe = "FAUX"
	 j=1
    	 LOOP
	 WHILE W_Requete<j,1> # "" DO
	    IF W_Requete<j,3> # "" AND W_Requete<j,4>="" THEN
	       W_Credit=W_Requete<j,3>
               W_SauveCle<1>=W_Requete<j,1>
      	       k=1
	       LOOP
	       WHILE W_Requete<k,1> # "" DO
	          IF W_Requete<k,2> # "" AND W_Requete<k,4>="" THEN
		     W_Debit=W_Requete<k,2>
                     i=k+1
                     LOOP
		     WHILE W_Requete<i,2> # "" DO
			IF W_Requete<i,2> # "" AND W_Requete<i,4>="" THEN
     		           W_SauveDebit=0
		           W_SauveDebit=W_Debit+W_Requete<i,2>
                           IF W_Credit=W_SauveDebit THEN
                              W_SauveCle<2>=W_Requete<k,1>
	                      W_SauveCle<3>=W_Requete<i,1>
                              GOSUB 20
			      W_Requete<j,4>="A"
 			      W_Requete<i,4>="A"
 			      W_Requete<k,4>="A"
			      W_Passe = "VRAI"
			      EXIT
                           END
			END
                        i=i+1
		     REPEAT
                  END
                  IF W_Passe = "VRAI" THEN
                     EXIT
		  END
	          k=k+1
	       REPEAT
            END   
	    j=j+1
         REPEAT

         W_SauveCpte=W_TabDyn<3>
         i=1
         W_Requete=""
         W_Requete<i,1>=W_Cle
         W_Requete<i,2>=W_TabDyn<6>
         W_Requete<i,3>=W_TabDyn<7>
	 W_Requete<i,4>=W_TabDyn<11>
         i=i+1
      END

   REPEAT


   W_Debit=0
   W_Credit=0
   W_Passe="FAUX"
   W_SauveCle=""

   * pour chaque criture de dbit non lettre, recherche l'criture
   * de crdit non lettre de mme montant
   i=1
   LOOP
   WHILE W_Requete<i,1> # "" DO

      IF W_Requete<i,2> # "" AND W_Requete<i,4>="" THEN
         W_Passe="FAUX"
	 W_Debit=W_Requete<i,2>
         W_SauveCle=""
         W_SauveCle<1>=W_Requete<i,1>
	 j=1
    	 LOOP
         WHILE W_Requete<j,1> # "" DO
            IF W_Requete<j,3> # "" AND W_Requete<j,4>="" THEN

               IF W_Debit=W_Requete<j,3> THEN
                  W_SauveCle<2>=W_Requete<j,1>
                  GOSUB 20
		  W_Passe="VRAI"
		  W_Requete<j,4>="A"
 		  W_Requete<i,4>="A"
		  EXIT
               END
	    END 
	    j=j+1
         REPEAT

         * pour chaque criture de dbit non lettre, recherche la combinaison de 2 critures 
         * de crdit non lettres dont la somme fait le montant du dbit
         IF W_Passe="FAUX" THEN
            W_Credit=0
            W_SauveCredit=0
	    j=1
    	    LOOP
            WHILE W_Requete<j,1> # "" DO
               IF W_Requete<j,3> # "" AND W_Requete<j,4>="" THEN
		  W_Credit=W_Requete<j,3>
    		  k=j+1
		  LOOP
                  WHILE W_Requete<k,1> # "" DO
                     IF W_Requete<k,3> # "" AND W_Requete<k,4>="" THEN
       	                W_SauveCredit=0
		        W_SauveCredit=W_Credit+W_Requete<k,3>
                        IF W_Debit=W_SauveCredit THEN
		           W_SauveCle<2>=W_Requete<j,1>
		           W_SauveCle<3>=W_Requete<k,1>
                           GOSUB 20
			   W_Requete<j,4>="A"
 			   W_Requete<i,4>="A"
 			   W_Requete<k,4>="A"
                           W_Passe="VRAI"
		           EXIT
                        END
		     END
		     k=k+1
                  REPEAT
               END   
               IF W_Passe = "VRAI" THEN
                  EXIT
	       END
	       j=j+1
            REPEAT
         END 

      END 
      i=i+1
   REPEAT

   * pour chaque criture de crdit non lettre, recherche la combinaison de 2 critures 
   * de dbit non lettres dont la somme fait le montant du crdit
   W_Credit=0
   W_Debit=0
   W_SauveDebit=0
   W_SauveCle=""
   W_Passe = "FAUX"
   j=1
   LOOP
   WHILE W_Requete<j,1> # "" DO
      IF W_Requete<j,3> # "" AND W_Requete<j,4>="" THEN
	 W_Credit=W_Requete<j,3>
         W_SauveCle<1>=W_Requete<j,1>
      	 k=1
	 LOOP
	 WHILE W_Requete<k,1> # "" DO
	    IF W_Requete<k,2> # "" AND W_Requete<k,4>="" THEN
	       W_Debit=W_Requete<k,2>
               i=k+1
               LOOP
	       WHILE W_Requete<i,2> # "" DO
		  IF W_Requete<i,2> # "" AND W_Requete<i,4>="" THEN
     		     W_SauveDebit=0
		     W_SauveDebit=W_Debit+W_Requete<i,2>
                     IF W_Credit=W_SauveDebit THEN
                        W_SauveCle<2>=W_Requete<k,1>
	                W_SauveCle<3>=W_Requete<i,1>
                        GOSUB 20
			W_Requete<j,4>="A"
 		        W_Requete<i,4>="A"
 			W_Requete<k,4>="A"
			W_Passe = "VRAI"
			EXIT
                     END
		  END
                  i=i+1
	       REPEAT
            END
            IF W_Passe = "VRAI" THEN
               EXIT
	    END
	    k=k+1
	 REPEAT
      END   
      j=j+1
   REPEAT

RETURN

*********************************************************
* recherche si critures sont sur N ou N+1

40

   W_N=0
   W_N1=0
   W_SurDeuxExer="FAUX"
   W_SurExerN="FAUX"
   W_SurExerN1="FAUX"

   W_CountCle=DCOUNT(W_SauveCle,CHAR(254))

   FOR l = 1 TO W_CountCle

      IF W_SauveCle<l>[6,2]="N0" OR W_SauveCle<l>[6,2]="P0" THEN
         W_N=1
      END ELSE
         IF W_SauveCle<l>[6,2]="N1" OR W_SauveCle<l>[6,2]="P1" THEN
            W_N1=1
         END
      END
   NEXT l

   IF W_N=1 AND W_N1=1 THEN
      W_SurDeuxExer="VRAI"
   END ELSE
      IF W_N=1 AND W_N1=0 THEN
         W_SurExerN="VRAI"
      END ELSE
         IF W_N=0 AND W_N1=1 THEN
            W_SurExerN1="VRAI"
         END
      END
   END

RETURN
