@devx-commerce/plugin-discounts-svaraa 0.0.2-beta.2 → 0.0.2-beta.21
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/admin/discounts/validators.js +16 -1
- package/.medusa/server/src/api/middlewares.js +4 -1
- package/.medusa/server/src/api/pos/discounts/apply/route.js +151 -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 +99 -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 +89 -0
- package/.medusa/server/src/api/pos/discounts/price-rules-list/route.js +54 -0
- package/.medusa/server/src/api/pos/discounts/remove/route.js +41 -0
- package/.medusa/server/src/api/pos/discounts/remove-store-discount/route.js +54 -0
- package/.medusa/server/src/api/pos/discounts/validators.js +358 -0
- package/.medusa/server/src/api/pos/discounts/verify-store-discount/route.js +394 -0
- package/.medusa/server/src/api/store/discounts/apply/route.js +126 -8
- package/.medusa/server/src/api/store/discounts/auto-apply/route.js +143 -80
- package/.medusa/server/src/api/store/discounts/cart-eligible-coupons/[cart_id]/route.js +23 -3
- package/.medusa/server/src/api/store/discounts/price-rules/route.js +65 -2
- package/.medusa/server/src/api/store/discounts/remove/route.js +23 -3
- package/.medusa/server/src/index.js +2 -1
- package/.medusa/server/src/lib/constant.js +126 -0
- package/.medusa/server/src/lib/helper.js +68 -0
- package/.medusa/server/src/lib/redis-utils.js +33 -0
- package/.medusa/server/src/lib/send-otp-helper.js +37 -0
- package/.medusa/server/src/lib/utils.js +11 -2
- package/.medusa/server/src/modules/discounts/migrations/Migration20250822052209.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250825073038.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250901083847.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250918095658.js +14 -0
- package/.medusa/server/src/modules/discounts/models/price-rule.js +13 -1
- package/.medusa/server/src/modules/discounts/service.js +9 -7
- package/.medusa/server/src/subscribers/index.js +18 -0
- package/.medusa/server/src/subscribers/promocode-subscriber.js +77 -0
- package/.medusa/server/src/workflows/discount/add-more-code-in-price-rule/index.js +3 -3
- package/.medusa/server/src/workflows/discount/apply-coupon/index.js +36 -26
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step.js +25 -187
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js +27 -9
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/validate-coupon-step.js +3 -5
- package/.medusa/server/src/workflows/discount/auto-apply-coupon/steps/auto-apply-coupon.js +157 -87
- package/.medusa/server/src/workflows/discount/calculate-coupon-discount/index.js +36 -32
- package/.medusa/server/src/workflows/discount/calculate-coupon-discount/step/fetch-price-rule-by-code.js +36 -0
- package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/create-discount-price-rule-step.js +2 -2
- package/.medusa/server/src/workflows/discount/create-subscriber-to-discount-price-rule.js +10 -0
- package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/index.js +2 -1
- package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/step/get-cart-eligible-coupon.js +33 -10
- package/.medusa/server/src/workflows/discount/index.js +5 -1
- package/.medusa/server/src/workflows/discount/remove-coupon/index.js +22 -2
- package/.medusa/server/src/workflows/discount/remove-coupon/step/remove-coupon-step.js +45 -26
- package/.medusa/server/src/workflows/discount/rounded-cart-total/index.js +13 -0
- package/.medusa/server/src/workflows/discount/steps/rounded-cart-total.js +168 -0
- package/.medusa/server/src/workflows/discount/update-coupon-code-stats/index.js +12 -0
- package/.medusa/server/src/workflows/discount/update-coupon-code-stats/step/update-coupon-code-stats.js +52 -0
- package/.medusa/server/src/workflows/discount/update-discount-price-rule/index.js +1 -3
- package/package.json +4 -2
|
@@ -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,99 @@
|
|
|
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)("user", ["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, medusa_1.authenticate)("user", ["bearer", "session"], {
|
|
24
|
+
allowUnauthenticated: true,
|
|
25
|
+
}),
|
|
26
|
+
(0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
|
|
27
|
+
defaults: validators_1.posDefaultDiscountPriceRuleFields,
|
|
28
|
+
defaultLimit: 10,
|
|
29
|
+
isList: true,
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
matcher: "/pos/discounts/apply",
|
|
35
|
+
method: "POST",
|
|
36
|
+
middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosApplyDiscountInputValidator)],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
matcher: "/pos/discounts/auto-apply",
|
|
40
|
+
method: "POST",
|
|
41
|
+
middlewares: [
|
|
42
|
+
(0, medusa_1.authenticate)("user", ["bearer", "session"]),
|
|
43
|
+
(0, http_1.validateAndTransformBody)(validators_1.PosAutoApplyDiscountInputValidator),
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
matcher: "/pos/discounts/apply-freebie",
|
|
48
|
+
method: "POST",
|
|
49
|
+
middlewares: [
|
|
50
|
+
(0, medusa_1.authenticate)("user", ["bearer", "session"]),
|
|
51
|
+
(0, http_1.validateAndTransformBody)(validators_1.PosApplyFreebieInputValidator),
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
matcher: "/pos/discounts/verify-store-discount",
|
|
56
|
+
method: "POST",
|
|
57
|
+
middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosVerifyStoreDiscountInputValidator)],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
matcher: "/pos/discounts/remove-store-discount",
|
|
61
|
+
method: "POST",
|
|
62
|
+
middlewares: [
|
|
63
|
+
(0, medusa_1.authenticate)("user", ["bearer", "session"]),
|
|
64
|
+
(0, http_1.validateAndTransformBody)(validators_1.PosRemoveStoreDiscountInputValidator),
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
matcher: "/pos/discounts/remove",
|
|
69
|
+
method: "POST",
|
|
70
|
+
middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosRemoveDiscountInputValidator)],
|
|
71
|
+
},
|
|
72
|
+
///////////////////// OFFERS ON PRODUCT ////////////////////
|
|
73
|
+
{
|
|
74
|
+
matcher: "/pos/discounts/offers-on-product/:variant_id",
|
|
75
|
+
method: "GET",
|
|
76
|
+
middlewares: [
|
|
77
|
+
(0, medusa_1.authenticate)("user", ["bearer", "session"], {
|
|
78
|
+
allowUnauthenticated: true,
|
|
79
|
+
}),
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
matcher: "/pos/discounts/cart-eligible-coupons/:cart_id",
|
|
84
|
+
method: "GET",
|
|
85
|
+
middlewares: [
|
|
86
|
+
(0, medusa_1.authenticate)("user", ["bearer", "session"], {
|
|
87
|
+
allowUnauthenticated: true,
|
|
88
|
+
}),
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
matcher: "/pos/discounts/coupons/:id",
|
|
93
|
+
method: "GET",
|
|
94
|
+
middlewares: [(0, http_1.validateAndTransformQuery)(validators_1.PosGetDiscountPriceRulesParams, {
|
|
95
|
+
defaults: validators_1.posDefaultDiscountPriceRuleFields,
|
|
96
|
+
}),],
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBSWtDO0FBRWxDLDZDQVlzQjtBQUN0Qiw2Q0FBZ0Q7QUFFbkMsUUFBQSw0QkFBNEIsR0FBc0I7SUFDN0Q7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUUsQ0FBQyxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELElBQUEsZ0NBQXlCLEVBQUMsNENBQStCLEVBQUU7Z0JBQ3pELFFBQVEsRUFBRSw4Q0FBaUM7Z0JBQzNDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7U0FDSDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUMxQyxvQkFBb0IsRUFBRSxJQUFJO2FBQzNCLENBQUM7WUFDRixJQUFBLGdDQUF5QixFQUFDLDRDQUErQixFQUFFO2dCQUN6RCxRQUFRLEVBQUUsOENBQWlDO2dCQUMzQyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1NBQ0g7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxDQUFDLElBQUEscUJBQVksRUFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBQyxJQUFBLCtCQUF3QixFQUFDLDJDQUE4QixDQUFDLENBQUM7S0FDcEg7SUFDRDtRQUNFLE9BQU8sRUFBRSwyQkFBMkI7UUFDcEMsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLElBQUEsK0JBQXdCLEVBQUMsK0NBQWtDLENBQUM7U0FDN0Q7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLDhCQUE4QjtRQUN2QyxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRTtZQUNYLElBQUEscUJBQVksRUFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0MsSUFBQSwrQkFBd0IsRUFBQywwQ0FBNkIsQ0FBQztTQUN4RDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsc0NBQXNDO1FBQy9DLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUEsK0JBQXdCLEVBQUMsaURBQW9DLENBQUMsQ0FBQztLQUMxSDtJQUNEO1FBQ0UsT0FBTyxFQUFFLHNDQUFzQztRQUMvQyxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRTtZQUNYLElBQUEscUJBQVksRUFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0MsSUFBQSwrQkFBd0IsRUFBQyxpREFBb0MsQ0FBQztTQUMvRDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUEsK0JBQXdCLEVBQUMsNENBQStCLENBQUMsQ0FBQztLQUNySDtJQUNELDREQUE0RDtJQUM1RDtRQUNFLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUMxQyxvQkFBb0IsRUFBRSxJQUFJO2FBQzNCLENBQUM7U0FDSDtLQUNGO0lBRUQ7UUFDRSxPQUFPLEVBQUUsK0NBQStDO1FBQ3hELE1BQU0sRUFBRSxLQUFLO1FBQ2IsV0FBVyxFQUFFO1lBQ1gsSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRTtnQkFDMUMsb0JBQW9CLEVBQUUsSUFBSTthQUMzQixDQUFDO1NBQ0g7S0FDRjtJQUVEO1FBQ0UsT0FBTyxFQUFFLDRCQUE0QjtRQUNyQyxNQUFNLEVBQUUsS0FBSztRQUNiLFdBQVcsRUFBRSxDQUFDLElBQUEsZ0NBQXlCLEVBQUMsMkNBQThCLEVBQUU7Z0JBQ3RFLFFBQVEsRUFBRSw4Q0FBaUM7YUFDNUMsQ0FBQyxFQUFFO0tBQ0w7Q0FDRixDQUFDIn0=
|
|
@@ -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==
|
|
@@ -0,0 +1,89 @@
|
|
|
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 utils_1 = require("../../../../lib/utils");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const query = req.scope.resolve("query");
|
|
9
|
+
// Use customer_id from query params if provided, otherwise use authenticated customer
|
|
10
|
+
const customerId = req.validatedQuery?.customer_id || req.auth_context?.actor_id;
|
|
11
|
+
let filters = { ...req.filterableFields };
|
|
12
|
+
// Remove customer_id from filters as it's not a database field
|
|
13
|
+
if (filters.customer_id) {
|
|
14
|
+
delete filters.customer_id;
|
|
15
|
+
}
|
|
16
|
+
// Filter out expired coupons - only show active coupons
|
|
17
|
+
// starts_at <= now AND (ends_at >= now OR ends_at is null)
|
|
18
|
+
const now = new Date();
|
|
19
|
+
filters.starts_at = { $lte: now };
|
|
20
|
+
// Date filter for ends_at (not expired)
|
|
21
|
+
const dateFilter = {
|
|
22
|
+
$or: [{ ends_at: { $gte: now } }, { ends_at: null }],
|
|
23
|
+
};
|
|
24
|
+
if (!customerId) {
|
|
25
|
+
filters = {
|
|
26
|
+
...filters,
|
|
27
|
+
usage_limit: "UNLIMITED",
|
|
28
|
+
is_birthday: false,
|
|
29
|
+
is_anniversary: false,
|
|
30
|
+
...dateFilter,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (customerId) {
|
|
34
|
+
const { data: customer } = await query.graph({
|
|
35
|
+
entity: "customer",
|
|
36
|
+
fields: ["metadata", "extended_customer.id"],
|
|
37
|
+
filters: { id: customerId },
|
|
38
|
+
});
|
|
39
|
+
const externalId = customer?.[0]?.extended_customer?.id;
|
|
40
|
+
if (externalId) {
|
|
41
|
+
const { data: ext } = await query.graph({
|
|
42
|
+
entity: "extended_customer",
|
|
43
|
+
fields: ["birth_date", "anniversary_date"],
|
|
44
|
+
filters: { id: externalId },
|
|
45
|
+
});
|
|
46
|
+
const todayIST = (0, utils_1.getISTMonthDay)(new Date());
|
|
47
|
+
const bday = ext?.[0]?.birth_date;
|
|
48
|
+
const anniv = ext?.[0]?.anniversary_date;
|
|
49
|
+
const isBirthday = bday && (0, utils_1.getISTMonthDay)(bday) === todayIST;
|
|
50
|
+
const isAnniversary = anniv && (0, utils_1.getISTMonthDay)(anniv) === todayIST;
|
|
51
|
+
if (isBirthday || isAnniversary) {
|
|
52
|
+
// Combine date filter with birthday/anniversary filter using $and
|
|
53
|
+
filters.$and = [
|
|
54
|
+
dateFilter,
|
|
55
|
+
{
|
|
56
|
+
$or: [
|
|
57
|
+
{ is_birthday: false, is_anniversary: false },
|
|
58
|
+
...(isBirthday ? [{ is_birthday: true }] : []),
|
|
59
|
+
...(isAnniversary ? [{ is_anniversary: true }] : []),
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
filters.is_birthday = false;
|
|
66
|
+
filters.is_anniversary = false;
|
|
67
|
+
filters.$or = dateFilter.$or;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
filters.is_birthday = false;
|
|
72
|
+
filters.is_anniversary = false;
|
|
73
|
+
filters.$or = dateFilter.$or;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const { data, metadata } = await query.graph({
|
|
77
|
+
entity: "discount_price_rule",
|
|
78
|
+
...req.queryConfig,
|
|
79
|
+
filters,
|
|
80
|
+
});
|
|
81
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ data, metadata }));
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.log(error);
|
|
85
|
+
const message = error instanceof Error ? error.message : "An unexpected error occurred";
|
|
86
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(message, 500));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcHJpY2UtcnVsZXMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxrQkE2RkM7QUFyR0QsK0RBSXNDO0FBRXRDLGlEQUF1RDtBQUVoRCxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFvRSxFQUNwRSxHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxzRkFBc0Y7UUFDdEYsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxXQUFXLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7UUFDakYsSUFBSSxPQUFPLEdBQXdCLEVBQUUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUvRCwrREFBK0Q7UUFDL0QsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzdCLENBQUM7UUFFRCx3REFBd0Q7UUFDeEQsMkRBQTJEO1FBQzNELE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVsQyx3Q0FBd0M7UUFDeEMsTUFBTSxVQUFVLEdBQUc7WUFDakIsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNyRCxDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sR0FBRztnQkFDUixHQUFHLE9BQU87Z0JBQ1YsV0FBVyxF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
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
exports.GET = GET;
|
|
5
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
6
|
+
const create_discount_price_rule_1 = require("../../../../workflows/discount/create-discount-price-rule");
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
async function POST(req, res) {
|
|
9
|
+
try {
|
|
10
|
+
const { result } = await (0, create_discount_price_rule_1.createDiscountPriceRuleWorkflow)(req.scope).run({
|
|
11
|
+
input: req.validatedBody,
|
|
12
|
+
});
|
|
13
|
+
if (!result) {
|
|
14
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to create discount price rule", 400));
|
|
15
|
+
}
|
|
16
|
+
const eventBus = req.scope.resolve(utils_1.Modules.EVENT_BUS);
|
|
17
|
+
eventBus.emit({
|
|
18
|
+
name: "audit.logs",
|
|
19
|
+
data: {
|
|
20
|
+
relation_id: result[0].id,
|
|
21
|
+
message: "Discount price rule created",
|
|
22
|
+
admin_id: req.auth_context.actor_id
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function GET(req, res) {
|
|
32
|
+
try {
|
|
33
|
+
const query = req.scope.resolve("query");
|
|
34
|
+
// Filter out expired coupons - only show active coupons
|
|
35
|
+
// starts_at <= now AND (ends_at >= now OR ends_at is null)
|
|
36
|
+
const now = new Date();
|
|
37
|
+
const filters = {
|
|
38
|
+
...req.filterableFields,
|
|
39
|
+
starts_at: { $lte: now },
|
|
40
|
+
$or: [{ ends_at: { $gte: now } }, { ends_at: null }],
|
|
41
|
+
};
|
|
42
|
+
const response = await query.graph({
|
|
43
|
+
entity: "discount_price_rule",
|
|
44
|
+
...req.queryConfig,
|
|
45
|
+
filters,
|
|
46
|
+
});
|
|
47
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(response));
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const message = error instanceof Error ? error.message : "An unexpected error occurred";
|
|
51
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(message, 500));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcHJpY2UtcnVsZXMtbGlzdC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxvQkFnQ0M7QUFFRCxrQkE0QkM7QUExRUQsK0RBSXNDO0FBQ3RDLDBHQUE0RztBQUs1RyxxREFBb0Q7QUFFN0MsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0UsRUFDbEUsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSw0REFBK0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3RFLEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYTtTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMsc0NBQXNDLEVBQUUsR0FBRyxDQUFDLENBQ2pFLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDWixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUU7Z0JBQ0osV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN6QixPQUFPLEVBQUUsNkJBQTZCO2dCQUN0QyxRQUFRLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFBO1FBR0YsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsb0NBQXFCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLGtDQUFtQixFQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQW9FLEVBQ3BFLEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpDLHdEQUF3RDtRQUN4RCwyREFBMkQ7UUFDM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBd0I7WUFDbkMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCO1lBQ3ZCLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDeEIsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNyRCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxxQkFBcUI7WUFDN0IsR0FBRyxHQUFHLENBQUMsV0FBVztZQUNsQixPQUFPO1NBQ1IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsb0NBQXFCLEVBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUNYLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO1FBQzFFLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLGtDQUFtQixFQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,41 @@
|
|
|
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 remove_coupon_1 = require("../../../../workflows/discount/remove-coupon");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const query = req.scope.resolve("query");
|
|
9
|
+
const { data: discount_codes } = await query.graph({
|
|
10
|
+
entity: "discount_code",
|
|
11
|
+
fields: [
|
|
12
|
+
"*",
|
|
13
|
+
],
|
|
14
|
+
filters: { code: req.validatedBody.code },
|
|
15
|
+
});
|
|
16
|
+
if (!discount_codes.length) {
|
|
17
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
18
|
+
discountResult: {
|
|
19
|
+
isApplied: false,
|
|
20
|
+
discount: 0,
|
|
21
|
+
message: "This coupon code is invalid or does not exist."
|
|
22
|
+
}
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
const { result } = await (0, remove_coupon_1.removeCouponWorkflow)(req.scope).run({
|
|
26
|
+
input: req.validatedBody,
|
|
27
|
+
});
|
|
28
|
+
if (!result) {
|
|
29
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to remove coupon", 400));
|
|
30
|
+
}
|
|
31
|
+
// Return only discount result - frontend will fetch cart separately
|
|
32
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
33
|
+
discountResult: result,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.log("error: ", error);
|
|
38
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcmVtb3ZlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsb0JBOENDO0FBdERELCtEQUlzQztBQUN0QyxnRkFBb0Y7QUFHN0UsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBMkQsRUFDM0QsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDakQsTUFBTSxFQUFFLGVBQWU7WUFDdkIsTUFBTSxFQUFFO2dCQUNOLEdBQUc7YUFDSjtZQUNELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtTQUMxQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDO2dCQUNoRCxjQUFjLEVBQUU7b0JBQ2QsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLFFBQVEsRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxnREFBZ0Q7aUJBQzFEO2FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO1FBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxvQ0FBb0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzNELEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYTtTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQ3BELENBQUM7UUFDSixDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxvQ0FBcUIsRUFBQztZQUNwQixjQUFjLEVBQUUsTUFBTTtTQUN2QixDQUFDLENBQ0gsQ0FBQztJQUVKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
6
|
+
/**
|
|
7
|
+
* POST /pos/discount/remove-store-discount
|
|
8
|
+
*
|
|
9
|
+
* Remove any existing manual store discount from a cart.
|
|
10
|
+
*/
|
|
11
|
+
const POST = async (req, res) => {
|
|
12
|
+
try {
|
|
13
|
+
const { cart_id } = req.validatedBody;
|
|
14
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
15
|
+
const cartService = req.scope.resolve("cart");
|
|
16
|
+
const { data: carts } = await query.graph({
|
|
17
|
+
entity: "cart",
|
|
18
|
+
fields: ["*", "items.*"],
|
|
19
|
+
filters: { id: cart_id },
|
|
20
|
+
});
|
|
21
|
+
if (!carts.length) {
|
|
22
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${cart_id} not found`, 404));
|
|
23
|
+
}
|
|
24
|
+
const cart = carts[0];
|
|
25
|
+
const itemIds = cart.items?.map((i) => i.id) || [];
|
|
26
|
+
if (itemIds.length) {
|
|
27
|
+
const { data: adjustments } = await query.graph({
|
|
28
|
+
entity: "line_item_adjustment",
|
|
29
|
+
fields: ["id"],
|
|
30
|
+
filters: {
|
|
31
|
+
item_id: { $in: itemIds },
|
|
32
|
+
code: "STORE_DISCOUNT",
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
if (adjustments?.length) {
|
|
36
|
+
await cartService.deleteLineItemAdjustments(adjustments.map((a) => a.id));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Clear store_discount metadata
|
|
40
|
+
const currentCart = await cartService.retrieveCart(cart_id);
|
|
41
|
+
const meta = { ...(currentCart.metadata || {}), store_discount: null };
|
|
42
|
+
await cartService.updateCarts(cart_id, {
|
|
43
|
+
metadata: meta,
|
|
44
|
+
});
|
|
45
|
+
// Return only success message - frontend will fetch cart separately
|
|
46
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({}, "Store discount removed"));
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error("Error removing store discount:", error);
|
|
50
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message || "Failed to remove store discount", 500));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
exports.POST = POST;
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcmVtb3ZlLXN0b3JlLWRpc2NvdW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFzRTtBQUV0RSwrREFJc0M7QUFHdEM7Ozs7R0FJRztBQUNJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBZ0UsRUFDaEUsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBRXRDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztZQUN4QixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUFDLFFBQVEsT0FBTyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQ3RELENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUM5QyxNQUFNLEVBQUUsc0JBQXNCO2dCQUM5QixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUU7b0JBQ3pCLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sV0FBVyxDQUFDLHlCQUF5QixDQUN6QyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2xDLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBQyxjQUFjLEVBQUMsSUFBSSxFQUFFLENBQUM7UUFFckUsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUNyQyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUVILG9FQUFvRTtRQUNwRSxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsb0NBQXFCLEVBQ25CLEVBQUUsRUFDRix3QkFBd0IsQ0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQ2pCLEtBQUssQ0FBQyxPQUFPLElBQUksaUNBQWlDLEVBQ2xELEdBQUcsQ0FDSixDQUNGLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBckVXLFFBQUEsSUFBSSxRQXFFZiJ9
|