UNPKG

@disruptive-learning/cfdi-to-pdf

Version:

Librería para crear un pdf basado en un XML CFDI o Retenciones

86 lines (85 loc) 3.05 kB
import { XmlNodes } from '@nodecfdi/cfdi-core'; import { getKeyValueOfCatalog } from '#src/catalogs/catalogs_source'; const genericCfdiRelacionadosContent = (relacionados, catalogs, primaryColor, bgGrayColor) => { const relatedInfoAndImport = []; const pushElementFromRelatedNode = (relatedNode) => { const uuidsArray = relatedNode.searchNodes('cfdi:CfdiRelacionado').map((relacionado) => { return relacionado.getAttribute('UUID'); }); const tipoRelacion = getKeyValueOfCatalog('cfdi40TiposRelaciones', relatedNode.getAttribute('TipoRelacion'), catalogs); relatedInfoAndImport.push({ tipoRelacion, uuids: uuidsArray }); }; if (relacionados instanceof XmlNodes) { for (const relacionadosNode of relacionados) { pushElementFromRelatedNode(relacionadosNode); } } else { pushElementFromRelatedNode(relacionados); } return { table: { widths: ['auto', '5%', '*'], body: [ [ { text: 'CFDI relacionados', colSpan: 3, alignment: 'left', color: primaryColor, style: 'tableSubtitleHeader', }, '', '', ], [ { text: 'Tipo de relación', alignment: 'left', fillColor: bgGrayColor, color: primaryColor, }, { text: '', fillColor: bgGrayColor, }, { text: 'UUID', alignment: 'left', fillColor: bgGrayColor, color: primaryColor, }, ], ...relatedInfoAndImport.map((related) => { return [ { text: related.tipoRelacion, alignment: 'left', fillColor: bgGrayColor, }, { text: '', fillColor: bgGrayColor, }, { text: related.uuids.join(' | '), alignment: 'left', fillColor: bgGrayColor, }, ]; }), [ { text: '', colSpan: 3, border: [false, true, false, false], }, '', '', ], ], }, layout: 'tableLayout', }; }; export default genericCfdiRelacionadosContent;