Buchungskalender: Mengen-Obergrenze für Posten auf 20000
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
bdf191d945
commit
802b5d3ad4
2 files changed
+9
-2
No files matched your search
@@ -73,7 +73,7 @@ export function pruefePosten(posten, steuerart) {
|
||||
if (!p || typeof p !== 'object') return fehler('Ungültiger Posten.')
|
||||
const text = typeof p.text === 'string' ? p.text.trim() : ''
|
||||
if (!text || text.length > textMax) return fehler(`Der Text eines Postens muss 1 bis ${textMax} Zeichen lang sein.`)
|
||||
if (!Number.isSafeInteger(p.menge) || p.menge < 1 || p.menge > 1000) return fehler('Die Menge muss eine positive ganze Zahl sein.')
|
||||
if (!Number.isSafeInteger(p.menge) || p.menge < 1 || p.menge > 20000) return fehler('Die Menge muss eine positive ganze Zahl sein.')
|
||||
if (!Number.isSafeInteger(p.einzelCent) || Math.abs(p.einzelCent) > 10_000_000) return fehler('Der Einzelpreis ist ungültig.')
|
||||
if (!SAETZE.includes(p.ustProzent)) return fehler('Der Steuersatz muss 0, 7 oder 19 sein.')
|
||||
if (steuerart === 'kleinunternehmer' && p.ustProzent !== 0) return fehler('Bei Kleinunternehmern ist keine Umsatzsteuer erlaubt.')
|
||||
|
||||
@@ -145,7 +145,8 @@ test('preiseVollstaendig', () => {
|
||||
test('pruefePosten: negative Summe, Grenzen', () => {
|
||||
const ok = { text: 'a', menge: 1, einzelCent: 1000, ustProzent: 7 }
|
||||
assert.ok(pruefePosten([{ ...ok, einzelCent: -500 }], 'regel').fehler.posten)
|
||||
assert.ok(pruefePosten([{ ...ok, menge: 1001 }], 'regel').fehler.posten)
|
||||
assert.ok(pruefePosten([{ ...ok, menge: 20001 }], 'regel').fehler.posten)
|
||||
assert.ok(pruefePosten([{ ...ok, menge: 20000 }], 'regel').posten)
|
||||
assert.ok(pruefePosten([{ ...ok, einzelCent: 10_000_001 }], 'regel').fehler.posten)
|
||||
assert.ok(pruefePosten([{ ...ok, menge: 2 ** 53 }], 'regel').fehler.posten)
|
||||
})
|
||||
@@ -167,3 +168,9 @@ test('preiseVollstaendig: strenge Faelle', () => {
|
||||
assert.equal(f({ direktrabattProzent: 2.5 }), false)
|
||||
assert.equal(f({ direktrabattProzent: 50 }), true)
|
||||
})
|
||||
|
||||
test('berechnePreis: 20 Personen ueber 548 Naechte besteht pruefePosten', () => {
|
||||
const r = berechnePreis({ preise: PREISE, von: '2026-11-01', bis: plusTage('2026-11-01', 548), personen: 20 })
|
||||
assert.equal(r.posten[1].menge, 18 * 548)
|
||||
assert.ok(pruefePosten(r.posten, 'regel').posten)
|
||||
})
|
||||
Reference in new issue
Block a user