# 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 {t('pos.cashier') || 'Cajero:'} // O usar label neutral: Operador: ``` --- ## 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