mirror of
https://github.com/marcogll/ap_pos.git
synced 2026-01-13 13:15:16 +00:00
feat: Implement robust discount/anticipo detection system for PNG receipts
- Added comprehensive discount detection logic in hasAnyDiscount() - Created extractDiscountInfo() to handle multiple data sources - Updated all discount rendering functions to use new extraction logic - Enhanced support for manual anticipos and applied discounts - Improved fallback detection using subtotal vs monto differences - Added Material Symbols icons to action buttons in table - Fixed discount display issues in PNG receipt generation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
140
PNG_RECEIPT_PROGRESS.md
Normal file
140
PNG_RECEIPT_PROGRESS.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# 📋 PNG Receipt System - Progress Tracker
|
||||
|
||||
## 🎯 Estado del Proyecto
|
||||
**Iniciado**: 2025-09-14
|
||||
**Estado Actual**: 📝 Planificación Completa
|
||||
**Próximo**: 🚀 Fase 1 - Setup
|
||||
|
||||
---
|
||||
|
||||
## ✅ Tasks Completadas
|
||||
|
||||
### 📝 Planificación y Documentación
|
||||
- [x] **Análisis del sistema actual** - Comprensión completa de `print.js` y generación de tickets
|
||||
- [x] **Identificación de casos de uso** - Matriz completa de combinaciones de tickets
|
||||
- [x] **Especificación técnica** - HTML/CSS structure y assets strategy
|
||||
- [x] **Plan de desarrollo** - 6 fases con estimaciones detalladas
|
||||
- [x] **Documentación README** - Especificación completa en `PNG_RECEIPT_README.md`
|
||||
- [x] **Setup de tracking** - Este documento de progreso
|
||||
|
||||
**Tiempo Total Planificación**: ~1 hora
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Tasks en Progreso
|
||||
|
||||
*Ninguna actualmente - Listo para comenzar desarrollo*
|
||||
|
||||
---
|
||||
|
||||
## 📋 Tasks Pendientes
|
||||
|
||||
### **FASE 1: Setup con Assets (45 min)**
|
||||
- [ ] Crear directorio `/assets/receipt/` y subir assets
|
||||
- [ ] Agregar librerías CDN: `html2canvas` + `FileSaver.js`
|
||||
- [ ] Crear archivo `receipt.js`
|
||||
- [ ] Crear archivo `receipt.css` con estilos base
|
||||
- [ ] Crear HTML structure base en memoria
|
||||
- [ ] Test de carga de assets y CSS
|
||||
|
||||
### **FASE 2: Template Engine + Lógica (60 min)**
|
||||
- [ ] Implementar `analyzeTicketType()` function
|
||||
- [ ] Crear templates dinámicos por caso
|
||||
- [ ] Sistema de mapeo: `movement` → `receiptData`
|
||||
- [ ] Función `generateReceiptHTML()`
|
||||
- [ ] Test básico de renderizado
|
||||
|
||||
### **FASE 3: Contenido Dinámico y Médico (45 min)**
|
||||
- [ ] Implementar sección consentimiento médico
|
||||
- [ ] Sistema de datos oncológicos (médico, tel, cédula)
|
||||
- [ ] Formato de información de citas
|
||||
- [ ] Función `getConsentText()`
|
||||
- [ ] Test con datos médicos completos
|
||||
|
||||
### **FASE 4: Notas Anticipo Inteligentes (30 min)**
|
||||
- [ ] Lógica `shouldShowAnticipoNotes()`
|
||||
- [ ] Templates condicionales para anticipos
|
||||
- [ ] Diferenciación: anticipo puro vs aplicado
|
||||
- [ ] Test matrix casos anticipo
|
||||
|
||||
### **FASE 5: Generación PNG (30 min)**
|
||||
- [ ] Configuración `html2canvas` optimizada
|
||||
- [ ] Sistema de nombres: `Ticket_{FOLIO}.png`
|
||||
- [ ] Función `downloadReceiptPNG()` principal
|
||||
- [ ] Integration con tabla de tickets
|
||||
- [ ] Test de descarga y calidad
|
||||
|
||||
### **FASE 6: Testing Final (45 min)**
|
||||
- [ ] Test exhaustivo con todos los casos
|
||||
- [ ] Verificación calidad PNG en diferentes devices
|
||||
- [ ] Test compatibilidad navegadores
|
||||
- [ ] Performance testing
|
||||
- [ ] Documentación final de uso
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Test Matrix Status
|
||||
|
||||
| Caso de Uso | Planificado | Implementado | Testeado |
|
||||
|-------------|-------------|--------------|----------|
|
||||
| Servicio Simple | ✅ | ❌ | ❌ |
|
||||
| Servicio + Cita | ✅ | ❌ | ❌ |
|
||||
| Anticipo Puro | ✅ | ❌ | ❌ |
|
||||
| Servicio + Anticipo Aplicado | ✅ | ❌ | ❌ |
|
||||
| Cliente Consentimiento | ✅ | ❌ | ❌ |
|
||||
| Paciente Oncológico | ✅ | ❌ | ❌ |
|
||||
| Combo Completo | ✅ | ❌ | ❌ |
|
||||
|
||||
---
|
||||
|
||||
## 📊 Estimaciones vs Tiempo Real
|
||||
|
||||
| Fase | Estimado | Real | Diferencia | Estado |
|
||||
|------|----------|------|------------|---------|
|
||||
| Planificación | 60min | 60min | ✅ 0min | ✅ Completa |
|
||||
| Fase 1: Setup | 45min | -min | - | 📋 Pendiente |
|
||||
| Fase 2: Templates | 60min | -min | - | 📋 Pendiente |
|
||||
| Fase 3: Contenido Médico | 45min | -min | - | 📋 Pendiente |
|
||||
| Fase 4: Anticipo Logic | 30min | -min | - | 📋 Pendiente |
|
||||
| Fase 5: PNG Generation | 30min | -min | - | 📋 Pendiente |
|
||||
| Fase 6: Testing | 45min | -min | - | 📋 Pendiente |
|
||||
| **TOTAL** | **4h 15min** | **1h** | - | 🔄 **En progreso** |
|
||||
|
||||
---
|
||||
|
||||
## 🚨 Issues y Blockers
|
||||
|
||||
*Ninguno identificado actualmente*
|
||||
|
||||
---
|
||||
|
||||
## 📝 Notas de Desarrollo
|
||||
|
||||
### Assets Preparados
|
||||
- ✅ Background pattern
|
||||
- ✅ Logo corporativo
|
||||
- ✅ Business name imagen
|
||||
- ✅ Tagline imagen
|
||||
- ✅ "Comprobante" título
|
||||
- ✅ Rectángulo blanco container
|
||||
|
||||
### Decisiones Técnicas
|
||||
- **Font**: Montserrat para todo el contenido dinámico
|
||||
- **Width**: 400px optimizado para móvil
|
||||
- **Format**: PNG con transparencia
|
||||
- **Quality**: Scale 2x para HD
|
||||
- **Integration**: Botón separado en tabla tickets
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updates Log
|
||||
|
||||
**2025-09-14**
|
||||
- ✅ Proyecto iniciado y planificado completamente
|
||||
- ✅ README técnico creado
|
||||
- ✅ Sistema de tracking establecido
|
||||
- 🎯 Listo para Fase 1 cuando assets estén disponibles
|
||||
|
||||
---
|
||||
|
||||
**Próximo Update**: Después de completar Fase 1
|
||||
Reference in New Issue
Block a user