feat(cfdi): agrega C.P. receptor, regimen receptor, no_identificacion, tipo_relacion y CFDIs relacionados al visualizador
Backend: - Migracion 044: codigo_postal_receptor VARCHAR(5) + indice - sat-parser: extrae DomicilioFiscalReceptor - sat.service: persiste codigo_postal_receptor en INSERT/UPDATE - cfdi.service: incluye codigo_postal_receptor en CFDI_SELECT - shared/types: codigoPostalReceptor en interfaz Cfdi Frontend: - cfdi-invoice: tarjeta receptor con C.P. y regimen (con descripciones) - cfdi-invoice: seccion CFDI Relacionado (tipo + UUIDs) - cfdi-invoice: columna No. Identificacion en tabla de conceptos - cfdi-viewer-modal: mapea noIdentificacion desde DB y XML
This commit is contained in:
@@ -390,3 +390,42 @@ Se reemplazó por un estado de resultados vertical contable con 7 líneas, anál
|
||||
**Causa:** PostgreSQL devolvía `numeric` como string en el driver `pg`. Al sumar strings en el `reduce` del frontend, JavaScript concatenaba en lugar de sumar, generando `NaN` al formatear.
|
||||
|
||||
**Fix:** Se agregó `::float` en las 5 queries SQL de CFDIs individuales del drill-down, forzando que el backend devuelva números reales.
|
||||
|
||||
---
|
||||
|
||||
## 8. Visualizador de CFDI — campos faltantes
|
||||
|
||||
**Fecha:** 2026-05-04
|
||||
|
||||
Se agregaron 5 campos adicionales al visualizador de CFDI (`CfdiInvoice`) para mostrar información completa del comprobante:
|
||||
|
||||
| Campo | Origen | Backend | Frontend |
|
||||
|---|---|---|---|
|
||||
| **C.P. del receptor** | CFDI 4.0 `Receptor@DomicilioFiscalReceptor` | ✅ Migración + parser + sync + query | ✅ Tarjeta de receptor |
|
||||
| **Régimen del receptor** | Ya existía en BD | — | ✅ Tarjeta de receptor con descripción |
|
||||
| **No. identificación** (conceptos) | Ya existía en BD | — | ✅ Nueva columna en tabla de conceptos |
|
||||
| **Tipo de relación** | Ya existía en BD | — | ✅ Sección "CFDI Relacionado" con descripción SAT |
|
||||
| **CFDIs relacionados** (UUIDs) | Ya existía en BD | — | ✅ Badges con UUIDs separados por pipe |
|
||||
|
||||
### Backend (`apps/api/`)
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---|---|
|
||||
| `src/migrations/tenant/044_cfdis_codigo_postal_receptor.sql` | Nueva migración: columna `codigo_postal_receptor VARCHAR(5)` + índice parcial |
|
||||
| `src/services/sat/sat-parser.service.ts` | Extrae `codigoPostalReceptor` de `@_DomicilioFiscalReceptor` |
|
||||
| `src/services/sat/sat.service.ts` | INSERT/UPDATE incluyen `codigo_postal_receptor` |
|
||||
| `src/services/cfdi.service.ts` | `CFDI_SELECT` mapea `codigo_postal_receptor` → `"codigoPostalReceptor"` |
|
||||
| `packages/shared/src/types/cfdi.ts` | Agregado `codigoPostalReceptor: string \| null` a interfaz `Cfdi` |
|
||||
|
||||
### Frontend (`apps/web/`)
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---|---|
|
||||
| `components/cfdi/cfdi-invoice.tsx` | Renderizado de C.P., régimen, tipo relación, UUIDs relacionados, y columna "No. Id." en conceptos |
|
||||
| `components/cfdi/cfdi-viewer-modal.tsx` | Mapea `noIdentificacion` desde DB y desde parseo XML |
|
||||
|
||||
### Diccionarios agregados
|
||||
|
||||
- **`regimenFiscalLabels`**: 20 regímenes fiscales (601–626)
|
||||
- **`tipoRelacionLabels`**: 7 tipos de relación SAT (`01` Nota de crédito … `07` Aplicación de anticipo)
|
||||
- **`usoCfdiLabels`**: ya existía, se reutiliza para el receptor
|
||||
|
||||
Reference in New Issue
Block a user