add plan name filter for discount
This commit is contained in:
@@ -117,6 +117,7 @@ const discounts = {
|
|||||||
percentage: parseInt(process.env.DISCOUNT_LEVEL_2_PERCENTAGE) || 10,
|
percentage: parseInt(process.env.DISCOUNT_LEVEL_2_PERCENTAGE) || 10,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const DISCOUNT_PLANS = process.env.DISCOUNT_PLANS.split(',').map(planName => planName.trim()) || [];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
VALID_CSV_HEADERS,
|
VALID_CSV_HEADERS,
|
||||||
@@ -139,4 +140,5 @@ module.exports = {
|
|||||||
CHARGE_BOOKING_CHANGE_UNDER_TIME,
|
CHARGE_BOOKING_CHANGE_UNDER_TIME,
|
||||||
ALLOWED_BOOKING_CANCELLATION_TIME,
|
ALLOWED_BOOKING_CANCELLATION_TIME,
|
||||||
discounts,
|
discounts,
|
||||||
|
DISCOUNT_PLANS,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ DISCOUNT_LEVEL_1_HOURS=Hours requred to apply DISCOUNT_LEVEL_1_PERCENTAGE discou
|
|||||||
DISCOUNT_LEVEL_1_PERCENTAGE=Discount to apply in percentage, if DISCOUNT_LEVEL_1_HOURS of billable hours is booked
|
DISCOUNT_LEVEL_1_PERCENTAGE=Discount to apply in percentage, if DISCOUNT_LEVEL_1_HOURS of billable hours is booked
|
||||||
DISCOUNT_LEVEL_2_HOURS=Hours requred to apply DISCOUNT_LEVEL_2_PERCENTAGE discount
|
DISCOUNT_LEVEL_2_HOURS=Hours requred to apply DISCOUNT_LEVEL_2_PERCENTAGE discount
|
||||||
DISCOUNT_LEVEL_2_PERCENTAGE=Discount to apply in percentage, if DISCOUNT_LEVEL_2_HOURS of billable hours is booked
|
DISCOUNT_LEVEL_2_PERCENTAGE=Discount to apply in percentage, if DISCOUNT_LEVEL_2_HOURS of billable hours is booked
|
||||||
|
DISCOUNT_PLANS=Plan names for which discount is available. Comma-separated
|
||||||
|
|
||||||
#More about pool option : http://docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html
|
#More about pool option : http://docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html
|
||||||
DB_POOL_MAX_CONNECTIONS=Maximum number of connection in pool (ex. 18)
|
DB_POOL_MAX_CONNECTIONS=Maximum number of connection in pool (ex. 18)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ const { getResourceMappings } = require('../officeRnD/resources');
|
|||||||
const { fetchAllMembers } = require('../officeRnD/members');
|
const { fetchAllMembers } = require('../officeRnD/members');
|
||||||
const { fetchAllMembershipsAsMap } = require('../officeRnD/memberships');
|
const { fetchAllMembershipsAsMap } = require('../officeRnD/memberships');
|
||||||
const { getChargedCanceledReservations } = require('../integration/bookingChangeCharges');
|
const { getChargedCanceledReservations } = require('../integration/bookingChangeCharges');
|
||||||
const { discounts } = require('../../constants/constants');
|
const { discounts, DISCOUNT_PLANS } = require('../../constants/constants');
|
||||||
|
|
||||||
const createFeeFromIncident = (incident) => {
|
const createFeeFromIncident = (incident) => {
|
||||||
const {
|
const {
|
||||||
@@ -226,17 +226,24 @@ const createFeeFromBooking = (booking, resourceMappings) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const createNegativeFeeForDiscount = (memberData, dateRange) => {
|
const createNegativeFeeForDiscount = (memberData, dateRange) => {
|
||||||
const { bookingData, member, membershipFee } = memberData;
|
const { bookingData, member, membershipFees } = memberData;
|
||||||
const { totalBookedHours, totalChargedHours, totalBookingChargedFee } = bookingData;
|
const { totalBookedHours, totalChargedHours, totalBookingChargedFee } = bookingData;
|
||||||
const { memberId, officeId } = member;
|
const { memberId, officeId } = member;
|
||||||
|
|
||||||
|
|
||||||
let endDate = moment.utc().endOf('day').toISOString();
|
let endDate = moment.utc().endOf('day').toISOString();
|
||||||
if (dateRange.endDate){
|
if (dateRange.endDate){
|
||||||
endDate = moment.utc(dateRange.endDate, DEFAULT_DATE_FORMAT).endOf('day').toISOString();
|
endDate = moment.utc(dateRange.endDate, DEFAULT_DATE_FORMAT).endOf('day').toISOString();
|
||||||
}
|
}
|
||||||
|
|
||||||
const totalChargeFee = membershipFee + totalBookingChargedFee;
|
let membershipFeeForDiscount = 0;
|
||||||
|
membershipFees.forEach((membershipFee) => {
|
||||||
|
const {name, price} = membershipFee;
|
||||||
|
if (DISCOUNT_PLANS.indexOf(name) !== -1){
|
||||||
|
membershipFeeForDiscount = price;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const totalChargeFee = membershipFeeForDiscount + totalBookingChargedFee;
|
||||||
|
|
||||||
let discount = 0;
|
let discount = 0;
|
||||||
let discountPercentage = 0;
|
let discountPercentage = 0;
|
||||||
@@ -248,11 +255,9 @@ const createNegativeFeeForDiscount = (memberData, dateRange) => {
|
|||||||
}else if (totalChargedHours >= discounts.LEVEL_1.hoursRequired){
|
}else if (totalChargedHours >= discounts.LEVEL_1.hoursRequired){
|
||||||
discountPercentage = discounts.LEVEL_1.percentage;
|
discountPercentage = discounts.LEVEL_1.percentage;
|
||||||
const discountRate = discountPercentage / 100;
|
const discountRate = discountPercentage / 100;
|
||||||
console.log(discountRate);
|
|
||||||
discount = totalChargeFee * discountRate;
|
discount = totalChargeFee * discountRate;
|
||||||
}else{
|
}else{
|
||||||
discountPercentage = 0;
|
return null;
|
||||||
discount = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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} %`;
|
||||||
@@ -267,7 +272,6 @@ const createNegativeFeeForDiscount = (memberData, dateRange) => {
|
|||||||
office: officeId,
|
office: officeId,
|
||||||
isPersonal: false,
|
isPersonal: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
||||||
@@ -293,7 +297,7 @@ const getMembersFeesForDateRange = (dateRange, memberIds) => {
|
|||||||
membersMap[member.memberId] = {
|
membersMap[member.memberId] = {
|
||||||
member,
|
member,
|
||||||
bookingData: Object.assign({}, oneMemberObject),
|
bookingData: Object.assign({}, oneMemberObject),
|
||||||
membershipFee: membershipsMap[member.memberId] || 0,
|
membershipFees: membershipsMap[member.memberId],
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,17 @@ const fetchAllMembershipsAsMap = () => {
|
|||||||
const membershipsMap = {};
|
const membershipsMap = {};
|
||||||
const memberships = result.data || [];
|
const memberships = result.data || [];
|
||||||
memberships.forEach((membership) => {
|
memberships.forEach((membership) => {
|
||||||
const { price, member } = membership;
|
const { price, name, member } = membership;
|
||||||
if (!membershipsMap[member]) {
|
if (!membershipsMap[member]) {
|
||||||
membershipsMap[member] = price;
|
membershipsMap[member] = [{
|
||||||
|
price,
|
||||||
|
name,
|
||||||
|
}];
|
||||||
|
}else{
|
||||||
|
membershipsMap[member].push({
|
||||||
|
price,
|
||||||
|
name,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
resolve(membershipsMap);
|
resolve(membershipsMap);
|
||||||
|
|||||||
Reference in New Issue
Block a user