Buchungskalender: Abschluss – S1 keine doppelte Erstattung nach Heilung
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2df56eccc5
commit
435dd0b746
3 files changed
+64
-11
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import { config } from '../../config.js'
|
||||
import { withLocks } from '../keyedLock.js'
|
||||
import { checkoutAnlegen, erstatten, sessionAblaufen, sessionHolen } from '../shop/connect.js'
|
||||
import { checkoutAnlegen, erstatten, erstattungenZurZahlung, sessionAblaufen, sessionHolen } from '../shop/connect.js'
|
||||
import { formatTag } from './datum.js'
|
||||
import { UkFehler } from './fehler.js'
|
||||
import { aktualisiereAnfrage, ladeAnfrage, ladeRechnung, ladeUnterkunft } from './speicher.js'
|
||||
@@ -185,3 +185,21 @@ export async function erstatte(ctx, anfrage, betragCent, { now, idempotencyKey }
|
||||
if (testProtokoll()) _aufrufe.push({ anfrageId: anfrage?.$id, betragCent, idempotencyKey })
|
||||
return erstatter(ctx, anfrage, betragCent, { now, idempotencyKey })
|
||||
}
|
||||
|
||||
async function liveErstattetEcht(ctx, anfrage) {
|
||||
const accountId = ctx?.einstellungen?.stripeAccountId
|
||||
if (!accountId || !anfrage?.stripePaymentIntentId) return 0
|
||||
const liste = await erstattungenZurZahlung(accountId, anfrage.stripePaymentIntentId)
|
||||
return liste.filter((r) => r?.status !== 'failed' && r?.status !== 'canceled').reduce((s, r) => s + (Number.isInteger(r?.amount) ? r.amount : 0), 0)
|
||||
}
|
||||
|
||||
let liveLeser = liveErstattetEcht
|
||||
/** Nur fuer Tests: ersetzt die Abfrage des bei Stripe erstatteten Betrags (null stellt die echte wieder her). */
|
||||
export function setzeLiveErstattetFuerTests(fn) {
|
||||
liveLeser = typeof fn === 'function' ? fn : liveErstattetEcht
|
||||
}
|
||||
|
||||
/** Summe der bei Stripe tatsaechlich erstatteten Betraege dieser Zahlung (0 ohne Konto oder Zahlung); Stripe-Fehler gehen nach oben. */
|
||||
export async function liveErstattet(ctx, anfrage) {
|
||||
return liveLeser(ctx, anfrage)
|
||||
}
|
||||
Reference in new issue
Block a user