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.

119 lines 4.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getClave = exports.parseOptions = exports.stringToClave = exports.genString = exports.genClaveObj = exports.consecutivoStr = void 0; const tipoDocumento_1 = require("../../data/tipoDocumento"); const DEFAULT_VALUES = { tipoDocumento: '01', tipoIdentificacion: '01', codigoPais: '506' }; function getConsecutivo(opts) { const tipoDocNum = tipoDocumento_1.tipoDocumento[opts.tipoDocKey]; return { sucursal: opts.sucursal || '001', terminal: opts.terminal || '00001', tipoDocumento: tipoDocNum.code || '01', consecutivo: String(opts.consecutivo).padStart(10, '0') }; } function consecutivoStr(consecutivoObj) { const cons = getConsecutivo(consecutivoObj); return Object.values(cons).join(''); } exports.consecutivoStr = consecutivoStr; function getSender(frontEndRequest) { const sender = frontEndRequest.Emisor; return { tipoIdentificacion: sender.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion, numeroIdentificacion: sender.Identificacion.Numero }; } function getDateInfo(date) { const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); const year = date.getFullYear() - 2000; return { dia: day, mes: month, ano: year.toString() }; } function getCountryCode(code) { if (!code || !code.length) { return DEFAULT_VALUES.codigoPais; } return code.padStart(3, '0'); } function getIssuerCard(issuerCard) { return issuerCard.padStart(12, '0'); } function genClaveObj(opts) { const today = new Date(); return { codigoPais: getCountryCode(opts.codigoPais), fecha: getDateInfo(today), cedulaEmisor: getIssuerCard(opts.cedulaEmisor), consecutivo: getConsecutivo(opts), situacionCE: opts.situacionCE, codigoSeguridad: opts.codigoSeguridad }; } exports.genClaveObj = genClaveObj; function genString(claveObj) { const clave = { codigoPais: claveObj.codigoPais, fecha: Object.values(claveObj.fecha).join(''), cedulaEmisor: claveObj.cedulaEmisor, consecutivo: Object.values(claveObj.consecutivo).join(''), situacionCE: claveObj.situacionCE, codigoSeguridad: claveObj.codigoSeguridad }; return Object.values(clave).join(''); } exports.genString = genString; function genClave(opts) { const claveObj = genClaveObj(opts); return genString(claveObj); } exports.default = genClave; function stringToClave(claveStr) { return { codigoPais: claveStr.slice(0, 3), fecha: { dia: claveStr.slice(3, 5), mes: claveStr.slice(5, 7), ano: claveStr.slice(7, 9) }, cedulaEmisor: claveStr.slice(9, 21), consecutivo: { sucursal: claveStr.slice(21, 24), terminal: claveStr.slice(24, 29), tipoDocumento: claveStr.slice(29, 31), consecutivo: claveStr.slice(31, 41) }, situacionCE: claveStr.slice(41, 42), codigoSeguridad: claveStr.slice(42, 51) }; } exports.stringToClave = stringToClave; function parseOptions(frontEndRequest) { const sender = getSender(frontEndRequest); return { cedulaEmisor: sender.numeroIdentificacion, codigoPais: frontEndRequest.codigoPais, codigoSeguridad: frontEndRequest.codigoSeguridad, consecutivo: frontEndRequest.consecutivo, situacionCE: frontEndRequest.situationEC, sucursal: frontEndRequest.sucursal, terminal: frontEndRequest.terminal, tipoCedula: sender.tipoIdentificacion, tipoDocKey: frontEndRequest.tipoDocumento }; } exports.parseOptions = parseOptions; function getClave(frontEndRequest) { const claveOptions = parseOptions(frontEndRequest); return genClave(claveOptions); } exports.getClave = getClave; //# sourceMappingURL=index.js.map