@devx-commerce/plugin-discounts-svaraa 0.0.2-beta.9 → 0.0.2

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.
Files changed (65) hide show
  1. package/.medusa/server/src/api/admin/discounts/freebie-rules/[id]/route.js +2 -2
  2. package/.medusa/server/src/api/admin/discounts/freebie-rules/route.js +2 -2
  3. package/.medusa/server/src/api/admin/discounts/price-rules/[id]/route.js +2 -2
  4. package/.medusa/server/src/api/admin/discounts/price-rules/route.js +2 -2
  5. package/.medusa/server/src/api/admin/discounts/validators.js +5 -2
  6. package/.medusa/server/src/api/middlewares.js +4 -1
  7. package/.medusa/server/src/api/pos/discounts/apply/route.js +159 -0
  8. package/.medusa/server/src/api/pos/discounts/apply-freebie/route.js +20 -0
  9. package/.medusa/server/src/api/pos/discounts/auto-apply/route.js +207 -0
  10. package/.medusa/server/src/api/pos/discounts/cart-eligible-coupons/[cart_id]/route.js +39 -0
  11. package/.medusa/server/src/api/pos/discounts/coupons/[id]/route.js +25 -0
  12. package/.medusa/server/src/api/pos/discounts/middlewares.js +91 -0
  13. package/.medusa/server/src/api/pos/discounts/offers-on-product/[variant_id]/route.js +19 -0
  14. package/.medusa/server/src/api/pos/discounts/price-rules/route.js +68 -0
  15. package/.medusa/server/src/api/pos/discounts/price-rules-list/route.js +46 -0
  16. package/.medusa/server/src/api/pos/discounts/remove/route.js +42 -0
  17. package/.medusa/server/src/api/pos/discounts/remove-store-discount/route.js +58 -0
  18. package/.medusa/server/src/api/pos/discounts/validators.js +356 -0
  19. package/.medusa/server/src/api/pos/discounts/verify-store-discount/route.js +262 -0
  20. package/.medusa/server/src/api/store/discounts/apply/route.js +105 -4
  21. package/.medusa/server/src/api/store/discounts/auto-apply/route.js +30 -11
  22. package/.medusa/server/src/api/store/discounts/coupons/[id]/route.js +1 -1
  23. package/.medusa/server/src/api/store/discounts/middlewares.js +6 -4
  24. package/.medusa/server/src/api/store/discounts/price-rules/route.js +6 -5
  25. package/.medusa/server/src/api/store/discounts/remove/route.js +16 -1
  26. package/.medusa/server/src/lib/constant.js +138 -2
  27. package/.medusa/server/src/lib/helper.js +17 -10
  28. package/.medusa/server/src/lib/send-otp-helper.js +37 -0
  29. package/.medusa/server/src/lib/utils.js +1 -1
  30. package/.medusa/server/src/links/mtm-freebie-rule-with-customers.js +1 -1
  31. package/.medusa/server/src/links/mtm-price-rule-with-customers.js +1 -1
  32. package/.medusa/server/src/modules/discounts/migrations/Migration20250708062404.js +1 -1
  33. package/.medusa/server/src/modules/discounts/migrations/Migration20250822052209.js +1 -1
  34. package/.medusa/server/src/modules/discounts/migrations/Migration20250825073038.js +1 -1
  35. package/.medusa/server/src/modules/discounts/migrations/Migration20250901083847.js +1 -1
  36. package/.medusa/server/src/modules/discounts/migrations/Migration20250918095658.js +14 -0
  37. package/.medusa/server/src/modules/discounts/models/price-rule.js +5 -2
  38. package/.medusa/server/src/modules/discounts/service.js +11 -5
  39. package/.medusa/server/src/subscribers/promocode-subscriber.js +32 -9
  40. package/.medusa/server/src/workflows/discount/add-more-code-in-price-rule/index.js +1 -1
  41. package/.medusa/server/src/workflows/discount/apply-coupon/index.js +2 -2
  42. package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step-backup.js +1 -1
  43. package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step.js +4 -6
  44. package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js +4 -2
  45. package/.medusa/server/src/workflows/discount/apply-coupon/steps/validate-coupon-step.js +10 -6
  46. package/.medusa/server/src/workflows/discount/apply-freebie/steps/add-freebie-items-to-cart.js +7 -5
  47. package/.medusa/server/src/workflows/discount/auto-apply-coupon/steps/auto-apply-coupon.js +11 -6
  48. package/.medusa/server/src/workflows/discount/calculate-coupon-discount/step/fetch-price-rule-by-code.js +1 -1
  49. package/.medusa/server/src/workflows/discount/create-discount-price-rule/index.js +2 -2
  50. package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/validate-customer-exists.js +2 -2
  51. package/.medusa/server/src/workflows/discount/create-subscriber-to-discount-price-rule.js +1 -1
  52. package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/step/get-cart-eligible-coupon.js +3 -2
  53. package/.medusa/server/src/workflows/discount/get-product-offers/step/calculate-product-offers.js +1 -2
  54. package/.medusa/server/src/workflows/discount/index.js +1 -1
  55. package/.medusa/server/src/workflows/discount/remove-coupon/index.js +10 -2
  56. package/.medusa/server/src/workflows/discount/remove-coupon/step/remove-coupon-step.js +1 -1
  57. package/.medusa/server/src/workflows/discount/steps/validate-cart-exists.js +1 -1
  58. package/.medusa/server/src/workflows/discount/update-coupon-code-stats/step/update-coupon-code-stats.js +1 -1
  59. package/.medusa/server/src/workflows/discount/update-discount-price-rule/index.js +1 -1
  60. package/.medusa/server/src/workflows/discount/update-discount-price-rule/steps/update-discount-price-rule-step.js +7 -3
  61. package/.medusa/server/src/workflows/discount/update-discount-price-rule/steps/validate-discount-price-rule-update-step.js +1 -1
  62. package/.medusa/server/src/workflows/locking/acquire-lock.js +1 -1
  63. package/.medusa/server/src/workflows/locking/index.js +1 -1
  64. package/.medusa/server/src/workflows/locking/release-lock.js +1 -1
  65. package/package.json +4 -2
