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
@@ -6,7 +6,8 @@ import { withLocks } from '../keyedLock.js'
|
||||
* Shop-Einstellungen (Plan 2026-10-05-webshop.md, Task C2; shopConfig.einstellungen als JSON-Text).
|
||||
* Normalisieren ist rein: Eingabe => { einstellungen } mit frischem, vollstaendigem Objekt oder { fehler: { 'feld.pfad': 'Text' } }
|
||||
* (Texte in Du-Form, das Portal spricht den Haendler an). Leere Pflichtangaben sind beim Normalisieren erlaubt, damit der Haendler
|
||||
* Schritt fuer Schritt speichern kann; ob alles da ist, sagt istVollstaendig(). Geld ist immer ganze Cent.
|
||||
* Schritt fuer Schritt speichern kann; ob alles da ist, sagt istVollstaendig() (u. a. muss kleinunternehmer true oder false sein;
|
||||
* null = noch nicht gewaehlt, rechnet wie false). Geld ist immer ganze Cent.
|
||||
*/
|
||||
|
||||
const ZAHLUNGSARTEN = ['card', 'klarna', 'sepa_debit']
|
||||
@@ -26,10 +27,11 @@ const tief = (wert) => {
|
||||
export const STANDARD_EINSTELLUNGEN = tief({
|
||||
shopname: '',
|
||||
anbieter: { name: '', strasse: '', plz: '', ort: '', land: 'DE', email: '', telefon: '', ustId: '' },
|
||||
kleinunternehmer: true,
|
||||
// null = noch nicht gewaehlt: der Haendler muss sich bewusst entscheiden (istVollstaendig verlangt true oder false)
|
||||
kleinunternehmer: null,
|
||||
versand: { aktiv: true, laender: ['DE'], kostenCent: { DE: 490 }, freiAbCent: null },
|
||||
abholung: { aktiv: false, adresse: '', hinweis: '' },
|
||||
lieferzeit: '2–4 Werktage',
|
||||
lieferzeit: '',
|
||||
zahlungsarten: ['card'],
|
||||
akzent: '#111111',
|
||||
mindestbestellCent: null,
|
||||
@@ -245,6 +247,8 @@ export function istVollstaendig(einstellungen) {
|
||||
const r = normalisiereEinstellungen(einstellungen)
|
||||
if (r.fehler) return false
|
||||
const e = r.einstellungen
|
||||
// Die Steuerart muss bewusst gewaehlt sein (kein Standardwert): sonst stuenden unrichtige Steuerangaben im Shop
|
||||
if (typeof e.kleinunternehmer !== 'boolean') return false
|
||||
return [e.shopname, e.anbieter.name, e.anbieter.strasse, e.anbieter.plz, e.anbieter.ort, e.anbieter.email, e.lieferzeit].every((s) => s !== '')
|
||||
}
|
||||
|
||||
|
||||
@@ -215,7 +215,7 @@ export async function bereitschaft(ctx, { produkte } = {}) {
|
||||
ok: istVollstaendig(shop.einstellungen),
|
||||
text: istVollstaendig(shop.einstellungen)
|
||||
? 'Deine Shop-Angaben sind vollständig.'
|
||||
: 'Bitte vervollständige deine Shop-Angaben (Shopname, Anbieter mit Anschrift und E-Mail, Lieferzeit).',
|
||||
: 'Bitte vervollständige deine Shop-Angaben (Shopname, Anbieter mit Anschrift und E-Mail, Steuerart, Lieferzeit).',
|
||||
},
|
||||
{
|
||||
id: 'rechtstexte',
|
||||
|
||||
Reference in new issue
Block a user