Oberfläche: Speicher-Zusammenfassung nach Backend-Modell (Reduzierung aufheben per Plus)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-09-29 15:42:19 +00:00
1 parent 05a59c4d61
commit 09fc940619
1 file changed
+7 -8
+7 -8
View File
@@ -1235,15 +1235,12 @@ function renderStoragePanel(container, data) {
const delta = state.target - current
const p = state.preview
let summary = ''
if (canChange && (delta !== 0 || pendingReduction)) {
if (canChange && delta !== 0) {
const plus = delta > 0
const same = delta === 0
const totalCents = state.target * unitCents
const facts = []
const proBad = plus && p && !state.loading && !(p.prorationCents != null && p.prorationCents !== '' && Number.isFinite(Number(p.prorationCents)))
if (same) {
facts.push(`<div><dt>Änderung</dt><dd>geplante Reduzierung aufheben: Sie behalten ${current} Paket${current === 1 ? '' : 'e'} (${gbOf(current)} GB), es entstehen keine Kosten</dd></div>`)
} else {
{
facts.push(`<div><dt>Neue Gesamtgröße</dt><dd>${gbOf(state.target)} GB</dd></div>`)
facts.push(`<div><dt>Preis</dt><dd>${fmtEuro(totalCents / 100)} pro Monat für ${state.target} Paket${state.target === 1 ? '' : 'e'} (${plus ? 'Mehrpreis' : 'Ersparnis'} ${fmtEuro(Math.abs(delta) * unitCents / 100)} pro Monat; Gesamtpreis, gemäß § 19 UStG ohne Umsatzsteuer)</dd></div>`)
if (state.previewError || proBad) {
@@ -1256,13 +1253,15 @@ function renderStoragePanel(container, data) {
? `${fmtEuro(pro / 100)} anteilig für den Rest des laufenden Abrechnungsmonats (gemäß § 19 UStG ohne Umsatzsteuer)`
: 'keine zusätzlichen Kosten, die Pakete sind für den laufenden Abrechnungsmonat schon bezahlt'}</dd></div>`)
facts.push(`<div><dt>Nächste Abbuchung</dt><dd>${fmtDateShort(p.nextChargeAt)}, danach monatlich ${fmtEuro(totalCents / 100)}</dd></div>`)
facts.push('<div><dt>Einrichtung</dt><dd>in der Regel innerhalb eines Werktags; bis dahin steht „wird eingerichtet“ da</dd></div>')
facts.push(pro === 0 && pendingReduction
? '<div><dt>Geplante Reduzierung</dt><dd>wird aufgehoben oder angepasst; es ist nichts neu einzurichten</dd></div>'
: '<div><dt>Einrichtung</dt><dd>in der Regel innerhalb eines Werktags; bis dahin steht „wird eingerichtet“ da</dd></div>')
} else {
facts.push(`<div><dt>Wirkt zum</dt><dd>${fmtDateShort(p.effectiveAt)}, zum Ende des Abrechnungsmonats</dd></div>`)
}
facts.push('<div><dt>Laufzeit</dt><dd>monatlich, zum Ende jedes Abrechnungsmonats kündbar, endet spätestens mit dem Abo</dd></div>')
}
const hint = same ? '' : plus
const hint = plus
? `<label class="abo-check"><input type="checkbox" id="storage-terms"${state.busy ? ' disabled' : ''}>
<span>Ich habe die <a href="/abo-bedingungen.html#zusatzspeicher" target="_blank" rel="noopener">Regeln zum Zusatzspeicher</a> gelesen und stimme ihnen zu. Die <a href="/abo-bedingungen.html#widerruf" target="_blank" rel="noopener">Widerrufsbelehrung</a> habe ich zur Kenntnis genommen.</span></label>`
: `<p class="abo-alert" style="margin:10px 0">Wichtig: Passen die gespeicherten E-Mails nach der Verkleinerung nicht mehr in den verbleibenden Speicher, nehmen die Postfächer keine neuen E-Mails mehr an. Bitte räumen Sie vorher auf. Mehr dazu in den <a href="/abo-bedingungen.html#zusatzspeicher" target="_blank" rel="noopener">Regeln zum Zusatzspeicher</a> und in der <a href="/abo-bedingungen.html#widerruf" target="_blank" rel="noopener">Widerrufsbelehrung</a>.</p>`
@@ -1271,7 +1270,7 @@ function renderStoragePanel(container, data) {
<dl class="kb-contract-facts">${facts.join('')}</dl>
${hint}
<p class="error hidden" id="storage-error"></p>
<button type="button" class="kb-btn-primary" id="storage-submit"${state.busy || (!same && (state.loading || !p || state.previewError || proBad)) ? ' disabled' : ''}>${state.busy ? 'Wird gespeichert …' : plus ? 'Zahlungspflichtig bestellen' : 'Speichern'}</button>
<button type="button" class="kb-btn-primary" id="storage-submit"${state.busy || (state.loading || !p || state.previewError || proBad) ? ' disabled' : ''}>${state.busy ? 'Wird gespeichert …' : plus ? 'Zahlungspflichtig bestellen' : 'Speichern'}</button>
</div>`
}
const status = []