From 5a28f753031b52cc9fee80888a504e8feed20866 Mon Sep 17 00:00:00 2001 From: BOHA Date: Thu, 23 Apr 2026 18:17:20 +0200 Subject: [PATCH] 1.5.3 - feat: manual VAT override in order confirmation modal - feat: order confirmation PDF respects user-selected applyVat toggle Co-Authored-By: Claude Opus 4.7 --- package.json | 2 +- .../components/OrderConfirmationModal.tsx | 41 +++++++++++++++++-- src/admin/pages/OrderDetail.tsx | 4 +- src/routes/admin/orders-pdf.ts | 3 +- 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ed6a119..4b70a10 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "app-ts", - "version": "1.5.2", + "version": "1.5.3", "description": "", "main": "dist/server.js", "scripts": { diff --git a/src/admin/components/OrderConfirmationModal.tsx b/src/admin/components/OrderConfirmationModal.tsx index 98e9283..cd28286 100644 --- a/src/admin/components/OrderConfirmationModal.tsx +++ b/src/admin/components/OrderConfirmationModal.tsx @@ -13,10 +13,15 @@ interface ConfirmationItem { interface OrderConfirmationModalProps { isOpen: boolean; onClose: () => void; - onGenerate: (lang: string, items?: ConfirmationItem[]) => Promise; + onGenerate: ( + lang: string, + applyVat: boolean, + items?: ConfirmationItem[], + ) => Promise; initialItems: ConfirmationItem[]; orderNumber: string; defaultVatRate: number; + applyVat: boolean; } export default function OrderConfirmationModal({ @@ -26,16 +31,18 @@ export default function OrderConfirmationModal({ initialItems, orderNumber, defaultVatRate, + applyVat, }: OrderConfirmationModalProps) { const [step, setStep] = useState<"choose" | "edit">("choose"); const [lang, setLang] = useState("cs"); + const [applyVatState, setApplyVatState] = useState(applyVat); const [items, setItems] = useState(initialItems); const [loading, setLoading] = useState(false); const handleUseExisting = async () => { setLoading(true); try { - await onGenerate(lang, undefined); + await onGenerate(lang, applyVatState, undefined); } finally { setLoading(false); setStep("choose"); @@ -46,7 +53,7 @@ export default function OrderConfirmationModal({ const handleEditGenerate = async () => { setLoading(true); try { - await onGenerate(lang, items); + await onGenerate(lang, applyVatState, items); } finally { setLoading(false); setStep("choose"); @@ -144,6 +151,34 @@ export default function OrderConfirmationModal({ +
+ +
+ + +
+
+

)}

diff --git a/src/routes/admin/orders-pdf.ts b/src/routes/admin/orders-pdf.ts index fb480c0..5bfb9ed 100644 --- a/src/routes/admin/orders-pdf.ts +++ b/src/routes/admin/orders-pdf.ts @@ -250,7 +250,8 @@ export default async function ordersPdfRoutes( } const currency = order.currency || "CZK"; - const applyVat = !!order.apply_vat; + const applyVat = + body.applyVat !== undefined ? !!body.applyVat : !!order.apply_vat; const orderVatRate = Number(order.vat_rate) || 21; // Use custom items from body if provided, otherwise order items