UNPKG

falcotura-atv-sdk

Version:

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

118 lines 4.12 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 dateUtils_1 = require("../../utils/dateUtils"); const DEFAULT_VALUES = { tipoDocumento: '01', tipoIdentificacion: '01', codigoPais: '506' }; function getConsecutivo(opts) { // @ts-expect-error pending-to-fix 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) { return (0, dateUtils_1.getCostaRicaDateInfo)(date); } 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 = (0, dateUtils_1.getCostaRicaDate)(); 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, // @ts-expect-error pending-to-fix codigoPais: frontEndRequest.codigoPais, codigoSeguridad: frontEndRequest.codigoSeguridad, consecutivo: frontEndRequest.consecutivo, situacionCE: frontEndRequest.situationEC, // @ts-expect-error pending-to-fix sucursal: frontEndRequest.sucursal, // @ts-expect-error pending-to-fix terminal: frontEndRequest.terminal, tipoCedula: sender.tipoIdentificacion, // @ts-expect-error pending-to-fix tipoDocKey: frontEndRequest.tipoDocumento }; } exports.parseOptions = parseOptions; function getClave(frontEndRequest) { const claveOptions = parseOptions(frontEndRequest); return genClave(claveOptions); } exports.getClave = getClave; //# sourceMappingURL=index.js.map