Apartados: pagos externos automatizados y fix de folio
Se corrigió el crash de 'No se pudo generar el folio' (gen_random_bytes vivía en otro schema; ahora el token usa gen_random_uuid + ruido temporal sin depender de pgcrypto). El generador de folio ignora valores legacy malformados. Nueva RPC generateLayawayPaymentLink reutiliza el motor de links del POS para crear pagos externos automáticos (EcartPay/Stripe/MP/Revolut), envía el link por email al cliente y registra un pago pendiente. El webhook /api/public/hooks/payment-webhook reconoce apartados además de ventas y confirma el pago llamando a layaway_record_external_payment, actualizando paid_total/balance_due y pasando a paid_pending_pickup si queda en cero. Idempotencia por external_order_id y por evento de webhook. Los errores reales del servidor ahora se muestran al cajero para diagnóstico.
Aspectos destacados
- Fix folio/QR sin pgcrypto
- Link de pago automático para apartado
- Email al cliente
- Webhook confirma apartado
- Idempotencia por orden externa
- Errores reales visibles