Name in the fee / bugfixes
This commit is contained in:
@@ -60,6 +60,7 @@ const officeRnDAPIErrors = {
|
|||||||
FAILED_TO_FETCH_FEES: 'Failed to fetch existing fees',
|
FAILED_TO_FETCH_FEES: 'Failed to fetch existing fees',
|
||||||
FAILED_TO_DELETE_FEES: 'Failed to delete fees in ORD',
|
FAILED_TO_DELETE_FEES: 'Failed to delete fees in ORD',
|
||||||
FAILED_TO_ADD_FEES: 'Failed to add fees in ORD',
|
FAILED_TO_ADD_FEES: 'Failed to add fees in ORD',
|
||||||
|
MEMBERSHIPS_ARE_NOT_LOADED_CORRECTLY: 'Memberships are not loaded correctly',
|
||||||
};
|
};
|
||||||
const integrationServiceErrors = {
|
const integrationServiceErrors = {
|
||||||
PROCESSING_TRY_AGAIN: 'Incident calculations are in progress. Please try again in a few minutes',
|
PROCESSING_TRY_AGAIN: 'Incident calculations are in progress. Please try again in a few minutes',
|
||||||
@@ -70,6 +71,7 @@ const integrationServiceErrors = {
|
|||||||
INVALID_DATE_RANGE: 'Dates in date range are invalid',
|
INVALID_DATE_RANGE: 'Dates in date range are invalid',
|
||||||
FAILED_TO_GENERATE_MEMBER_PRACTICE_SUMMARY: 'Failed to generate Member Practice Summary',
|
FAILED_TO_GENERATE_MEMBER_PRACTICE_SUMMARY: 'Failed to generate Member Practice Summary',
|
||||||
ERRORS_IN_MEMBER_PRACTICE_SUMMARY_REPORT: 'Member Practice Summary Report is generated but there were some errors and report may be incomplete',
|
ERRORS_IN_MEMBER_PRACTICE_SUMMARY_REPORT: 'Member Practice Summary Report is generated but there were some errors and report may be incomplete',
|
||||||
|
EXPECTED_MEMBER_IDS_ARRAY: 'Expected array of member IDs',
|
||||||
};
|
};
|
||||||
|
|
||||||
const incidentType = {
|
const incidentType = {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const { getMappingsFromDatabase, fetchOffices, fetchResources, saveNewMappingToD
|
|||||||
const { getAllIncidents, getMemberPracticeSummaryReport } = require('../services/integration/reports');
|
const { getAllIncidents, getMemberPracticeSummaryReport } = require('../services/integration/reports');
|
||||||
const { getMembersFeesForDateRange } = require('../services/integration/invoiceIntegration');
|
const { getMembersFeesForDateRange } = require('../services/integration/invoiceIntegration');
|
||||||
const { deleteFeesFromORD, addFeesToORD } = require('../services/officeRnD/fees');
|
const { deleteFeesFromORD, addFeesToORD } = require('../services/officeRnD/fees');
|
||||||
|
const { reformatMembershipsName } = require('../services/officeRnD/memberships');
|
||||||
const { checkBookingChanges } = require('../services/integration/checkBookingChange');
|
const { checkBookingChanges } = require('../services/integration/checkBookingChange');
|
||||||
const { checkIfProcessing } = require('../services/integration/processingStatus');
|
const { checkIfProcessing } = require('../services/integration/processingStatus');
|
||||||
|
|
||||||
@@ -85,13 +86,21 @@ const addFees = (req, res) => {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
// TODO: Change this to parallel execution
|
// TODO: Change this to parallel execution
|
||||||
getMembersFeesForDateRange(dateRange, memberIds)
|
getMembersFeesForDateRange(dateRange, memberIds)
|
||||||
.then((allFees) => {
|
.then(({allFees, memberships}) => {
|
||||||
addFeesToORD(allFees)
|
addFeesToORD(allFees)
|
||||||
.then((numberOfInsertedFees) => {
|
.then((numberOfInsertedFees) => {
|
||||||
res.send({
|
reformatMembershipsName(memberships)
|
||||||
status: 'ok',
|
.then(() => {
|
||||||
numberOfInsertedFees
|
res.send({
|
||||||
});
|
status: 'ok',
|
||||||
|
numberOfInsertedFees
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log('Error reformatting memberships name');
|
||||||
|
console.log(error);
|
||||||
|
res.status(500).send(error);
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.log('Error adding fees');
|
console.log('Error adding fees');
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const { getAllBookingsForMembersInDateRange } = require('./bookings');
|
|||||||
const { DEFAULT_DATE_FORMAT, UI_TIMEZONE, incidentTypeExplanations, incidentType, unlockedIncidentLevelsPrices } = require('../../constants/constants');
|
const { DEFAULT_DATE_FORMAT, UI_TIMEZONE, incidentTypeExplanations, incidentType, unlockedIncidentLevelsPrices } = require('../../constants/constants');
|
||||||
const { getResourceMappings } = require('../officeRnD/resources');
|
const { getResourceMappings } = require('../officeRnD/resources');
|
||||||
const { fetchAllMembers } = require('../officeRnD/members');
|
const { fetchAllMembers } = require('../officeRnD/members');
|
||||||
const { fetchAllMembershipsAsMap } = require('../officeRnD/memberships');
|
const { fetchAllMembershipsForMemberIds } = require('../officeRnD/memberships');
|
||||||
const { discounts, DISCOUNT_PLANS } = require('../../constants/constants');
|
const { discounts, DISCOUNT_PLANS } = require('../../constants/constants');
|
||||||
|
|
||||||
const createFeeFromIncident = (incident) => {
|
const createFeeFromIncident = (incident) => {
|
||||||
@@ -280,7 +280,7 @@ const createNegativeFeeForDiscount = (memberData, dateRange) => {
|
|||||||
|
|
||||||
const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const collectData = [getAllIncidents(dateRange, memberIds), getAllBookingsForMembersInDateRange(dateRange, memberIds), getResourceMappings(), fetchAllMembers(), fetchAllMembershipsAsMap()];
|
const collectData = [getAllIncidents(dateRange, memberIds), getAllBookingsForMembersInDateRange(dateRange, memberIds), getResourceMappings(), fetchAllMembers(), fetchAllMembershipsForMemberIds(memberIds)];
|
||||||
|
|
||||||
Promise.all(collectData)
|
Promise.all(collectData)
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
@@ -288,7 +288,23 @@ const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
|||||||
const allBookings = result[1];
|
const allBookings = result[1];
|
||||||
const resourceMappings = result[2];
|
const resourceMappings = result[2];
|
||||||
const membersList = result[3];
|
const membersList = result[3];
|
||||||
const membershipsMap = result[4];
|
const memberships = result[4];
|
||||||
|
|
||||||
|
const membershipsMap = {};
|
||||||
|
memberships.forEach((membership) => {
|
||||||
|
const { price, name, member } = membership;
|
||||||
|
if (!membershipsMap[member]) {
|
||||||
|
membershipsMap[member] = [{
|
||||||
|
price,
|
||||||
|
name,
|
||||||
|
}];
|
||||||
|
}else{
|
||||||
|
membershipsMap[member].push({
|
||||||
|
price,
|
||||||
|
name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const membersMap = {};
|
const membersMap = {};
|
||||||
const oneMemberObject = {
|
const oneMemberObject = {
|
||||||
@@ -428,10 +444,17 @@ const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
allFees.forEach((fee) => {
|
allFees.forEach((fee) => {
|
||||||
fee.team = memberIdTeamMappings[fee.member] || null;
|
const { member } = fee;
|
||||||
|
const { teamId, name: memberName} = membersMap[member].member;
|
||||||
|
|
||||||
|
fee.team = memberIdTeamMappings[member] || null;
|
||||||
|
if (teamId){
|
||||||
|
//if member is part of the company, add name to the fee description/name
|
||||||
|
fee.name += `, ${memberName}`;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
resolve(allFees);
|
resolve({allFees, memberships});
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
|
|||||||
@@ -1,28 +1,26 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { API } = require('../../helpers/api');
|
const { API } = require('../../helpers/api');
|
||||||
|
const { DISCOUNT_PLANS, officeRnDAPIErrors, integrationServiceErrors } = require('../../constants/constants');
|
||||||
|
|
||||||
const fetchAllMembershipsAsMap = () => {
|
const fetchAllMembershipsForMemberIds = (memberIds) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
API.get('/memberships')
|
API.get('/memberships')
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
const membershipsMap = {};
|
|
||||||
const memberships = result.data || [];
|
const memberships = result.data || [];
|
||||||
memberships.forEach((membership) => {
|
|
||||||
const { price, name, member } = membership;
|
if (Array.isArray(memberIds)){
|
||||||
if (!membershipsMap[member]) {
|
const filteredMemberships = [];
|
||||||
membershipsMap[member] = [{
|
memberships.forEach((membership) => {
|
||||||
price,
|
const { member } = membership;
|
||||||
name,
|
if (memberIds.indexOf(member) !== -1){
|
||||||
}];
|
filteredMemberships.push(membership);
|
||||||
}else{
|
}
|
||||||
membershipsMap[member].push({
|
});
|
||||||
price,
|
resolve(filteredMemberships);
|
||||||
name,
|
}else{
|
||||||
});
|
reject(integrationServiceErrors.EXPECTED_MEMBER_IDS_ARRAY);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
resolve(membershipsMap);
|
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
reject(error);
|
reject(error);
|
||||||
@@ -30,6 +28,36 @@ const fetchAllMembershipsAsMap = () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = {
|
const reformatMembershipsName = (memberships) => {
|
||||||
fetchAllMembershipsAsMap,
|
return new Promise((resolve, reject) => {
|
||||||
|
const asyncMembershipUpdates = [];
|
||||||
|
if (Array.isArray(memberships)){
|
||||||
|
memberships.forEach((membership) => {
|
||||||
|
const { name, _id } = membership;
|
||||||
|
|
||||||
|
if (name && name.length > 0 && name[0] !== '['){
|
||||||
|
DISCOUNT_PLANS.forEach((discountPlan) => {
|
||||||
|
if (name === discountPlan){
|
||||||
|
asyncMembershipUpdates.push(API.put(`memberships/${_id}`, {name: `[${name}]`}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Promise.all(asyncMembershipUpdates)
|
||||||
|
.then(() => {
|
||||||
|
resolve(true);
|
||||||
|
})
|
||||||
|
.catch((error) => reject(error));
|
||||||
|
}else{
|
||||||
|
reject(officeRnDAPIErrors.MEMBERSHIPS_ARE_NOT_LOADED_CORRECTLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
fetchAllMembershipsForMemberIds,
|
||||||
|
reformatMembershipsName
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user