From cf0f96eb83fe20ba2f369cb509842296a89f8e5b Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Thu, 5 Sep 2019 14:52:10 +0200 Subject: [PATCH] Ignoring prefixed fee names --- constants/constants.js | 5 +++++ environment.env | 2 ++ services/officeRnD/fees.js | 18 +++++++++++++----- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/constants/constants.js b/constants/constants.js index 222f0cd..9ed4a5c 100644 --- a/constants/constants.js +++ b/constants/constants.js @@ -123,6 +123,10 @@ const discounts = { }; const DISCOUNT_PLANS = process.env.DISCOUNT_PLANS.split(',').map(planName => planName.trim()) || []; +const CUSTOM_FEES_PREFIXES = process.env.CUSTOM_FEES_PREFIXES.split(',') + .map(prefix => prefix.trim()) + .filter(prefix => prefix && prefix.length ? prefix.length > 0 : false) || []; + const UNPAID_FEE_STATUS = 'not_paid'; module.exports = { @@ -148,4 +152,5 @@ module.exports = { discounts, DISCOUNT_PLANS, UNPAID_FEE_STATUS, + CUSTOM_FEES_PREFIXES, }; diff --git a/environment.env b/environment.env index d128134..826e022 100644 --- a/environment.env +++ b/environment.env @@ -37,6 +37,8 @@ ORD_OAUTH_CLIENT_ID=Client ID for this app, created in ORD; Used to obtain OAUTH ORD_OAUTH_CLIENT_SECRET=Client secret for this app; Used to obtain OAUTH token ORD_OAUTH_URL=https://identity.officernd.com/oauth/token +CUSTOM_FEES_PREFIXES=Array of prefixes to recognize manually added fees. Comma-separated + #More about pool option : http://docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html DB_POOL_MAX_CONNECTIONS=Maximum number of connection in pool (ex. 18) DB_POOL_ACQUIRE=The maximum time, in milliseconds, that pool will try to get connection before throwing error (ex. 120000) diff --git a/services/officeRnD/fees.js b/services/officeRnD/fees.js index 049a7a1..6d421fe 100644 --- a/services/officeRnD/fees.js +++ b/services/officeRnD/fees.js @@ -3,7 +3,7 @@ const moment = require('moment-timezone'); const { API } = require('../../helpers/api'); -const { officeRnDAPIErrors, DEFAULT_DATE_FORMAT, UNPAID_FEE_STATUS } = require('../../constants/constants'); +const { officeRnDAPIErrors, DEFAULT_DATE_FORMAT, UNPAID_FEE_STATUS, CUSTOM_FEES_PREFIXES } = require('../../constants/constants'); const deleteFeesFromORD = (dateRange, memberIds) => { return new Promise((resolve, reject) => { @@ -12,7 +12,7 @@ const deleteFeesFromORD = (dateRange, memberIds) => { const asyncDataFetch = [API.get('fees'), API.get('plans')]; - const invoicedFees = []; + const feesToSkip = []; Promise.all(asyncDataFetch) .then((responses) => { @@ -45,19 +45,27 @@ const deleteFeesFromORD = (dateRange, memberIds) => { const feeId = fee['_id']; const isDateInDateRange = startDate.isSameOrBefore(date) && endDate.isSameOrAfter(date); - const manuallyAddedFee = manualFeeNames.indexOf(name) !== -1; + let manuallyAddedFee = false; + if (manualFeeNames.indexOf(name) === -1){ + if (name && name[0] && CUSTOM_FEES_PREFIXES.indexOf(name[0]) !== -1){ + manuallyAddedFee = true; + } + }else{ + manuallyAddedFee = true; + } + const memberFeesShouldBeDeleted = filterByMemberIds ? memberIdsMap[member] : true; if (memberFeesShouldBeDeleted && isDateInDateRange && (status === UNPAID_FEE_STATUS) && !manuallyAddedFee) { feeIdsToRemove.push(feeId); }else{ - invoicedFees.push(fee); + feesToSkip.push(fee); } }); API.delete('fees', { data: feeIdsToRemove }) .then(() => { - resolve(invoicedFees); + resolve(feesToSkip); }) .catch((error) => { console.log('error : ', error);