Duplicate charging fix
This commit is contained in:
@@ -121,11 +121,11 @@ const addFees = (req, res) => {
|
|||||||
checkBookingChanges()
|
checkBookingChanges()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
deleteFeesFromORD(dateRange, memberIds)
|
deleteFeesFromORD(dateRange, memberIds)
|
||||||
.then(() => {
|
.then((invoicedFees) => {
|
||||||
// TODO: Change this to parallel execution
|
// TODO: Change this to parallel execution
|
||||||
getMembersFeesForDateRange(dateRange, memberIds)
|
getMembersFeesForDateRange(dateRange, memberIds)
|
||||||
.then(({allFees, memberships}) => {
|
.then(({allFees, memberships}) => {
|
||||||
addFeesToORD(allFees)
|
addFeesToORD(allFees, invoicedFees)
|
||||||
.then((numberOfInsertedFees) => {
|
.then((numberOfInsertedFees) => {
|
||||||
reformatMembershipsName(memberships)
|
reformatMembershipsName(memberships)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ const deleteFeesFromORD = (dateRange, memberIds) => {
|
|||||||
|
|
||||||
const asyncDataFetch = [API.get('fees'), API.get('plans')];
|
const asyncDataFetch = [API.get('fees'), API.get('plans')];
|
||||||
|
|
||||||
|
const invoicedFees = [];
|
||||||
|
|
||||||
Promise.all(asyncDataFetch)
|
Promise.all(asyncDataFetch)
|
||||||
.then((responses) => {
|
.then((responses) => {
|
||||||
const feesResponse = responses[0];
|
const feesResponse = responses[0];
|
||||||
@@ -48,12 +50,14 @@ const deleteFeesFromORD = (dateRange, memberIds) => {
|
|||||||
|
|
||||||
if (memberFeesShouldBeDeleted && isDateInDateRange && (status === UNPAID_FEE_STATUS) && !manuallyAddedFee) {
|
if (memberFeesShouldBeDeleted && isDateInDateRange && (status === UNPAID_FEE_STATUS) && !manuallyAddedFee) {
|
||||||
feeIdsToRemove.push(feeId);
|
feeIdsToRemove.push(feeId);
|
||||||
|
}else{
|
||||||
|
invoicedFees.push(fee);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
API.delete('fees', { data: feeIdsToRemove })
|
API.delete('fees', { data: feeIdsToRemove })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
resolve(true);
|
resolve(invoicedFees);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.log('error : ', error);
|
console.log('error : ', error);
|
||||||
@@ -67,14 +71,28 @@ const deleteFeesFromORD = (dateRange, memberIds) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const addFeesToORD = (allFees) => {
|
const addFeesToORD = (allFees, invoicedFees) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
API.post('/fees', allFees)
|
const isFeeNonInvoiced = (fee) => {
|
||||||
|
const { name: feeName, member: feeMember, team: feeTeam, office: feeOffice } = fee;
|
||||||
|
|
||||||
|
const invoicedFeeObject = invoicedFees.find((invoicedFee) => {
|
||||||
|
const { name, member, team, office } = invoicedFee;
|
||||||
|
|
||||||
|
return (name === feeName && member === feeMember && team === feeTeam && office === feeOffice );
|
||||||
|
});
|
||||||
|
|
||||||
|
return !invoicedFeeObject;
|
||||||
|
};
|
||||||
|
|
||||||
|
const nonInvoicedFees = allFees.filter(isFeeNonInvoiced);
|
||||||
|
|
||||||
|
API.post('/fees', nonInvoicedFees)
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.log('==== ERROR ====');
|
console.log('==== ERROR ====');
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
resolve(allFees.length);
|
resolve(nonInvoicedFees.length);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user