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