From 8f4f05a3cd4f95f72e780599cec7498d21640ffb Mon Sep 17 00:00:00 2001 From: DanielS Date: Tue, 30 Jun 2026 15:23:33 +0200 Subject: [PATCH] refactor: rename orders to inquiries and update PDF and email text --- shop/app/layout.tsx | 2 +- shop/app/my-orders/page.tsx | 16 +++++++------- shop/app/order/success/page.tsx | 32 +++++++++++++-------------- shop/components/invoice-pdf.tsx | 39 ++++++++++++++++++--------------- shop/lib/actions/orders.ts | 22 +++++++++---------- 5 files changed, 57 insertions(+), 54 deletions(-) diff --git a/shop/app/layout.tsx b/shop/app/layout.tsx index 1902e47..288c3ab 100644 --- a/shop/app/layout.tsx +++ b/shop/app/layout.tsx @@ -13,7 +13,7 @@ const defaultUrl = process.env.VERCEL_URL export const metadata: Metadata = { metadataBase: new URL(defaultUrl), title: "CASPOS-Shop | Die Kasse", - description: "Konfigurieren und bestellen Sie Ihre maßgeschneiderte Business-Software in Minuten.", + description: "Konfigurieren Sie Ihre maßgeschneiderte Business-Software in Minuten und fragen Sie sie an.", }; const geistSans = Geist({ diff --git a/shop/app/my-orders/page.tsx b/shop/app/my-orders/page.tsx index c036b42..08739fe 100644 --- a/shop/app/my-orders/page.tsx +++ b/shop/app/my-orders/page.tsx @@ -44,10 +44,10 @@ export default async function MyOrdersPage() {

- Meine Bestellungen + Meine Anfragen

- Alle Ihre Bestellungen auf einen Blick – inkl. aktuellem Status. + Alle Ihre Anfragen auf einen Blick – inkl. aktuellem Status.

@@ -55,16 +55,16 @@ export default async function MyOrdersPage() { {/* Fehler */} {error && (
- Fehler beim Laden der Bestellungen: {error.message} + Fehler beim Laden der Anfragen: {error.message}
)} - {/* Keine Bestellungen */} + {/* Keine Anfragen */} {!error && (!orders || orders.length === 0) && ( -

Sie haben noch keine Bestellungen aufgegeben.

+

Sie haben noch keine Anfragen aufgegeben.

@@ -72,7 +72,7 @@ export default async function MyOrdersPage() {
)} - {/* Bestellliste */} + {/* Anfragenliste */}
{(orders ?? []).map((order) => { const o = order as Order @@ -83,7 +83,7 @@ export default async function MyOrdersPage() { {/* Kopfzeile */}
-

Bestellnummer

+

Anfragenummer

#{o.order_number}

@@ -136,7 +136,7 @@ export default async function MyOrdersPage() { <>

- Bestellung eingegangen! + Anfrage eingegangen!

- Ihre Bestellung wurde erfolgreich gespeichert. + Ihre Anfrage wurde erfolgreich gespeichert.

#{o.order_number}
- {/* Bestell-Details */} + {/* Anfrage-Details */} - Bestellübersicht + Anfrageübersicht {statusLabel[o.status] ?? o.status} @@ -117,16 +117,16 @@ export default async function OrderSuccessPage({ {o.order_data.price_multiplier === 0 ? "Update (0-12 Monate): 100% Rabatt (inklusive)" : o.order_data.price_multiplier === 0.15 - ? "Update (13-14 Monate): 15% vom Listenpreis" - : o.order_data.price_multiplier === 0.30 - ? "Update (15-25 Monate): 30% vom Listenpreis" - : o.order_data.price_multiplier === 0.45 - ? "Update (26-37 Monate): 45% vom Listenpreis" - : o.order_data.price_multiplier === 0.60 - ? "Update (38-49 Monate): 60% vom Listenpreis" - : o.order_data.price_multiplier === 0.90 - ? "Neukauf (>= 50 Monate): 10% Rabatt" - : `Gebühr: ${o.order_data.price_multiplier * 100}%`} + ? "Update (13-14 Monate): 15% vom Listenpreis" + : o.order_data.price_multiplier === 0.30 + ? "Update (15-25 Monate): 30% vom Listenpreis" + : o.order_data.price_multiplier === 0.45 + ? "Update (26-37 Monate): 45% vom Listenpreis" + : o.order_data.price_multiplier === 0.60 + ? "Update (38-49 Monate): 60% vom Listenpreis" + : o.order_data.price_multiplier === 0.90 + ? "Neukauf (>= 50 Monate): 10% Rabatt" + : `Gebühr: ${o.order_data.price_multiplier * 100}%`}

{o.order_data.last_license_date && (

diff --git a/shop/components/invoice-pdf.tsx b/shop/components/invoice-pdf.tsx index 804f5c1..559fbab 100644 --- a/shop/components/invoice-pdf.tsx +++ b/shop/components/invoice-pdf.tsx @@ -110,17 +110,17 @@ export const InvoicePDF = ({ order, orderSnapshot, customer }: any) => { Software Solutions - CASPOS GmbH - Musterstraße 1 - 12345 Musterstadt + CASPOS Computerabrechnungssysteme GmbH + Alte Bundesstraße 16 + 76846 Hauenstein Deutschland - Angebotsbestätigung + Anfragebestätigung - Besteller / Kunde + Anfragender Kunde {customer.company_name} {customer.first_name} {customer.last_name} {customer.address} @@ -129,8 +129,8 @@ export const InvoicePDF = ({ order, orderSnapshot, customer }: any) => { - Bestelldetails - Bestellnummer: {order.order_number || order.id} + Anfragedetails + Anfrage-Nummer: {order.order_number || order.id} Datum: {new Date(order.created_at || Date.now()).toLocaleDateString('de-DE')} @@ -141,16 +141,16 @@ export const InvoicePDF = ({ order, orderSnapshot, customer }: any) => { {orderSnapshot.price_multiplier === 0 ? "Update (0-12 Monate): 100% Rabatt (inklusive)" : orderSnapshot.price_multiplier === 0.15 - ? "Update (13-14 Monate): 15% vom Listenpreis" - : orderSnapshot.price_multiplier === 0.30 - ? "Update (15-25 Monate): 30% vom Listenpreis" - : orderSnapshot.price_multiplier === 0.45 - ? "Update (26-37 Monate): 45% vom Listenpreis" - : orderSnapshot.price_multiplier === 0.60 - ? "Update (38-49 Monate): 60% vom Listenpreis" - : orderSnapshot.price_multiplier === 0.90 - ? "Neukauf (>= 50 Monate): 10% Rabatt auf Neukauf" - : `Gebühr: ${orderSnapshot.price_multiplier * 100}%`} + ? "Update (13-14 Monate): 15% vom Listenpreis" + : orderSnapshot.price_multiplier === 0.30 + ? "Update (15-25 Monate): 30% vom Listenpreis" + : orderSnapshot.price_multiplier === 0.45 + ? "Update (26-37 Monate): 45% vom Listenpreis" + : orderSnapshot.price_multiplier === 0.60 + ? "Update (38-49 Monate): 60% vom Listenpreis" + : orderSnapshot.price_multiplier === 0.90 + ? "Neukauf (>= 50 Monate): 10% Rabatt auf Neukauf" + : `Gebühr: ${orderSnapshot.price_multiplier * 100}%`} {orderSnapshot.last_license_date && ( @@ -165,7 +165,7 @@ export const InvoicePDF = ({ order, orderSnapshot, customer }: any) => { Beschreibung Preis (netto) - + {items.map((item: any, idx: number) => ( @@ -213,7 +213,10 @@ export const InvoicePDF = ({ order, orderSnapshot, customer }: any) => { {new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(taxAmount)} + Gesamtbetrag (netto): + MwSt.Betrag: Gesamtbetrag (brutto): + {new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(total)} diff --git a/shop/lib/actions/orders.ts b/shop/lib/actions/orders.ts index 869a488..988b3d1 100644 --- a/shop/lib/actions/orders.ts +++ b/shop/lib/actions/orders.ts @@ -81,7 +81,7 @@ export async function submitOrder(params: { if (!prod) { throw new Error(`Das ausgewählte Produkt für Kategorie "${cat.name}" wurde nicht gefunden.`) } - + // Validate selected modules for (const mId of sel.moduleIds) { const mod = prod.modules?.find(m => m.id === mId) @@ -205,7 +205,7 @@ export async function submitOrder(params: { ) // 6. PDF in Supabase Storage hochladen - const fileName = `angebotsbestaetigung_${order.id}.pdf` + const fileName = `ab_${order.id}.pdf` const { error: uploadError } = await supabase .storage .from('invoices') @@ -224,21 +224,21 @@ export async function submitOrder(params: { try { const formattedDate = new Date(order.created_at).toLocaleDateString('de-DE') const formattedTotal = order.total_price.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }) - + await sendMail({ to: user.email, - subject: `Angebotsbestätigung ${orderNumber}`, - text: `Hallo,\n\nvielen Dank für Ihre Bestellung bei CASPOS Shop!\n\nBestelldetails:\n- Bestellnummer: ${orderNumber}\n- Datum: ${formattedDate}\n- Endkunde: ${customerSnapshot.company_name}\n- Gesamtsumme: ${formattedTotal}\n\nIm Anhang dieser E-Mail finden Sie Ihre Angebotsbestätigung als PDF-Dokument.\n\nViele Grüße,\nIhr CASPOS Shop-Team`, + subject: `Anfragebestätigung ${orderNumber}`, + text: `Hallo,\n\nvielen Dank für Ihre Anfrage bei CASPOS Shop!\n\nAngebotsdetails:\n- Anfrage-Nummer: ${orderNumber}\n- Datum: ${formattedDate}\n- Endkunde: ${customerSnapshot.company_name}\n- Gesamtsumme: ${formattedTotal}\n\nIm Anhang dieser E-Mail finden Sie Ihre Anfragebestätigung als PDF-Dokument.\n\nViele Grüße,\nIhr CASPOS Shop-Team`, html: `

-

Vielen Dank für Ihre Bestellung!

+

Vielen Dank für Ihre Anfrage!

Hallo,

-

wir freuen uns sehr über Ihre Bestellung bei CASPOS Shop. Ihre Bestellung wurde erfolgreich entgegengenommen und wird nun verarbeitet.

+

wir freuen uns sehr über Ihre Anfrage bei CASPOS Shop. Ihre Anfrage wurde erfolgreich entgegengenommen und wird nun verarbeitet.

-

Bestelldetails

+

Anfrage-Details

- + @@ -255,7 +255,7 @@ export async function submitOrder(params: {
Bestellnummer:Anfrage-Nummer: ${orderNumber}
-

Im Anhang dieser E-Mail finden Sie Ihre Angebotsbestätigung als PDF-Dokument.

+

Im Anhang dieser E-Mail finden Sie Ihre Anfragebestätigung als PDF-Dokument.

Mit freundlichen Grüßen,
Ihr CASPOS Shop-Team


Diese E-Mail wurde automatisch generiert. Bitte antworten Sie nicht darauf.

@@ -321,7 +321,7 @@ export async function updateOrderStatus( if (order.user_id) { try { const { data: { user }, error: userError } = await admin.auth.admin.getUserById(order.user_id) - + if (!userError && user && user.email) { const orderNumber = order.order_number || order.id.slice(0, 8) const statusLabelMap: Record = {