feat: Ruecksendekosten sind geregelt und ausgewiesen
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m29s
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m29s
Bisher sagte kein Text des Shops, wer die Kosten einer Ruecksendung traegt. Nach § 357 Abs. 6 BGB traegt sie dann der VERKAEUFER: die Belehrung des Kaeufers ist die Voraussetzung dafuer, sie ihm auferlegen zu duerfen. Ohne sie war jede Retoure auf eigene Rechnung. Die Regelung steht bewusst an zwei Stellen, nicht an einer: - Widerrufsbelehrung: nur der amtliche Mustersatz "Du traegst die unmittelbaren Kosten der Ruecksendung der Waren." (Anlage 1 zu Art. 246a § 1 Abs. 2 EGBGB), unveraendert uebernommen. Eine Abweichung vom Muster kostet dessen Gesetzlichkeitsfiktion — die Belehrung waere dann angreifbar. - Versand und Zahlung, neuer Abschnitt "Rücksendung": derselbe Grundsatz in Alltagssprache plus die Ausnahme fuer mangelhafte Ware. Geht ein Mangel auf die Produktion oder auf uns als Verkaeufer zurueck, tragen wir die Kosten vollstaendig. Die Ausnahme gehoert NICHT in die Widerrufsbelehrung: sie folgt aus der Gewaehrleistung (§ 439 Abs. 2 BGB) und gilt unabhaengig davon, ob widerrufen wird. Beides dort zu vermischen wuerde zwei verschiedene Rechte als eines darstellen. Im Product-Schema kommt damit returnFees hinzu, das bisher aus genau diesem Grund fehlte — ReturnFeesCustomerResponsibility, der Wert fuer "Kaeufer traegt die Ruecksendung". Er braucht keinen Betrag, was hier auch nicht ginge: die Ruecksendung laeuft ueber den Kaeufer, nicht ueber unser Versandkonto. Der guenstigere Sonderfall (Mangel) bleibt im Schema unabgebildet; schema.org kennt dafuer kein Feld, und ihn generell zuzusagen waere falsch. Beide Texte auch auf Englisch. tsc: 0 Fehler. vitest: 359/359 gruen. eslint: 0 Warnungen. next build: gruen. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
1 parent
cc267ad8d4
commit
5870c60c50
5 files changed
+58
-4
No files matched your search
@@ -179,16 +179,27 @@ export default async function ProductDetailPage(
|
|||||||
// Gesetzliches Widerrufsrecht (siehe Widerrufsbelehrung): vierzehn Tage
|
// Gesetzliches Widerrufsrecht (siehe Widerrufsbelehrung): vierzehn Tage
|
||||||
// ab Erhalt der Ware, Rueckgabe per Versand.
|
// ab Erhalt der Ware, Rueckgabe per Versand.
|
||||||
//
|
//
|
||||||
// "returnFees" fehlt hier bewusst: wer die Kosten der Ruecksendung
|
// returnFees stand hier frueher nicht, weil die Widerrufsbelehrung
|
||||||
// traegt, ist in der Widerrufsbelehrung nicht geregelt. Eine Annahme an
|
// nichts zu den Ruecksendekosten sagte. Jetzt sagt sie es: der Kaeufer
|
||||||
// dieser Stelle waere eine Preisangabe gegenueber Google, die der Shop
|
// traegt sie (Mustersatz nach § 357 Abs. 6 BGB). ReturnFeesCustomer-
|
||||||
// nirgends zusagt.
|
// Responsibility ist dafuer der richtige Wert und braucht — anders als
|
||||||
|
// ReturnShippingFees — keinen Betrag, was hier auch gar nicht ginge:
|
||||||
|
// die Ruecksendung laeuft ueber den Kaeufer, nicht ueber unser
|
||||||
|
// Versandkonto.
|
||||||
|
//
|
||||||
|
// Dass wir bei mangelhafter Ware die Kosten uebernehmen (siehe
|
||||||
|
// "Versand und Zahlung" → "Rücksendung"), bleibt hier bewusst
|
||||||
|
// unabgebildet: das ist Gewaehrleistung, nicht Ruecknahmepolitik, und
|
||||||
|
// schema.org kennt dafuer kein Feld. Der guenstigere Sonderfall
|
||||||
|
// ungenannt zu lassen ist unbedenklich — umgekehrt waere es eine
|
||||||
|
// Zusage, die der Shop nicht generell macht.
|
||||||
hasMerchantReturnPolicy: {
|
hasMerchantReturnPolicy: {
|
||||||
"@type": "MerchantReturnPolicy",
|
"@type": "MerchantReturnPolicy",
|
||||||
applicableCountry: shippingCountries,
|
applicableCountry: shippingCountries,
|
||||||
returnPolicyCategory: "https://schema.org/MerchantReturnFiniteReturnWindow",
|
returnPolicyCategory: "https://schema.org/MerchantReturnFiniteReturnWindow",
|
||||||
merchantReturnDays: 14,
|
merchantReturnDays: 14,
|
||||||
returnMethod: "https://schema.org/ReturnByMail",
|
returnMethod: "https://schema.org/ReturnByMail",
|
||||||
|
returnFees: "https://schema.org/ReturnFeesCustomerResponsibility",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
...(reviewSummary.count > 0
|
...(reviewSummary.count > 0
|
||||||
|
|||||||
@@ -62,6 +62,17 @@ export default async function VersandZahlungPage() {
|
|||||||
heading: t.versandZahlungPage.deliveryTimeHeading,
|
heading: t.versandZahlungPage.deliveryTimeHeading,
|
||||||
paragraphs: [t.versandZahlungPage.deliveryTimeText],
|
paragraphs: [t.versandZahlungPage.deliveryTimeText],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// Die Widerrufsbelehrung nennt nur den amtlichen Mustersatz ("Du
|
||||||
|
// traegst die unmittelbaren Kosten der Ruecksendung"), weil eine
|
||||||
|
// Abweichung vom Muster dessen Gesetzlichkeitsfiktion kostet. Die
|
||||||
|
// Ausnahme fuer mangelhafte Ware gehoert ohnehin nicht dorthin: sie
|
||||||
|
// folgt aus der Gewaehrleistung (§ 439 Abs. 2 BGB) und gilt
|
||||||
|
// unabhaengig davon, ob widerrufen wird. Hier steht beides
|
||||||
|
// nebeneinander, wo Kaeufer vor dem Kauf nach Versandfragen suchen.
|
||||||
|
heading: t.versandZahlungPage.returnsHeading,
|
||||||
|
paragraphs: [t.versandZahlungPage.returnsText, t.versandZahlungPage.returnsDefectText],
|
||||||
|
},
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -373,6 +373,16 @@ export const de: Dictionary = {
|
|||||||
heading: "Folgen des Widerrufs",
|
heading: "Folgen des Widerrufs",
|
||||||
paragraphs: [
|
paragraphs: [
|
||||||
"Wenn du diesen Vertrag widerrufst, erstatten wir dir alle Zahlungen, die wir von dir erhalten haben, unverzüglich und spätestens binnen vierzehn Tagen ab dem Tag zurück, an dem die Mitteilung über deinen Widerruf bei uns eingegangen ist.",
|
"Wenn du diesen Vertrag widerrufst, erstatten wir dir alle Zahlungen, die wir von dir erhalten haben, unverzüglich und spätestens binnen vierzehn Tagen ab dem Tag zurück, an dem die Mitteilung über deinen Widerruf bei uns eingegangen ist.",
|
||||||
|
// Wortlaut aus der amtlichen Muster-Widerrufsbelehrung (Anlage 1 zu
|
||||||
|
// Art. 246a § 1 Abs. 2 EGBGB), bewusst unveraendert uebernommen.
|
||||||
|
// Ohne diese Information traegt nach § 357 Abs. 6 BGB der Verkaeufer
|
||||||
|
// die Ruecksendekosten — die Belehrung selbst ist die Voraussetzung
|
||||||
|
// dafuer, sie dem Kaeufer auferlegen zu duerfen. Die Ausnahme fuer
|
||||||
|
// mangelhafte Ware steht bewusst NICHT hier: das ist Gewaehrleistung
|
||||||
|
// (§ 439 BGB) und damit ein anderes Recht als der Widerruf; eine
|
||||||
|
// Abweichung vom Muster kostet dessen Gesetzlichkeitsfiktion. Sie
|
||||||
|
// steht stattdessen unter "Versand und Zahlung" → "Rücksendung".
|
||||||
|
"Du trägst die unmittelbaren Kosten der Rücksendung der Waren.",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -398,6 +408,11 @@ export const de: Dictionary = {
|
|||||||
paymentText: "Wir bieten Kreditkarte, SEPA-Lastschrift, Klarna, PayPal, Apple Pay und Google Pay über unseren Zahlungsdienstleister Stripe an. Eine Zahlung per Überweisung ist auf Anfrage möglich.",
|
paymentText: "Wir bieten Kreditkarte, SEPA-Lastschrift, Klarna, PayPal, Apple Pay und Google Pay über unseren Zahlungsdienstleister Stripe an. Eine Zahlung per Überweisung ist auf Anfrage möglich.",
|
||||||
deliveryTimeHeading: "Lieferzeit",
|
deliveryTimeHeading: "Lieferzeit",
|
||||||
deliveryTimeText: "Die übliche Lieferzeit innerhalb Deutschlands beträgt 2–4 Werktage nach Zahlungseingang.",
|
deliveryTimeText: "Die übliche Lieferzeit innerhalb Deutschlands beträgt 2–4 Werktage nach Zahlungseingang.",
|
||||||
|
returnsHeading: "Rücksendung",
|
||||||
|
returnsText:
|
||||||
|
"Die unmittelbaren Kosten der Rücksendung trägt der Käufer. Das gilt für die Ausübung des Widerrufsrechts, also wenn du eine einwandfreie Ware zurückgibst.",
|
||||||
|
returnsDefectText:
|
||||||
|
"Davon ausgenommen ist mangelhafte Ware: liegt ein Mangel vor, der auf die Produktion oder auf uns als Verkäufer zurückzuführen ist, übernehmen wir die Kosten der Rücksendung vollständig. Melde dich in diesem Fall einfach bei uns, bevor du die Ware zurückschickst.",
|
||||||
},
|
},
|
||||||
cookieRichtliniePage: {
|
cookieRichtliniePage: {
|
||||||
title: "Cookie-Richtlinie",
|
title: "Cookie-Richtlinie",
|
||||||
|
|||||||
@@ -373,6 +373,9 @@ export const en: Dictionary = {
|
|||||||
heading: "Consequences of Withdrawal",
|
heading: "Consequences of Withdrawal",
|
||||||
paragraphs: [
|
paragraphs: [
|
||||||
"If you withdraw from this contract, we will refund all payments we received from you without undue delay, and no later than fourteen days from the day on which we received notice of your withdrawal.",
|
"If you withdraw from this contract, we will refund all payments we received from you without undue delay, and no later than fourteen days from the day on which we received notice of your withdrawal.",
|
||||||
|
// Siehe Begruendung in de.ts — Wortlaut der amtlichen
|
||||||
|
// Muster-Widerrufsbelehrung, hier nur uebersetzt.
|
||||||
|
"You bear the direct cost of returning the goods.",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -398,6 +401,11 @@ export const en: Dictionary = {
|
|||||||
paymentText: "We offer credit card, SEPA direct debit, Klarna, PayPal, Apple Pay, and Google Pay via our payment provider Stripe. Payment by bank transfer is available on request.",
|
paymentText: "We offer credit card, SEPA direct debit, Klarna, PayPal, Apple Pay, and Google Pay via our payment provider Stripe. Payment by bank transfer is available on request.",
|
||||||
deliveryTimeHeading: "Delivery Time",
|
deliveryTimeHeading: "Delivery Time",
|
||||||
deliveryTimeText: "Typical delivery time within Germany is 2–4 business days after payment is received.",
|
deliveryTimeText: "Typical delivery time within Germany is 2–4 business days after payment is received.",
|
||||||
|
returnsHeading: "Returns",
|
||||||
|
returnsText:
|
||||||
|
"You bear the direct cost of returning the goods. This applies when you exercise your right of withdrawal, meaning you return goods that are in perfect condition.",
|
||||||
|
returnsDefectText:
|
||||||
|
"Defective goods are excluded from this: if a defect originates in production or is otherwise attributable to us as the seller, we cover the full cost of the return. In that case simply contact us before sending the goods back.",
|
||||||
},
|
},
|
||||||
cookieRichtliniePage: {
|
cookieRichtliniePage: {
|
||||||
title: "Cookie Policy",
|
title: "Cookie Policy",
|
||||||
|
|||||||
@@ -234,6 +234,15 @@ export interface Dictionary {
|
|||||||
paymentText: string;
|
paymentText: string;
|
||||||
deliveryTimeHeading: string;
|
deliveryTimeHeading: string;
|
||||||
deliveryTimeText: string;
|
deliveryTimeText: string;
|
||||||
|
/**
|
||||||
|
* Wer die Ruecksendekosten traegt. Steht hier und nicht in der
|
||||||
|
* Widerrufsbelehrung, weil die Ausnahme fuer mangelhafte Ware
|
||||||
|
* Gewaehrleistung ist (§ 439 BGB) und nicht Widerruf — siehe Kommentar
|
||||||
|
* bei widerrufPage in de.ts.
|
||||||
|
*/
|
||||||
|
returnsHeading: string;
|
||||||
|
returnsText: string;
|
||||||
|
returnsDefectText: string;
|
||||||
};
|
};
|
||||||
cookieRichtliniePage: {
|
cookieRichtliniePage: {
|
||||||
title: string;
|
title: string;
|
||||||
|
|||||||
Reference in new issue
Block a user