Hosting-Abo: Preis 15 € -> 20 € pro Monat (Vertragsbedingungen v4, Katalog, Leitfaden)
- server/config.js: amountCents 2000, lookup_key webklar_hosting_monatlich_2000 - ensurePrice haengt einen neuen Preis an das vorhandene Stripe-Produkt (metadata.webklar), statt ein zweites "WEBklar Hosting-Abo" anzulegen - abo-bedingungen.html (Uebersicht, Preise, Leistungsbeschreibung) + PDF, Leitfaden + PDF - Tests auf 20 € umgestellt (399/399) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
78b4d7b7fe
commit
e4efdac226
18 files changed
+79
-59
No files matched your search
+2
-2
@@ -52,8 +52,8 @@ const products = {
|
||||
hosting: {
|
||||
key: 'hosting',
|
||||
name: 'WEBklar Hosting-Abo',
|
||||
lookupKey: 'webklar_hosting_monatlich_1500',
|
||||
amountCents: 1500,
|
||||
lookupKey: 'webklar_hosting_monatlich_2000',
|
||||
amountCents: 2000,
|
||||
description:
|
||||
'Bereitstellung Ihrer statischen Website auf unserem Server in Deutschland (SSL, tägliche Datensicherung, Überwachung der Erreichbarkeit, Updates von Betriebssystem und Server-Software), 1 Domain inklusive Verwaltung und 1 E-Mail-Postfach (5 GB). Mindestlaufzeit 12 Monate, danach monatlich kündbar. Gemäß § 19 UStG ohne Umsatzsteuer.',
|
||||
statementDescriptor: 'WEBKLAR HOSTING',
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
Empfänger: Kunde (E-Mail aus der Bestellung) · BCC intern · Anhang: Vertragsunterlagen der zugestimmten Fassung (PDF, contractAttachmentFor)
|
||||
Platzhalter: {{name}}, {{produkt}}, {{preis}}, {{angebot_text}}, {{vertragsschluss}}, {{leistungsbeginn}}, {{mindestlaufzeit_bis}}, {{bedingungen_version}}, {{zustimmung_zeitpunkt}}
|
||||
Optionale Blöcke (zwischen WENN-/ENDE-Kommentaren; bei Nichtzutreffen samt Inhalt entfernen): angebot, hosting, wartung, wartung_v3, sofortbeginn, beginn_nach_widerrufsfrist
|
||||
produkt = Katalogname ohne „WEBklar “ („Hosting-Abo“, „Wartungs-Abo“), preis z. B. „15,00 € / Monat“; genau einer der Blöcke hosting/wartung/wartung_v3 bringt die Liste „Enthalten“:
|
||||
produkt = Katalogname ohne „WEBklar “ („Hosting-Abo“, „Wartungs-Abo“), preis z. B. „20,00 € / Monat“; genau einer der Blöcke hosting/wartung/wartung_v3 bringt die Liste „Enthalten“:
|
||||
hosting und wartung nach Fassung 4 (Spec 3.1), wartung_v3 für ein Wartungs-Abo nach Fassung 3 (termsDocFor nicht v4: „1 E-Mail-Postfach · 1 Stunde Arbeitszeit pro Monat“ wie in den Bedingungen v3 § 3).
|
||||
bedingungen_version und das PDF im Anhang kommen aus derselben Quelle (termsDocFor(subDoc.termsVersion).version): ohne gespeicherte Fassung beides Fassung 3.
|
||||
-->
|
||||
|
||||
@@ -77,7 +77,11 @@ export async function ensurePrice(key) {
|
||||
priceIdCache.set(key, data[0].id)
|
||||
return data[0].id
|
||||
}
|
||||
const product = await stripe.products.create({
|
||||
// Neuer Preis fuer ein bestehendes Produkt (z. B. Hosting 15 -> 20 EUR, 29.09.2026): an das vorhandene
|
||||
// Produkt haengen statt ein zweites gleichnamiges Produkt bei Stripe anzulegen
|
||||
const products = await stripe.products.list({ active: true, limit: 100 })
|
||||
const existing = products.data.find((p) => p.metadata?.webklar === PRODUCT_METADATA[key])
|
||||
const product = existing || await stripe.products.create({
|
||||
name: catalog.name,
|
||||
...(catalog.description ? { description: catalog.description } : {}),
|
||||
...(catalog.statementDescriptor ? { statement_descriptor: catalog.statementDescriptor } : {}),
|
||||
@@ -484,7 +488,7 @@ export async function ensureTestCoupon(productKey) {
|
||||
return created.id
|
||||
}
|
||||
|
||||
// Preis wie in den Bedingungen: "15,00 €" (normales Leerzeichen, kein geschuetztes wie bei toLocaleString)
|
||||
// Preis wie in den Bedingungen: "20,00 €" (normales Leerzeichen, kein geschuetztes wie bei toLocaleString)
|
||||
const fmtEuro = (cents) => `${(Number(cents || 0) / 100).toFixed(2).replace('.', ',')} €`
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user