feat(sat): factura global + fecha_efectiva, fallback tenant-contribuyente, fix anio_global typo
Factura Global & fecha_efectiva: - Migracion 045_factura_global.sql: periodicidad, meses_global, año_global, fecha_efectiva - sat-parser.service.ts: extrae InformacionGlobal del XML - sat.service.ts: calcFechaEfectiva con soporte bimestral (periodicidad 05) - metricas-compute, dashboard, impuestos, cfdi, export, conciliacion, alertas: reemplaza fecha_emision-1h por COALESCE(fecha_efectiva, fecha_emision-1h) - Script recalc-metricas.ts para recalculo manual Fallback datos fiscales tenant → contribuyente: - contribuyente.service.ts: fetchTenantFiscalData + mergeContribuyenteWithTenant rellena regimenFiscal, codigoPostal y domicilio cuando el contribuyente tiene el mismo RFC que el tenant y sus campos estan vacios - contribuyente.controller.ts y contribuyente-config.controller.ts: pasan req.user!.tenantId al servicio Fix critico SAT sync: - sat.service.ts: anio_global → año_global en INSERT/UPDATE de CFDIs (la migracion creo 'año_global' con tilde; el codigo usaba 'anio_global', causando fallo en 100% de inserciones de CFDI) - determineChunkMonths: salta sondeo si existe job previo con requestIds - MAX_POLL_ATTEMPTS: 45 → 500 (~8h) para syncs iniciales grandes Docs: - docs/sessions/2026-05-22-factura-global-contribuyente-fallback.md
This commit is contained in:
@@ -9,7 +9,7 @@ import {
|
||||
Button,
|
||||
} from '@horux/shared-ui';
|
||||
import { useEstadoResultadosDrillDown } from '@/lib/hooks/use-reportes';
|
||||
import { formatCurrency } from '@/lib/utils';
|
||||
import { formatCurrency, toCfdiDate } from '@/lib/utils';
|
||||
import { exportToExcel } from '@/lib/export-excel';
|
||||
import { ArrowLeft, Download, Eye } from 'lucide-react';
|
||||
import type { DrillDownResumenItem, DrillDownCfdiItem } from '@/lib/api/reportes';
|
||||
@@ -92,7 +92,7 @@ export function EstadoResultadosDrillDownModal({
|
||||
} else if (cfdis.length > 0) {
|
||||
const rows = cfdis.map((c) => ({
|
||||
...c,
|
||||
_fecha: new Date(c.fechaEmision).toLocaleDateString('es-MX'),
|
||||
_fecha: toCfdiDate(c.fechaEmision).toLocaleDateString('es-MX'),
|
||||
_monto: c.monto,
|
||||
}));
|
||||
exportToExcel(rows, CFDI_COLUMNS, `drill-down-${categoria}-cfdis`);
|
||||
@@ -197,7 +197,7 @@ export function EstadoResultadosDrillDownModal({
|
||||
</td>
|
||||
<td className="py-3 text-sm font-mono">{item.tipoComprobante}</td>
|
||||
<td className="py-3 text-sm">
|
||||
{new Date(item.fechaEmision).toLocaleDateString('es-MX')}
|
||||
{toCfdiDate(item.fechaEmision).toLocaleDateString('es-MX')}
|
||||
</td>
|
||||
<td className="py-3 font-mono text-sm">{item.rfcEmisor}</td>
|
||||
<td className="py-3 text-sm truncate max-w-[180px]">
|
||||
|
||||
Reference in New Issue
Block a user