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_DELETE_FEES: 'Failed to delete 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 = {
|
||||
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',
|
||||
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',
|
||||
EXPECTED_MEMBER_IDS_ARRAY: 'Expected array of member IDs',
|
||||
};
|
||||
|
||||
const incidentType = {
|
||||
|
||||
@@ -6,6 +6,7 @@ const { getMappingsFromDatabase, fetchOffices, fetchResources, saveNewMappingToD
|
||||
const { getAllIncidents, getMemberPracticeSummaryReport } = require('../services/integration/reports');
|
||||
const { getMembersFeesForDateRange } = require('../services/integration/invoiceIntegration');
|
||||
const { deleteFeesFromORD, addFeesToORD } = require('../services/officeRnD/fees');
|
||||
const { reformatMembershipsName } = require('../services/officeRnD/memberships');
|
||||
const { checkBookingChanges } = require('../services/integration/checkBookingChange');
|
||||
const { checkIfProcessing } = require('../services/integration/processingStatus');
|
||||
|
||||
@@ -85,13 +86,21 @@ const addFees = (req, res) => {
|
||||
.then(() => {
|
||||
// TODO: Change this to parallel execution
|
||||
getMembersFeesForDateRange(dateRange, memberIds)
|
||||
.then((allFees) => {
|
||||
.then(({allFees, memberships}) => {
|
||||
addFeesToORD(allFees)
|
||||
.then((numberOfInsertedFees) => {
|
||||
res.send({
|
||||
status: 'ok',
|
||||
numberOfInsertedFees
|
||||
});
|
||||
reformatMembershipsName(memberships)
|
||||
.then(() => {
|
||||
res.send({
|
||||
status: 'ok',
|
||||
numberOfInsertedFees
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log('Error reformatting memberships name');
|
||||
console.log(error);
|
||||
res.status(500).send(error);
|
||||
})
|
||||
})
|
||||
.catch((error) => {
|
||||
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 { getResourceMappings } = require('../officeRnD/resources');
|
||||
const { fetchAllMembers } = require('../officeRnD/members');
|
||||
const { fetchAllMembershipsAsMap } = require('../officeRnD/memberships');
|
||||
const { fetchAllMembershipsForMemberIds } = require('../officeRnD/memberships');
|
||||
const { discounts, DISCOUNT_PLANS } = require('../../constants/constants');
|
||||
|
||||
const createFeeFromIncident = (incident) => {
|
||||
@@ -280,7 +280,7 @@ const createNegativeFeeForDiscount = (memberData, dateRange) => {
|
||||
|
||||
const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
||||
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)
|
||||
.then((result) => {
|
||||
@@ -288,7 +288,23 @@ const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
||||
const allBookings = result[1];
|
||||
const resourceMappings = result[2];
|
||||
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 oneMemberObject = {
|
||||
@@ -428,10 +444,17 @@ const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
||||
});
|
||||
|
||||
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) => {
|
||||
|
||||
@@ -1,28 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
const { API } = require('../../helpers/api');
|
||||
const { DISCOUNT_PLANS, officeRnDAPIErrors, integrationServiceErrors } = require('../../constants/constants');
|
||||
|
||||
const fetchAllMembershipsAsMap = () => {
|
||||
const fetchAllMembershipsForMemberIds = (memberIds) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
API.get('/memberships')
|
||||
.then((result) => {
|
||||
const membershipsMap = {};
|
||||
const memberships = result.data || [];
|
||||
memberships.forEach((membership) => {
|
||||
const { price, name, member } = membership;
|
||||
if (!membershipsMap[member]) {
|
||||
membershipsMap[member] = [{
|
||||
price,
|
||||
name,
|
||||
}];
|
||||
}else{
|
||||
membershipsMap[member].push({
|
||||
price,
|
||||
name,
|
||||
});
|
||||
}
|
||||
});
|
||||
resolve(membershipsMap);
|
||||
|
||||
if (Array.isArray(memberIds)){
|
||||
const filteredMemberships = [];
|
||||
memberships.forEach((membership) => {
|
||||
const { member } = membership;
|
||||
if (memberIds.indexOf(member) !== -1){
|
||||
filteredMemberships.push(membership);
|
||||
}
|
||||
});
|
||||
resolve(filteredMemberships);
|
||||
}else{
|
||||
reject(integrationServiceErrors.EXPECTED_MEMBER_IDS_ARRAY);
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
reject(error);
|
||||
@@ -30,6 +28,36 @@ const fetchAllMembershipsAsMap = () => {
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
fetchAllMembershipsAsMap,
|
||||
const reformatMembershipsName = (memberships) => {
|
||||
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