# TICKET-LOGO — Implementer Report

## Feature
**ID:** TICKET-LOGO
**Title:** TPV ticket header: allow custom text or logo upload

## Cambios Realizados

### 1. Migration (nueva)
**Archivo:** `project/migrations/063_pos_store_logo_url.js`
- Agrega columna `logo_url` (text, nullable) a `pos_stores`

### 2. Domain Types
**Archivo:** `project/src/modules/pos/domain/pos-sale.ts`
- Agregado `logoUrl: string | null` a interface `PosReceipt`

### 3. Build Receipt
**Archivo:** `project/src/modules/pos/application/build-pos-receipt.ts`
- Query SQL incluye `store.logo_url`
- Receipt incluye `logoUrl` del store
- `buildPosReturnReceipt` propaga `logoUrl`

### 4. API Routes
**Archivo:** `project/src/modules/pos/api/pos.routes.ts`
- POST `/pos/admin/stores`: acepta `logoUrl` (URL válida, max 500)
- PATCH `/pos/admin/receipt-settings`: actualiza `logo_url`

### 5. Admin UI
**Archivo:** `project/apps/admin/src/app/(dashboard)/pos/page.tsx`
- Interface `ReceiptSettings` incluye `logoUrl`
- Campo input para URL del logo
- Empty state incluye `logoUrl: ''`

### 6. POS Receipt Modal
**Archivo:** `project/apps/pos/src/components/ReceiptModal.tsx`
- Logo usa `receipt.logoUrl ?? '/images/logo-main.png'`

### 7. POS Types
**Archivo:** `project/apps/pos/src/types/checkout.ts`
- `PosReceipt` interface incluye `logoUrl`

## Archivos Modificados/Creados
1. `project/migrations/063_pos_store_logo_url.js` (nuevo)
2. `project/src/modules/pos/domain/pos-sale.ts`
3. `project/src/modules/pos/application/build-pos-receipt.ts`
4. `project/src/modules/pos/api/pos.routes.ts`
5. `project/apps/admin/src/app/(dashboard)/pos/page.tsx`
6. `project/apps/pos/src/components/ReceiptModal.tsx`
7. `project/apps/pos/src/types/checkout.ts`

## Testing Recomendado
1. Admin: crear/editar store con logoUrl → guardar
2. POS: crear venta → receipt muestra logo custom
3. POS: store sin logo → usa default `/images/logo-main.png`
4. Devolución: receipt muestra logo del store

## Complejidad: Medium
## Riesgo: Low
## Impacto: UX mejorada en tickets TPV
