UNPKG

kra-etims-sdk

Version:

Kenya Revenue Authority (KRA) Electronic Tax Invoice Management System (eTims) API Integration SDK

222 lines (196 loc) 5.95 kB
/** * Basic Data Service for KRA eTims SDK * Handles basic data operations with the KRA eTims API */ const apiService = require('./api.service'); const config = require('../config'); const logger = require('../utils/logger'); const { validate, schemas } = require('../utils/validation'); class BasicDataService { /** * Get code list * @param {Object} data - Request data * @param {string} data.tin - Taxpayer Identification Number * @param {string} data.bhfId - Branch ID * @param {string} data.lastReqDt - Last Request Date * @returns {Promise<Object>} - Code list response */ async selectCodeList(data) { try { logger.info('Getting code list'); // Validate data const validatedData = validate(data, schemas.codeList); // Make API request const response = await apiService.post( config.endpoints.basicData.selectCodeList, validatedData, { tin: validatedData.tin, bhfId: validatedData.bhfId, cmcKey: data.cmcKey // Optional } ); return { success: true, data: response }; } catch (error) { logger.error(`Get code list error: ${error.message}`); throw error; } } /** * Get item classification list * @param {Object} data - Request data * @param {string} data.tin - Taxpayer Identification Number * @param {string} data.bhfId - Branch ID * @param {string} data.lastReqDt - Last Request Date * @returns {Promise<Object>} - Item classification list response */ async selectItemClsList(data) { try { logger.info('Getting item classification list'); // Validate data const validatedData = validate(data, schemas.itemClsList); // Make API request const response = await apiService.post( config.endpoints.basicData.selectItemClsList, validatedData, { tin: validatedData.tin, bhfId: validatedData.bhfId, cmcKey: data.cmcKey // Optional } ); return { success: true, data: response }; } catch (error) { logger.error(`Get item classification list error: ${error.message}`); throw error; } } /** * Get branch list * @param {Object} data - Request data * @param {string} data.lastReqDt - Last Request Date * @returns {Promise<Object>} - Branch list response */ async selectBhfList(data) { try { logger.info('Getting branch list'); // Validate data const validatedData = validate(data, schemas.bhfList); // Make API request const response = await apiService.post( config.endpoints.basicData.selectBhfList, validatedData ); return { success: true, data: response }; } catch (error) { logger.error(`Get branch list error: ${error.message}`); throw error; } } /** * Get notice list * @param {Object} data - Request data * @param {string} data.tin - Taxpayer Identification Number * @param {string} data.bhfId - Branch ID * @param {string} data.lastReqDt - Last Request Date * @returns {Promise<Object>} - Notice list response */ async selectNoticeList(data) { try { logger.info('Getting notice list'); // Validate data const validatedData = validate(data, schemas.noticeList); // Make API request const response = await apiService.post( config.endpoints.basicData.selectNoticeList, validatedData, { tin: validatedData.tin, bhfId: validatedData.bhfId, cmcKey: data.cmcKey // Optional } ); return { success: true, data: response }; } catch (error) { logger.error(`Get notice list error: ${error.message}`); throw error; } } /** * Get taxpayer info * @param {Object} data - Request data * @param {string} data.tin - Taxpayer Identification Number * @param {string} data.bhfId - Branch ID * @param {string} data.lastReqDt - Last Request Date * @returns {Promise<Object>} - Taxpayer info response */ async selectTaxpayerInfo(data) { try { logger.info('Getting taxpayer info'); // Validate data const validatedData = validate(data, schemas.taxpayerInfo); // Make API request const response = await apiService.post( config.endpoints.basicData.selectTaxpayerInfo, validatedData, { tin: validatedData.tin, bhfId: validatedData.bhfId, cmcKey: data.cmcKey // Optional } ); return { success: true, data: response }; } catch (error) { logger.error(`Get taxpayer info error: ${error.message}`); throw error; } } /** * Get customer list * @param {Object} data - Request data * @param {string} data.tin - Taxpayer Identification Number * @param {string} data.bhfId - Branch ID * @param {string} data.lastReqDt - Last Request Date * @returns {Promise<Object>} - Customer list response */ async selectCustomerList(data) { try { logger.info('Getting customer list'); // Validate data const validatedData = validate(data, schemas.customerList); // Make API request const response = await apiService.post( config.endpoints.basicData.selectCustomerList, validatedData, { tin: validatedData.tin, bhfId: validatedData.bhfId, cmcKey: data.cmcKey // Optional } ); return { success: true, data: response }; } catch (error) { logger.error(`Get customer list error: ${error.message}`); throw error; } } } module.exports = new BasicDataService();