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

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","REGULCHARGE" TO F.REGULCHARGE ELSE STOP
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL 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 "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","COMPTESPARTICULIERS" TO F.COMPTESPARTICULIERS ELSE STOP

EXECUTE 'TSELECT CONTRAT AVEC 1 = "02" AND AVEC 65 # "O" AND AVEC DatFinContrat = "" OR >= "01/01/2001" PAR CodeAidant PAR 3 PAR 7'
 
W_FINI="NON"
CODEAIDANT1=""
CODEAIDE1=""
NBCONTRAT=0
WCLE1=""
LOOP
 READNEXT W_CLE ELSE
  W_FINI="OUI"
  IF NBCONTRAT>1 THEN GOSUB 100
 END
 UNTIL W_FINI="OUI" DO
  READ ENR_CONTRAT FROM F.CONTRAT,W_CLE ELSE ENR_CONTRAT=""
  CODEAIDANT=W_CLE[1,5]
  CODEAIDE=EXTRACT(ENR_CONTRAT,3)
  IF CODEAIDANT1="" THEN CODEAIDANT1=CODEAIDANT
  IF CODEAIDE1="" THEN CODEAIDE1=CODEAIDE
  IF CODEAIDANT1#CODEAIDANT THEN
   IF NBCONTRAT>1 THEN GOSUB 100
   CODEAIDANT1=CODEAIDANT
   CODEAIDE1=CODEAIDE
   NBCONTRAT=1
   WCLE1=W_CLE 
  END ELSE
   IF CODEAIDE1#CODEAIDE THEN
    IF NBCONTRAT>1 THEN GOSUB 100
    CODEAIDE1=CODEAIDE
    NBCONTRAT=1
    WCLE1=W_CLE
   END ELSE  
    NBCONTRAT=NBCONTRAT+1
    WCLE1=W_CLE
   END
  END
REPEAT
STOP

100
READ ENR_CONTRAT FROM F.CONTRAT,WCLE1 ELSE ENR_CONTRAT=""
DATFINCONTRAT=EXTRACT(ENR_CONTRAT,8)
IF DATFINCONTRAT#"" THEN
 IF DATFINCONTRAT<12114 THEN RETURN
END
BaseRegChg=0
READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,CODEAIDANT1:"2001":CODEAIDE1 THEN
 J=1
 W_FINRECH="NON"
 LOOP
  RubChargeCal=ENR_HISTORCUMUL<15,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=ENR_HISTORCUMUL<16,J>
   END
   J=J+1     
 REPEAT
END
MontSalRegChg=INT(BaseRegChg*W_TAUXSAL/100000+1/2)
MontPatRegChg=INT(BaseRegChg*W_TAUXPAT/100000+1/2)
IF BaseRegChg#0 THEN
 READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,CODEAIDANT1 THEN
  NOMAIDANT=EXTRACT(ENR_CIVILAIDANT,2)
  PRENOMAIDANT=EXTRACT(ENR_CIVILAIDANT,3)
  NOMAIDANT=NOMAIDANT:" ":PRENOMAIDANT
  NOMAIDANT=NOMAIDANT "L(#25)"
  MONTANTSAL=MontSalRegChg "R26,(#6)"
  MONTANTPAT=MontPatRegChg "R26,(#6)"
  READ ENR_CIVILAIDE FROM F.CIVILAIDE,CODEAIDE1 ELSE ENR_CIVILAIDE=""
  NOMAIDE=EXTRACT(ENR_CIVILAIDE,2)
  PRENOMAIDE=EXTRACT(ENR_CIVILAIDE,3)
  NOMAIDE=NOMAIDE:" ":PRENOMAIDE
  NOMAIDE=NOMAIDE "L(#25)" 
  PRINT CODEAIDANT1:" ":NOMAIDANT:"   ":CODEAIDE1:" ":NOMAIDE:"   ":MONTANTSAL:" ":MONTANTPAT
 END
END
RETURN

200
  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
RETURN