@@ -0,0 +1,207 @@
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" ||
26
+ priceRule.usage_limit_per_customer_type === "ONLY_ONCE"
27
+ ? { usage_count: 0 }
28
+ : {},
29
+ ],
30
+ },
31
+ pagination: { take: 1 },
32
+ });
33
+ const code = codes.length > 0 ? codes[0].code : null;
34
+ await cache.set(cacheKey, code, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
35
+ return code;
36
+ }
37
+ function getBestDiscount(discounts) {
38
+ return discounts
39
+ .filter((d) => d.status === "fulfilled" && d.value)
40
+ .map((d) => d.value)
41
+ .reduce((best, cur) => cur.discount > best.discount
42
+ ? { discount: cur.discount, code: cur.code }
43
+ : best, { discount: 0 });
44
+ }
45
+ function groupAdjustments(adjustments) {
46
+ return adjustments.reduce((map, adj) => {
47
+ if (adj.code) {
48
+ map[adj.code] = (map[adj.code] || 0) + Math.abs(adj.amount || 0);
49
+ }
50
+ return map;
51
+ }, {});
52
+ }
53
+ // --- Main Handler ---
54
+ async function POST(req, res) {
55
+ try {
56
+ const query = req.scope.resolve("query");
57
+ const cache = req.scope.resolve(utils_1.Modules.CACHE);
58
+ const userId = req.auth_context?.actor_id || undefined;
59
+ let filters = { ...req.filterableFields };
60
+ // --- Customer birthday/anniversary filters ---
61
+ if (userId) {
62
+ const { data: customer } = await query.graph({
63
+ entity: "customer",
64
+ fields: ["metadata"],
65
+ filters: { id: userId },
66
+ });
67
+ const externalId = customer?.[0]?.metadata?.external_id;
68
+ if (externalId) {
69
+ const { data: ext } = await query.graph({
70
+ entity: "extended_customer",
71
+ fields: ["birth_date", "anniversary_date"],
72
+ filters: { external_id: externalId },
73
+ });
74
+ const todayIST = (0, utils_2.getISTMonthDay)(new Date());
75
+ const bday = ext?.[0]?.birth_date;
76
+ const anniv = ext?.[0]?.anniversary_date;
77
+ const isBirthday = bday && (0, utils_2.getISTMonthDay)(bday) === todayIST;
78
+ const isAnniversary = anniv && (0, utils_2.getISTMonthDay)(anniv) === todayIST;
79
+ if (isBirthday || isAnniversary) {
80
+ filters.$or = [
81
+ ...(isBirthday ? [{ is_birthday: true }] : []),
82
+ ...(isAnniversary ? [{ is_anniversary: true }] : []),
83
+ { is_birthday: false, is_anniversary: false },
84
+ ];
85
+ }
86
+ else {
87
+ filters.is_birthday = false;
88
+ filters.is_anniversary = false;
89
+ }
90
+ }
91
+ }
92
+ else {
93
+ filters = {
94
+ ...filters,
95
+ usage_limit: "UNLIMITED",
96
+ is_birthday: false,
97
+ is_anniversary: false,
98
+ };
99
+ }
100
+ // --- 1. Fetch auto-apply rules (with caching) ---
101
+ const rulesCacheKey = "discount_price_rules:auto_apply";
102
+ let priceRules = (await cache.get(rulesCacheKey)) ||
103
+ (await query.graph({
104
+ entity: "discount_price_rule",
105
+ fields: ["*"],
106
+ filters: { ...filters, auto_apply: true },
107
+ })).data;
108
+ if (!(await cache.get(rulesCacheKey))) {
109
+ await cache.set(rulesCacheKey, priceRules, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
110
+ }
111
+ // --- 2. Fetch cart once ---
112
+ const { data: carts } = await query.graph({
113
+ entity: "cart",
114
+ fields: [
115
+ "*",
116
+ "items.*",
117
+ "items.variant.*",
118
+ "items.variant.prices.*",
119
+ "items.variant.extended_product_variants.compare_at_price",
120
+ "promotions.*",
121
+ ],
122
+ filters: { id: req.validatedBody.cart_id },
123
+ });
124
+ if (!carts.length) {
125
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${req.validatedBody.cart_id} not found`, 404));
126
+ }
127
+ const cart = carts[0];
128
+ // --- 3. Calculate discounts for each rule ---
129
+ const discounts = await Promise.allSettled(priceRules.map(async (rule) => {
130
+ try {
131
+ const code = await getDiscountCode(query, rule, cache);
132
+ if (!code)
133
+ return { discount: 0 };
134
+ const { result: { discount }, } = await (0, calculate_coupon_discount_1.calculateCouponDiscountWorkflow)(req.scope).run({
135
+ input: {
136
+ cart_id: req.validatedBody.cart_id,
137
+ cart,
138
+ code,
139
+ customerId: userId || undefined,
140
+ },
141
+ });
142
+ return { discount, code };
143
+ }
144
+ catch {
145
+ return { discount: 0 };
146
+ }
147
+ }));
148
+ const { discount: currentDiscount, code: currentCode } = getBestDiscount(discounts);
149
+ // --- 4. Fetch adjustments once ---
150
+ const { data: adjustments } = await query.graph({
151
+ entity: "line_item_adjustment",
152
+ fields: ["*"],
153
+ filters: {
154
+ item_id: { $in: cart.items.map((i) => i.id) },
155
+ code: { $ne: null },
156
+ },
157
+ });
158
+ const codeDiscountMap = groupAdjustments(adjustments);
159
+ const [appliedCouponCode, appliedCouponDiscount] = Object.entries(codeDiscountMap).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
160
+ // --- 5. Compare and apply ---
161
+ if (appliedCouponCode && appliedCouponDiscount >= currentDiscount) {
162
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
163
+ message: "Existing coupon provides better or equal discount. No auto coupon applied.",
164
+ code: appliedCouponCode,
165
+ discount: appliedCouponDiscount,
166
+ }));
167
+ }
168
+ let appliedCode = currentCode;
169
+ let appliedDiscount = currentDiscount;
170
+ if (currentCode) {
171
+ const { result } = await (0, apply_coupon_1.applyCouponWorkflow)(req.scope).run({
172
+ input: {
173
+ code: currentCode,
174
+ cart_id: req.validatedBody.cart_id,
175
+ cart,
176
+ customerId: userId || undefined,
177
+ },
178
+ });
179
+ if (!result) {
180
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
181
+ }
182
+ // 🔄 Refresh adjustments after applying
183
+ const { data: adjustmentsAfter } = await query.graph({
184
+ entity: "line_item_adjustment",
185
+ fields: ["*"],
186
+ filters: {
187
+ item_id: { $in: cart.items.map((i) => i.id) },
188
+ code: { $ne: null },
189
+ },
190
+ });
191
+ const codeDiscountMapAfter = groupAdjustments(adjustmentsAfter);
192
+ const [newCode, newDiscount] = Object.entries(codeDiscountMapAfter).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
193
+ appliedCode = newCode;
194
+ appliedDiscount = newDiscount;
195
+ }
196
+ // --- 6. Final response ---
197
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
198
+ message: appliedCode ? "Coupon applied" : "No coupon applied",
199
+ code: appliedCode,
200
+ discount: appliedDiscount,
201
+ }));
202
+ }
203
+ catch (error) {
204
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
205
+ }
206
+ }
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXV0by1hcHBseS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJFQSxvQkFpTkM7QUF4UkQsK0RBSXNDO0FBQ3RDLDhFQUFrRjtBQUNsRix3R0FBMkc7QUFFM0cscURBQW9EO0FBQ3BELDZEQUFxRTtBQUNyRSxpREFBdUQ7QUFFdkQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBYyxFQUFFLEtBQVU7SUFDbkUsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFFMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQ2IsUUFBUSxFQUNSLFNBQVMsQ0FBQyxhQUFhLEVBQ3ZCLG9DQUFzQixDQUFDLGFBQWEsQ0FDckMsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxFQUFFLGVBQWU7UUFDdkIsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2IsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFO2dCQUNKLEVBQUUsYUFBYSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsU0FBUyxDQUFDLDZCQUE2QixLQUFLLFVBQVU7b0JBQ3RELFNBQVMsQ0FBQyw2QkFBNkIsS0FBSyxXQUFXO29CQUNyRCxDQUFD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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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvY291cG9ucy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esa0JBMEJDO0FBaENELGtFQUl5QztBQUVsQyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLEVBQ0osSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUMsR0FDMUIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDcEIsTUFBTSxFQUFFLHFCQUFxQjtZQUM3QixHQUFHLEdBQUcsQ0FBQyxXQUFXO1lBQ2xCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQyxDQUMxRCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLGtDQUFtQixFQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,91 @@
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: [
12
+ (0, medusa_1.authenticate)("customer", ["bearer", "session"]),
13
+ (0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
14
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
15
+ defaultLimit: 10,
16
+ isList: true,
17
+ }),
18
+ ],
19
+ },
20
+ {
21
+ matcher: "/pos/discounts/price-rules-list",
22
+ methods: ["GET"],
23
+ middlewares: [
24
+ (0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
25
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
26
+ defaultLimit: 10,
27
+ isList: true,
28
+ }),
29
+ ],
30
+ },
31
+ {
32
+ matcher: "/pos/discounts/apply",
33
+ method: "POST",
34
+ middlewares: [
35
+ (0, medusa_1.authenticate)("customer", ["bearer", "session"]),
36
+ (0, http_1.validateAndTransformBody)(validators_1.PosApplyDiscountInputValidator),
37
+ ],
38
+ },
39
+ {
40
+ matcher: "/pos/discounts/auto-apply",
41
+ method: "POST",
42
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosAutoApplyDiscountInputValidator)],
43
+ },
44
+ {
45
+ matcher: "/pos/discounts/apply-freebie",
46
+ method: "POST",
47
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosApplyFreebieInputValidator)],
48
+ },
49
+ {
50
+ matcher: "/pos/discounts/verify-store-discount",
51
+ method: "POST",
52
+ middlewares: [
53
+ (0, medusa_1.authenticate)("user", ["bearer", "session"]),
54
+ (0, http_1.validateAndTransformBody)(validators_1.PosVerifyStoreDiscountInputValidator),
55
+ ],
56
+ },
57
+ {
58
+ matcher: "/pos/discounts/remove-store-discount",
59
+ method: "POST",
60
+ middlewares: [
61
+ (0, http_1.validateAndTransformBody)(validators_1.PosRemoveStoreDiscountInputValidator),
62
+ ],
63
+ },
64
+ {
65
+ matcher: "/pos/discounts/remove",
66
+ method: "POST",
67
+ middlewares: [
68
+ (0, medusa_1.authenticate)("customer", ["bearer", "session"]),
69
+ (0, http_1.validateAndTransformBody)(validators_1.PosRemoveDiscountInputValidator),
70
+ ],
71
+ },
72
+ ///////////////////// OFFERS ON PRODUCT ////////////////////
73
+ {
74
+ matcher: "/pos/discounts/offers-on-product/:variant_id",
75
+ method: "GET",
76
+ },
77
+ {
78
+ matcher: "/pos/discounts/cart-eligible-coupons/:cart_id",
79
+ method: "GET",
80
+ },
81
+ {
82
+ matcher: "/pos/discounts/coupons/:id",
83
+ method: "GET",
84
+ middlewares: [
85
+ (0, http_1.validateAndTransformQuery)(validators_1.PosGetDiscountPriceRulesParams, {
86
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
87
+ }),
88
+ ],
89
+ },
90
+ ];
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBSWtDO0FBRWxDLDZDQVlzQjtBQUN0Qiw2Q0FBZ0Q7QUFFbkMsUUFBQSw0QkFBNEIsR0FBc0I7SUFDN0Q7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUEsZ0NBQXlCLEVBQUMsNENBQStCLEVBQUU7Z0JBQ3pELFFBQVEsRUFBRSw4Q0FBaUM7Z0JBQzNDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7U0FDSDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUU7WUFDWCxJQUFBLGdDQUF5QixFQUFDLDRDQUErQixFQUFFO2dCQUN6RCxRQUFRLEVBQUUsOENBQWlDO2dCQUMzQyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1NBQ0g7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRTtZQUNYLElBQUEscUJBQVksRUFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDL0MsSUFBQSwrQkFBd0IsRUFBQywyQ0FBOEIsQ0FBQztTQUN6RDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsMkJBQTJCO1FBQ3BDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQywrQ0FBa0MsQ0FBQyxDQUFDO0tBQzVFO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsOEJBQThCO1FBQ3ZDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQywwQ0FBNkIsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsc0NBQXNDO1FBQy9DLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFO1lBQ1gsSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMzQyxJQUFBLCtCQUF3QixFQUFDLGlEQUFvQyxDQUFDO1NBQy9EO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxzQ0FBc0M7UUFDL0MsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUU7WUFDWCxJQUFBLCtCQUF3QixFQUFDLGlEQUFvQyxDQUFDO1NBQy9EO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSx1QkFBdUI7UUFDaEMsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUEsK0JBQXdCLEVBQUMsNENBQStCLENBQUM7U0FDMUQ7S0FDRjtJQUNELDREQUE0RDtJQUM1RDtRQUNFLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsTUFBTSxFQUFFLEtBQUs7S0FDZDtJQUVEO1FBQ0UsT0FBTyxFQUFFLCtDQUErQztRQUN4RCxNQUFNLEVBQUUsS0FBSztLQUNkO0lBRUQ7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsV0FBVyxFQUFFO1lBQ1gsSUFBQSxnQ0FBeUIsRUFBQywyQ0FBOEIsRUFBRTtnQkFDeEQsUUFBUSxFQUFFLDhDQUFpQzthQUM1QyxDQUFDO1NBQ0g7S0FDRjtDQUNGLENBQUMifQ==
@@ -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,68 @@
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
+ const userId = req.auth_context?.actor_id || req.auth_context;
10
+ console.log("___userId", userId, req.auth_context);
11
+ let filters = { ...req.filterableFields };
12
+ if (!userId) {
13
+ filters = {
14
+ ...filters,
15
+ usage_limit: "UNLIMITED",
16
+ is_birthday: false,
17
+ is_anniversary: false,
18
+ };
19
+ }
20
+ if (userId) {
21
+ const { data: customer } = await query.graph({
22
+ entity: "customer",
23
+ fields: ["metadata", "extended_customer.id"],
24
+ filters: { id: userId },
25
+ });
26
+ const externalId = customer?.[0]?.extended_customer?.id;
27
+ if (externalId) {
28
+ const { data: ext } = await query.graph({
29
+ entity: "extended_customer",
30
+ fields: ["birth_date", "anniversary_date"],
31
+ filters: { id: externalId },
32
+ });
33
+ const todayIST = (0, utils_1.getISTMonthDay)(new Date());
34
+ const bday = ext?.[0]?.birth_date;
35
+ const anniv = ext?.[0]?.anniversary_date;
36
+ const isBirthday = bday && (0, utils_1.getISTMonthDay)(bday) === todayIST;
37
+ const isAnniversary = anniv && (0, utils_1.getISTMonthDay)(anniv) === todayIST;
38
+ if (isBirthday || isAnniversary) {
39
+ filters.$or = [
40
+ { is_birthday: false, is_anniversary: false },
41
+ ...(isBirthday ? [{ is_birthday: true }] : []),
42
+ ...(isAnniversary ? [{ is_anniversary: true }] : []),
43
+ ];
44
+ }
45
+ else {
46
+ filters.is_birthday = false;
47
+ filters.is_anniversary = false;
48
+ }
49
+ }
50
+ else {
51
+ filters.is_birthday = false;
52
+ filters.is_anniversary = false;
53
+ }
54
+ }
55
+ const { data, metadata } = await query.graph({
56
+ entity: "discount_price_rule",
57
+ ...req.queryConfig,
58
+ filters,
59
+ });
60
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ data, metadata }));
61
+ }
62
+ catch (error) {
63
+ console.log(error);
64
+ const message = error instanceof Error ? error.message : "An unexpected error occurred";
65
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(message, 500));
66
+ }
67
+ }
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcHJpY2UtcnVsZXMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxrQkFxRUM7QUE3RUQsK0RBSXNDO0FBRXRDLGlEQUF1RDtBQUVoRCxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFvRSxFQUNwRSxHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDO1FBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSxPQUFPLEdBQXdCLEVBQUUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUvRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLEdBQUc7Z0JBQ1IsR0FBRyxPQUFPO2dCQUNWLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixXQUFXLEVBQUUsS0FBSztnQkFDbEIsY0FBYyxFQUFFLEtBQUs7YUFDdEIsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzNDLE1BQU0sRUFBRSxVQUFVO2dCQUNsQixNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCLENBQUM7Z0JBQzVDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsUUFB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
@@ -0,0 +1,46 @@
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
+ const response = await query.graph({
35
+ entity: "discount_price_rule",
36
+ ...req.queryConfig,
37
+ filters: req.filterableFields,
38
+ });
39
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(response));
40
+ }
41
+ catch (error) {
42
+ const message = error instanceof Error ? error.message : "An unexpected error occurred";
43
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(message, 500));
44
+ }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcHJpY2UtcnVsZXMtbGlzdC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxvQkErQkM7QUFFRCxrQkFrQkM7QUEvREQsK0RBSXNDO0FBQ3RDLDBHQUE0RztBQUs1RyxxREFBb0Q7QUFFN0MsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0UsRUFDbEUsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSw0REFBK0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3RFLEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYTtTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMsc0NBQXNDLEVBQUUsR0FBRyxDQUFDLENBQ2pFLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDWixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUU7Z0JBQ0osV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN6QixPQUFPLEVBQUUsNkJBQTZCO2dCQUN0QyxRQUFRLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsb0NBQXFCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLGtDQUFtQixFQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQW9FLEVBQ3BFLEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNqQyxNQUFNLEVBQUUscUJBQXFCO1lBQzdCLEdBQUcsR0FBRyxDQUFDLFdBQVc7WUFDbEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0I7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsb0NBQXFCLEVBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUNYLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO1FBQzFFLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLGtDQUFtQixFQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const helpers_1 = require("@medusajs/medusa/api/store/carts/helpers");
5
+ const api_response_1 = require("../../../../lib/api-response");
6
+ const remove_coupon_1 = require("../../../../workflows/discount/remove-coupon");
7
+ const constant_1 = require("../../../../lib/constant");
8
+ async function POST(req, res) {
9
+ try {
10
+ const query = req.scope.resolve("query");
11
+ const { data: discount_codes } = await query.graph({
12
+ entity: "discount_code",
13
+ fields: ["*"],
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 create discount price rule", 400));
30
+ }
31
+ const cart = await (0, helpers_1.refetchCart)(req.validatedBody.cart_id, req.scope, constant_1.defaultStoreCartFields);
32
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
33
+ cart,
34
+ discountResult: result,
35
+ }));
36
+ }
37
+ catch (error) {
38
+ console.log("error: ", error);
39
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
40
+ }
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcmVtb3ZlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsb0JBbURDO0FBOURELHNFQUF1RTtBQUV2RSwrREFJc0M7QUFDdEMsZ0ZBQW9GO0FBRXBGLHVEQUFrRTtBQUUzRCxLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUEyRCxFQUMzRCxHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNqRCxNQUFNLEVBQUUsZUFBZTtZQUN2QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDYixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7U0FDMUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsb0NBQXFCLEVBQUM7Z0JBQ3BCLGNBQWMsRUFBRTtvQkFDZCxTQUFTLEVBQUUsS0FBSztvQkFDaEIsUUFBUSxFQUFFLENBQUM7b0JBQ1gsT0FBTyxFQUFFLGdEQUFnRDtpQkFDMUQ7YUFDRixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLG9DQUFvQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDM0QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFBQyxzQ0FBc0MsRUFBRSxHQUFHLENBQUMsQ0FDakUsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEscUJBQVcsRUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQ3pCLEdBQUcsQ0FBQyxLQUFLLEVBQ1QsaUNBQXNCLENBQ3ZCLENBQUM7UUFDRixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsb0NBQXFCLEVBQUM7WUFDcEIsSUFBSTtZQUNKLGNBQWMsRUFBRSxNQUFNO1NBQ3ZCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,58 @@
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
+ const constant_1 = require("../../../../lib/constant");
7
+ const helpers_1 = require("@medusajs/medusa/api/store/carts/helpers");
8
+ /**
9
+ * POST /pos/discount/remove-store-discount
10
+ *
11
+ * Remove any existing manual store discount from a cart.
12
+ */
13
+ const POST = async (req, res) => {
14
+ try {
15
+ const { cart_id } = req.validatedBody;
16
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
17
+ const cartService = req.scope.resolve("cart");
18
+ const { data: carts } = await query.graph({
19
+ entity: "cart",
20
+ fields: ["*", "items.*"],
21
+ filters: { id: cart_id },
22
+ });
23
+ if (!carts.length) {
24
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${cart_id} not found`, 404));
25
+ }
26
+ const cart = carts[0];
27
+ const itemIds = cart.items?.map((i) => i.id) || [];
28
+ if (itemIds.length) {
29
+ const { data: adjustments } = await query.graph({
30
+ entity: "line_item_adjustment",
31
+ fields: ["id"],
32
+ filters: {
33
+ item_id: { $in: itemIds },
34
+ code: "STORE_DISCOUNT",
35
+ },
36
+ });
37
+ if (adjustments?.length) {
38
+ await cartService.deleteLineItemAdjustments(adjustments.map((a) => a.id));
39
+ }
40
+ }
41
+ // Clear store_discount metadata
42
+ const currentCart = await cartService.retrieveCart(cart_id);
43
+ const meta = { ...(currentCart.metadata || {}), store_discount: null };
44
+ await cartService.updateCarts(cart_id, {
45
+ metadata: meta,
46
+ });
47
+ const updatedCart = await (0, helpers_1.refetchCart)(cart_id, req.scope, constant_1.defaultStoreCartFields);
48
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
49
+ cart: updatedCart,
50
+ }, "Store discount removed"));
51
+ }
52
+ catch (error) {
53
+ console.error("Error removing store discount:", error);
54
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message || "Failed to remove store discount", 500));
55
+ }
56
+ };
57
+ exports.POST = POST;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcmVtb3ZlLXN0b3JlLWRpc2NvdW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFzRTtBQUV0RSwrREFJc0M7QUFFdEMsdURBQWtFO0FBQ2xFLHNFQUF1RTtBQUV2RTs7OztHQUlHO0FBQ0ksTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFnRSxFQUNoRSxHQUFtQixFQUNuQixFQUFFO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFdEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDeEMsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMsUUFBUSxPQUFPLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FDdEQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzlDLE1BQU0sRUFBRSxzQkFBc0I7Z0JBQzlCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtvQkFDekIsSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkI7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxXQUFXLENBQUMseUJBQXlCLENBQ3pDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDbEMsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RCxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUV2RSxNQUFNLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3JDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFBLHFCQUFXLEVBQ25DLE9BQU8sRUFDUCxHQUFHLENBQUMsS0FBSyxFQUNULGlDQUFzQixDQUN2QixDQUFDO1FBRUYsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUNuQjtZQUNFLElBQUksRUFBRSxXQUFXO1NBQ2xCLEVBQ0Qsd0JBQXdCLENBQ3pCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUNqQixLQUFLLENBQUMsT0FBTyxJQUFJLGlDQUFpQyxFQUNsRCxHQUFHLENBQ0osQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQTVFVyxRQUFBLElBQUksUUE0RWYifQ==