update order price calculation
This commit is contained in:
@@ -35,32 +35,42 @@ export class MidtransPaymentService extends AbstractPaymentService {
|
||||
if (order.type === OrderType.bookingSeat) {
|
||||
price += BOOKING_SEAT_PRICE * quantity;
|
||||
} else if (order.type === OrderType.downPayment) {
|
||||
if (order.quadDownPaymentPercentage > 0) {
|
||||
price +=
|
||||
Math.ceil(
|
||||
((order.quadDownPaymentPercentage / 100) *
|
||||
(order.package.quadPrice - order.package.quadDiscount)) /
|
||||
100_000,
|
||||
) *
|
||||
100_000 +
|
||||
) * 100_000;
|
||||
}
|
||||
if (order.tripleDownPaymentPercentage > 0) {
|
||||
price +=
|
||||
Math.ceil(
|
||||
((order.tripleDownPaymentPercentage / 100) *
|
||||
(order.package.triplePrice - order.package.tripleDiscount)) /
|
||||
100_000,
|
||||
) *
|
||||
100_000 +
|
||||
) * 100_000;
|
||||
}
|
||||
if (order.doubleDownPaymentPercentage > 0) {
|
||||
price +=
|
||||
Math.ceil(
|
||||
((order.doubleDownPaymentPercentage / 100) *
|
||||
(order.package.doublePrice - order.package.doubleDiscount)) /
|
||||
100_000,
|
||||
) *
|
||||
100_000 +
|
||||
) * 100_000;
|
||||
}
|
||||
if (
|
||||
order.infantDownPaymentPercentage > 0 &&
|
||||
order.package.infantPrice !== null &&
|
||||
order.package.infantDiscount !== null
|
||||
) {
|
||||
price +=
|
||||
Math.ceil(
|
||||
((order.infantDownPaymentPercentage / 100) *
|
||||
((order.package.infantPrice ?? 0) -
|
||||
(order.package.infantDiscount ?? 0))) /
|
||||
(order.package.infantPrice - order.package.infantDiscount)) /
|
||||
100_000,
|
||||
) *
|
||||
100_000;
|
||||
) * 100_000;
|
||||
}
|
||||
}
|
||||
if (order.kit === Kit.minimal) {
|
||||
price += MINIMAL_KIT_PRICE;
|
||||
|
||||
@@ -16,22 +16,22 @@ export const orderRequestSchema = z.object({
|
||||
quad_down_payment_percentage: z
|
||||
.number("Must be number.")
|
||||
.int("Must be integer")
|
||||
.min(25, "Min 25.")
|
||||
.min(0, "Min 0.")
|
||||
.max(100, "Max 100."),
|
||||
triple_down_payment_percentage: z
|
||||
.number("Must be number.")
|
||||
.int("Must be integer")
|
||||
.min(25, "Min 25.")
|
||||
.min(0, "Min 0.")
|
||||
.max(100, "Max 100."),
|
||||
double_down_payment_percentage: z
|
||||
.number("Must be number.")
|
||||
.int("Must be integer")
|
||||
.min(25, "Min 25.")
|
||||
.min(0, "Min 0.")
|
||||
.max(100, "Max 100."),
|
||||
infant_down_payment_percentage: z
|
||||
.number("Must be number.")
|
||||
.int("Must be integer")
|
||||
.min(25, "Min 25.")
|
||||
.min(0, "Min 0.")
|
||||
.max(100, "Max 100."),
|
||||
kit: z.enum(Kit, "Must be either 'minimal', 'without_suitcase', or 'full'."),
|
||||
vaccine: z.number("Must be number.").int("Must be integer.").min(0, "Min 0."),
|
||||
|
||||
Reference in New Issue
Block a user