# 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
