Kundenangebote: Auswahl im Konfigurator (Aufschlaege + Name-Zusatz)
All checks were successful
Build & Deploy / deploy (push) Successful in 43s
All checks were successful
Build & Deploy / deploy (push) Successful in 43s
Eingeloggte Kunden sehen ihre Angebote (customer_offers) je Produkt und waehlen eins; Aufschlaege pro Stueck flie\u00dfen serverseitig in den Preis, Name-Zusatz + Notiz sichtbar. Quote/Order senden jetzt den Token (auth) mit, damit die Angebote greifen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -296,11 +296,33 @@ export type QuoteInput = {
|
||||
email?: string;
|
||||
/** Segment für den Mengen-Multiplikator (B2B/B2C). */
|
||||
person_type?: 'privat' | 'unternehmen';
|
||||
/** Gewähltes Kundenangebot (ID) – Aufschläge werden serverseitig addiert. */
|
||||
offer?: number;
|
||||
};
|
||||
|
||||
/** Preis serverseitig berechnen lassen – der Client rechnet nie selbst. */
|
||||
/** Preis serverseitig berechnen lassen – der Client rechnet nie selbst.
|
||||
* auth:true, damit bei eingeloggten Kunden der Token mitgeht (Kundenangebote). */
|
||||
export async function fetchQuote(input: QuoteInput): Promise<Quote> {
|
||||
return request('/skrift-orders/quote', { method: 'POST', body: input, auth: false });
|
||||
return request('/skrift-orders/quote', { method: 'POST', body: input, auth: true });
|
||||
}
|
||||
|
||||
/* ── Kundenangebote (customer_offers) ───────────────────────────────────────── */
|
||||
|
||||
export type OfferSurcharge = { label: string; amount: number };
|
||||
export type CustomerOffer = {
|
||||
id: number;
|
||||
label: string;
|
||||
name_suffix?: string | null;
|
||||
note?: string | null;
|
||||
allow_multi_page?: boolean;
|
||||
surcharges?: OfferSurcharge[] | null;
|
||||
product?: { key: string; name: string } | null;
|
||||
};
|
||||
|
||||
/** Angebote des eingeloggten Kunden für ein Produkt (leer, wenn nicht eingeloggt). */
|
||||
export async function fetchMyOffers(productKey: string): Promise<CustomerOffer[]> {
|
||||
const data = await request(`/skrift-orders/my-offers?product=${encodeURIComponent(productKey)}`, { auth: true });
|
||||
return data?.offers ?? [];
|
||||
}
|
||||
|
||||
/* ── Motive ───────────────────────────────────────────────────────────────── */
|
||||
@@ -420,6 +442,8 @@ export type OrderInput = {
|
||||
voucher_code?: string;
|
||||
payment_method: 'paypal' | 'rechnung';
|
||||
source?: string;
|
||||
/** Gewähltes Kundenangebot (ID). */
|
||||
offer?: number;
|
||||
entries: unknown[];
|
||||
/** Motiv aus dem Katalog (ID) bzw. hochgeladene Datei (Directus-Datei-ID). */
|
||||
motif?: number;
|
||||
@@ -436,7 +460,9 @@ export type OrderResult = {
|
||||
};
|
||||
|
||||
export async function createOrder(input: OrderInput): Promise<OrderResult> {
|
||||
return request('/skrift-orders', { method: 'POST', body: input, auth: false });
|
||||
// auth:true → eingeloggte Kunden senden ihren Token (Kundenangebote greifen);
|
||||
// Gäste haben keine Session → kein Header, Verhalten wie zuvor.
|
||||
return request('/skrift-orders', { method: 'POST', body: input, auth: true });
|
||||
}
|
||||
|
||||
/** Vermerkt eine erfolgreiche PayPal-Zahlung am Auftrag. */
|
||||
|
||||
Reference in New Issue
Block a user