UNPKG

envio-comprobantes-sri

Version:

Envia comprobantes electronicos al SRI (Ecuador). Recibe un objeto JSON. Lo convierte a XML, lo firma, lo envía al servicio web del SRI y devuelve la respuesta.

40 lines (39 loc) 1.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const NotaCredito_1 = require("../Structures/NotaCredito"); const class_transformer_1 = require("class-transformer"); const class_validator_1 = require("class-validator"); const x2js_1 = __importDefault(require("x2js")); const DocumentContentError_1 = __importDefault(require("./Utils/DocumentContentError")); const normalize_xml_for_c14n_1 = require("./Utils/normalize-xml-for-c14n"); function NotaCredito_to_XML(input) { const estructura = (0, class_transformer_1.plainToClass)(NotaCredito_1.NotaCredito, input); const validationErrors = (0, class_validator_1.validateSync)(estructura); if (validationErrors.length) { throw new DocumentContentError_1.default("La nota de crédito", validationErrors); } var x2js = new x2js_1.default({ useDoubleQuotes: true }); const xml_object = (0, class_transformer_1.instanceToPlain)(estructura, { exposeUnsetFields: false }); const notaCredito = { _id: "comprobante", _version: "1.1.0" /** Se digita manulamente cada propiedad, porque deben ir en cierto orden especifico */ , infoTributaria: xml_object.infoTributaria, infoNotaCredito: xml_object.infoNotaCredito, detalles: xml_object.detalles }; if (xml_object.infoAdicional) notaCredito.infoAdicional = xml_object.infoAdicional; var xmlAsStr = '<?xml version="1.0" encoding="UTF-8"?>\n'; xmlAsStr += x2js.js2xml({ notaCredito }); return (0, normalize_xml_for_c14n_1.normalizeXmlForC14N)(xmlAsStr); } exports.default = NotaCredito_to_XML;