Skip to content

Commit b0ef27a

Browse files
committed
refactor(billing): streamline promo code pricing calculation logic for improved readability and maintainability
1 parent e9ed561 commit b0ef27a

1 file changed

Lines changed: 21 additions & 47 deletions

File tree

src/utils/promoCodePricing.ts

Lines changed: 21 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,16 @@ export function calculatePromoCodePlanPrice(
8282
): PromoCodePlanPrice {
8383
const originalAmount = plan.monthlyCharge;
8484
const planId = getPlanId(plan);
85-
const isApplicable = isDiscountablePlan(plan) && isPlanApplicable(benefit, plan);
86-
87-
if (!isApplicable) {
88-
return {
89-
planId,
90-
isApplicable: false,
91-
originalAmount,
92-
finalAmount: originalAmount,
93-
discountAmount: 0,
94-
};
85+
const result: PromoCodePlanPrice = {
86+
planId,
87+
isApplicable: false,
88+
originalAmount,
89+
finalAmount: originalAmount,
90+
discountAmount: 0,
91+
};
92+
93+
if (!isDiscountablePlan(plan) || !isPlanApplicable(benefit, plan)) {
94+
return result;
9595
}
9696

9797
switch (benefit.type) {
@@ -100,51 +100,25 @@ export function calculatePromoCodePlanPrice(
100100
const discountAmount = Math.floor(originalAmount * benefit.percent / 100);
101101
const finalAmount = Math.max(originalAmount - discountAmount, minFinalPrice);
102102

103-
if (finalAmount >= originalAmount) {
104-
return {
105-
planId,
106-
isApplicable: false,
107-
originalAmount,
108-
finalAmount: originalAmount,
109-
discountAmount: 0,
110-
};
103+
if (finalAmount < originalAmount) {
104+
result.isApplicable = true;
105+
result.finalAmount = finalAmount;
106+
result.discountAmount = originalAmount - finalAmount;
111107
}
112108

113-
return {
114-
planId,
115-
isApplicable: true,
116-
originalAmount,
117-
finalAmount,
118-
discountAmount: originalAmount - finalAmount,
119-
};
109+
return result;
120110
}
121111

122112
case 'fixed_price':
123-
if (benefit.amount >= originalAmount) {
124-
return {
125-
planId,
126-
isApplicable: false,
127-
originalAmount,
128-
finalAmount: originalAmount,
129-
discountAmount: 0,
130-
};
113+
if (benefit.amount < originalAmount) {
114+
result.isApplicable = true;
115+
result.finalAmount = benefit.amount;
116+
result.discountAmount = originalAmount - benefit.amount;
131117
}
132118

133-
return {
134-
planId,
135-
isApplicable: true,
136-
originalAmount,
137-
finalAmount: benefit.amount,
138-
discountAmount: originalAmount - benefit.amount,
139-
};
119+
return result;
140120

141121
default:
142-
return {
143-
planId,
144-
isApplicable: false,
145-
originalAmount,
146-
finalAmount: originalAmount,
147-
discountAmount: 0,
148-
};
122+
return result;
149123
}
150124
}

0 commit comments

Comments
 (0)