Profile: Rechnungsadresse is always a street address, no Packstation toggle

Matches /checkout's own billing card exactly (an invoice needs a real
postal address) — the profile form previously offered a Lieferart/
Packstation choice for what's actually always used as the billing
address, inconsistent now that a separate "Lieferadresse" section exists.
This commit is contained in:
Marco
2026-07-30 08:48:04 +00:00
parent e3352d7e32
commit 8c843c0ac1
3 changed files with 57 additions and 54 deletions
+37
View File
@@ -1999,6 +1999,43 @@ field-lock security logic is still tested in the **Payload backend's**
own `test:unit` — see that repo's README's own "Tests" section, since
that's where that logic actually lives.
## 2026-07-30 changes
**Blog posts can have multiple categories.** `BlogPost.categories` is now
`string[]` (was a single `category: string`), joined with `", "` wherever
a single category used to render (`/blog`, `/blog/[slug]`,
`LivePostContent.tsx`, `components/Blog.tsx`). Backend field is
`Posts.categories`, a `hasMany` relationship — see the Payload backend's
own README.
**Checkout's "Abweichende Lieferadresse" gained Firma + Kontakt-E-Mail/
Telefon** (all optional) — handed to the shipping carrier, not used for
any customer communication (that stays the account email above). Backed
by new `Orders.shipping*` fields with no shipping-side `vatId` (billing-
only concept, deliberately not mirrored).
**The customer profile (`/konto/profil`) can now store its own shipping
address**, mirroring the checkout's own "Abweichende Lieferadresse"
section field-for-field (same checkbox pattern, same fields incl. the new
Firma/Kontakt fields above) — prefills the checkout section for a
returning customer instead of always starting blank. Backed by
`Customers`' new "Lieferadresse" tab in the Payload backend.
**Products can have an optional SKU** even without variants
(`Products.sku` — variants already had their own). Snapshotted onto each
order item at checkout (`app/api/checkout/route.ts` — variant SKU takes
precedence over the product's own) and shown as "Art.-Nr." on the invoice
PDF, the order-confirmation email, and `/konto/bestellungen/[orderNumber]`.
**`@einfach-produktiv/invoicing` bumped to 0.2.7** for the SKU +
shipping-contact rendering above — re-run `npm install
@einfach-produktiv/invoicing` after pulling if your local `node_modules`
predates this.
Full plan for an n8n-driven blog-post content-automation pipeline (not yet
built) lives in the Payload backend repo's `docs/blog-automation-plan.md`,
not duplicated here since it changes independently of this frontend.
## Deployment
- **Dockerfile**: 3-stage build (`deps``builder``runner`) with