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.

39 lines (38 loc) 1.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Factura_1 = require("../Structures/Factura"); 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 Factura_to_XML(input) { const estructura = (0, class_transformer_1.plainToClass)(Factura_1.Factura, input); const validationErrors = (0, class_validator_1.validateSync)(estructura); if (validationErrors.length) throw new DocumentContentError_1.default("La factura", validationErrors); var x2js = new x2js_1.default({ useDoubleQuotes: true }); const xml_object = (0, class_transformer_1.instanceToPlain)(estructura, { exposeUnsetFields: false }); const factura = { _id: "comprobante", _version: "1.0.0" /** Se digita manulamente cada propiedad, porque deben ir en cierto orden especifico */ , infoTributaria: xml_object.infoTributaria, infoFactura: xml_object.infoFactura, detalles: xml_object.detalles }; if (xml_object.infoAdicional) factura.infoAdicional = xml_object.infoAdicional; var xmlAsStr = '<?xml version="1.0" encoding="UTF-8"?>\n'; xmlAsStr += x2js.js2xml({ factura }); return (0, normalize_xml_for_c14n_1.normalizeXmlForC14N)(xmlAsStr); } exports.default = Factura_to_XML;