@devx-commerce/plugin-discounts-svaraa 0.0.1 → 0.0.2-beta.0
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/store/discounts/apply/route.js +2 -2
- package/.medusa/server/src/workflows/discount/apply-coupon/index.js +8 -1
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step.js +18 -61
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js +18 -2
- package/.medusa/server/src/workflows/discount/auto-apply-coupon/steps/auto-apply-coupon.js +20 -13
- package/.medusa/server/src/workflows/discount/remove-coupon/step/remove-coupon-step.js +39 -5
- package/.medusa/server/src/workflows/locking/acquire-lock.js +61 -0
- package/.medusa/server/src/workflows/locking/index.js +19 -0
- package/.medusa/server/src/workflows/locking/release-lock.js +31 -0
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ async function POST(req, res) {
|
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
14
|
if (!result) {
|
|
15
|
-
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to
|
|
15
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
|
|
16
16
|
}
|
|
17
17
|
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
|
|
18
18
|
}
|
|
@@ -21,4 +21,4 @@ async function POST(req, res) {
|
|
|
21
21
|
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2Rpc2NvdW50cy9hcHBseS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQXFCQztBQTdCRCwrREFJc0M7QUFDdEMsOEVBQWtGO0FBRzNFLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQXVELEVBQ3ZELEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsa0NBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRCxLQUFLLEVBQUU7Z0JBQ0wsR0FBRyxHQUFHLENBQUMsYUFBYTtnQkFDcEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxJQUFJLFNBQVM7YUFDcEQ7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyx3QkFBd0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFFRCxPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxvQ0FBcUIsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -6,10 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.applyCouponWorkflow = void 0;
|
|
7
7
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
8
8
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
9
|
+
const locking_1 = require("../../locking");
|
|
9
10
|
const calculate_coupon_discount_1 = require("../calculate-coupon-discount");
|
|
10
11
|
const remove_coupon_step_1 = require("../remove-coupon/step/remove-coupon-step");
|
|
11
12
|
const generate_adjustment_line_item_1 = __importDefault(require("./steps/generate-adjustment-line-item"));
|
|
12
13
|
exports.applyCouponWorkflow = (0, workflows_sdk_1.createWorkflow)("apply-coupon", (input) => {
|
|
14
|
+
(0, locking_1.acquireLockStep)({
|
|
15
|
+
key: input.cart_id,
|
|
16
|
+
timeout: 30000,
|
|
17
|
+
ttl: 120000,
|
|
18
|
+
});
|
|
13
19
|
const response = calculate_coupon_discount_1.calculateCouponDiscountWorkflow.runAsStep({
|
|
14
20
|
input: {
|
|
15
21
|
code: input.code,
|
|
@@ -32,10 +38,11 @@ exports.applyCouponWorkflow = (0, workflows_sdk_1.createWorkflow)("apply-coupon"
|
|
|
32
38
|
const cart = (0, workflows_sdk_1.transform)({ carts }, ({ carts }) => carts[0]);
|
|
33
39
|
(0, remove_coupon_step_1.removeCouponStep)({ cart });
|
|
34
40
|
(0, generate_adjustment_line_item_1.default)(response.adjustmentLineItems);
|
|
41
|
+
(0, locking_1.releaseLockStep)({ key: input.cart_id });
|
|
35
42
|
return new workflows_sdk_1.WorkflowResponse({
|
|
36
43
|
discount: response.discount,
|
|
37
44
|
isApplied: response.isApplied,
|
|
38
45
|
message: response.message,
|
|
39
46
|
});
|
|
40
47
|
});
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2FwcGx5LWNvdXBvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxRUFJMkM7QUFDM0MsNERBQWdFO0FBR2hFLDJDQUFpRTtBQUNqRSw0RUFBK0U7QUFDL0UsaUZBQTRFO0FBQzVFLDBHQUErRTtBQUVsRSxRQUFBLG1CQUFtQixHQUFHLElBQUEsOEJBQWMsRUFDL0MsY0FBYyxFQUNkLENBQUMsS0FBNkIsRUFBRSxFQUFFO0lBQ2hDLElBQUEseUJBQWUsRUFBQztRQUNkLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTztRQUNsQixPQUFPLEVBQUUsS0FBSztRQUNkLEdBQUcsRUFBRSxNQUFNO0tBQ1osQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsMkRBQStCLENBQUMsU0FBUyxDQUFDO1FBQ3pELEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1NBQzdCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ3hDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFO1lBQ04sR0FBRztZQUNILFNBQVM7WUFDVCxpQkFBaUI7WUFDakIsd0JBQXdCO1lBQ3hCLG9DQUFvQztTQUNyQztRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFO1FBQzlCLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFaEMsTUFBTSxJQUFJLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzRCxJQUFBLHFDQUFnQixFQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUzQixJQUFBLHVDQUEwQixFQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXpELElBQUEseUJBQWUsRUFBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUV4QyxPQUFPLElBQUksZ0NBQWdCLENBQUM7UUFDMUIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1FBQzNCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztRQUM3QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87S0FDMUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -6,7 +6,7 @@ const validators_1 = require("../../../../api/admin/discounts/validators");
|
|
|
6
6
|
const utils_1 = require("../../../../lib/utils");
|
|
7
7
|
function calculateCartTotal(cartItems) {
|
|
8
8
|
return cartItems?.reduce((acc, item) => {
|
|
9
|
-
const { variant
|
|
9
|
+
const { variant } = item || {};
|
|
10
10
|
const { extended_variant } = variant || {};
|
|
11
11
|
const { amount_eligible_for_discount = 0 } = extended_variant || {};
|
|
12
12
|
return acc + Number(amount_eligible_for_discount);
|
|
@@ -46,11 +46,13 @@ function filterApplicableCartLineItems(cart, priceRule) {
|
|
|
46
46
|
}
|
|
47
47
|
exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount", async ({ priceRule, code, cart }, { container }) => {
|
|
48
48
|
const logger = container.resolve("logger");
|
|
49
|
+
const query = container.resolve("query");
|
|
49
50
|
logger.setLogLevel(process.env.LOG_LEVEL || "error");
|
|
50
51
|
const { usage_limit_per_cart_type, usage_limit_per_cart_specific, get_flat_discount, buy_x, get_y, at_y, type, title, description, get_percent, max_discount, } = priceRule;
|
|
51
52
|
const adjustmentLineItems = [];
|
|
52
53
|
let totalDiscount = 0;
|
|
53
54
|
let applicableCartLineItems = filterApplicableCartLineItems(cart, priceRule);
|
|
55
|
+
logger.debug("calculateDiscount[applicableCartLineItems]: " + JSON.stringify(applicableCartLineItems, null, 2));
|
|
54
56
|
const totalApplicableProductsQty = applicableCartLineItems.reduce((acc, { quantity }) => acc + Number(quantity || 0), 0);
|
|
55
57
|
let numberOfTimeCouponShouldApply = Math.min(totalApplicableProductsQty, usage_limit_per_cart_type ==
|
|
56
58
|
validators_1.DiscountUsageLimitPerCartType.Values.ONLY_ONCE
|
|
@@ -66,29 +68,9 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
66
68
|
switch (type) {
|
|
67
69
|
case validators_1.DiscountType.Values.FIXED:
|
|
68
70
|
totalDiscount = Math.min(get_flat_discount * numberOfTimeCouponShouldApply, cartTotal);
|
|
69
|
-
logger.debug("
|
|
70
|
-
remaining =
|
|
71
|
-
logger.debug("
|
|
72
|
-
// await Promise.all(
|
|
73
|
-
// applicableCartLineItems?.map(async (item: (typeof cart.items)[0]) => {
|
|
74
|
-
// const ratio = Number(
|
|
75
|
-
// (
|
|
76
|
-
// Number(
|
|
77
|
-
// item.variant.extended_variant
|
|
78
|
-
// .amount_eligible_for_discount
|
|
79
|
-
// ) / Number(cartTotal)
|
|
80
|
-
// ).toFixed(2)
|
|
81
|
-
// );
|
|
82
|
-
// const discount = ratio * totalDiscount;
|
|
83
|
-
// adjustmentLineItems.push({
|
|
84
|
-
// amount: discount,
|
|
85
|
-
// code: code,
|
|
86
|
-
// description: title || description || "Discount",
|
|
87
|
-
// item_id: item.id,
|
|
88
|
-
// promotion_id: priceRule.id,
|
|
89
|
-
// });
|
|
90
|
-
// })
|
|
91
|
-
// );
|
|
71
|
+
logger.debug("calculateDiscount[totalDiscount]: " + totalDiscount);
|
|
72
|
+
remaining = totalDiscount;
|
|
73
|
+
logger.debug("fixed[remaining]: " + remaining);
|
|
92
74
|
for (const [idx, item] of applicableCartLineItems.entries()) {
|
|
93
75
|
const isLast = idx === applicableCartLineItems.length - 1;
|
|
94
76
|
const ratio = Number((Number(item.variant.extended_variant
|
|
@@ -110,26 +92,6 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
110
92
|
break;
|
|
111
93
|
case validators_1.DiscountType.Values.PERCENTAGE:
|
|
112
94
|
totalDiscount = Math.min((get_percent * cartTotal) / 100, max_discount || Infinity);
|
|
113
|
-
// await Promise.all(
|
|
114
|
-
// applicableCartLineItems?.map(async (item: (typeof cart.items)[0]) => {
|
|
115
|
-
// const ratio = Number(
|
|
116
|
-
// (
|
|
117
|
-
// Number(
|
|
118
|
-
// item.variant.extended_variant
|
|
119
|
-
// .amount_eligible_for_discount
|
|
120
|
-
// ) / Number(cartTotal)
|
|
121
|
-
// ).toFixed(2)
|
|
122
|
-
// );
|
|
123
|
-
// const discount = ratio * totalDiscount;
|
|
124
|
-
// adjustmentLineItems.push({
|
|
125
|
-
// amount: discount,
|
|
126
|
-
// code: code,
|
|
127
|
-
// description: title || description || "Discount",
|
|
128
|
-
// item_id: item.id,
|
|
129
|
-
// promotion_id: priceRule.id,
|
|
130
|
-
// });
|
|
131
|
-
// })
|
|
132
|
-
// );
|
|
133
95
|
remaining = totalDiscount;
|
|
134
96
|
for (const [idx, item] of applicableCartLineItems.entries()) {
|
|
135
97
|
const isLast = idx === applicableCartLineItems.length - 1;
|
|
@@ -172,19 +134,14 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
172
134
|
break;
|
|
173
135
|
iterator += t;
|
|
174
136
|
totalDiscount +=
|
|
175
|
-
t *
|
|
137
|
+
(0, utils_1.toTwoDecimal)(t *
|
|
176
138
|
Number(item.variant.extended_variant
|
|
177
|
-
.amount_eligible_for_discount);
|
|
139
|
+
.amount_eligible_for_discount) / Number(item.quantity || 1));
|
|
178
140
|
adjustmentLineItems.push({
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
// Number(
|
|
182
|
-
// item.variant.extended_variant
|
|
183
|
-
// .amount_eligible_for_discount
|
|
184
|
-
// ),
|
|
185
|
-
(0, utils_1.toTwoDecimal)(t *
|
|
141
|
+
free_quantity: t,
|
|
142
|
+
amount: (0, utils_1.toTwoDecimal)(t *
|
|
186
143
|
Number(item.variant.extended_variant
|
|
187
|
-
.amount_eligible_for_discount)),
|
|
144
|
+
.amount_eligible_for_discount) / Number(item.quantity || 1)),
|
|
188
145
|
code,
|
|
189
146
|
description: title || description || "Discount",
|
|
190
147
|
item_id: item.id,
|
|
@@ -243,7 +200,7 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
243
200
|
const unitsNeeded = buy_x * bxayTimes;
|
|
244
201
|
const units = [];
|
|
245
202
|
for (const item of applicableCartLineItems) {
|
|
246
|
-
const unitPrice = item.variant.extended_variant.amount_eligible_for_discount;
|
|
203
|
+
const unitPrice = item.variant.extended_variant.amount_eligible_for_discount / Number(item.quantity || 1);
|
|
247
204
|
for (let i = 0; i < (Number(item.quantity) || 1); i++) {
|
|
248
205
|
units.push({ item, unitPrice: Number(unitPrice) });
|
|
249
206
|
}
|
|
@@ -252,7 +209,7 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
252
209
|
units.sort((a, b) => a.unitPrice - b.unitPrice);
|
|
253
210
|
// 4) Pick the cheapest `unitsNeeded` units
|
|
254
211
|
const selected = units.slice(0, unitsNeeded);
|
|
255
|
-
logger.info("selected: " +
|
|
212
|
+
logger.info("selected: " + selected.length);
|
|
256
213
|
// 5) Sum their original prices
|
|
257
214
|
const sumPrices = selected.reduce((sum, u) => sum + u.unitPrice, 0);
|
|
258
215
|
logger.info("sumPrices: " + sumPrices);
|
|
@@ -260,7 +217,7 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
260
217
|
const totalOfItemsAfterDiscount = at_y * bxayTimes;
|
|
261
218
|
logger.info("totalOfItemsAfterDiscount: " + totalOfItemsAfterDiscount);
|
|
262
219
|
// 7) Total discount to allocate
|
|
263
|
-
const totalBundleDiscount = sumPrices - totalOfItemsAfterDiscount;
|
|
220
|
+
const totalBundleDiscount = Math.max(sumPrices - totalOfItemsAfterDiscount, 0);
|
|
264
221
|
logger.info("totalBundleDiscount: " + totalBundleDiscount);
|
|
265
222
|
// 8) Group back by line-item to allocate proportionally
|
|
266
223
|
const lineBuckets = {};
|
|
@@ -275,7 +232,7 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
275
232
|
let allocated = 0;
|
|
276
233
|
for (const [itemId, { sumPrices: lineSum }] of Object.entries(lineBuckets)) {
|
|
277
234
|
const share = lineSum / sumPrices;
|
|
278
|
-
const lineDiscount =
|
|
235
|
+
const lineDiscount = (0, utils_1.toTwoDecimal)(totalBundleDiscount * share);
|
|
279
236
|
allocated += lineDiscount;
|
|
280
237
|
logger.info("line items: " +
|
|
281
238
|
{
|
|
@@ -302,10 +259,10 @@ exports.calculateDiscount = (0, workflows_sdk_1.createStep)("calculate-discount"
|
|
|
302
259
|
}
|
|
303
260
|
return new workflows_sdk_1.StepResponse({
|
|
304
261
|
hasError: false,
|
|
305
|
-
isApplied:
|
|
262
|
+
isApplied: totalDiscount > 0,
|
|
306
263
|
discount: totalDiscount,
|
|
307
264
|
adjustmentLineItems,
|
|
308
|
-
message: "Coupon Applied Successfully",
|
|
265
|
+
message: totalDiscount > 0 ? "Coupon Applied Successfully" : "Coupon Not Applied",
|
|
309
266
|
});
|
|
310
267
|
});
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktY291cG9uLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2FwcGx5LWNvdXBvbi9zdGVwcy9hcHBseS1jb3Vwb24tc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxxRUFBNkU7QUFFN0UsMkVBS29EO0FBRXBELGlEQUE4RDtBQTBCOUQsU0FBUyxrQkFBa0IsQ0FBQyxTQUFxQztJQUMvRCxPQUFPLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBMkIsRUFBRSxFQUFFO1FBQzVELE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0MsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEVBQUUsNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLEdBQ3hDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUV6QixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNwRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FDcEMsSUFlQyxFQUNELFNBR0M7SUFFRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFFM0QsSUFBSSx1QkFBdUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlDLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0IsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDaEUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENB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
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktY291cG9uLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2FwcGx5LWNvdXBvbi9zdGVwcy9hcHBseS1jb3Vwb24tc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxxRUFBNkU7QUFFN0UsMkVBSW9EO0FBQ3BELGlEQUFxRDtBQTJCckQsU0FBUyxrQkFBa0IsQ0FBQyxTQUFxQztJQUMvRCxPQUFPLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBMkIsRUFBRSxFQUFFO1FBQzVELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDM0MsTUFBTSxFQUFFLDRCQUE0QixHQUFHLENBQUMsRUFBRSxHQUN4QyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7UUFFekIsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDcEQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQztBQUVELFNBQVMsNkJBQTZCLENBQ3BDLElBZUMsRUFDRCxTQUdDO0lBRUQsTUFBTSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEdBQUcsU0FBUyxDQUFDO0lBRTNELElBQUksdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QyxJQUFJLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzdCLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2hFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENB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
|
package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js
CHANGED
|
@@ -5,13 +5,22 @@ const generateAdjustmentLineItem = (0, workflows_sdk_1.createStep)("generate-adj
|
|
|
5
5
|
const cartService = container.resolve("cart");
|
|
6
6
|
console.log("input", input);
|
|
7
7
|
const adjustmentLineItems = await Promise.all(input.map(async (item) => {
|
|
8
|
-
|
|
8
|
+
const adjustment = await cartService.addLineItemAdjustments({
|
|
9
9
|
amount: item.amount,
|
|
10
10
|
code: item.code,
|
|
11
11
|
description: item.description,
|
|
12
12
|
item_id: item.item_id,
|
|
13
13
|
promotion_id: item.promotion_id,
|
|
14
14
|
});
|
|
15
|
+
// we also need to update the free_quantity in the cart line item
|
|
16
|
+
const lineItem = await cartService.retrieveLineItem(item.item_id);
|
|
17
|
+
await cartService.updateLineItems(lineItem.id, {
|
|
18
|
+
metadata: {
|
|
19
|
+
...lineItem.metadata,
|
|
20
|
+
...(item?.free_quantity != undefined && item?.free_quantity != null && { free_quantity: item.free_quantity })
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return adjustment;
|
|
15
24
|
}));
|
|
16
25
|
return new workflows_sdk_1.StepResponse(adjustmentLineItems, input.map((item) => item.item_id));
|
|
17
26
|
}, async (input, { container }) => {
|
|
@@ -23,6 +32,13 @@ const generateAdjustmentLineItem = (0, workflows_sdk_1.createStep)("generate-adj
|
|
|
23
32
|
filters: { item_id: { $in: input } },
|
|
24
33
|
});
|
|
25
34
|
await cartService.deleteLineItemAdjustments(cart_line_item_adjustment.map((item) => item.id));
|
|
35
|
+
await Promise.all(cart_line_item_adjustment.map(async (item) => {
|
|
36
|
+
const lineItem = await cartService.retrieveLineItem(item.item_id);
|
|
37
|
+
const { free_quantity, ...rest } = lineItem.metadata || {};
|
|
38
|
+
await cartService.updateLineItems(lineItem.id, {
|
|
39
|
+
metadata: { ...rest }
|
|
40
|
+
});
|
|
41
|
+
}));
|
|
26
42
|
});
|
|
27
43
|
exports.default = generateAdjustmentLineItem;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtYWRqdXN0bWVudC1saW5lLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2FwcGx5LWNvdXBvbi9zdGVwcy9nZW5lcmF0ZS1hZGp1c3RtZW50LWxpbmUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFFQUE2RTtBQUc3RSxNQUFNLDBCQUEwQixHQUFHLElBQUEsMEJBQVUsRUFDM0MsK0JBQStCLEVBQy9CLEtBQUssRUFDSCxLQU9HLEVBQ0gsRUFBRSxTQUFTLEVBQUUsRUFDYixFQUFFO0lBQ0YsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU5QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUU1QixNQUFNLG1CQUFtQixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDM0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdkIsTUFBTSxVQUFVLEdBQUcsTUFBTSxXQUFXLENBQUMsc0JBQXNCLENBQUM7WUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUMsQ0FBQztRQUVILGtFQUFrRTtRQUNsRSxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEUsTUFBTSxXQUFXLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsUUFBUSxFQUFFO2dCQUNSLEdBQUcsUUFBUSxDQUFDLFFBQVE7Z0JBQ3BCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsYUFBYSxJQUFJLElBQUksSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDOUc7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUVwQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsT0FBTyxJQUFJLDRCQUFZLENBQ3JCLG1CQUFtQixFQUNuQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQ2xDLENBQUM7QUFDSixDQUFDLEVBQ0QsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDN0IsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE1BQU0sRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUQsTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDYixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7S0FDckMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxXQUFXLENBQUMseUJBQXlCLENBQ3pDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUNqRCxDQUFDO0lBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDN0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxFLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUUzRCxNQUFNLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUM3QyxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRTtTQUN0QixDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ0wsQ0FBQyxDQUNGLENBQUM7QUFFRixrQkFBZSwwQkFBMEIsQ0FBQyJ9
|
|
@@ -4,9 +4,12 @@ exports.autoApplyCouponStep = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const apply_coupon_1 = require("../../apply-coupon");
|
|
6
6
|
const calculate_coupon_discount_1 = require("../../calculate-coupon-discount");
|
|
7
|
+
const remove_coupon_1 = require("../../remove-coupon");
|
|
7
8
|
exports.autoApplyCouponStep = (0, workflows_sdk_1.createStep)("auto-apply-coupon", async (input, { container }) => {
|
|
8
|
-
console.log("reached");
|
|
9
9
|
const query = container.resolve("query");
|
|
10
|
+
const logger = container.resolve("logger");
|
|
11
|
+
logger.setLogLevel(process.env.LOG_LEVEL || "error");
|
|
12
|
+
logger.debug("[auto-apply-coupon] input:" + JSON.stringify(input, null, 2));
|
|
10
13
|
const { data: priceRules } = await query.graph({
|
|
11
14
|
entity: "discount_price_rule",
|
|
12
15
|
fields: ["*"],
|
|
@@ -43,6 +46,7 @@ exports.autoApplyCouponStep = (0, workflows_sdk_1.createStep)("auto-apply-coupon
|
|
|
43
46
|
}));
|
|
44
47
|
let currentDiscount = 0;
|
|
45
48
|
let currentCode = "";
|
|
49
|
+
logger.debug("discounts: >>>>>>>>>> " + JSON.stringify(discounts, null, 2));
|
|
46
50
|
discounts.forEach((discount) => {
|
|
47
51
|
if (discount.status === "fulfilled") {
|
|
48
52
|
if (currentDiscount > 0 && currentDiscount > discount.value.discount) {
|
|
@@ -52,41 +56,44 @@ exports.autoApplyCouponStep = (0, workflows_sdk_1.createStep)("auto-apply-coupon
|
|
|
52
56
|
currentCode = discount.value.code || "";
|
|
53
57
|
}
|
|
54
58
|
});
|
|
55
|
-
|
|
59
|
+
const moreCouponToTest = [];
|
|
56
60
|
const { data: [cart] } = await query.graph({
|
|
57
61
|
entity: "cart",
|
|
58
62
|
fields: ["*", "items.*", "items.adjustments.*"],
|
|
59
63
|
filters: { id: { $eq: input.cart_id } },
|
|
60
64
|
});
|
|
65
|
+
logger.debug("cart.items: " + JSON.stringify(cart.items, null, 2));
|
|
61
66
|
for (const item of cart?.items) {
|
|
62
67
|
for (const adjustmentLineItem of item.adjustments) {
|
|
63
|
-
|
|
64
|
-
moreCouponToTest.add({
|
|
65
|
-
code: adjustmentLineItem.code,
|
|
66
|
-
promotionId: adjustmentLineItem.promotion_id,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
68
|
+
moreCouponToTest.push(adjustmentLineItem.code);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
logger.debug("moreCouponToTest: " + JSON.stringify(Array.from(new Set(moreCouponToTest)), null, 2));
|
|
72
|
+
for (const coupon of Array.from(new Set(moreCouponToTest))) {
|
|
72
73
|
const { result: { discount }, } = await (0, calculate_coupon_discount_1.calculateCouponDiscountWorkflow)(container).run({
|
|
73
74
|
input: {
|
|
74
75
|
cart_id: input.cart_id,
|
|
75
|
-
code: coupon
|
|
76
|
+
code: coupon,
|
|
76
77
|
customerId: input.customerId,
|
|
77
78
|
},
|
|
78
79
|
throwOnError: false
|
|
79
80
|
});
|
|
80
81
|
if (discount > currentDiscount) {
|
|
81
82
|
currentDiscount = discount;
|
|
82
|
-
currentCode = coupon
|
|
83
|
+
currentCode = coupon || "";
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
|
-
if (currentCode) {
|
|
86
|
+
if (!currentCode || !currentDiscount) {
|
|
87
|
+
await (0, remove_coupon_1.removeCouponWorkflow)(container).run({
|
|
88
|
+
input: { cart_id: input.cart_id, }
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
else if (currentCode) {
|
|
86
92
|
const { result } = await (0, apply_coupon_1.applyCouponWorkflow)(container).run({
|
|
87
93
|
input: {
|
|
88
94
|
code: currentCode,
|
|
89
95
|
cart_id: input.cart_id,
|
|
96
|
+
customerId: input.customerId,
|
|
90
97
|
},
|
|
91
98
|
});
|
|
92
99
|
if (!result) {
|
|
@@ -108,4 +115,4 @@ exports.autoApplyCouponStep = (0, workflows_sdk_1.createStep)("auto-apply-coupon
|
|
|
108
115
|
isApplied: false,
|
|
109
116
|
});
|
|
110
117
|
});
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1hcHBseS1jb3Vwb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2F1dG8tYXBwbHktY291cG9uL3N0ZXBzL2F1dG8tYXBwbHktY291cG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSxxREFBeUQ7QUFDekQsK0VBQWtGO0FBQ2xGLHVEQUEyRDtBQUU5QyxRQUFBLG1CQUFtQixHQUFHLElBQUEsMEJBQVUsRUFDM0MsbUJBQW1CLEVBQ25CLEtBQUssRUFBRSxLQUErQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN2RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQztJQUVyRCxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdDLE1BQU0sRUFBRSxxQkFBcUI7UUFDN0IsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2IsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTtLQUM5QixDQUFDLENBQUM7SUFFSCxNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQ3hDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFO1FBQ2pDLElBQUksSUFB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
|
|
@@ -4,7 +4,9 @@ exports.removeCouponStep = void 0;
|
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
exports.removeCouponStep = (0, workflows_sdk_1.createStep)("remove-coupon", async (input, { container }) => {
|
|
6
6
|
const query = container.resolve("query");
|
|
7
|
+
const logger = container.resolve("logger");
|
|
7
8
|
const cartService = container.resolve("cart");
|
|
9
|
+
const discountService = container.resolve("discount");
|
|
8
10
|
const { data: cart_line_item_adjustment } = await query.graph({
|
|
9
11
|
entity: "line_item_adjustment",
|
|
10
12
|
fields: ["*"],
|
|
@@ -15,12 +17,31 @@ exports.removeCouponStep = (0, workflows_sdk_1.createStep)("remove-coupon", asyn
|
|
|
15
17
|
],
|
|
16
18
|
},
|
|
17
19
|
});
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
logger.debug("removeCouponStep[cart_line_item_adjustment]" + JSON.stringify(cart_line_item_adjustment, null, 2));
|
|
21
|
+
// we need to handle two things here
|
|
22
|
+
// 1. remove only those adjustments which are in price rule and not others
|
|
23
|
+
// 2. remove free_quantity from the cart line item metadata
|
|
24
|
+
const adjustmentsOfPriceRules = (await Promise.all(cart_line_item_adjustment.map(async (item) => {
|
|
25
|
+
const priceRule = await discountService.retrieveDiscountPriceRule(item.promotion_id).catch(() => null);
|
|
26
|
+
return priceRule?.id ? item : null;
|
|
27
|
+
}))).filter((item) => item?.item_id);
|
|
28
|
+
logger.debug("removeCouponStep[adjustmentsOfPriceRules]" + JSON.stringify(adjustmentsOfPriceRules, null, 2));
|
|
29
|
+
// delete those cart line item adjustments only
|
|
30
|
+
await cartService.deleteLineItemAdjustments(adjustmentsOfPriceRules.map((item) => item.id));
|
|
31
|
+
const lineItemsFreeQuantities = await Promise.all(adjustmentsOfPriceRules.map(async (item) => {
|
|
32
|
+
const lineItem = await cartService.retrieveLineItem(item.item_id);
|
|
33
|
+
const { free_quantity, ...rest } = lineItem.metadata || {};
|
|
34
|
+
logger.debug("removeCouponStep[lineItem]" + JSON.stringify(lineItem, null, 2));
|
|
35
|
+
logger.debug("removeCouponStep[free_quantity]" + JSON.stringify(free_quantity, null, 2));
|
|
36
|
+
logger.debug("removeCouponStep[rest]" + JSON.stringify(rest, null, 2));
|
|
37
|
+
await cartService.updateLineItems(lineItem.id, { metadata: { ...rest } });
|
|
38
|
+
return { id: lineItem.id, free_quantity };
|
|
39
|
+
}));
|
|
40
|
+
return new workflows_sdk_1.StepResponse(true, { prevData: adjustmentsOfPriceRules, previousFreeQuantities: lineItemsFreeQuantities });
|
|
22
41
|
}, async (input, { container }) => {
|
|
23
42
|
const cartService = container.resolve("cart");
|
|
43
|
+
const logger = container.resolve("logger");
|
|
44
|
+
logger.debug("removeCouponStep reverting [input.prevData]" + JSON.stringify(input.prevData, null, 2));
|
|
24
45
|
await cartService.addLineItemAdjustments(input.prevData.map((item) => ({
|
|
25
46
|
amount: item.amount,
|
|
26
47
|
code: item.code,
|
|
@@ -28,5 +49,18 @@ exports.removeCouponStep = (0, workflows_sdk_1.createStep)("remove-coupon", asyn
|
|
|
28
49
|
item_id: item.item_id,
|
|
29
50
|
promotion_id: item.promotion_id,
|
|
30
51
|
})));
|
|
52
|
+
await Promise.all(input.previousFreeQuantities.map(async (item) => {
|
|
53
|
+
const lineItem = await cartService.retrieveLineItem(item.id);
|
|
54
|
+
logger.debug("removeCouponStep reverting [updateLineItems]" + JSON.stringify({
|
|
55
|
+
...lineItem.metadata,
|
|
56
|
+
...(item.free_quantity != undefined && item.free_quantity != null && { free_quantity: item.free_quantity })
|
|
57
|
+
}, null, 2));
|
|
58
|
+
await cartService.updateLineItems(lineItem.id, {
|
|
59
|
+
metadata: {
|
|
60
|
+
...lineItem.metadata,
|
|
61
|
+
...(item.free_quantity != undefined && item.free_quantity != null && { free_quantity: item.free_quantity })
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}));
|
|
31
65
|
});
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWNvdXBvbi1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kaXNjb3VudC9yZW1vdmUtY291cG9uL3N0ZXAvcmVtb3ZlLWNvdXBvbi1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFFQUE2RTtBQUdoRSxRQUFBLGdCQUFnQixHQUFHLElBQUEsMEJBQVUsRUFDeEMsZUFBZSxFQUNmLEtBQUssRUFDSCxLQUdDLEVBQ0QsRUFBRSxTQUFTLEVBQUUsRUFDYixFQUFFO0lBQ0YsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsTUFBTSxlQUFlLEdBQW9CLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdkUsTUFBTSxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM1RCxNQUFNLEVBQUUsc0JBQXNCO1FBQzlCLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNiLE9BQU8sRUFBRTtZQUNQLElBQUksRUFBRTtnQkFDSixFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM3RCxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFD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
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.acquireLockStep = exports.acquireLockStepId = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const promises_1 = require("timers/promises");
|
|
7
|
+
exports.acquireLockStepId = "acquire-lock-step";
|
|
8
|
+
/**
|
|
9
|
+
* This step acquires a lock for a given key.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const data = acquireLockStep({
|
|
13
|
+
* "key": "my-lock-key",
|
|
14
|
+
* "ttl": 60
|
|
15
|
+
* })
|
|
16
|
+
*/
|
|
17
|
+
exports.acquireLockStep = (0, workflows_sdk_1.createStep)(exports.acquireLockStepId, async (data, { container }) => {
|
|
18
|
+
const keys = Array.isArray(data.key)
|
|
19
|
+
? data.key
|
|
20
|
+
: (0, utils_1.isDefined)(data.key)
|
|
21
|
+
? [data.key]
|
|
22
|
+
: [];
|
|
23
|
+
if (!keys.length) {
|
|
24
|
+
return new workflows_sdk_1.StepResponse(void 0);
|
|
25
|
+
}
|
|
26
|
+
const locking = container.resolve(utils_1.Modules.LOCKING);
|
|
27
|
+
const retryInterval = data.retryInterval ?? 0.3;
|
|
28
|
+
const tryUntil = Date.now() + (data.timeout ?? 0) * 1000;
|
|
29
|
+
while (true) {
|
|
30
|
+
try {
|
|
31
|
+
await locking.acquire(data.key, {
|
|
32
|
+
expire: data.ttl,
|
|
33
|
+
ownerId: data.ownerId,
|
|
34
|
+
provider: data.provider,
|
|
35
|
+
});
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
if (Date.now() >= tryUntil) {
|
|
40
|
+
throw e;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
await (0, promises_1.setTimeout)(retryInterval * 1000);
|
|
44
|
+
}
|
|
45
|
+
return new workflows_sdk_1.StepResponse(void 0, {
|
|
46
|
+
keys,
|
|
47
|
+
ownerId: data.ownerId,
|
|
48
|
+
provider: data.provider,
|
|
49
|
+
});
|
|
50
|
+
}, async (data, { container }) => {
|
|
51
|
+
if (!data?.keys?.length) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const locking = container.resolve(utils_1.Modules.LOCKING);
|
|
55
|
+
await locking.release(data.keys, {
|
|
56
|
+
ownerId: data.ownerId,
|
|
57
|
+
provider: data.provider,
|
|
58
|
+
});
|
|
59
|
+
return new workflows_sdk_1.StepResponse();
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNxdWlyZS1sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9sb2NraW5nL2FjcXVpcmUtbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBOEQ7QUFDOUQscUVBQTRFO0FBQzVFLDhDQUE0QztBQWMvQixRQUFBLGlCQUFpQixHQUFHLG1CQUFtQixDQUFBO0FBQ3BEOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsSUFBQSwwQkFBVSxFQUN2Qyx5QkFBaUIsRUFDakIsS0FBSyxFQUFFLElBQTBCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2xELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUc7UUFDVixDQUFDLENBQUMsSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNaLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFFTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSw0QkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRWxELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFBO0lBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFBO0lBRXhELE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFDLENBQUE7WUFDRixNQUFLO1FBQ1AsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLENBQUE7WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBQSxxQkFBVSxFQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUIsSUFBSTtRQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztRQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7S0FDeEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxFQUNELEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFbEQsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtLQUN4QixDQUFDLENBQUE7SUFFRixPQUFPLElBQUksNEJBQVksRUFBRSxDQUFBO0FBQzNCLENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./acquire-lock"), exports);
|
|
18
|
+
__exportStar(require("./release-lock"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2xvY2tpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE4QjtBQUM5QixpREFBOEIifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.releaseLockStep = exports.releaseLockStepId = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
exports.releaseLockStepId = "release-lock-step";
|
|
7
|
+
/**
|
|
8
|
+
* This step releases a lock for a given key.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const data = releaseLockStep({
|
|
12
|
+
* "key": "my-lock-key"
|
|
13
|
+
* })
|
|
14
|
+
*/
|
|
15
|
+
exports.releaseLockStep = (0, workflows_sdk_1.createStep)(exports.releaseLockStepId, async (data, { container }) => {
|
|
16
|
+
const keys = Array.isArray(data.key)
|
|
17
|
+
? data.key
|
|
18
|
+
: (0, utils_1.isDefined)(data.key)
|
|
19
|
+
? [data.key]
|
|
20
|
+
: [];
|
|
21
|
+
if (!keys.length) {
|
|
22
|
+
return new workflows_sdk_1.StepResponse(true);
|
|
23
|
+
}
|
|
24
|
+
const locking = container.resolve(utils_1.Modules.LOCKING);
|
|
25
|
+
const released = await locking.release(keys, {
|
|
26
|
+
ownerId: data.ownerId,
|
|
27
|
+
provider: data.provider,
|
|
28
|
+
});
|
|
29
|
+
return new workflows_sdk_1.StepResponse(released);
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZS1sb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9sb2NraW5nL3JlbGVhc2UtbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBOEQ7QUFDOUQscUVBQTRFO0FBVy9ELFFBQUEsaUJBQWlCLEdBQUcsbUJBQW1CLENBQUE7QUFDcEQ7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsZUFBZSxHQUFHLElBQUEsMEJBQVUsRUFDdkMseUJBQWlCLEVBQ2pCLEtBQUssRUFBRSxJQUEwQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNsRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHO1FBQ1YsQ0FBQyxDQUFDLElBQUEsaUJBQVMsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDWixDQUFDLENBQUMsRUFBRSxDQUFBO0lBRU4sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksNEJBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtRQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0tBQ3hCLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSw0QkFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ25DLENBQUMsQ0FDRixDQUFBIn0=
|