@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
JavaScript
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;