Shop Review B I-4: Steuerart und Lieferzeit ohne Vorbelegung
kleinunternehmer ist ab jetzt null (nicht gewaehlt), lieferzeit leer. istVollstaendig verlangt eine bewusste Wahl (true oder false), der Shop kann sonst nicht geoeffnet werden. Im Reiter Einstellungen gibt es zwei Pflicht-Radiobuttons ohne Vorauswahl; Preise, Artikel und Muster rechnen bei null wie bei Regelbesteuerung. Tests und Fixtures angepasst. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7104f97feb
commit
1f56b86791
20 files changed
+123
-20
No files matched your search
@@ -44,7 +44,11 @@ export async function render(panel, ctx = {}) {
|
||||
const telefon = h('input', { type: 'tel', maxlength: 40, autocomplete: 'tel' })
|
||||
const ustId = textfeld({ maxlength: 20, placeholder: 'DE123456789' })
|
||||
|
||||
const kleinunternehmer = h('input', { type: 'checkbox' })
|
||||
// Steuerart: keine Vorauswahl, der Haendler muss sich entscheiden (null = noch nicht gewaehlt)
|
||||
const steuerJa = h('input', { type: 'radio', name: 'sh-kleinunternehmer', value: 'ja', required: true })
|
||||
const steuerNein = h('input', { type: 'radio', name: 'sh-kleinunternehmer', value: 'nein', required: true })
|
||||
steuerJa.dataset.feld = 'kleinunternehmer'
|
||||
steuerNein.dataset.feld = 'kleinunternehmer'
|
||||
|
||||
const versandAktiv = h('input', { type: 'checkbox' })
|
||||
const laender = auswahl(VERSAND_ZIELE)
|
||||
@@ -100,7 +104,8 @@ export async function render(panel, ctx = {}) {
|
||||
email.value = text(a.email)
|
||||
telefon.value = text(a.telefon)
|
||||
ustId.value = text(a.ustId)
|
||||
kleinunternehmer.checked = s.kleinunternehmer !== false
|
||||
steuerJa.checked = s.kleinunternehmer === true
|
||||
steuerNein.checked = s.kleinunternehmer === false
|
||||
versandAktiv.checked = v.aktiv !== false
|
||||
laender.value = Array.isArray(v.laender) && v.laender.includes('AT') ? 'DE,AT' : 'DE'
|
||||
kostenDE.value = centZuEuro(kosten.DE)
|
||||
@@ -147,8 +152,12 @@ export async function render(panel, ctx = {}) {
|
||||
feld('anbieter.email', 'E-Mail-Adresse', email),
|
||||
feld('anbieter.telefon', 'Telefon (freiwillig)', telefon),
|
||||
feld('anbieter.ustId', 'USt-IdNr. (freiwillig)', ustId, 'Zum Beispiel DE123456789. Lass das Feld leer, wenn du keine hast.')),
|
||||
abschnitt('Steuer', null,
|
||||
hakenFeld('kleinunternehmer', kleinunternehmer, 'Ich bin Kleinunternehmer nach § 19 UStG', 'Dann steht im Shop der Hinweis, dass keine Umsatzsteuer berechnet wird. Ohne Haken gelten deine Preise inklusive Umsatzsteuer.')),
|
||||
abschnitt('Steuer', 'Pflichtangabe: Bitte wähle, wie bei dir die Umsatzsteuer behandelt wird. Ohne diese Angabe kannst du den Shop nicht öffnen.',
|
||||
h('fieldset', { class: 'sh-feld sh-radiogruppe', 'aria-required': 'true' },
|
||||
h('legend', null, 'Umsatzsteuer'),
|
||||
h('label', { class: 'sh-haken' }, steuerJa, h('span', null, 'Ich bin Kleinunternehmer nach § 19 UStG', h('small', { class: 'sh-hinweis' }, 'Dann steht im Shop der Hinweis, dass keine Umsatzsteuer berechnet wird.'))),
|
||||
h('label', { class: 'sh-haken' }, steuerNein, h('span', null, 'Ich weise Umsatzsteuer aus', h('small', { class: 'sh-hinweis' }, 'Dann gelten deine Preise inklusive Umsatzsteuer; den Steuersatz wählst du je Artikel.'))),
|
||||
h('p', { class: 'sh-fehler', 'data-fehler': 'kleinunternehmer', role: 'alert' }))),
|
||||
abschnitt('Versand', null,
|
||||
hakenFeld('versand.aktiv', versandAktiv, 'Ich versende Bestellungen'),
|
||||
versandDetails),
|
||||
@@ -206,7 +215,7 @@ export async function render(panel, ctx = {}) {
|
||||
telefon: telefon.value.trim(),
|
||||
ustId: ustId.value.trim(),
|
||||
},
|
||||
kleinunternehmer: kleinunternehmer.checked,
|
||||
kleinunternehmer: steuerJa.checked ? true : steuerNein.checked ? false : null,
|
||||
versand: { aktiv, laender: mitAt ? ['DE', 'AT'] : ['DE'], kostenCent, freiAbCent },
|
||||
abholung: { aktiv: abholungAktiv.checked, adresse: abholAdresse.value.trim(), hinweis: abholHinweis.value.trim() },
|
||||
lieferzeit: lieferzeit.value.trim(),
|
||||
|
||||
@@ -79,6 +79,8 @@
|
||||
.sh-haken > span { font-weight: 600; }
|
||||
.sh-haken small { display: block; margin-top: 2px; font-weight: 400; }
|
||||
.sh-feld-haken { margin-top: 4px; }
|
||||
.sh-radiogruppe { border: 0; padding: 0; margin: 0 0 8px; min-width: 0; }
|
||||
.sh-radiogruppe legend { padding: 0; font-weight: 600; font-size: 14px; }
|
||||
.sh-frage-box { display: grid; gap: 10px; margin: 12px 0; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--kb-purple-line); background: var(--kb-purple-soft); }
|
||||
.sh-frage-box:focus { outline: none; }
|
||||
|
||||
|
||||
Reference in new issue
Block a user