@devx-commerce/plugin-discounts-svaraa 0.0.2-beta.11 → 0.0.2-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/api/middlewares.js +4 -1
- package/.medusa/server/src/api/pos/discounts/apply/route.js +153 -0
- package/.medusa/server/src/api/pos/discounts/apply-freebie/route.js +20 -0
- package/.medusa/server/src/api/pos/discounts/auto-apply/route.js +188 -0
- package/.medusa/server/src/api/pos/discounts/cart-eligible-coupons/[cart_id]/route.js +39 -0
- package/.medusa/server/src/api/pos/discounts/coupons/[id]/route.js +25 -0
- package/.medusa/server/src/api/pos/discounts/middlewares.js +77 -0
- package/.medusa/server/src/api/pos/discounts/offers-on-product/[variant_id]/route.js +19 -0
- package/.medusa/server/src/api/pos/discounts/price-rules/route.js +68 -0
- package/.medusa/server/src/api/pos/discounts/price-rules-list/route.js +46 -0
- package/.medusa/server/src/api/pos/discounts/remove/route.js +44 -0
- package/.medusa/server/src/api/pos/discounts/remove-store-discount/route.js +58 -0
- package/.medusa/server/src/api/pos/discounts/validators.js +356 -0
- package/.medusa/server/src/api/pos/discounts/verify-store-discount/route.js +268 -0
- package/.medusa/server/src/lib/send-otp-helper.js +37 -0
- package/.medusa/server/src/workflows/discount/remove-coupon/index.js +7 -4
- package/package.json +4 -2
|
@@ -3,12 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const http_1 = require("@medusajs/framework/http");
|
|
4
4
|
const middlewares_1 = require("./admin/discounts/middlewares");
|
|
5
5
|
const middlewares_2 = require("./store/discounts/middlewares");
|
|
6
|
+
const middlewares_3 = require("./pos/discounts/middlewares");
|
|
6
7
|
exports.default = (0, http_1.defineMiddlewares)({
|
|
7
8
|
routes: [
|
|
8
9
|
// admin routes
|
|
9
10
|
...middlewares_1.adminDiscountRoutesMiddlewares,
|
|
10
11
|
// store routes
|
|
11
12
|
...middlewares_2.storeDiscountRoutesMiddlewares,
|
|
13
|
+
// pos routes
|
|
14
|
+
...middlewares_3.posDiscountRoutesMiddlewares,
|
|
12
15
|
],
|
|
13
16
|
});
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQTZEO0FBQzdELCtEQUErRTtBQUMvRSwrREFBK0U7QUFDL0UsNkRBQTJFO0FBRTNFLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sZUFBZTtRQUNmLEdBQUcsNENBQThCO1FBRWpDLGVBQWU7UUFDZixHQUFHLDRDQUE4QjtRQUVqQyxhQUFhO1FBQ2IsR0FBRywwQ0FBNEI7S0FDaEM7Q0FDRixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
5
|
+
const apply_coupon_1 = require("../../../../workflows/discount/apply-coupon");
|
|
6
|
+
const helpers_1 = require("@medusajs/medusa/api/store/carts/helpers");
|
|
7
|
+
const constant_1 = require("../../../../lib/constant");
|
|
8
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
9
|
+
const utils_2 = require("../../../../lib/utils");
|
|
10
|
+
async function POST(req, res) {
|
|
11
|
+
try {
|
|
12
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
13
|
+
const userId = req.auth_context?.actor_id || req.auth_context;
|
|
14
|
+
const { data: carts } = await query.graph({
|
|
15
|
+
entity: "cart",
|
|
16
|
+
fields: [
|
|
17
|
+
"*",
|
|
18
|
+
"items.*",
|
|
19
|
+
"items.variant.*",
|
|
20
|
+
"items.variant.prices.*",
|
|
21
|
+
"items.variant.extended_variant.mrp",
|
|
22
|
+
"promotions.*",
|
|
23
|
+
],
|
|
24
|
+
filters: { id: req.validatedBody.cart_id },
|
|
25
|
+
});
|
|
26
|
+
if (!carts.length) {
|
|
27
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${req.validatedBody.cart_id} not found`, 404));
|
|
28
|
+
}
|
|
29
|
+
const { data: discount_codes } = await query.graph({
|
|
30
|
+
entity: "discount_code",
|
|
31
|
+
fields: [
|
|
32
|
+
"*",
|
|
33
|
+
],
|
|
34
|
+
filters: { code: req.validatedBody.code },
|
|
35
|
+
});
|
|
36
|
+
if (!discount_codes.length) {
|
|
37
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
38
|
+
discountResult: {
|
|
39
|
+
isApplied: false,
|
|
40
|
+
discount: 0,
|
|
41
|
+
message: "This coupon code is invalid or does not exist."
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
if ((req.validatedBody.code.toLowerCase().includes("birth") || req.validatedBody.code.toLowerCase().includes("anni"))
|
|
46
|
+
&& !userId) {
|
|
47
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
48
|
+
discountResult: {
|
|
49
|
+
isApplied: false,
|
|
50
|
+
discount: 0,
|
|
51
|
+
message: "This coupon is valid only for registered users. Please log in to apply it."
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
if (userId && (req.validatedBody.code.toLowerCase().includes("birth") || req.validatedBody.code.toLowerCase().includes("anni"))) {
|
|
56
|
+
const { data: customer } = await query.graph({
|
|
57
|
+
entity: "customer",
|
|
58
|
+
fields: ["metadata", "extended_customer.id"],
|
|
59
|
+
filters: { id: userId },
|
|
60
|
+
});
|
|
61
|
+
const externalId = customer?.[0]?.extended_customer?.id;
|
|
62
|
+
if (externalId) {
|
|
63
|
+
const { data: ext } = await query.graph({
|
|
64
|
+
entity: "extended_customer",
|
|
65
|
+
fields: ["birth_date", "anniversary_date"],
|
|
66
|
+
filters: { id: externalId },
|
|
67
|
+
});
|
|
68
|
+
const todayIST = (0, utils_2.getISTMonthDay)(new Date());
|
|
69
|
+
const bday = ext?.[0]?.birth_date;
|
|
70
|
+
const anniv = ext?.[0]?.anniversary_date;
|
|
71
|
+
const isBirthday = bday && (0, utils_2.getISTMonthDay)(bday) === todayIST;
|
|
72
|
+
const isAnniversary = anniv && (0, utils_2.getISTMonthDay)(anniv) === todayIST;
|
|
73
|
+
if ((!isBirthday && req.validatedBody.code.toLowerCase().includes("birth")) || (!isAnniversary && req.validatedBody.code.toLowerCase().includes("anni"))) {
|
|
74
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
75
|
+
discountResult: {
|
|
76
|
+
isApplied: false,
|
|
77
|
+
discount: 0,
|
|
78
|
+
message: "This coupon can only be applied on your birthday or anniversary."
|
|
79
|
+
}
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const today = new Date();
|
|
84
|
+
const currentYear = today.getFullYear();
|
|
85
|
+
const startOfYear = new Date(currentYear, 0, 1); // Jan 1
|
|
86
|
+
const endOfYear = new Date(currentYear, 11, 31, 23, 59, 59); // Dec 31
|
|
87
|
+
const { data: orders } = await query.graph({
|
|
88
|
+
entity: "order",
|
|
89
|
+
fields: ["*", "metadata"],
|
|
90
|
+
filters: {
|
|
91
|
+
customer_id: userId,
|
|
92
|
+
created_at: {
|
|
93
|
+
$gte: startOfYear.toISOString(),
|
|
94
|
+
$lte: endOfYear.toISOString(),
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
const matchingOrders = orders?.filter((order) => {
|
|
99
|
+
if (req.validatedBody.code?.toLowerCase()?.includes("birth")) {
|
|
100
|
+
return order?.metadata?.code?.toLowerCase()?.includes("birth") ||
|
|
101
|
+
order?.metadata?.discount?.code?.toLowerCase()?.includes("birth");
|
|
102
|
+
}
|
|
103
|
+
if (req.validatedBody.code?.toLowerCase()?.includes("anni")) {
|
|
104
|
+
return order?.metadata?.code?.toLowerCase()?.includes("anni") ||
|
|
105
|
+
order?.metadata?.discount?.code?.toLowerCase()?.includes("anni");
|
|
106
|
+
}
|
|
107
|
+
return order?.metadata?.code === req.validatedBody.code ||
|
|
108
|
+
order?.metadata?.discount?.code === req.validatedBody.code;
|
|
109
|
+
});
|
|
110
|
+
if (matchingOrders.length !== 0) {
|
|
111
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
112
|
+
discountResult: {
|
|
113
|
+
isApplied: false,
|
|
114
|
+
discount: 0,
|
|
115
|
+
message: "You have already used this coupon"
|
|
116
|
+
}
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const { result, errors } = await (0, apply_coupon_1.applyCouponWorkflow)(req.scope).run({
|
|
123
|
+
input: {
|
|
124
|
+
...req.validatedBody,
|
|
125
|
+
cart: carts[0],
|
|
126
|
+
customerId: req.auth_context?.actor_id || undefined,
|
|
127
|
+
},
|
|
128
|
+
throwOnError: false
|
|
129
|
+
});
|
|
130
|
+
if (errors && errors.length > 0) {
|
|
131
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
132
|
+
discountResult: {
|
|
133
|
+
isApplied: false,
|
|
134
|
+
discount: 0,
|
|
135
|
+
message: errors?.[0]?.error?.message || "Failed to apply coupon"
|
|
136
|
+
}
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
if (!result) {
|
|
140
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
|
|
141
|
+
}
|
|
142
|
+
const cart = await (0, helpers_1.refetchCart)(req.body.cart_id, req.scope, constant_1.defaultStoreCartFields);
|
|
143
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
144
|
+
cart,
|
|
145
|
+
discountResult: result,
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.log("error: ", error);
|
|
150
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXBwbHkvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsb0JBNEtDO0FBeExELCtEQUlzQztBQUN0Qyw4RUFBa0Y7QUFFbEYsc0VBQXVFO0FBQ3ZFLHVEQUFrRTtBQUNsRSxxREFBc0U7QUFDdEUsaURBQXVEO0FBRWhELEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQTBELEVBQzFELEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDOUQsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDeEMsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUU7Z0JBQ04sR0FBRztnQkFDSCxTQUFTO2dCQUNULGlCQUFpQjtnQkFDakIsd0JBQXdCO2dCQUN4QixvQ0FBb0M7Z0JBQ3BDLGNBQWM7YUFDZjtZQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRTtTQUMzQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFBQyxRQUFRLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQ3hFLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVB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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
5
|
+
const apply_freebie_1 = require("../../../../workflows/discount/apply-freebie");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const { result } = await (0, apply_freebie_1.applyFreebieWorkflow)(req.scope).run({
|
|
9
|
+
input: req.validatedBody,
|
|
10
|
+
});
|
|
11
|
+
if (!result) {
|
|
12
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to create discount price rule", 400));
|
|
13
|
+
}
|
|
14
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXBwbHktZnJlZWJpZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQW9CQztBQTVCRCwrREFJc0M7QUFDdEMsZ0ZBQW9GO0FBRzdFLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQXlELEVBQ3pELEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsb0NBQW9CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMzRCxLQUFLLEVBQUUsR0FBRyxDQUFDLGFBQWE7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUFDLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQyxDQUNqRSxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
5
|
+
const apply_coupon_1 = require("../../../../workflows/discount/apply-coupon");
|
|
6
|
+
const calculate_coupon_discount_1 = require("../../../../workflows/discount/calculate-coupon-discount");
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const redis_utils_1 = require("../../../../lib/redis-utils");
|
|
9
|
+
const utils_2 = require("../../../../lib/utils");
|
|
10
|
+
async function getDiscountCode(query, priceRule, cache) {
|
|
11
|
+
const cacheKey = `discount_code:${priceRule.id}`;
|
|
12
|
+
const cached = await cache.get(cacheKey);
|
|
13
|
+
if (cached)
|
|
14
|
+
return cached;
|
|
15
|
+
if (!priceRule.prefix) {
|
|
16
|
+
await cache.set(cacheKey, priceRule.discount_code, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
|
|
17
|
+
return priceRule.discount_code;
|
|
18
|
+
}
|
|
19
|
+
const { data: codes } = await query.graph({
|
|
20
|
+
entity: "discount_code",
|
|
21
|
+
fields: ["*"],
|
|
22
|
+
filters: {
|
|
23
|
+
$and: [
|
|
24
|
+
{ price_rule_id: { $eq: priceRule.id } },
|
|
25
|
+
(priceRule.usage_limit_per_customer_type === "SPECIFIC" || priceRule.usage_limit_per_customer_type === "ONLY_ONCE")
|
|
26
|
+
? { usage_count: 0 }
|
|
27
|
+
: {},
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
pagination: { take: 1 },
|
|
31
|
+
});
|
|
32
|
+
const code = codes.length > 0 ? codes[0].code : null;
|
|
33
|
+
await cache.set(cacheKey, code, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
|
|
34
|
+
return code;
|
|
35
|
+
}
|
|
36
|
+
function getBestDiscount(discounts) {
|
|
37
|
+
return discounts
|
|
38
|
+
.filter((d) => d.status === "fulfilled" && d.value)
|
|
39
|
+
.map((d) => d.value)
|
|
40
|
+
.reduce((best, cur) => (cur.discount > best.discount ? { discount: cur.discount, code: cur.code } : best), { discount: 0 });
|
|
41
|
+
}
|
|
42
|
+
function groupAdjustments(adjustments) {
|
|
43
|
+
return adjustments.reduce((map, adj) => {
|
|
44
|
+
if (adj.code) {
|
|
45
|
+
map[adj.code] = (map[adj.code] || 0) + Math.abs(adj.amount || 0);
|
|
46
|
+
}
|
|
47
|
+
return map;
|
|
48
|
+
}, {});
|
|
49
|
+
}
|
|
50
|
+
// --- Main Handler ---
|
|
51
|
+
async function POST(req, res) {
|
|
52
|
+
try {
|
|
53
|
+
const query = req.scope.resolve("query");
|
|
54
|
+
const cache = req.scope.resolve(utils_1.Modules.CACHE);
|
|
55
|
+
const userId = req.auth_context?.actor_id || undefined;
|
|
56
|
+
let filters = { ...req.filterableFields };
|
|
57
|
+
// --- Customer birthday/anniversary filters ---
|
|
58
|
+
if (userId) {
|
|
59
|
+
const { data: customer } = await query.graph({
|
|
60
|
+
entity: "customer",
|
|
61
|
+
fields: ["metadata"],
|
|
62
|
+
filters: { id: userId },
|
|
63
|
+
});
|
|
64
|
+
const externalId = customer?.[0]?.metadata?.external_id;
|
|
65
|
+
if (externalId) {
|
|
66
|
+
const { data: ext } = await query.graph({
|
|
67
|
+
entity: "extended_customer",
|
|
68
|
+
fields: ["birth_date", "anniversary_date"],
|
|
69
|
+
filters: { external_id: externalId },
|
|
70
|
+
});
|
|
71
|
+
const todayIST = (0, utils_2.getISTMonthDay)(new Date());
|
|
72
|
+
const bday = ext?.[0]?.birth_date;
|
|
73
|
+
const anniv = ext?.[0]?.anniversary_date;
|
|
74
|
+
const isBirthday = bday && (0, utils_2.getISTMonthDay)(bday) === todayIST;
|
|
75
|
+
const isAnniversary = anniv && (0, utils_2.getISTMonthDay)(anniv) === todayIST;
|
|
76
|
+
if (isBirthday || isAnniversary) {
|
|
77
|
+
filters.$or = [
|
|
78
|
+
...(isBirthday ? [{ is_birthday: true }] : []),
|
|
79
|
+
...(isAnniversary ? [{ is_anniversary: true }] : []),
|
|
80
|
+
{ is_birthday: false, is_anniversary: false },
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
filters.is_birthday = false;
|
|
85
|
+
filters.is_anniversary = false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
filters = { ...filters, usage_limit: "UNLIMITED", is_birthday: false, is_anniversary: false };
|
|
91
|
+
}
|
|
92
|
+
// --- 1. Fetch auto-apply rules (with caching) ---
|
|
93
|
+
const rulesCacheKey = "discount_price_rules:auto_apply";
|
|
94
|
+
let priceRules = (await cache.get(rulesCacheKey)) || (await query.graph({
|
|
95
|
+
entity: "discount_price_rule",
|
|
96
|
+
fields: ["*"],
|
|
97
|
+
filters: { ...filters, auto_apply: true },
|
|
98
|
+
})).data;
|
|
99
|
+
if (!(await cache.get(rulesCacheKey))) {
|
|
100
|
+
await cache.set(rulesCacheKey, priceRules, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
|
|
101
|
+
}
|
|
102
|
+
// --- 2. Fetch cart once ---
|
|
103
|
+
const { data: carts } = await query.graph({
|
|
104
|
+
entity: "cart",
|
|
105
|
+
fields: [
|
|
106
|
+
"*",
|
|
107
|
+
"items.*",
|
|
108
|
+
"items.variant.*",
|
|
109
|
+
"items.variant.prices.*",
|
|
110
|
+
"items.variant.extended_product_variants.compare_at_price",
|
|
111
|
+
"promotions.*",
|
|
112
|
+
],
|
|
113
|
+
filters: { id: req.validatedBody.cart_id },
|
|
114
|
+
});
|
|
115
|
+
if (!carts.length) {
|
|
116
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${req.validatedBody.cart_id} not found`, 404));
|
|
117
|
+
}
|
|
118
|
+
const cart = carts[0];
|
|
119
|
+
// --- 3. Calculate discounts for each rule ---
|
|
120
|
+
const discounts = await Promise.allSettled(priceRules.map(async (rule) => {
|
|
121
|
+
try {
|
|
122
|
+
const code = await getDiscountCode(query, rule, cache);
|
|
123
|
+
if (!code)
|
|
124
|
+
return { discount: 0 };
|
|
125
|
+
const { result: { discount }, } = await (0, calculate_coupon_discount_1.calculateCouponDiscountWorkflow)(req.scope).run({
|
|
126
|
+
input: { cart_id: req.validatedBody.cart_id, cart, code, customerId: userId || undefined },
|
|
127
|
+
});
|
|
128
|
+
return { discount, code };
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return { discount: 0 };
|
|
132
|
+
}
|
|
133
|
+
}));
|
|
134
|
+
const { discount: currentDiscount, code: currentCode } = getBestDiscount(discounts);
|
|
135
|
+
// --- 4. Fetch adjustments once ---
|
|
136
|
+
const { data: adjustments } = await query.graph({
|
|
137
|
+
entity: "line_item_adjustment",
|
|
138
|
+
fields: ["*"],
|
|
139
|
+
filters: {
|
|
140
|
+
item_id: { $in: cart.items.map((i) => i.id) },
|
|
141
|
+
code: { $ne: null },
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
const codeDiscountMap = groupAdjustments(adjustments);
|
|
145
|
+
const [appliedCouponCode, appliedCouponDiscount] = Object.entries(codeDiscountMap).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
|
|
146
|
+
// --- 5. Compare and apply ---
|
|
147
|
+
if (appliedCouponCode && appliedCouponDiscount >= currentDiscount) {
|
|
148
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
149
|
+
message: "Existing coupon provides better or equal discount. No auto coupon applied.",
|
|
150
|
+
code: appliedCouponCode,
|
|
151
|
+
discount: appliedCouponDiscount,
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
let appliedCode = currentCode;
|
|
155
|
+
let appliedDiscount = currentDiscount;
|
|
156
|
+
if (currentCode) {
|
|
157
|
+
const { result } = await (0, apply_coupon_1.applyCouponWorkflow)(req.scope).run({
|
|
158
|
+
input: { code: currentCode, cart_id: req.validatedBody.cart_id, cart, customerId: userId || undefined },
|
|
159
|
+
});
|
|
160
|
+
if (!result) {
|
|
161
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
|
|
162
|
+
}
|
|
163
|
+
// 🔄 Refresh adjustments after applying
|
|
164
|
+
const { data: adjustmentsAfter } = await query.graph({
|
|
165
|
+
entity: "line_item_adjustment",
|
|
166
|
+
fields: ["*"],
|
|
167
|
+
filters: {
|
|
168
|
+
item_id: { $in: cart.items.map((i) => i.id) },
|
|
169
|
+
code: { $ne: null },
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
const codeDiscountMapAfter = groupAdjustments(adjustmentsAfter);
|
|
173
|
+
const [newCode, newDiscount] = Object.entries(codeDiscountMapAfter).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
|
|
174
|
+
appliedCode = newCode;
|
|
175
|
+
appliedDiscount = newDiscount;
|
|
176
|
+
}
|
|
177
|
+
// --- 6. Final response ---
|
|
178
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
179
|
+
message: appliedCode ? "Coupon applied" : "No coupon applied",
|
|
180
|
+
code: appliedCode,
|
|
181
|
+
discount: appliedDiscount,
|
|
182
|
+
}));
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXV0by1hcHBseS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlFQSxvQkFrTEM7QUEvT0QsK0RBSXFDO0FBQ3JDLDhFQUFpRjtBQUNqRix3R0FBMEc7QUFFMUcscURBQW1EO0FBQ25ELDZEQUFvRTtBQUNwRSxpREFBc0Q7QUFFdEQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBYyxFQUFFLEtBQVU7SUFDbkUsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDeEMsSUFBSSxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxhQUFhLEVBQUUsb0NBQXNCLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDeEYsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN4QyxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDYixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLDZCQUE2QixLQUFLLFdBQVcsQ0FBQztvQkFD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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const api_response_1 = require("../../../../../lib/api-response");
|
|
6
|
+
const get_cart_eligible_coupons_1 = require("../../../../../workflows/discount/get-cart-eligible-coupons");
|
|
7
|
+
async function GET(req, res) {
|
|
8
|
+
try {
|
|
9
|
+
const { cart_id } = req.params;
|
|
10
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
const { data: carts } = await query.graph({
|
|
12
|
+
entity: "cart",
|
|
13
|
+
fields: [
|
|
14
|
+
"*",
|
|
15
|
+
"items.*",
|
|
16
|
+
"items.variant.*",
|
|
17
|
+
"items.variant.prices.*",
|
|
18
|
+
"items.variant.extended_variant.mrp",
|
|
19
|
+
],
|
|
20
|
+
filters: { id: cart_id },
|
|
21
|
+
});
|
|
22
|
+
if (!carts.length) {
|
|
23
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${cart_id} not found`, 404));
|
|
24
|
+
}
|
|
25
|
+
const { result } = await (0, get_cart_eligible_coupons_1.getCartEligibleCouponsWorkflow)(req.scope).run({
|
|
26
|
+
input: {
|
|
27
|
+
cart_id,
|
|
28
|
+
customerId: req?.auth_context?.actor_id,
|
|
29
|
+
cart: carts[0],
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
// Error logging removed - use proper error handling instead
|
|
36
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvY2FydC1lbGlnaWJsZS1jb3Vwb25zL1tjYXJ0X2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLGtCQXlDQztBQWxERCxxREFBc0U7QUFFdEUsa0VBSXlDO0FBQ3pDLDJHQUE2RztBQUV0RyxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUErQixFQUMvQixHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUUvQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN4QyxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRTtnQkFDTixHQUFHO2dCQUNILFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQix3QkFBd0I7Z0JBQ3hCLG9DQUFvQzthQUNyQztZQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMsUUFBUSxPQUFPLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FDdEQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBEQUE4QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDckUsS0FBSyxFQUFFO2dCQUNMLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUTtnQkFDdkMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDZjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZiw0REFBNEQ7UUFDNUQsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const api_response_1 = require("../../../../../lib/api-response");
|
|
5
|
+
async function GET(req, res) {
|
|
6
|
+
try {
|
|
7
|
+
const id = req.params.id;
|
|
8
|
+
const query = req.scope.resolve("query");
|
|
9
|
+
console.log("Fetching discount price rule with ID:", id);
|
|
10
|
+
const { data: [discountPriceRule], } = await query.graph({
|
|
11
|
+
entity: "discount_price_rule",
|
|
12
|
+
...req.queryConfig,
|
|
13
|
+
filters: { id },
|
|
14
|
+
});
|
|
15
|
+
console.log("Discount price rule fetched:", discountPriceRule);
|
|
16
|
+
if (!discountPriceRule) {
|
|
17
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Discount price rule not found", 404));
|
|
18
|
+
}
|
|
19
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(discountPriceRule));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvY291cG9ucy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsa0JBMEJDO0FBNUJELGtFQUE4RztBQUV2RyxLQUFLLFVBQVUsR0FBRyxDQUNyQixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sRUFDRixJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUM1QixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNsQixNQUFNLEVBQUUscUJBQXFCO1lBQzdCLEdBQUcsR0FBRyxDQUFDLFdBQVc7WUFDbEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQywrQkFBK0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFFRCxPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxvQ0FBcUIsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztBQUNMLENBQUMifQ==
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.posDiscountRoutesMiddlewares = void 0;
|
|
4
|
+
const http_1 = require("@medusajs/framework/http");
|
|
5
|
+
const validators_1 = require("./validators");
|
|
6
|
+
const medusa_1 = require("@medusajs/medusa");
|
|
7
|
+
exports.posDiscountRoutesMiddlewares = [
|
|
8
|
+
{
|
|
9
|
+
matcher: "/pos/discounts/price-rules",
|
|
10
|
+
methods: ["GET"],
|
|
11
|
+
middlewares: [(0, medusa_1.authenticate)("customer", ["bearer", "session"]),
|
|
12
|
+
(0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
|
|
13
|
+
defaults: validators_1.posDefaultDiscountPriceRuleFields,
|
|
14
|
+
defaultLimit: 10,
|
|
15
|
+
isList: true,
|
|
16
|
+
}),
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
matcher: "/pos/discounts/price-rules-list",
|
|
21
|
+
methods: ["GET"],
|
|
22
|
+
middlewares: [
|
|
23
|
+
(0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
|
|
24
|
+
defaults: validators_1.posDefaultDiscountPriceRuleFields,
|
|
25
|
+
defaultLimit: 10,
|
|
26
|
+
isList: true,
|
|
27
|
+
}),
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
matcher: "/pos/discounts/apply",
|
|
32
|
+
method: "POST",
|
|
33
|
+
middlewares: [(0, medusa_1.authenticate)("customer", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosApplyDiscountInputValidator)],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
matcher: "/pos/discounts/auto-apply",
|
|
37
|
+
method: "POST",
|
|
38
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosAutoApplyDiscountInputValidator)],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
matcher: "/pos/discounts/apply-freebie",
|
|
42
|
+
method: "POST",
|
|
43
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosApplyFreebieInputValidator)],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
matcher: "/pos/discounts/verify-store-discount",
|
|
47
|
+
method: "POST",
|
|
48
|
+
middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosVerifyStoreDiscountInputValidator)],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
matcher: "/pos/discounts/remove-store-discount",
|
|
52
|
+
method: "POST",
|
|
53
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosRemoveStoreDiscountInputValidator)],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
matcher: "/pos/discounts/remove",
|
|
57
|
+
method: "POST",
|
|
58
|
+
middlewares: [(0, medusa_1.authenticate)("customer", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosRemoveDiscountInputValidator)],
|
|
59
|
+
},
|
|
60
|
+
///////////////////// OFFERS ON PRODUCT ////////////////////
|
|
61
|
+
{
|
|
62
|
+
matcher: "/pos/discounts/offers-on-product/:variant_id",
|
|
63
|
+
method: "GET",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
matcher: "/pos/discounts/cart-eligible-coupons/:cart_id",
|
|
67
|
+
method: "GET",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
matcher: "/pos/discounts/coupons/:id",
|
|
71
|
+
method: "GET",
|
|
72
|
+
middlewares: [(0, http_1.validateAndTransformQuery)(validators_1.PosGetDiscountPriceRulesParams, {
|
|
73
|
+
defaults: validators_1.posDefaultDiscountPriceRuleFields,
|
|
74
|
+
}),],
|
|
75
|
+
}
|
|
76
|
+
];
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBSWtDO0FBRWxDLDZDQVlzQjtBQUN0Qiw2Q0FBZ0Q7QUFFbkMsUUFBQSw0QkFBNEIsR0FBc0I7SUFDN0Q7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUUsQ0FBQyxJQUFBLHFCQUFZLEVBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNELElBQUEsZ0NBQXlCLEVBQUMsNENBQStCLEVBQUU7Z0JBQ3pELFFBQVEsRUFBRSw4Q0FBaUM7Z0JBQzNDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7U0FDSDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUU7WUFDWCxJQUFBLGdDQUF5QixFQUFDLDRDQUErQixFQUFFO2dCQUN6RCxRQUFRLEVBQUUsOENBQWlDO2dCQUMzQyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1NBQ0g7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxDQUFDLElBQUEscUJBQVksRUFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBQyxJQUFBLCtCQUF3QixFQUFDLDJDQUE4QixDQUFDLENBQUM7S0FDeEg7SUFDRDtRQUNFLE9BQU8sRUFBRSwyQkFBMkI7UUFDcEMsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLCtDQUFrQyxDQUFDLENBQUM7S0FDNUU7SUFDRDtRQUNFLE9BQU8sRUFBRSw4QkFBOEI7UUFDdkMsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDBDQUE2QixDQUFDLENBQUM7S0FDdkU7SUFDRDtRQUNFLE9BQU8sRUFBRSxzQ0FBc0M7UUFDL0MsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUMsSUFBQSwrQkFBd0IsRUFBQyxpREFBb0MsQ0FBQyxDQUFDO0tBQzFIO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsc0NBQXNDO1FBQy9DLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxpREFBb0MsQ0FBQyxDQUFDO0tBQzlFO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSxxQkFBWSxFQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUEsK0JBQXdCLEVBQUMsNENBQStCLENBQUMsQ0FBQztLQUN6SDtJQUNELDREQUE0RDtJQUM1RDtRQUNFLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsTUFBTSxFQUFFLEtBQUs7S0FDZDtJQUVEO1FBQ0UsT0FBTyxFQUFFLCtDQUErQztRQUN4RCxNQUFNLEVBQUUsS0FBSztLQUNkO0lBRUQ7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsV0FBVyxFQUFFLENBQUMsSUFBQSxnQ0FBeUIsRUFBQywyQ0FBOEIsRUFBRTtnQkFDdEUsUUFBUSxFQUFFLDhDQUFpQzthQUM1QyxDQUFDLEVBQUU7S0FDTDtDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const api_response_1 = require("../../../../../lib/api-response");
|
|
5
|
+
const get_product_offers_1 = require("../../../../../workflows/discount/get-product-offers");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const { variant_id } = req.params;
|
|
9
|
+
const { result } = await (0, get_product_offers_1.calculateProductOfferWorkflow)(req.scope).run({
|
|
10
|
+
input: { variant_id },
|
|
11
|
+
});
|
|
12
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.log(error);
|
|
16
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvb2ZmZXJzLW9uLXByb2R1Y3QvW3ZhcmlhbnRfaWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsa0JBZ0JDO0FBdkJELGtFQUl5QztBQUN6Qyw2RkFBcUc7QUFFOUYsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBK0IsRUFDL0IsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxrREFBNkIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3BFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRTtTQUN0QixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxvQ0FBcUIsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUMifQ==
|