Kontrolle: Rechnungsdialog übernimmt das Zahlungsziel der gewählten AB
Bei Anzahlung, Schlussrechnung und Aufwand wird 'Zahlungsziel in Tagen' mit auftrag.zahlungszielTage vorbelegt (sonst 14); eine Eingabe des Nutzers bleibt. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b7b3e834f8
commit
dec7bea7d2
5 files changed
+63
-3
No files matched your search
@@ -9,7 +9,7 @@ test('anfangszustand: nichts gewählt, eine leere Position, Zahlungsziel 14', ()
|
||||
projektId: 'p1', art: '', auftragId: '',
|
||||
items: [{ uid: 1, description: '', quantity: '1', price: '' }], zusatz: [],
|
||||
abgewaehlt: [], weitereTickets: [], anzahlung: {}, zeilentexte: {},
|
||||
zeitraum: '', zeitraumGeaendert: false, days: '14', memo: '',
|
||||
zeitraum: '', zeitraumGeaendert: false, days: '14', tageGeaendert: false, memo: '',
|
||||
})
|
||||
assert.equal(anfangszustand().projektId, null)
|
||||
assert.equal(anfangszustand({ projektId: '' }).projektId, '')
|
||||
@@ -113,3 +113,20 @@ test('anzahlung und auftrag: Eingaben ergänzen sich, eine andere AB setzt sie z
|
||||
assert.deepEqual([s.auftragId, s.anzahlung], ['a2', {}])
|
||||
assert.equal(reduce(s, { type: 'gibtsnicht' }), s)
|
||||
})
|
||||
|
||||
test('tage-vorschlag: übernimmt das Zahlungsziel der AB, solange der Nutzer es nicht selbst geändert hat', () => {
|
||||
let s = anfangszustand({ projektId: 'p1' })
|
||||
s = reduce(s, { type: 'tage-vorschlag', wert: '30' })
|
||||
assert.equal(s.days, '30')
|
||||
assert.equal(s.tageGeaendert, false)
|
||||
assert.equal(reduce(s, { type: 'tage-vorschlag', wert: '30' }), s) // derselbe Wert: nichts zu tun
|
||||
s = reduce(s, { type: 'tage-vorschlag', wert: '14' }) // andere AB gewählt: der Vorschlag folgt
|
||||
assert.equal(s.days, '14')
|
||||
// eine Eingabe des Nutzers wird nie überschrieben, auch nicht nach einem Projektwechsel
|
||||
s = reduce(s, { type: 'tage', wert: '7' })
|
||||
assert.equal(s.tageGeaendert, true)
|
||||
assert.equal(reduce(s, { type: 'tage-vorschlag', wert: '30' }), s)
|
||||
s = reduce(s, { type: 'projekt', projektId: 'p2' })
|
||||
assert.equal(s.days, '7')
|
||||
assert.equal(reduce(s, { type: 'tage-vorschlag', wert: '30' }).days, '7')
|
||||
})
|
||||
@@ -7,7 +7,7 @@ const {
|
||||
startProjekt, projektOptionen, wirksamesProjekt,
|
||||
gueltigeFestpreisAbs, aufwandAuftrag, abLabel, berechnetFuerAuftrag, hatEntwurfZurAuftrag,
|
||||
artOptionen, standardArt, standardAuftrag, anzahlungStandard,
|
||||
ausgewaehlteIds, blaetterSumme, blattAusAppwrite, ticketOptionen,
|
||||
ausgewaehlteIds, blaetterSumme, blattAusAppwrite, ticketOptionen, zahlungszielVorschlag,
|
||||
} = await loadModule('src/lib/rechnungDialogView.js')
|
||||
|
||||
const ab = (over = {}) => ({
|
||||
@@ -215,3 +215,20 @@ test('ticketOptionen: Tickets des Kunden mit Nummer, ohne die schon gewählten',
|
||||
])
|
||||
assert.deepEqual(ticketOptionen(undefined), [])
|
||||
})
|
||||
|
||||
test('zahlungszielVorschlag: Anzahlung und Schluss übernehmen das Zahlungsziel der gewählten AB, sonst 14', () => {
|
||||
const dreissig = ab({ zahlungszielTage: 30 })
|
||||
assert.equal(zahlungszielVorschlag({ art: 'anzahlung', ab: dreissig }), '30')
|
||||
assert.equal(zahlungszielVorschlag({ art: 'schluss', ab: dreissig }), '30')
|
||||
assert.equal(zahlungszielVorschlag({ art: 'anzahlung', ab: ab({ zahlungszielTage: 0 }) }), '0') // sofort fällig ist erlaubt
|
||||
// Aufwand: die jüngste gültige Aufwands-AB
|
||||
const aufwand = ab({ id: 'x2', art: 'aufwand', zahlungszielTage: 21 })
|
||||
assert.equal(zahlungszielVorschlag({ art: 'aufwand', auftraege: [ab(), aufwand] }), '21')
|
||||
// ohne AB, ohne Wert oder mit unbrauchbarem Wert bleibt es bei 14; frei und Festbetrag kennen keine AB
|
||||
assert.equal(zahlungszielVorschlag({ art: 'anzahlung', ab: undefined }), '14')
|
||||
assert.equal(zahlungszielVorschlag({ art: 'anzahlung', ab: ab() }), '14')
|
||||
for (const kaputt of [-1, 61, 1.5, '30', null, NaN]) assert.equal(zahlungszielVorschlag({ art: 'schluss', ab: ab({ zahlungszielTage: kaputt }) }), '14')
|
||||
assert.equal(zahlungszielVorschlag({ art: 'festbetrag', ab: dreissig }), '14')
|
||||
assert.equal(zahlungszielVorschlag({ art: 'frei', ab: dreissig }), '14')
|
||||
assert.equal(zahlungszielVorschlag({ art: '', auftraege: [aufwand] }), '14')
|
||||
})
|
||||
Reference in new issue
Block a user