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