Finanzen: Einstellungen, Rechnungen am Kunden, InvoiceNinja aus der Oberflaeche entfernt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
24a3cc41ef
commit
2aacdb2d56
24 files changed
+1410
-499
No files matched your search
@@ -46,6 +46,7 @@ const {
|
||||
customerPickerOptions,
|
||||
customerSuggestions,
|
||||
resolveCustomerText,
|
||||
customerInvoicesGate,
|
||||
sortTransactions,
|
||||
strongestSuggestion,
|
||||
suggestionText,
|
||||
@@ -1184,3 +1185,29 @@ test('assignBody und invoiceAssignConfirmText', () => {
|
||||
assert.deepEqual(assignBody(null, 'x'), { note: 'x' })
|
||||
assert.equal(invoiceAssignConfirmText('WK-0005'), 'Die Rechnung WK-0005 wird in Stripe als bezahlt markiert. Das lässt sich nicht rückgängig machen.')
|
||||
})
|
||||
|
||||
test('customerInvoicesGate: fester Kunde mit E-Mail darf, alle anderen bekommen Grund und Hinweis', () => {
|
||||
assert.deepEqual(customerInvoicesGate({ $id: 'c1', name: 'A', email: 'a@example.invalid', customerStatus: 'customer' }), { ok: true })
|
||||
// Bestandsdaten ohne Status zählen als fester Kunde
|
||||
assert.deepEqual(customerInvoicesGate({ $id: 'c1', name: 'A', email: 'a@example.invalid' }), { ok: true })
|
||||
|
||||
const lead = customerInvoicesGate({ name: 'A', email: 'a@example.invalid', customerStatus: 'lead' })
|
||||
assert.equal(lead.ok, false)
|
||||
assert.equal(lead.title, 'Noch ein Lead')
|
||||
assert.equal(lead.hint, 'Erst zum festen Kunden machen (vollständige Daten nötig), dann sind Rechnungen möglich.')
|
||||
// Lead ohne E-Mail: der Lead-Hinweis hat Vorrang
|
||||
assert.equal(customerInvoicesGate({ name: 'A', email: '', customerStatus: 'LEAD' }).title, 'Noch ein Lead')
|
||||
|
||||
const lost = customerInvoicesGate({ name: 'A', email: 'a@example.invalid', customerStatus: 'lost' })
|
||||
assert.deepEqual(lost, { ok: false, title: 'Noch kein fester Kunde', hint: 'Rechnungen gibt es nur für feste Kunden.' })
|
||||
|
||||
const noMail = customerInvoicesGate({ name: 'A', email: ' ', customerStatus: 'customer' })
|
||||
assert.equal(noMail.ok, false)
|
||||
assert.equal(noMail.title, 'E-Mail fehlt')
|
||||
assert.match(noMail.hint, /E-Mail-Adresse in den Stammdaten/)
|
||||
|
||||
const none = customerInvoicesGate(null)
|
||||
assert.equal(none.ok, false)
|
||||
assert.equal(none.title, 'Kein Kunde ausgewählt')
|
||||
assert.equal(none.hint, '')
|
||||
})
|
||||
Reference in new issue
Block a user