Duplicate charging fix

This commit is contained in:
Senad Uka
2019-09-04 18:32:32 +02:00
parent f0a3e430a2
commit 12e94c30e8
2 changed files with 24 additions and 6 deletions

View File

@@ -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(() => {

View File

@@ -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);
}); });
}; };