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