@ocelotlstudio/cfdi-pdf
Version:
Creates a pdf based on an XML CFDI
267 lines • 13.4 kB
JavaScript
;
exports.__esModule = true;
exports.dataToCfdi = exports.Cfdi = exports.Emisor = exports.Receptor = exports.Concepto = exports.CfdiRelacionado = exports.TimbreFiscalDigital = exports.ComplementoPago = exports.DoctoRelacionado = exports.Traslado = exports.Retencion = void 0;
var check_1 = require("../utils/check");
var Retencion = /** @class */ (function () {
function Retencion() {
}
return Retencion;
}());
exports.Retencion = Retencion;
var Traslado = /** @class */ (function () {
function Traslado() {
}
return Traslado;
}());
exports.Traslado = Traslado;
var DoctoRelacionado = /** @class */ (function () {
function DoctoRelacionado() {
}
return DoctoRelacionado;
}());
exports.DoctoRelacionado = DoctoRelacionado;
var ComplementoPago = /** @class */ (function () {
function ComplementoPago() {
}
return ComplementoPago;
}());
exports.ComplementoPago = ComplementoPago;
var TimbreFiscalDigital = /** @class */ (function () {
function TimbreFiscalDigital() {
}
return TimbreFiscalDigital;
}());
exports.TimbreFiscalDigital = TimbreFiscalDigital;
var CfdiRelacionado = /** @class */ (function () {
function CfdiRelacionado() {
}
return CfdiRelacionado;
}());
exports.CfdiRelacionado = CfdiRelacionado;
var Concepto = /** @class */ (function () {
function Concepto() {
}
return Concepto;
}());
exports.Concepto = Concepto;
var Receptor = /** @class */ (function () {
function Receptor() {
}
return Receptor;
}());
exports.Receptor = Receptor;
var Emisor = /** @class */ (function () {
function Emisor() {
}
return Emisor;
}());
exports.Emisor = Emisor;
var Cfdi = /** @class */ (function () {
function Cfdi() {
}
return Cfdi;
}());
exports.Cfdi = Cfdi;
var dataToCfdi = function (xmlData) {
return new Promise(function (resolve, reject) {
var obj = new Cfdi();
try {
var comprobante = xmlData['cfdi:Comprobante'];
// obtener datos generales
obj.version = check_1.exists(comprobante.$.Version);
obj.serie = check_1.exists(comprobante.$.Serie);
obj.folio = check_1.exists(comprobante.$.Folio);
obj.fecha = check_1.exists(comprobante.$.Fecha);
obj.noCertificado = check_1.exists(comprobante.$.NoCertificado);
obj.lugar = check_1.exists(comprobante.$.LugarExpedicion);
obj.tipoDeComprobante = check_1.exists(comprobante.$.TipoDeComprobante);
obj.moneda = check_1.exists(comprobante.$.Moneda);
obj.formaPago = check_1.exists(comprobante.$.FormaPago);
obj.tipoCambio = check_1.exists(comprobante.$.TipoCambio);
obj.metodoPago = check_1.exists(comprobante.$.MetodoPago);
obj.condicionesDePago = check_1.exists(comprobante.$.CondicionesDePago);
obj.confirmacion = check_1.exists(comprobante.$.Confirmacion);
// initializar el objeto emisor
obj.emisor = new Emisor();
// obtner emisor del comprobante
var comprobanteEmisor = comprobante['cfdi:Emisor'];
if (comprobanteEmisor) {
// generar objeto emisor
obj.emisor.rfc = check_1.exists(comprobanteEmisor[0].$.Rfc);
obj.emisor.nombre = check_1.exists(comprobanteEmisor[0].$.Nombre);
obj.emisor.regimenFiscal = check_1.exists(comprobanteEmisor[0].$.RegimenFiscal);
}
// inicializar objeto receptor
obj.receptor = new Receptor();
// obtener receptor del comprobante
var comprobanteReceptor = comprobante['cfdi:Receptor'];
if (comprobanteReceptor) {
// generar objeto receptor
obj.receptor.rfc = check_1.exists(comprobanteReceptor[0].$.Rfc);
obj.receptor.nombre = check_1.exists(comprobanteReceptor[0].$.Nombre);
obj.receptor.residenciaFiscal = check_1.exists(comprobanteReceptor[0].$.ResidenciaFiscal);
obj.receptor.numRegIdTrib = check_1.exists(comprobanteReceptor[0].$.NumRegIdTrib);
obj.receptor.usoCFDI = check_1.exists(comprobanteReceptor[0].$.UsoCFDI);
}
// inicializar arreglo de conceptos
obj.conceptos = [];
// obtener conceptos del comprobante
var comprobanteConceptos = comprobante['cfdi:Conceptos'];
if (comprobanteConceptos) {
var comprobanteConcepto = comprobanteConceptos[0]['cfdi:Concepto'];
if (comprobanteConcepto) {
obj.conceptos = comprobanteConcepto.map(function (concepto) {
var trasladosArr = [];
var retencionesArr = [];
var impuestos = concepto['cfdi:Impuestos'];
if (impuestos) {
var traslados = impuestos[0]['cfdi:Traslados'];
var retenciones = impuestos[0]['cfdi:Retenciones'];
if (traslados) {
var traslado = traslados[0]['cfdi:Traslado'];
trasladosArr = traslado.map(function (elem) {
return {
impuesto: elem.$.Impuesto,
tipoFactor: elem.$.TipoFactor,
tasaOCuota: elem.$.TasaOCuota,
importe: elem.$.Importe
};
});
}
if (retenciones) {
var retencion = retenciones[0]['cfdi:Retencion'];
retencionesArr = retencion.map(function (elem) {
return {
impuesto: elem.$.Impuesto,
tipoFactor: elem.$.TipoFactor,
tasaOCuota: elem.$.TasaOCuota,
importe: elem.$.Importe
};
});
}
}
return {
clave: check_1.exists(concepto.$.ClaveProdServ),
noIdentificacion: check_1.exists(concepto.$.NoIdentificacion),
cantidad: check_1.existsValue(concepto.$.Cantidad),
valorUnitario: check_1.existsValue(concepto.$.ValorUnitario),
claveUnidad: check_1.exists(concepto.$.ClaveUnidad),
unidad: check_1.exists(concepto.$.Unidad),
importe: check_1.existsValue(concepto.$.Importe),
descripcion: check_1.exists(concepto.$.Descripcion),
descuento: check_1.existsValue(concepto.$.Descuento),
traslados: trasladosArr,
retenciones: retencionesArr
};
});
}
}
// obtener cfdiRelacionado del comprobante
var comprobanteCfdiRelacionados = comprobante['cfdi:CfdiRelacionados'];
if (comprobanteCfdiRelacionados) {
var comprobanteCfdiRelacionado = comprobanteCfdiRelacionados[0]['cfdi:CfdiRelacionado'];
if (comprobanteCfdiRelacionado) {
// inicializar objeto cfdiRelacionado
obj.cfdiRelacionado = new CfdiRelacionado();
// generar objeto CfdiRelacionado
obj.cfdiRelacionado.tipoRelacion = check_1.exists(comprobanteCfdiRelacionados[0].$.TipoRelacion);
obj.cfdiRelacionado.uuid = check_1.exists(comprobanteCfdiRelacionado[0].$.UUID);
}
}
// obtener complemento del comprobante
var comprobanteComplemento = comprobante['cfdi:Complemento'];
if (comprobanteComplemento) {
// obtener el timbre fiscal digital del comprobante
var comprobanteTimbreFiscalDigital = comprobanteComplemento[0]['tfd:TimbreFiscalDigital'];
if (comprobanteTimbreFiscalDigital) {
// inicializar objeto timbreFiscalDigital
obj.timbreFiscalDigital = new TimbreFiscalDigital();
// generar objecto timbreFiscalDigital
obj.timbreFiscalDigital.uuid = check_1.exists(comprobanteTimbreFiscalDigital[0].$.UUID);
obj.timbreFiscalDigital.fechaTimbrado = check_1.exists(comprobanteTimbreFiscalDigital[0].$.FechaTimbrado);
obj.timbreFiscalDigital.selloSAT = check_1.exists(comprobanteTimbreFiscalDigital[0].$.SelloSAT);
obj.timbreFiscalDigital.selloCFD = check_1.exists(comprobanteTimbreFiscalDigital[0].$.SelloCFD);
obj.timbreFiscalDigital.noCertificadoSAT = check_1.exists(comprobanteTimbreFiscalDigital[0].$.NoCertificadoSAT);
obj.timbreFiscalDigital.version = check_1.exists(comprobanteTimbreFiscalDigital[0].$.Version);
}
// inizializar arreglo de pagos
obj.pagos = [];
// obtener pagos
var comprobantePagos = comprobanteComplemento[0]['pago10:Pagos'];
if (comprobantePagos) {
var comprobantePago = comprobantePagos[0]['pago10:Pago'];
if (comprobantePago) {
obj.pagos = comprobantePago.map(function (pago) {
var doctoRelacionado = pago['pago10:DoctoRelacionado'];
var pagoObj = new ComplementoPago();
pagoObj.fecha = pago.$.FechaPago;
pagoObj.formaPago = pago.$.FormaDePagoP;
pagoObj.moneda = pago.$.MonedaP;
pagoObj.tipoCambio = check_1.exists(pago.$.TipoCambioP);
pagoObj.monto = pago.$.Monto;
pagoObj.doctoRelacionados = [];
if (doctoRelacionado) {
pagoObj.doctoRelacionados = doctoRelacionado.map(function (doc) { return ({
uuid: doc.$.IdDocumento,
moneda: doc.$.MonedaDR,
tipoCambio: check_1.exists(doc.$.TipoCambioDR),
metodoPago: doc.$.MetodoDePagoDR,
numParcialidad: doc.$.NumParcialidad,
saldoAnterior: doc.$.ImpSaldoAnt,
importePagado: doc.$.ImpPagado,
saldoInsoluto: doc.$.ImpSaldoInsoluto
}); });
}
return pagoObj;
});
}
}
}
// obtener subtotal
obj.subTotal = check_1.existsValue(comprobante.$.SubTotal);
// obtener descuento
obj.descuento = check_1.existsValue(comprobante.$.Descuento);
// obtener total
obj.total = check_1.existsValue(comprobante.$.Total);
// inizializar arreglos de Impuestos
obj.traslados = [];
obj.retenciones = [];
// obtener impuestos del comprobante
var comprobanteImpuestos = comprobante['cfdi:Impuestos'];
if (comprobanteImpuestos) {
var traslados = comprobanteImpuestos[0]['cfdi:Traslados'];
var retenciones = comprobanteImpuestos[0]['cfdi:Retenciones'];
if (traslados) {
var traslado = traslados[0]['cfdi:Traslado'];
obj.traslados = traslado.map(function (elem) {
return {
impuesto: elem.$.Impuesto,
tipoFactor: elem.$.TipoFactor,
tasaOCuota: elem.$.TasaOCuota,
importe: elem.$.Importe
};
});
}
if (retenciones) {
var retencion = retenciones[0]['cfdi:Retencion'];
obj.retenciones = retencion.map(function (elem) {
return {
impuesto: elem.$.Impuesto,
tipoFactor: elem.$.TipoFactor,
tasaOCuota: elem.$.TasaOCuota,
importe: elem.$.Importe
};
});
}
obj.totalImpuestosRetenidos = check_1.existsValue(comprobanteImpuestos[0].$.TotalImpuestosRetenidos);
obj.totalImpuestosTrasladados = check_1.existsValue(comprobanteImpuestos[0].$.TotalImpuestosTrasladados);
}
resolve(obj);
}
catch (e) {
reject('CFDI no valido');
}
});
};
exports.dataToCfdi = dataToCfdi;
//# sourceMappingURL=dataToCfdi.js.map