diff --git a/services/integration/invoiceIntegration.js b/services/integration/invoiceIntegration.js index 077c9c2..67b9b81 100644 --- a/services/integration/invoiceIntegration.js +++ b/services/integration/invoiceIntegration.js @@ -247,6 +247,10 @@ const createNegativeFeeForDiscount = (memberData, dateRange) => { } }); + if (membershipFeeForDiscount === 0){ + return null; //This member's plan is not eligible for a discount + } + const totalChargeFee = membershipFeeForDiscount + totalBookingChargedFee; let discount = 0; @@ -261,7 +265,7 @@ const createNegativeFeeForDiscount = (memberData, dateRange) => { const discountRate = discountPercentage / 100; discount = totalChargeFee * discountRate; }else{ - return null; + return null; //Not enough hours to earn a discount } const formattedName = `[Discount] Total booked : ${totalBookedHours.toFixed(2)} hrs, Total charged : ${totalChargedHours.toFixed(2)} hrs, Discount : ${discountPercentage} %`; @@ -317,7 +321,7 @@ const getMembersFeesForDateRange = (dateRange, memberIds) => { membersMap[member.memberId] = { member, bookingData: Object.assign({}, oneMemberObject), - membershipFees: membershipsMap[member.memberId], + membershipFees: membershipsMap[member.memberId] || [], }; }); diff --git a/services/officeRnD/fees.js b/services/officeRnD/fees.js index 287baf1..a55a109 100644 --- a/services/officeRnD/fees.js +++ b/services/officeRnD/fees.js @@ -33,6 +33,8 @@ const deleteFeesFromORD = (dateRange, memberIds) => { memberIdsMap[memberId] = true; }); + const filterByMemberIds = memberIds.length > 0; + const feeIdsToRemove = []; fetchedFees.forEach((fee) => { @@ -42,7 +44,9 @@ const deleteFeesFromORD = (dateRange, memberIds) => { const isDateInDateRange = startDate.isSameOrBefore(date) && endDate.isSameOrAfter(date); const manuallyAddedFee = manualFeeNames.indexOf(name) !== -1; - if (memberIdsMap[member] && isDateInDateRange && (status === UNPAID_FEE_STATUS) && !manuallyAddedFee) { + const memberFeesShouldBeDeleted = filterByMemberIds ? memberIdsMap[member] : true; + + if (memberFeesShouldBeDeleted && isDateInDateRange && (status === UNPAID_FEE_STATUS) && !manuallyAddedFee) { feeIdsToRemove.push(feeId); } }); diff --git a/services/officeRnD/memberships.js b/services/officeRnD/memberships.js index 328cdf7..7049179 100644 --- a/services/officeRnD/memberships.js +++ b/services/officeRnD/memberships.js @@ -10,14 +10,18 @@ const fetchAllMembershipsForMemberIds = (memberIds) => { const memberships = result.data || []; if (Array.isArray(memberIds)){ - const filteredMemberships = []; - memberships.forEach((membership) => { - const { member } = membership; - if (memberIds.indexOf(member) !== -1){ - filteredMemberships.push(membership); - } - }); - resolve(filteredMemberships); + if (memberIds.length > 0){ + const filteredMemberships = []; + memberships.forEach((membership) => { + const { member } = membership; + if (memberIds.indexOf(member) !== -1){ + filteredMemberships.push(membership); + } + }); + resolve(filteredMemberships); + }else{ + resolve(memberships); + } }else{ reject(integrationServiceErrors.EXPECTED_MEMBER_IDS_ARRAY); }