UNPKG

@facturacr/atv-sdk

Version:

Librería (SDK) de Javascript/NodeJS para acceder al API de Administración Tributaria Virtual (ATV) del Ministerio de Hacienda.

61 lines 2.89 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("./lib/genClave/index"); const index_2 = __importDefault(require("./lib/genJSON/index")); const index_3 = require("./services/send/index"); const DEFAULT_VALUES = { tipoIdentificacion: '01' }; const encodeXML = (xmlStr) => { const buffer = Buffer.from(xmlStr); return buffer.toString('base64'); }; function getSender(frontEndRequest) { const sender = frontEndRequest.Emisor; return { tipoIdentificacion: sender.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion, numeroIdentificacion: sender.Identificacion.Numero }; } function getReceiver(frontEndRequest) { const receiver = frontEndRequest.Receptor; return { tipoIdentificacion: receiver.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion, numeroIdentificacion: receiver.Identificacion.Numero }; } exports.default = (token, frontEndRequest, xmlOpt) => __awaiter(void 0, void 0, void 0, function* () { const parsedOpts = (0, index_1.parseOptions)(frontEndRequest); const claveObj = (0, index_1.genClaveObj)(parsedOpts); const claveStr = (0, index_1.genString)(claveObj); const date = new Date(); const consecutivo = Object.values(claveObj.consecutivo).join(''); const XML = yield (0, index_2.default)(frontEndRequest, date.toISOString(), claveStr, consecutivo, Object.assign(Object.assign({}, xmlOpt), { base64: true })); const finalMesage = { clave: claveStr, fecha: date.toISOString(), emisor: getSender(frontEndRequest), receptor: getReceiver(frontEndRequest), comprobanteXml: encodeXML(XML) }; const response = (0, index_3.send)(token, finalMesage).catch((err) => { const response = err.response || {}; const header = response.headers || {}; console.log('response status code', err.response.status); console.log('x-error-cause', header['x-error-cause']); }); return response; }); //# sourceMappingURL=electronicBill.js.map