CCCPaste

IRG 2022 Delphi

{
  IRG 2022 Function By Boussaid Mustafa
  APC SALI 2022
  Usage:
  //Normal
  Edit2.Text:=FormatFloat('# ##0.00',IRG2022New(StrToFloat(Edit1.Text),1));
  //Handicape
  Edit2.Text:=FormatFloat('# ##0.00',IRG2022New(StrToFloat(Edit1.Text),2));
}
Function IRG2022New(soumis: real;TypeIrg:integer) : real;
var
   T00,T01,T02,T03,T04: integer;
   irg, abat, p: real;

begin
     T00:= 20000;
     T01:= 4600;
     T02:= 10800;
     T03:= 24000;
     T04:= 52800;
     p := (Int(soumis / 10)) * 10;

     if (soumis > 30009) And (soumis <= 40000) then irg := (p - T00) * 0.23
     else if (soumis > 40000) And (soumis <= 80000) then irg := (P - 40000) * 0.27 + T01
     else if (soumis > 80000) And (soumis <= 160000) then irg := (P - 80000) * 0.30 + T01 + T02
     else if (soumis > 160000) And (soumis <= 320000) then irg := (P - 160000) * 0.33 + T01 + T02 + T03
     else Irg := (P - 320000) * 0.35  + T01 + T02 + T03 + T04;

     abat := irg * 0.4;
     If abat < 1000 then abat := 1000;
     If abat > 1500 then abat := 1500;
     irg := irg - abat;

     // 1= Normal 2= Handicape
     if TypeIrg = 1 then begin   //---->Normal
      if soumis < 35000 then irg := (irg * 137/51) - (27925/8)
     end
     else begin    //---->Handicape
      if soumis < 42500 then irg := (irg * 93/61) - (81213/41)
     end;

     if soumis < 30010 then irg := 0;
     Result:= RoundTo(irg, -1);
end;