Kontrolle: Projektkonto und Rechnungsbau waehlen dieselbe Aufwands-AB
Gemeinsame Auswahl juengsteAufwandAb (gueltig, jueengste nach gesendetAm) im AB-Speicher. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4177b76d82
commit
c2245b6905
4 files changed
+32
-8
No files matched your search
@@ -16,7 +16,8 @@ const st = await startFakeStripe()
|
||||
useTestEnv({ appwriteUrl: aw.url, stripeUrl: st.url })
|
||||
const { config } = await import('../server/config.js')
|
||||
const { seedRechnungsDaten, legeAuftragAn, legeRechnungAn, leereRechnungsDaten } = await import('./auftraegeRechnungenHilfe.js')
|
||||
const { createProjectInvoice, sendInvoiceNow, voidInvoice, deleteDraft, invalidateFinanceCache, resetInvoiceCreateGuardForTests } = await import('../server/services/finance/stripeFinance.js')
|
||||
const { projektkontoDetail } = await import('../server/services/auftraege/projektkonto.js')
|
||||
const { createProjectInvoice, rechnungsVorschau, sendInvoiceNow, voidInvoice, deleteDraft, invalidateFinanceCache, resetInvoiceCreateGuardForTests } = await import('../server/services/finance/stripeFinance.js')
|
||||
const { getAuftrag, updateAuftrag } = await import('../server/services/auftraege/auftragStore.js')
|
||||
const { umhaengen } = await import('../server/services/auftraege/projektRechnungenStore.js')
|
||||
|
||||
@@ -132,3 +133,15 @@ test('Finalisieren einer Schlussrechnung setzt die AB aus dem Projektdatensatz a
|
||||
assert.equal((await getAuftrag(neu.id)).status, 'abgerechnet')
|
||||
assert.equal((await getAuftrag(ab.id)).status, 'ersetzt')
|
||||
})
|
||||
|
||||
test('Stundensatz: bei zwei gültigen Aufwands-ABs rechnen Rechnung und Projektkonto mit derselben (jüngste nach gesendetAm)', async () => {
|
||||
const basis = { art: 'aufwand', positionen: [], summeCents: null, zahlungsplan: { art: 'monatlich', prozent: null, text: '' } }
|
||||
// A zuerst angelegt, aber später gesendet; B danach angelegt, aber früher gesendet
|
||||
await legeAuftragAn({ ...basis, stundensatzCents: 8000 }, { nummer: 'AB-2026-0010', gesendetAm: '2026-10-09T08:00:00.000Z' })
|
||||
await new Promise((resolve) => setTimeout(resolve, 15))
|
||||
await legeAuftragAn({ ...basis, stundensatzCents: 12000 }, { nummer: 'AB-2026-0011', gesendetAm: '2026-10-06T08:00:00.000Z' })
|
||||
const vorschau = await rechnungsVorschau({ customerId: 'k1', art: 'aufwand', projektId: 'p1', arbeitsblattIds: ['ws1'] })
|
||||
const konto = await projektkontoDetail('p1')
|
||||
assert.equal(konto.konto.zeit.satzCents, 8000)
|
||||
assert.match(vorschau.positionen[0].beschreibung, /à 80,00\s€/)
|
||||
})
|
||||
Reference in new issue
Block a user