95 lines
2.3 KiB
Markdown
95 lines
2.3 KiB
Markdown
# 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`:
|
|
|
|
```typescript
|
|
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:
|
|
1. El label no es neutral en género
|
|
2. El valor `receipt.cashier` viene vacío
|
|
|
|
### Investigación requerida
|
|
- [ ] Verificar `receipt.cashier` viene del `buildPosReceipt.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.ts`
|
|
- `project/apps/pos/src/types/checkout.ts`
|
|
|
|
### Solución provisional (si es localization)
|
|
```typescript
|
|
// 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:
|
|
1. Falta header `x-terminal-id`
|
|
2. Falta `body.terminalId`
|
|
3. Falta `methodCode` en payments
|
|
|
|
### Solución
|
|
Revisar `apps/pos/src/lib/api-client.ts` para asegurar que:
|
|
1. Se envía `x-terminal-id` header
|
|
2. El body incluye `terminalId` matching
|
|
|
|
**Si el bug es en el backend**, mejorar mensaje de error Zod:
|
|
|
|
```typescript
|
|
// 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
|