This commit is contained in:
seb
2026-06-24 09:54:34 +02:00
parent 9b11a8a24c
commit b278d3cf92
5 changed files with 39 additions and 31 deletions

View File

@@ -1,4 +1,36 @@
import { loadSteuerklassen } from './steuerklassen.js';
import { getPool } from '../../db/mssqlClient.js';
import { LOAD_STEUERKLASSEN } from '../../db/mssql/steuer.js';
let cache;
/**
* Loads JTL tax classes with domestic VAT rates (`tSteuerklasse` / `tSteuersatz`).
* Results are cached for the process lifetime.
* @returns {Promise<Array<{ kSteuerklasse: number, cName: string, nStandard: number, fSteuersatz: number }>>}
*/
export async function loadSteuerklassen() {
if (cache) {
return cache;
}
const pool = await getPool();
const result = await pool.request().query(LOAD_STEUERKLASSEN);
cache = result.recordset.map((row) => ({
kSteuerklasse: row.kSteuerklasse,
cName: row.cName,
nStandard: row.nStandard,
fSteuersatz: row.fSteuersatz,
}));
return cache;
}
export function bruttoFromNetto(netto, kSteuerklasse, steuerklassen) {
const row = steuerklassen.find((item) => item.kSteuerklasse === kSteuerklasse);
if (row == null || netto == null) {
return null;
}
return netto * (1 + row.fSteuersatz / 100);
}
export async function getSteuer() {
const steuerklassen = await loadSteuerklassen();