fix(conciliacion): complementos de pago usan fecha_pago_p y campos faltantes en visor

- conciliacion.service.ts: filtros y ordenamiento ahora usan
  COALESCE(fecha_pago_p, fecha_emision). Los CFDIs tipo P
  (complementos de pago) aparecen en el periodo del pago real,
  no de la emision del CFDI.

- conciliacion.service.ts: agrega fechaPagoP al SELECT y a la
  interfaz ConciliacionCfdi.

- conciliacion/page.tsx: tablas y export Excel usan
  fechaPagoP || fechaEmision para mostrar la fecha.

- cfdi-invoice.tsx: para tipo P con fechaPagoP, muestra
  'Pago: {fecha}' en el encabezado.

- conciliacion.ts: actualiza interfaz ConciliacionCfdi con
  todos los campos que ya devuelve el backend.

Refs: docs/CAMBIOS-2026-05-09.md secciones 7 y 8
This commit is contained in:
Horux Dev
2026-05-11 17:31:35 +00:00
parent e21ccd6860
commit 6dfcbfc05c
5 changed files with 61 additions and 7 deletions

View File

@@ -250,6 +250,39 @@ Siempre caía en el `else` mostrando CANCELADO.
---
## 8. Fix: Complementos de pago (tipo P) en conciliación usan fecha de emisión en lugar de fecha de pago
**Problema:** Los complementos de pago emitidos por Husberto en abril no aparecían en la conciliación de "Emitidas" de abril. Estaban en mayo. Ejemplo:
- Factura PPD: 2026-04-22 a TPA210222462 por $167,140.97
- Complemento de pago: emitido 2026-05-03, pero el pago fue el **2026-04-30**
El usuario esperaba verlo en abril porque el pago ocurrió en abril, pero el sistema filtraba por `fecha_emision` (mayo).
**Causa raíz:** El servicio de conciliación filtraba y ordenaba siempre por `fecha_emision`. Para los complementos de pago (tipo P), la fecha relevante es `fecha_pago_p` (fecha del pago documentado), no la fecha de emisión del CFDI.
**Fix aplicado:**
1. **Backend (`apps/api/src/services/conciliacion.service.ts`):**
- Filtros de fecha: `c.fecha_emision``COALESCE(c.fecha_pago_p, c.fecha_emision)`
- ORDER BY: `c.fecha_emision DESC``COALESCE(c.fecha_pago_p, c.fecha_emision) DESC`
- SELECT: agregado `c.fecha_pago_p as "fechaPagoP"`
- Interfaz y mapeo: agregado `fechaPagoP`
2. **Frontend (`apps/web/app/(dashboard)/conciliacion/page.tsx`):**
- Tabla "Por conciliar": `{new Date(cfdi.fechaPagoP || cfdi.fechaEmision).toLocaleDateString('es-MX')}`
- Tabla "Conciliadas": mismo cambio
- Export Excel: mismo cambio
3. **Frontend (`apps/web/lib/api/conciliacion.ts`):**
- Interfaz `ConciliacionCfdi`: agregados todos los campos faltantes que ya existen en el backend (`serie`, `folio`, `fechaPagoP`, `subtotal`, `descuento`, `moneda`, `tipoCambio`, `formaPago`, `usoCfdi`, `status`, `fechaCertSat`, `ivaTraslado`, `ivaRetencion`, `isrRetencion`)
4. **Visor (`apps/web/components/cfdi/cfdi-invoice.tsx`):**
- Para tipo P con `fechaPagoP`, muestra "Pago: {fecha}" en lugar de la fecha de emisión
**Resultado:** Los complementos de pago ahora aparecen en el período donde ocurrió el pago real, no cuando se emitió el CFDI.
---
## Archivos modificados (actualizado)
### Backend (`apps/api/`)