Beregning foretages ikke korrekt i mit projekt
Hej.Jeg arbejder på et skatteberegningsprogram og har en unit kaldet "Skatteberegning" med selve koderne til at beregne skatten.
Til at gemme de indtastede og beregnede beløb, har jeg et par ClientDataSets i mit datamodul. Felterne i clientdatasettet cdsSkatter1 hedder: Bundskat, Mellemskat, ... Indkomstskat.
Jeg har opbygget Skatteberegningen ved følgende princip:
//Bundskat
function BeregnBundskat(PI: integer;KI,KIaf: Integer;Gift: integer): integer;
begin
{ Tager som grundlag den personlige indkomst}
Result:= PI;
{ Dertil lægges en eventuel positiv kapitalindkomst}
If KI > 0 then Result:= Result + KI;
{ Dertil fratrækkes en evt. negativ kapitalindkomst for ægtefællen, dog højst ens eget positive kapitalindkomst}
If (Gift = 1) and (KIaf < 0) then Result:= Result - Min(KI,KIaf * -1);
{ Bundskatten udregnes udfra ovenstående grundlag x satsen for bundskat}
Result:= Round(Result * SatsBundskat);
end;
Procedure BeregnBundskat1;
begin
with dmData do
begin
cdsSkatter1Bundskat.AsInteger := BeregnBundskat(cdsPI1PI.asInteger,cdsKI1KI.AsInteger,cdsKI2KI.AsInteger,cdsStamdata1Gift.AsInteger);
end;
end;
Procedure BeregnBundskat2;
begin
with dmData do
begin
cdsSkatter2Bundskat.AsInteger := BeregnBundskat(cdsPI2PI.AsInteger,cdsKI2KI.AsInteger,cdsKI1KI.AsInteger,cdsStamdata1Gift.AsInteger);
end;
end;
osv. for alle andre typer af skat og indkomster mv.
Den samlede skat skal beregnes / lægges sammen ved funktionen
Function BeregnIndkomstskat(Bundskat,mellemskat,...FradragSundhed: integer): integer;
Begin
Result := Bundskat + Mellemskat + ... FradragSundhed;
end;
Nederst i min unit har jeg så en procedure, der hedder BeregnSkat, hvor alle beregningerne ligger i.
Procedure BeregnSkat;
Begin
...
BeregnPI1;
...
BeregnBundskat1;
...
BeregnIndkomstskat1;
end;
... = udeladelser af kode af hensyn til mængden
Mit problem er, at alle felterne i mit cdsSkatter bliver beregnet rigtigt, men sammentællingen i "Indkomstskat" bliver enten 0 (nul) eller lig med FradragSundhed, som er sidste parameter i funktionen.
Jeg kan ikke se løsningen, idet Proceduren BeregnSkat står sidst i min unit og i proceduren står BeregnBundskat, BeregnMellemskat osv før BeregnIndkomstskat, så alle delværdierne ER beregnet.
