sevDesk: automatische Rechnung (Entwurf) bei Konfigurator-Bestellung

- Neue Hook-Extension skrift-sevdesk: legt bei orders.items.create (source=
  configurator) eine sevDesk-Rechnung als ENTWURF an – Kontakt wird angelegt/
  wiederverwendet (sevdesk_contact_id am Konto), Positionen aus price_lines
  (Produkt mit Menge; Versand/Motiv/Zusatz je eigene Position), 19% USt.
  Nicht-blockierend, per SEVDESK_API_TOKEN aktiviert; Versand NICHT über sevDesk.
- orders.price_lines (JSON) speichert die Positionsaufstellung bei Bestellung
  (Konfigurator + manueller Auftrag).
- bootstrap: orders.price_lines/sevdesk_invoice_id/sevdesk_invoice_number,
  directus_users.sevdesk_contact_id.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
s4luorth
2026-09-18 07:44:28 +02:00
parent 10776764d7
commit 0f73a653b3
4 changed files with 234 additions and 0 deletions

View File

@@ -1807,6 +1807,7 @@ const handler = (router, { services, getSchema, logger }) => {
entries_count: entries.length,
count_inland: entries.length - countAusland, count_ausland: countAusland,
net_total: quote?.net_total ?? null, vat_amount: quote?.vat_amount ?? null, gross_total: quote?.gross_total ?? null,
price_lines: quote?.lines ?? null,
};
let orderId, orderNumber;
@@ -1990,6 +1991,7 @@ const handler = (router, { services, getSchema, logger }) => {
net_total: quote.net_total,
vat_amount: quote.vat_amount,
gross_total: quote.gross_total,
price_lines: quote.lines ?? null,
voucher: quote.voucher?.id ?? null,
payment_method: paymentMethod,
payment_status: body.source === 'extern' ? 'bezahlt' : 'offen',