2e7931b36b
Implements #914 (kundnummer on customers, printed on the invoice PDF). - Migration: nullable text column customers.customer_number, no unique constraint in v1 so existing rows and imports keep working. - API: CreateCustomerSchema/UpdateCustomerSchema accept an optional customer_number (trimmed, max 32 chars, nullable-then-optional so the OpenAPI registry sees it as not required); create/update routes persist it and normalize empty string to null so it can be cleared. - v1 public API: customers create/detail/update round-trip the field (insert and update field lists, response projections, response schemas), and the invoices :send route fetches customer_number in its explicit customer join so the emailed PDF matches the downloaded one (the pdf route already selects customers(*)). - UI: optional Kundnummer field in CustomerForm (next-intl keys in both sv and en), wired into the edit dialog's initialData; read-only Kundnummer row on the customer detail page's business-details card. - Invoice PDF: renders "Kundnr:" / "Customer no.:" in the customer box when set; the PDF reads the live customers join, so no snapshot column is needed. - Tests: route tests cover 400 validation, trimming, clearing with null/empty, and omit-leaves-untouched on POST and PATCH; v1 tests cover the create/update round-trip (insert/update payload + response projection) and the :send customer-join projection. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
17 lines
695 B
SQL
17 lines
695 B
SQL
-- Customer number (kundnummer) on customers, shown on the invoice (issue #914).
|
|
--
|
|
-- Nullable free text set by the user. Deliberately NO unique constraint in v1:
|
|
-- existing rows, register imports, and provider syncs must not start failing
|
|
-- on duplicates. Auto-numbering and uniqueness can be layered on later.
|
|
--
|
|
-- No RLS changes needed: customers already has company-scoped policies and a
|
|
-- plain column add inherits them.
|
|
|
|
ALTER TABLE public.customers
|
|
ADD COLUMN IF NOT EXISTS customer_number text;
|
|
|
|
COMMENT ON COLUMN public.customers.customer_number IS
|
|
'User-assigned customer number (kundnummer) printed on invoices. Free text, not unique in v1.';
|
|
|
|
NOTIFY pgrst, 'reload schema';
|