fix(cfdi): filtro de fechas usa fecha_emision en lugar de fecha_efectiva
This commit is contained in:
@@ -102,12 +102,12 @@ export async function getCfdis(pool: Pool, filters: CfdiFilters): Promise<CfdiLi
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (filters.fechaInicio) {
|
if (filters.fechaInicio) {
|
||||||
whereClause += ` AND COALESCE(fecha_efectiva, fecha_emision - interval '1 hour') >= $${paramIndex++}::date`;
|
whereClause += ` AND fecha_emision::date >= $${paramIndex++}::date`;
|
||||||
params.push(filters.fechaInicio);
|
params.push(filters.fechaInicio);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filters.fechaFin) {
|
if (filters.fechaFin) {
|
||||||
whereClause += ` AND COALESCE(fecha_efectiva, fecha_emision - interval '1 hour') <= ($${paramIndex++}::date + interval '1 day')`;
|
whereClause += ` AND fecha_emision::date <= $${paramIndex++}::date`;
|
||||||
params.push(filters.fechaFin);
|
params.push(filters.fechaFin);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,11 +214,11 @@ export async function getConceptosList(
|
|||||||
params.push(filters.estado);
|
params.push(filters.estado);
|
||||||
}
|
}
|
||||||
if (filters.fechaInicio) {
|
if (filters.fechaInicio) {
|
||||||
whereClause += ` AND COALESCE(c.fecha_efectiva, c.fecha_emision - interval '1 hour') >= $${paramIndex++}::date`;
|
whereClause += ` AND c.fecha_emision::date >= $${paramIndex++}::date`;
|
||||||
params.push(filters.fechaInicio);
|
params.push(filters.fechaInicio);
|
||||||
}
|
}
|
||||||
if (filters.fechaFin) {
|
if (filters.fechaFin) {
|
||||||
whereClause += ` AND COALESCE(c.fecha_efectiva, c.fecha_emision - interval '1 hour') <= ($${paramIndex++}::date + interval '1 day')`;
|
whereClause += ` AND c.fecha_emision::date <= $${paramIndex++}::date`;
|
||||||
params.push(filters.fechaFin);
|
params.push(filters.fechaFin);
|
||||||
}
|
}
|
||||||
if (filters.rfc) {
|
if (filters.rfc) {
|
||||||
@@ -385,11 +385,11 @@ export async function getCfdiXmlsForZip(
|
|||||||
params.push(filters.estado);
|
params.push(filters.estado);
|
||||||
}
|
}
|
||||||
if (filters.fechaInicio) {
|
if (filters.fechaInicio) {
|
||||||
whereClause += ` AND COALESCE(fecha_efectiva, fecha_emision - interval '1 hour') >= $${paramIndex++}::date`;
|
whereClause += ` AND fecha_emision::date >= $${paramIndex++}::date`;
|
||||||
params.push(filters.fechaInicio);
|
params.push(filters.fechaInicio);
|
||||||
}
|
}
|
||||||
if (filters.fechaFin) {
|
if (filters.fechaFin) {
|
||||||
whereClause += ` AND COALESCE(fecha_efectiva, fecha_emision - interval '1 hour') <= ($${paramIndex++}::date + interval '1 day')`;
|
whereClause += ` AND fecha_emision::date <= $${paramIndex++}::date`;
|
||||||
params.push(filters.fechaFin);
|
params.push(filters.fechaFin);
|
||||||
}
|
}
|
||||||
if (filters.rfc) {
|
if (filters.rfc) {
|
||||||
|
|||||||
@@ -834,6 +834,47 @@ pm2 reload horux-web
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 34. Filtro de fechas en CFDIs usa fecha de emisión
|
||||||
|
|
||||||
|
**Fecha:** 2026-06-30
|
||||||
|
|
||||||
|
### Cambio
|
||||||
|
El filtro de fechas en el listado y export de **CFDIs** ahora filtra por **`fecha_emision`** en lugar de `fecha_efectiva`.
|
||||||
|
|
||||||
|
### Antes
|
||||||
|
El where clause usaba:
|
||||||
|
```sql
|
||||||
|
COALESCE(fecha_efectiva, fecha_emision - interval '1 hour') BETWEEN fechaInicio AND fechaFin
|
||||||
|
```
|
||||||
|
Esto provocaba que facturas emitidas en meses anteriores pero pagadas/ejercidas en el rango seleccionado aparecieran en el resultado (por ejemplo, facturas de febrero con `fecha_efectiva` en junio).
|
||||||
|
|
||||||
|
### Ahora
|
||||||
|
El filtro usa directamente:
|
||||||
|
```sql
|
||||||
|
fecha_emision::date BETWEEN fechaInicio AND fechaFin
|
||||||
|
```
|
||||||
|
El export Excel hereda el mismo filtro, así que tabla y Excel son consistentes.
|
||||||
|
|
||||||
|
### Archivos modificados
|
||||||
|
|
||||||
|
| Archivo | Cambio |
|
||||||
|
|---|---|
|
||||||
|
| `apps/api/src/services/cfdi.service.ts` | Filtros de fecha en `getCfdis`, `getConceptosList` y `downloadXmlsZip` usan `fecha_emision::date` |
|
||||||
|
|
||||||
|
### Deploy
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /root/HoruxDespachosNuevo
|
||||||
|
pnpm --filter api build
|
||||||
|
pnpm --filter web build
|
||||||
|
pm2 reload horux-api
|
||||||
|
pm2 reload horux-web
|
||||||
|
```
|
||||||
|
|
||||||
|
**Estado:** ✅ Exitoso
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Deploy histórico
|
## Deploy histórico
|
||||||
|
|
||||||
### Preparación
|
### Preparación
|
||||||
|
|||||||
Reference in New Issue
Block a user