// VerifyFacturaScreen — pantalla intermedia entre "enviar pedido" y "siendo procesada" // La vendedora revisa exactamente lo que pidió, total y ganancia estimada, // y confirma con un botón. Reduce errores y disputas posteriores. function VerifyFacturaScreen({ vendedora, factura, pedido, onConfirm, onBack }) { const T = window.T; const { Icon, ProductTile } = window; const [submitting, setSubmitting] = React.useState(false); const [error, setError] = React.useState(''); const productos = (factura?.productosOriginales && factura.productosOriginales.length) ? factura.productosOriginales : (pedido?.productos || []); const total = productos.reduce((s, p) => s + (+p.precio || 0) * (+p.cantidad || 0), 0); const items = productos.reduce((s, p) => s + (+p.cantidad || 0), 0); const descuentoPct = factura?.descuentoPct || 20; const ganancia = +(total * descuentoPct / 100).toFixed(2); const aPagar = +(total * (100 - descuentoPct) / 100).toFixed(2); const paymentCampaignId = factura?.campaignId || pedido?.campaignId || pedido?.campanaId || pedido?.campana; const hasPaymentPlan = window.getPaymentPlanForCampaign && window.getPaymentPlanForCampaign(paymentCampaignId); const paymentPlanLabel = hasPaymentPlan?.label || paymentCampaignId || 'esta campana'; async function handleConfirm() { if (submitting || !factura?.id) return; setSubmitting(true); setError(''); try { const updated = await window.pedidosApi.verificarFactura(factura.id); onConfirm && onConfirm(updated); } catch (e) { console.error('verificar err', e); setError(e.message || 'No se pudo confirmar la factura'); setSubmitting(false); } } return (
{/* Header */}
Paso 2 de 2 · Verifica tu factura
¿Confirmas que esta es tu factura?
Revisa que todos los productos y cantidades estén correctos. Una vez confirmes, Elizabeth procesará tu pedido.
{/* Card de resumen */}
$
Total del pedido
${total.toFixed(2)}
{items} {items === 1 ? 'unidad' : 'unidades'} · {productos.length} {productos.length === 1 ? 'producto' : 'productos'}
Ganancia estimada
${ganancia.toFixed(2)}
{descuentoPct}% sobre total
{/* Lista de productos a confirmar */}
Productos en tu pedido
{productos.map((p, i) => (
{p.codigo} · {p.catalogo}
{p.nombre}
{p.tono && (
{p.tono}
)} {p.descripcion && (
{p.descripcion}
)} {p.notaOferta && (
{p.notaOferta}
)}
×{p.cantidad}
${(+p.precio * +p.cantidad).toFixed(2)}
))}
{hasPaymentPlan && window.PaymentPlanCard && (
)} {!hasPaymentPlan && ( <> {/* Note about cuotas */}
Las cuotas y fechas de pago aparecerán cuando Elizabeth procese tu factura. Si algún producto no llega, el total se ajusta antes de pagar.
)} {/* Error */} {error && (
{error}
)} {/* CTA flotante */}
); } window.VerifyFacturaScreen = VerifyFacturaScreen;