Buchungskalender: Preisrechnung nachgeschärft (Summe, Kleinunternehmer, Vollständigkeit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5.5 committed 2026-10-07 13:49:20 +00:00
1 parent 84e7a99f41
commit c38c8e7c13
2 files changed
+51 -9

No files matched your search

+28
View File
@@ -93,6 +93,8 @@ test('berechnePreis/summiere: Kleinunternehmer', () => {
})
assert.deepEqual(r.summen.ust, [])
assert.equal(r.summen.nettoCent, r.summen.bruttoCent)
assert.ok(r.posten.every((p) => p.ustProzent === 0))
assert.ok(pruefePosten(r.posten, 'kleinunternehmer').posten)
})
test('berechnePreis: Rabatt 0 und Reinigung 0 ohne Posten', () => {
@@ -139,3 +141,29 @@ test('preiseVollstaendig', () => {
assert.equal(preiseVollstaendig({ ...PREISE, staffeln: [] }), false)
assert.equal(preiseVollstaendig(null), false)
})
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, einzelCent: 10_000_001 }], 'regel').fehler.posten)
assert.ok(pruefePosten([{ ...ok, menge: 2 ** 53 }], 'regel').fehler.posten)
})
test('preiseVollstaendig: strenge Faelle', () => {
const f = (o) => preiseVollstaendig({ ...PREISE, ...o })
const st = (ab) => ab.map((a) => ({ abNaechten: a, preisProNachtCent: 100 }))
assert.equal(f({ staffeln: st([1, 1]) }), false)
assert.equal(f({ staffeln: st([1, 0]) }), false)
assert.equal(f({ staffeln: st([1, 2.5]) }), false)
assert.equal(f({ ustUebernachtung: 5 }), false)
assert.equal(f({ ustReinigung: 5 }), false)
assert.equal(f({ reinigungCent: 0, ustReinigung: 5 }), true)
assert.equal(f({ steuerart: 'kleinunternehmer', ustUebernachtung: 5 }), true)
assert.equal(f({ reinigungCent: -1 }), false)
assert.equal(f({ aufpreisPersonNachtCent: 1.5 }), false)
assert.equal(f({ direktrabattProzent: 51 }), false)
assert.equal(f({ direktrabattProzent: -1 }), false)
assert.equal(f({ direktrabattProzent: 2.5 }), false)
assert.equal(f({ direktrabattProzent: 50 }), true)
})