Fix sending fees to ord bug #54

Merged
bilal.catic merged 3 commits from fix-sending-fees-to-ORD-bug into master 2019-08-31 02:19:01 +02:00
5 changed files with 26 additions and 17 deletions

View File

@@ -7,7 +7,7 @@ import MonthSelector from '../../components/MonthSelector';
import MemberIncidentsTables from '../../components/MemberIncidentsTables';
import GenerateFeesInORDButton from '../../components/GenerateFeesInORDButton';
import { fetchIncidents, addFeesToOrd } from '../../store/actions';
import { fetchIncidents } from '../../store/actions';
class IncidentsReport extends Component {
state = {dateRange: null};
@@ -31,7 +31,6 @@ class IncidentsReport extends Component {
membersMap[incident.memberId] = true;
});
}
const memberIds = Object.keys(membersMap) || [];
return (
<Container>
@@ -41,7 +40,6 @@ class IncidentsReport extends Component {
<MonthSelector buttonLabel="Show report" onDatesUpdate={this.onDatesUpdate} inlineButton />
<br/>
<GenerateFeesInORDButton
memberIds={memberIds}
disabled={loading}
dateRange={dateRange}
/>
@@ -61,8 +59,7 @@ const mapStateToProps = (state) => ({
});
const mapDispatchToProps = (dispatch) => ({
fetchIncidents: (dateRange) => fetchIncidents(dispatch, dateRange),
addFeesToOrd: (dateRange, memberIds) => addFeesToOrd(dispatch, dateRange, memberIds),
fetchIncidents: (dateRange) => fetchIncidents(dispatch, dateRange)
});
export default connect(mapStateToProps, mapDispatchToProps)(IncidentsReport);

View File

@@ -29,7 +29,7 @@ app.use(express.static(path.join(__dirname, 'client/build')));
//production mode
if(process.env.NODE_ENV === 'production') {
app.get('*', (req, res) => {
res.sendfile(path.join(__dirname = 'client/build/index.html'));
res.sendFile(path.join(__dirname = 'client/build/index.html'));
});
}

View File

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

View File

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

View File

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