From eb655e109fe850c36b808e35ea7c3b9d4693479a Mon Sep 17 00:00:00 2001 From: Deploy Date: Wed, 26 Aug 2026 22:03:23 +0200 Subject: [PATCH] fix(pos-selfpay): hide payment methods until email step completes --- project/apps/admin/next-env.d.ts | 4 ++-- project/apps/pos/src/app/(terminal)/page.tsx | 18 +++++++++++++++--- project/storefront/next-env.d.ts | 4 ++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/project/apps/admin/next-env.d.ts b/project/apps/admin/next-env.d.ts index ce4e94a..a419cbe 100644 --- a/project/apps/admin/next-env.d.ts +++ b/project/apps/admin/next-env.d.ts @@ -1,7 +1,7 @@ /// /// -import "./.next/types/routes.d.ts"; -import "./.next/types/root-params.d.ts"; +import "./.next/dev/types/routes.d.ts"; +import "./.next/dev/types/root-params.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/project/apps/pos/src/app/(terminal)/page.tsx b/project/apps/pos/src/app/(terminal)/page.tsx index 534eb18..16f2f58 100644 --- a/project/apps/pos/src/app/(terminal)/page.tsx +++ b/project/apps/pos/src/app/(terminal)/page.tsx @@ -143,6 +143,7 @@ export default function RegisterPage() { // POS-SELFPAY-FLOW: optional email for receipt before payment const [showSelfpayEmail, setShowSelfpayEmail] = useState(false); const [selfpayEmail, setSelfpayEmail] = useState(''); + const [selfpayPaymentReady, setSelfpayPaymentReady] = useState(false); let toastTimer: ReturnType | undefined; const showAddedToast = (name: string) => { clearTimeout(toastTimer); @@ -509,6 +510,12 @@ export default function RegisterPage() { }); setReceipt(result.receipt); setRestPaymentFor(null); + // POS-SELFPAY-FLOW: send receipt by email if provided + if (isSelfpayMode && selfpayEmail.trim()) { + void posApi.emailReceipt(result.receipt.orderId, selfpayEmail.trim()).catch(() => { + // Non-blocking: email failure shouldn't interrupt the sale + }); + } void loadPendingSales(); } catch (err) { setError(err instanceof Error ? err.message : 'No se pudo confirmar la venta'); @@ -783,6 +790,8 @@ export default function RegisterPage() { setError(''); setSearch(''); setShowClearConfirm(false); + setSelfpayPaymentReady(false); + setSelfpayEmail(''); }; const searchCustomers = async (query: string) => { @@ -1649,7 +1658,7 @@ export default function RegisterPage() {

)} {/* POS-SELFPAY-FLOW: in selfpay mode, hide payment methods until email is captured */} - {(!isSelfpayMode || selfpayEmail !== undefined) && ( + {(!isSelfpayMode || selfpayPaymentReady) && (
{config.paymentMethods.map((method) => (