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:
Horux Dev
2026-05-16 14:45:00 +00:00
parent 0bde43a309
commit bda0a4e212
8 changed files with 142 additions and 6 deletions

View File

@@ -14,6 +14,7 @@ interface CfdiConcepto {
importe: number;
claveProdServ?: string;
claveUnidad?: string;
noIdentificacion?: string;
}
interface CfdiViewerModalProps {
@@ -39,6 +40,7 @@ function parseConceptosFromXml(xmlString: string): CfdiConcepto[] {
importe: parseFloat(el.getAttribute('Importe') || '0'),
claveProdServ: el.getAttribute('ClaveProdServ') || undefined,
claveUnidad: el.getAttribute('ClaveUnidad') || undefined,
noIdentificacion: el.getAttribute('NoIdentificacion') || undefined,
});
}
}
@@ -75,6 +77,7 @@ export function CfdiViewerModal({ cfdi, open, onClose }: CfdiViewerModalProps) {
importe: Number(c.importe),
claveProdServ: c.claveProdServ || undefined,
claveUnidad: c.claveUnidad || undefined,
noIdentificacion: c.noIdentificacion || undefined,
})));
} else if (cfdi.xmlOriginal) {
setConceptos(parseConceptosFromXml(cfdi.xmlOriginal));