Shop Review B M-3: Versandhinweis bei jedem Preis, nicht bei reinen Abholshops

"zzgl. Versand" steht jetzt unter dem Preis jeder Artikelkarte und im Detail, nur wenn der
Shop versendet. Unter dem Raster bleibt der Steuerhinweis.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-05 10:00:42 +00:00
1 parent b2072e4e7c
commit c36cb9b4a3
2 files changed
+32 -7

No files matched your search

+19 -7
View File
@@ -70,6 +70,7 @@
'.wks-preis{font-weight:700;margin:0}',
'.wks-grundpreis,.wks-klein{font-size:.85rem;opacity:.85;margin:0}',
'.wks-aus{font-size:.85rem;font-weight:600;color:var(--wks-i-fehler);margin:0}',
'.wks-preis-versand{margin:.1rem 0 .35rem;font-size:.85rem}',
'.wks-hinweiszeile{font-size:.85rem;margin:0 0 .75rem;opacity:.9}',
'.wks-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.25rem;margin:0 0 1rem}',
'.wks-galerie-gross{display:block;width:100%;aspect-ratio:1/1;object-fit:contain;border:1px solid var(--wks-i-rand);border-radius:var(--wks-i-radius);background:var(--wks-i-weich)}',
@@ -721,6 +722,12 @@
dialogOeffnen('Versand und Zahlung', bloecke, ausloeser)
}
// Versandhinweis neben dem Preis (PAngV § 6): nur wenn der Shop versendet; reine Abholshops zeigen kein "zzgl. Versand"
function versandAktiv () { return liste(shop().lieferlaender).length > 0 }
function versandLink () {
return versandAktiv() ? knopf('wks-link', 'zzgl. Versand', function (e) { zeigeVersand(e.currentTarget) }) : null
}
// Hinweis auf das gesetzliche Gewaehrleistungsrecht (Art. 246a § 1 Abs. 1 S. 1 Nr. 11 EGBGB): amtliche Grafik in hervorgehobenem
// Kasten vor der Zusammenfassung der Kasse, sofort geladen, mit dem woertlichen Text als Alternativtext und einer Vergroesserung
function gewaehrKasten () {
@@ -935,10 +942,8 @@
add(ul)
add(leer)
fuelle()
var hinweis = el('p', 'wks-hinweiszeile')
if (nichtLeer(shop().steuerHinweisKurz)) hinweis.appendChild(document.createTextNode(shop().steuerHinweisKurz + ' '))
hinweis.appendChild(knopf('wks-link', 'zzgl. Versand', function (e) { zeigeVersand(e.currentTarget) }))
add(hinweis)
// Steuerhinweis einmal unter dem Raster; der Versandhinweis steht bei jedem Preis (karte)
if (nichtLeer(shop().steuerHinweisKurz)) add(el('p', 'wks-hinweiszeile', shop().steuerHinweisKurz))
}
function karte (p) {
@@ -953,6 +958,12 @@
if (nichtLeer(p.kurz)) art.appendChild(el('p', 'wks-karte-text', p.kurz))
art.appendChild(el('p', 'wks-preis', preisAnzeige(p)))
if (nichtLeer(p.grundpreisText)) art.appendChild(el('p', 'wks-grundpreis', p.grundpreisText))
var vl = versandLink()
if (vl) {
var vz = el('p', 'wks-preis-versand')
vz.appendChild(vl)
art.appendChild(vz)
}
if (p.ausverkauft === true || p.verfuegbar === false) art.appendChild(el('p', 'wks-aus', 'Ausverkauft'))
li.appendChild(art)
return li
@@ -1029,9 +1040,10 @@
rechts.appendChild(preisEl)
rechts.appendChild(gpEl)
var hinweis = el('p', 'wks-hinweiszeile')
if (nichtLeer(shop().steuerHinweisKurz)) hinweis.appendChild(document.createTextNode(shop().steuerHinweisKurz + ' '))
hinweis.appendChild(knopf('wks-link', 'zzgl. Versand', function (e) { zeigeVersand(e.currentTarget) }))
rechts.appendChild(hinweis)
var dvl = versandLink()
if (nichtLeer(shop().steuerHinweisKurz)) hinweis.appendChild(document.createTextNode(shop().steuerHinweisKurz + (dvl ? ' ' : '')))
if (dvl) hinweis.appendChild(dvl)
if (hinweis.childNodes.length) rechts.appendChild(hinweis)
verfEl.textContent = verkaeuflich ? 'Verfügbar' : 'Ausverkauft'
rechts.appendChild(verfEl)
+13
View File
@@ -132,6 +132,19 @@ test('I-3: ausdrücklicher AGB-Hinweis direkt über dem Bestellknopf, AGB und Wi
assert.ok(stelle.includes("createTextNode('.')"))
})
test('M-3: "zzgl. Versand" steht bei jedem Preis (Karte und Detail) und nur, wenn der Shop versendet - Abholshops zeigen es nicht', () => {
assert.equal([...OHNE_KOMMENTARE.matchAll(/'zzgl\. Versand'/g)].length, 1, 'der Text steht an genau einer Stelle (versandLink)')
const helfer = OHNE_KOMMENTARE.slice(OHNE_KOMMENTARE.indexOf('function versandAktiv'), OHNE_KOMMENTARE.indexOf('function gewaehrKasten'))
assert.match(helfer, /function versandAktiv \(\) \{ return liste\(shop\(\)\.lieferlaender\)\.length > 0 \}/, 'Versand = es gibt Lieferländer')
assert.match(helfer, /return versandAktiv\(\) \? knopf\('wks-link', 'zzgl\. Versand'/)
const karte = OHNE_KOMMENTARE.slice(OHNE_KOMMENTARE.indexOf('function karte (p)'), OHNE_KOMMENTARE.indexOf('// ------------------------------------------------------------ Detail'))
assert.ok(karte.indexOf("el('p', 'wks-preis'") < karte.indexOf('versandLink()'), 'Hinweis nach dem Preis in der Karte')
const raster = OHNE_KOMMENTARE.slice(OHNE_KOMMENTARE.indexOf('function zeichneRaster'), OHNE_KOMMENTARE.indexOf('function karte (p)'))
assert.ok(!raster.includes('Versand'), 'unter dem Raster steht nur der Steuerhinweis')
const detail = OHNE_KOMMENTARE.slice(OHNE_KOMMENTARE.indexOf('function zeichneDetail'), OHNE_KOMMENTARE.indexOf('function aktualisierePreis'))
assert.ok(detail.includes('versandLink()') && detail.includes('if (hinweis.childNodes.length) rechts.appendChild(hinweis)'))
})
test('Weiterleitung zu Stripe nur zu einer https-Adresse (httpsUrl), Links der Rechtstexte nur als https', () => {
assert.match(OHNE_KOMMENTARE, /var ziel = d \? httpsUrl\(d\.url\) : ''/)
assert.match(OHNE_KOMMENTARE, /location\.href = ziel/)