*
* GENERATION REGULARISATION DE CHARGES
*
W_TAUXSAL="800"
W_TAUXPAT="1160"
W_PERDEB="200101"
W_PERFIN="200102"

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","REGULCHARGE" TO F.REGULCHARGE ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","ELTSPARTEMP" TO F.ELTSPARTEMP ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","COMPLFACT" TO F.COMPLFACT ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE STOP

ENR_RUBCHARGE=""
ENR_RUBCHARGE<1>="REGULARISATION DE CHARGES"
ENR_RUBCHARGE<2>="001"
ENR_RUBCHARGE<10>="0"
ENR_RUBCHARGE<11>="%"
ENR_RUBCHARGE<14>="0"
ENR_RUBCHARGE<15>="%"
ENR_RUBCHARGE<16>="02"
ENR_RUBCHARGE<18>="1"
ENR_RUBCHARGE<19>="0"
ENR_RUBCHARGE<20>="4710000000"
ENR_RUBCHARGE<21>="4710000000"
ENR_RUBCHARGE<22>="4710000000"
ENR_RUBCHARGE<23>="4710000000"
ENR_RUBCHARGE<24>="1"
ENR_RUBCHARGE<25>="0"
ENR_RUBCHARGE<27>="0"
ENR_RUBCHARGE<28>="0"
ENR_RUBCHARGE<29>="0"
WRITE ENR_RUBCHARGE ON F.RUBCHARGE,"901"

EXECUTE 'SELECT CONTRAT AVEC 2 = "002" AND AVEC 1 # "02" AND AVEC 65 # "O" AND AVEC DatFinContrat = "" OR >= "01/03/2001"'
 
W_FINI="NON"
LOOP
 READNEXT W_CLE ELSE W_FINI="OUI"
 UNTIL W_FINI="OUI" DO
  BaseRegChg=0
  READ ENR_CONTRAT FROM F.CONTRAT,W_CLE ELSE ENR_CONTRAT=""
  I=W_PERDEB
  LOOP
   UNTIL I>W_PERFIN DO
    READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CLE:I THEN
     J=1
     W_FINRECH="NON"
     LOOP
      RubChargeCal=ENR_DETAILCALCUL<8,J>
      IF RubChargeCal="" THEN W_FINRECH="OUI"
      UNTIL W_FINRECH="OUI" DO      
       READ ENR_RUBCHARGE FROM F.RUBCHARGE,RubChargeCal ELSE ENR_RUBCHARGE=""
       IF ENR_RUBCHARGE<16>="02" THEN
        W_FINRECH="OUI"
        BaseRegChg=BaseRegChg+ENR_DETAILCALCUL<9,J>
        IF ENR_DETAILCALCUL<9,J>=0 THEN BaseRegChg=BaseRegChg+ENR_DETAILCALCUL<12,J>
       END
       J=J+1     
     REPEAT
    END
    I=I+1
    IF I[5,2]="13" THEN I=I+88
  REPEAT
  MontSalRegChg=INT(BaseRegChg*W_TAUXSAL/100000+1/2)
  MontPatRegChg=INT(BaseRegChg*W_TAUXPAT/100000+1/2)
  IF BaseRegChg#0 THEN
   ENR_REGULCHARGE=""
   ENR_REGULCHARGE<1>=BaseRegChg
   ENR_REGULCHARGE<2>=MontSalRegChg
   ENR_REGULCHARGE<3>=MontPatRegChg
   WRITE ENR_REGULCHARGE ON F.REGULCHARGE,W_CLE 
  END

  IF MontSalRegChg+MontPatRegChg#0 THEN 
   ConvColContrat=ENR_CONTRAT<1>
   AssocContrat=ENR_CONTRAT<2>
   IF ConvColContrat="02" THEN
    READ ENR_ELTSPARTEMP FROM F.ELTSPARTEMP,ENR_CONTRAT<3> THEN
     IF ENR_ELTSPARTEMP<8>=1 THEN
      READ ENR_COMPTESPARTICULIERS FROM F.COMPTESPARTICULIERS,AssocContrat THEN
       ChargesUrssaf=ENR_COMPTESPARTICULIERS<5>
      END ELSE
       ChargesUrssaf=""
      END
      READ ENR_COMPLFACT FROM F.COMPLFACT,ENR_CONTRAT<3>:AssocContrat:"M" ELSE ENR_COMPLFACT=""
      E=1
      LOOP
       UNTIL ENR_COMPLFACT<1,E>="" DO
        E=E+1
      REPEAT
      FOR D=1 TO 6
       ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,D,E;"0")
      NEXT D
      IF EXTRACT(ENR_COMPLFACT,1,1)="REGULARISATION CHARGES URSSAF" THEN
       ENR_COMPLFACT=REPLACE(ENR_COMPLFACT,4,1;ENR_COMPLFACT<4,1>-(MontSalRegChg+MontPatRegChg))
      END ELSE
       ENR_COMPLFACT=INSERT(ENR_COMPLFACT,1,1;"REGULARISATION CHARGES URSSAF")
       ENR_COMPLFACT=INSERT(ENR_COMPLFACT,2,1;"")
       ENR_COMPLFACT=INSERT(ENR_COMPLFACT,3,1;"")
       ENR_COMPLFACT=INSERT(ENR_COMPLFACT,4,1;-(MontSalRegChg+MontPatRegChg))
       ENR_COMPLFACT=INSERT(ENR_COMPLFACT,5,1;ChargesUrssaf)
       ENR_COMPLFACT=INSERT(ENR_COMPLFACT,6,1;"")
      END
      E=1
      LOOP
       UNTIL ENR_COMPLFACT<1,E>="0" DO
        E=E+1
      REPEAT
      FOR D=1 TO 6
       ENR_COMPLFACT=DELETE(ENR_COMPLFACT,D,E)
      NEXT D
      WRITE ENR_COMPLFACT ON F.COMPLFACT,ENR_CONTRAT<3>:AssocContrat:"M"
     END
    END
   END
  END

REPEAT 
STOP
