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

View File

@@ -29,7 +29,7 @@ app.use(express.static(path.join(__dirname, 'client/build')));
//production mode //production mode
if(process.env.NODE_ENV === 'production') { if(process.env.NODE_ENV === 'production') {
app.get('*', (req, res) => { 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; const totalChargeFee = membershipFeeForDiscount + totalBookingChargedFee;
let discount = 0; let discount = 0;
@@ -261,7 +265,7 @@ const createNegativeFeeForDiscount = (memberData, dateRange) => {
const discountRate = discountPercentage / 100; const discountRate = discountPercentage / 100;
discount = totalChargeFee * discountRate; discount = totalChargeFee * discountRate;
}else{ }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} %`; 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] = { membersMap[member.memberId] = {
member, member,
bookingData: Object.assign({}, oneMemberObject), 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; memberIdsMap[memberId] = true;
}); });
const filterByMemberIds = memberIds.length > 0;
const feeIdsToRemove = []; const feeIdsToRemove = [];
fetchedFees.forEach((fee) => { fetchedFees.forEach((fee) => {
@@ -42,7 +44,9 @@ const deleteFeesFromORD = (dateRange, memberIds) => {
const isDateInDateRange = startDate.isSameOrBefore(date) && endDate.isSameOrAfter(date); const isDateInDateRange = startDate.isSameOrBefore(date) && endDate.isSameOrAfter(date);
const manuallyAddedFee = manualFeeNames.indexOf(name) !== -1; 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); feeIdsToRemove.push(feeId);
} }
}); });

View File

@@ -10,6 +10,7 @@ const fetchAllMembershipsForMemberIds = (memberIds) => {
const memberships = result.data || []; const memberships = result.data || [];
if (Array.isArray(memberIds)){ if (Array.isArray(memberIds)){
if (memberIds.length > 0){
const filteredMemberships = []; const filteredMemberships = [];
memberships.forEach((membership) => { memberships.forEach((membership) => {
const { member } = membership; const { member } = membership;
@@ -18,6 +19,9 @@ const fetchAllMembershipsForMemberIds = (memberIds) => {
} }
}); });
resolve(filteredMemberships); resolve(filteredMemberships);
}else{
resolve(memberships);
}
}else{ }else{
reject(integrationServiceErrors.EXPECTED_MEMBER_IDS_ARRAY); reject(integrationServiceErrors.EXPECTED_MEMBER_IDS_ARRAY);
} }