Skip to content

Commit

Permalink
fix Gewinnfreibetrag values
Browse files Browse the repository at this point in the history
  • Loading branch information
bettysteger committed Feb 23, 2024
1 parent 91d66a9 commit 6bc43b7
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
14 changes: 13 additions & 1 deletion src/est.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,16 @@ export function einkommensteuer(value, year) {
return (value<=11000 ? 0 : (value<=18000 ? (value-11000)*0.2 : (value<=31000 ? (value-18000)*0.35+1400 : (value<=60000 ? (value-31000)*0.42+5950 : (value<=90000 ? (value-60000)*0.48+18130 : (value<=1000000 ? (value-90000)*0.5+32530 : (value-1000000)*0.55+487530))))));
}
return (value<=11000 ? 0 : (value<=18000 ? (value-11000)*0.25 : (value<=31000 ? (value-18000)*0.35+1750 : (value<=60000 ? (value-31000)*0.42+6300 : (value<=90000 ? (value-60000)*0.48+18480 : (value<=1000000 ? (value-90000)*0.5+32880 : (value-1000000)*0.55+487880))))));
};
}

// Gewinnfreibetrag
// @see https://www.wko.at/steuern/der-gewinnfreibetrag
// @see https://www.usp.gv.at/steuern-finanzen/betriebseinnahmen-und-ausgaben/gewinnfreibetrag.html
export function freiBetragValues(year) {
return {
// Bis zur Veranlagung 2023 stand der Grundfreibetrag für Gewinne bis 30.000 €
limit: year <= 2023 ? 30000 : 33000,
// höchstens jedoch 13% bzw. ab 2022 15% des Betriebsgewinnes
percentage: year < 2022 ? 0.13 : 0.15
}
}
14 changes: 8 additions & 6 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { defaultOptions } from './options.js';
import { einkommensteuer } from './est.js';
import { einkommensteuer, freiBetragValues } from './est.js';
import { SVbeitrag } from './sv.js';


// Einkommen laut Einkommensteuerbescheid
function profitOnEStBescheid(income, outgo, options) {
const freiBetragLimit = 30000;
const freiBetragLimit = freiBetragValues(options.year).limit;
let value = income - outgo - options.paidSv;

// Übersteigt der Gewinn 30.000 EUR kann zusätzlich zum Grundfreibetrag
Expand All @@ -28,9 +28,9 @@ function profitOnEStBescheid(income, outgo, options) {
}
}

value -= Math.min(value * 0.13, 3900); // - 13% Grundfreibetrag
value -= (Math.min(value, freiBetragLimit) * freiBetragValues(options.year).percentage); // - 15% Grundfreibetrag
if(options.useInvestFreibetrag && options.investFreibetrag) {
value -= options.investFreibetrag; // - 13% Investitionsbedingter Gewinnfreibetrag
value -= options.investFreibetrag; // - 15% Investitionsbedingter Gewinnfreibetrag
}
return value;
}
Expand All @@ -52,9 +52,11 @@ function calculate(income, outgo, options = {}) {
const est = einkommensteuer(profit, options.year);
let netto = Math.round(income - outgo - est - options.paidSv);

let maxInvestFreibetrag = parseInt((profit - 30000) * 0.13);
const freiBetragLimit = freiBetragValues(options.year).limit;
const freiBetragPercentage = freiBetragValues(options.year).percentage;
let maxInvestFreibetrag = parseInt((profit - freiBetragLimit) * freiBetragPercentage);
if(options.useInvestFreibetrag) {
maxInvestFreibetrag = parseInt((profit + options.investFreibetrag - 30000) * 0.13);
maxInvestFreibetrag = parseInt((profit + options.investFreibetrag - freiBetragLimit) * freiBetragPercentage);
netto -= options.investFreibetrag;
}

Expand Down

0 comments on commit 6bc43b7

Please sign in to comment.