* Moulinette qui compare les prises en charge sur les factures bnficiaires avec les 
* factures caisses
*****************************************************
* COPIER DICTIONNAIRE DE FACTURORG DANS CELUI DE DG *
*****************************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","FACTURAIDE" TO F.FACTURAIDE ELSE PRINT "OUVERTURE FACTURAIDE" ;* en lecture
OPEN "","FACTURORG" TO F.FACTURORG ELSE PRINT "OUVERTURE FACTURORG" ;* en lecture
OPEN "","DG" TO F.DG ELSE PRINT "OUVERTURE DG" ;* en lecture
OPEN "","TEMPO" TO F.TEMPO ELSE PRINT "OUVERTURE TEMPO" ;* en lecture

   EXECUTE 'VIDER-FICHIER DG'
   
   ENR_TEMPO=""
   j=1
   W_Sauve = ""
   W_MontantFactAide=0
   W_MontantFactOrg=0

   PRINT "Saisissez la priode sous la forme AAAAMM"
   INPUT W_Periode

   EXECUTE 'SELECT FACTURORG AVEC 10 = "':W_Periode:'" AND AVEC TypeActiviteFacturOrg = "M"'
   EXECUTE 'SAUVE-LISTE W_RequeteFacturOrg'
   EXECUTE "LISTE W_RequeteFacturOrg" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FACTURORG TO W_RequeteFacturOrg

      W_Fin="FAUX"

      LOOP
         READNEXT W_Cle FROM W_RequeteFacturOrg ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         READ ENR_FACTURORG FROM F.FACTURORG,W_Cle ELSE ENR_FACTURORG=""

         WRITE ENR_FACTURORG ON F.DG,W_Cle

      REPEAT
   END

   EXECUTE 'SELECT FACTURAIDE AVEC PeriodeCleFactAide = "':W_Periode:'" AND AVEC ActiviteFact = "M" PAR-DECR 0' 
   EXECUTE 'SAUVE-LISTE W_RequeteFacturAide'
   EXECUTE "LISTE W_RequeteFacturAide" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.FACTURAIDE TO W_RequeteFacturAide

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleAide FROM W_RequeteFacturAide ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         READ ENR_FACTURAIDE FROM F.FACTURAIDE,W_CleAide ELSE ENR_FACTURAIDE=""

         W_MontantFactAide = 0
         IF W_Sauve # W_CleAide[1,25] THEN
            W_Sauve = W_CleAide[1,25]

            W_Count=DCOUNT(ENR_FACTURAIDE<2>,CHAR(253))

            FOR i=1 TO W_Count

               IF ENR_FACTURAIDE<2,i>[1,15] = "PRISE EN CHARGE" AND ENR_FACTURAIDE<14,i>= "0" THEN
                  W_MontantFactAide=W_MontantFactAide+ENR_FACTURAIDE<5,i>
               END

            NEXT i

            W_MontantFactOrg = 0

            EXECUTE 'SELECT DG AVEC 10 = "':W_Periode:'" AND AVEC TypeActiviteFacturOrg = "M" AND AVEC CivilAideFacturOrg = "':W_CleAide[1,5]:'"' 
            EXECUTE 'SAUVE-LISTE W_RequeteOrg'
            EXECUTE "LISTE W_RequeteOrg" RETURNING MSGCODE

            IF MSGCODE<1> # 209 THEN

               SELECT F.DG TO W_RequeteOrg
 
               W_End="FAUX"

               LOOP
                  READNEXT W_CleOrg FROM W_RequeteOrg ELSE W_End = "VRAI"
               WHILE W_End = "FAUX" DO
                  READ ENR_FACTURORG FROM F.DG,W_CleOrg ELSE ENR_FACTURORG=""

                  W_Count=DCOUNT(ENR_FACTURORG<4>,CHAR(253))


                  FOR i=1 TO W_Count
                     W_MontantFactOrg=W_MontantFactOrg+ENR_FACTURORG<4,i>
                  NEXT i

                  DELETE F.DG,W_CleOrg

               REPEAT
            END

            IF ABS(W_MontantFactOrg) # ABS(W_MontantFactAide) THEN
               ENR_TEMPO<j>=W_CleAide
               j=j+1
            END

         END
 
      REPEAT
   END

   WRITE ENR_TEMPO ON F.TEMPO,"FACTURAIDEORG"


   EXECUTE 'SELECT DG'
   EXECUTE 'SAUVE-LISTE W_RequeteDG'
   EXECUTE "LISTE W_RequeteDG" RETURNING MSGCODE

   IF MSGCODE<1> # 209 THEN

      SELECT F.DG TO W_RequeteDG

      W_Fin="FAUX"

      LOOP
         READNEXT W_CleDG FROM W_RequeteDG ELSE W_Fin = "VRAI"
      WHILE W_Fin = "FAUX" DO
         PRINT "FACTURORG RESTANTS"
         PRINT W_CleDG
         
      REPEAT
   END

STOP
