facturacionelectronicapy-recibo-xmlgen
Version:
API Node JS para generar el archivo XML del Recibo similar al exigido por la SET en base a JSON
118 lines • 11.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const constants_service_1 = __importDefault(require("./constants.service"));
const StringUtil_service_1 = __importDefault(require("./StringUtil.service"));
class JsonReciboDocumentoAsociadoService {
generateDocumentosAsociados(params, data, config) {
const jsonResult = new Array();
if (Array.isArray(data.documentoAsociado)) {
for (let i = 0; i < data.documentoAsociado.length; i++) {
const daResult = this.generateDocumentoAsociado(params, data.documentoAsociado[i], config);
jsonResult.push(daResult);
}
}
else {
const daResult = this.generateDocumentoAsociado(params, data.documentoAsociado, config);
jsonResult.push(daResult);
}
return jsonResult;
}
/**
*
* @param params
* @param doumentoAsociado
* @param options
*/
generateDocumentoAsociado(params, doumentoAsociado, config) {
const jsonResult = {
iTipDocAso: doumentoAsociado['formato'],
dDesTipDocAso: constants_service_1.default.tiposDocumentosAsociados.filter((td) => td.codigo === doumentoAsociado['formato'])[0]['descripcion'],
};
if (doumentoAsociado['formato'] == 1) {
//H002 = Electronico
if (doumentoAsociado['cdc']) {
jsonResult['dCdCDERef'] = doumentoAsociado['cdc'];
}
}
if (doumentoAsociado['formato'] == 2) {
//H002 = Impreso
if (doumentoAsociado['timbrado']) {
jsonResult['dNTimDI'] = doumentoAsociado['timbrado'];
/*} else {
throw new Error(
'Debe especificar el Timbrado del Documento impreso Asociado en data.documentoAsociado.timbrado',
);*/
}
if (doumentoAsociado['establecimiento']) {
jsonResult['dEstDocAso'] = StringUtil_service_1.default.leftZero(doumentoAsociado['establecimiento'] + '', 3);
/*} else {
throw new Error(
'Debe especificar el Establecimiento del Documento impreso Asociado en data.documentoAsociado.establecimiento',
);*/
}
if (doumentoAsociado['punto']) {
jsonResult['dPExpDocAso'] = StringUtil_service_1.default.leftZero(doumentoAsociado['punto'] + '', 3);
/*} else {
throw new Error('Debe especificar el Punto del Documento impreso Asociado en data.documentoAsociado.punto');*/
}
if (doumentoAsociado['numero']) {
jsonResult['dNumDocAso'] = StringUtil_service_1.default.leftZero(doumentoAsociado['numero'] + '', 7);
/*} else {
throw new Error('Debe especificar el Número del Documento impreso Asociado en data.documentoAsociado.numero');*/
}
if (doumentoAsociado['serie']) {
jsonResult['dSerDocAso'] = doumentoAsociado['serie'];
/*} else {
throw new Error('Debe especificar el Número del Documento impreso Asociado en data.documentoAsociado.numero');*/
}
if (doumentoAsociado['tipoDocumentoImpreso']) {
jsonResult['iTipoDocAso'] = doumentoAsociado['tipoDocumentoImpreso'];
jsonResult['dDTipoDocAso'] = constants_service_1.default.tiposDocumentosImpresos.filter((td) => td.codigo === doumentoAsociado['tipoDocumentoImpreso'])[0]['descripcion'];
/*} else {
throw new Error(
'Debe especificar el Tipo del Documento Impreso Asociado en data.documentoAsociado.tipoDocumentoImpreso',
);*/
}
if (doumentoAsociado['fecha']) {
/*if ((data['fecha'] + '').length != 10) {
throw new Error(
'La Fecha del Documento impreso Asociado en data.documentoAsociado.fecha debe tener una longitud de 10 caracteres',
);
}*/
jsonResult['dFecEmiDI'] = doumentoAsociado['fecha'];
/*} else {
throw new Error('Debe especificar la Fecha del Documento impreso Asociado en data.documentoAsociado.fecha');*/
}
if (doumentoAsociado && doumentoAsociado['numeroRetencion'] && doumentoAsociado['numeroRetencion'].length >= 15) {
jsonResult['dNumComRet'] = doumentoAsociado['numeroRetencion'].substring(0, 15);
}
if (doumentoAsociado &&
doumentoAsociado['resolucionCreditoFiscal'] &&
doumentoAsociado['resolucionCreditoFiscal'].length >= 15) {
jsonResult['dNumResCF'] = doumentoAsociado['resolucionCreditoFiscal'].substring(0, 15);
}
}
let montoNumerico = +doumentoAsociado['monto'];
jsonResult['monto'] = parseFloat(montoNumerico.toFixed(config.decimals));
jsonResult['montoRetencionIva'] = 0;
jsonResult['montoRetencionRenta'] = 0;
if (typeof doumentoAsociado['montoRetencionIva'] != 'undefined') {
let montoRetencionIva = +doumentoAsociado['montoRetencionIva'];
if (montoRetencionIva > 0) {
jsonResult['montoRetencionIva'] = parseFloat(montoRetencionIva.toFixed(config.decimals));
}
}
if (typeof doumentoAsociado['montoRetencionRenta'] != 'undefined') {
let montoRetencionRenta = +doumentoAsociado['montoRetencionRenta'];
if (montoRetencionRenta > 0) {
jsonResult['montoRetencionRenta'] = parseFloat(montoRetencionRenta.toFixed(config.decimals));
}
}
return jsonResult;
}
}
exports.default = new JsonReciboDocumentoAsociadoService();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSnNvblJlY2lib0RvY3VtZW50b0Fzb2NpYWRvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvSnNvblJlY2lib0RvY3VtZW50b0Fzb2NpYWRvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0RUFBbUQ7QUFDbkQsOEVBQXFEO0FBR3JELE1BQU0sa0NBQWtDO0lBQy9CLDJCQUEyQixDQUFDLE1BQVcsRUFBRSxJQUFTLEVBQUUsTUFBb0I7UUFDN0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzNCO1NBQ0Y7YUFBTTtZQUNMLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3hGLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx5QkFBeUIsQ0FBQyxNQUFXLEVBQUUsZ0JBQXFCLEVBQUUsTUFBb0I7UUFDdkYsTUFBTSxVQUFVLEdBQVE7WUFDdEIsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFNBQVMs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