Kundenansicht neu P7: Zusatzspeicher-Plus in Fassung 6 mit Wortlaut-Nachweis

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-16 20:06:04 +00:00
1 parent 528ca0875e
commit da2fe83d47
2 files changed
+153 -2

No files matched your search

+29 -2
View File
@@ -409,8 +409,9 @@ router.post('/storage', requireSession, async (req, res) => {
const { units, acceptTerms, termsVersion } = req.body || {}
let consent = null
if (acceptTerms === true) {
if (termsVersion !== config.abo.termsVersion) {
return res.status(409).json({ error: 'Die Bedingungen wurden aktualisiert. Bitte Seite neu laden.' })
const fassung = fassungDerAnfrage(req, termsVersion)
if (fassung === null) {
return res.status(409).json({ error: neueAnsicht(req) ? FEHLER_BEDINGUNGEN : 'Die Bedingungen wurden aktualisiert. Bitte Seite neu laden.' })
}
consent = {
termsVersion,
@@ -418,6 +419,32 @@ router.post('/storage', requireSession, async (req, res) => {
consentIp: req.ip,
consentUserAgent: req.get('user-agent') || '',
}
// Fassung 6: Der gezeigte Wortlaut samt Kundenart (aus dem Kundendokument) wird gespeichert, bevor Stripe etwas aendert. Eine ungueltige
// Menge ueberlaesst die Ablehnung wie bisher changeStorage (400, ohne Nachweis)
const mengeOk = Number.isInteger(units) && units >= 1 && units <= config.mailStorage.maxUnits
if (fassung === 'neu' && mengeOk) {
let kundenart
try {
kundenart = kundenartWirksam(await getDocument(config.collections.customers, customerId))
} catch (err) {
console.error('[abo] Kunde für den Zusatzspeicher nicht lesbar:', err.message)
return res.status(500).json({ error: FEHLER_NACHWEIS })
}
await speichereNachweisFuerRoute({
customerId,
art: 'speicher',
bezug: `units=${units}`,
texte: nachweisTexte('speicher', {
kundenart,
fassung: termsVersion,
bestellung: bestellZeile('speicher', { units, gb: units * config.mailStorage.gbPerUnit, monatCents: units * config.mailStorage.amountCents }),
}),
fassungen: { zustimmung: termsVersion },
kundenart,
req,
at: consent.consentAt,
})
}
}
const { subscription, change } = await changeStorage(customerId, units, consent)
const events = await listContractEvents(customerId).catch((e) => {