2.3 KiB
2.3 KiB
TPV-FIXES — Design
Feature
ID: TPV-FIXES Bugs: favicon 404, Cashier label, pos/sales 400 error
Fix 1: favicon 404 (storefront)
Problema
project/storefront/src/app/layout.tsx no declara favicon en metadata.
Solución
Agregar al metadata en layout.tsx:
icons: { icon: '/favicon.ico', shortcut: '/favicon.ico' }
Archivos a modificar:
project/storefront/src/app/layout.tsx
Fix 2: Cashier label
Problema
El receipt muestra "Cajero:" hardcodeado. Posibles issues:
- El label no es neutral en género
- El valor
receipt.cashierviene vacío
Investigación requerida
- Verificar
receipt.cashierviene delbuildPosReceipt.ts - Si es localization, agregar i18n
- Si es empty,fix en el useCase que construye el receipt
Archivos a revisar:
project/src/modules/pos/application/build-pos-receipt.tsproject/apps/pos/src/types/checkout.ts
Solución provisional (si es localization)
// En ReceiptModal.tsx, línea ~95
<strong>{t('pos.cashier') || 'Cajero:'}</strong>
// O usar label neutral:
<strong>Operador:</strong>
Fix 3: pos/sales 400 error
Problema
Los endpoints POST /pos/sales y POST /pos/sales/:id/payments devuelven 400 cuando:
- Falta header
x-terminal-id - Falta
body.terminalId - Falta
methodCodeen payments
Solución
Revisar apps/pos/src/lib/api-client.ts para asegurar que:
- Se envía
x-terminal-idheader - El body incluye
terminalIdmatching
Si el bug es en el backend, mejorar mensaje de error Zod:
// En pos.routes.ts
.refine((value) => Boolean(value.methodCode || value.kind), {
message: 'methodCode o kind es requerido',
})
Resumen de cambios
| Bug | Archivo | Cambio |
|---|---|---|
| favicon | storefront/src/app/layout.tsx |
Agregar icons a metadata |
| cashier | pos/src/components/ReceiptModal.tsx |
Verificar yfix label/value |
| 400 error | pos/src/lib/api-client.ts |
Verificar headers/body |
Testing
- Navegar storefront → verificar favicon en tab
- Crear venta POS → verificar receipt muestra cashier correcto
- Llamar POST /pos/sales → verificar 201 vs 400
Gates
- reviewer: PENDING
- security: PENDING
- qa: PENDING