@devx-commerce/plugin-discounts-svaraa 0.0.1-beta.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.
- package/.medusa/server/src/admin/index.js +20 -0
- package/.medusa/server/src/admin/index.mjs +21 -0
- package/.medusa/server/src/api/admin/discounts/freebie-rules/[id]/route.js +75 -0
- package/.medusa/server/src/api/admin/discounts/freebie-rules/route.js +73 -0
- package/.medusa/server/src/api/admin/discounts/middlewares.js +113 -0
- package/.medusa/server/src/api/admin/discounts/price-rules/[id]/codes/export/route.js +41 -0
- package/.medusa/server/src/api/admin/discounts/price-rules/[id]/codes/route.js +20 -0
- package/.medusa/server/src/api/admin/discounts/price-rules/[id]/route.js +50 -0
- package/.medusa/server/src/api/admin/discounts/price-rules/bulk/[id]/add-more-codes/route.js +34 -0
- package/.medusa/server/src/api/admin/discounts/price-rules/bulk/route.js +33 -0
- package/.medusa/server/src/api/admin/discounts/price-rules/route.js +47 -0
- package/.medusa/server/src/api/admin/discounts/validators.js +649 -0
- package/.medusa/server/src/api/admin/plugin/route.js +7 -0
- package/.medusa/server/src/api/middlewares.js +14 -0
- package/.medusa/server/src/api/store/discounts/apply/route.js +24 -0
- package/.medusa/server/src/api/store/discounts/apply-freebie/route.js +20 -0
- package/.medusa/server/src/api/store/discounts/auto-apply/route.js +125 -0
- package/.medusa/server/src/api/store/discounts/cart-eligible-coupons/[cart_id]/route.js +19 -0
- package/.medusa/server/src/api/store/discounts/middlewares.js +49 -0
- package/.medusa/server/src/api/store/discounts/offers-on-product/[variant_id]/route.js +19 -0
- package/.medusa/server/src/api/store/discounts/price-rules/route.js +20 -0
- package/.medusa/server/src/api/store/discounts/remove/route.js +21 -0
- package/.medusa/server/src/api/store/plugin/route.js +7 -0
- package/.medusa/server/src/index.js +18 -0
- package/.medusa/server/src/jobs/price-rule-status-updates.js +80 -0
- package/.medusa/server/src/lib/api-response.js +42 -0
- package/.medusa/server/src/lib/utils.js +10 -0
- package/.medusa/server/src/links/mtm-freebie-rule-with-customers.js +16 -0
- package/.medusa/server/src/links/mtm-freebie-rule-with-products-categories.js +16 -0
- package/.medusa/server/src/links/mtm-freebie-rule-with-products-variants.js +18 -0
- package/.medusa/server/src/links/mtm-price-rule-with-customers.js +16 -0
- package/.medusa/server/src/links/mtm-price-rule-with-products-categories.js +16 -0
- package/.medusa/server/src/links/mtm-price-rule-with-products-variants.js +16 -0
- package/.medusa/server/src/modules/discounts/index.js +13 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250526174351.js +21 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250527074936.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250527104919.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250527113947.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250529123956.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250602052234.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250602052239.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250602165037.js +16 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250602194000.js +130 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250603053221.js +16 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250604162727.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250604162741.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250604175305.js +15 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250605161922.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250605162116.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250605164908.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250610063653.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250611105345.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250611105356.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250617113007.js +14 -0
- package/.medusa/server/src/modules/discounts/models/discount-code.js +20 -0
- package/.medusa/server/src/modules/discounts/models/freebie-rule.js +27 -0
- package/.medusa/server/src/modules/discounts/models/price-rule.js +53 -0
- package/.medusa/server/src/modules/discounts/service.js +98 -0
- package/.medusa/server/src/workflows/discount/add-more-code-in-price-rule/index.js +28 -0
- package/.medusa/server/src/workflows/discount/apply-coupon/index.js +41 -0
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step-backup.js +245 -0
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step.js +244 -0
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js +28 -0
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/validate-coupon-step.js +212 -0
- package/.medusa/server/src/workflows/discount/apply-freebie/index.js +31 -0
- package/.medusa/server/src/workflows/discount/apply-freebie/steps/add-freebie-items-to-cart.js +212 -0
- package/.medusa/server/src/workflows/discount/apply-freebie/steps/remove-freebie-from-cart.js +16 -0
- package/.medusa/server/src/workflows/discount/auto-apply-coupon/index.js +10 -0
- package/.medusa/server/src/workflows/discount/auto-apply-coupon/steps/auto-apply-coupon.js +81 -0
- package/.medusa/server/src/workflows/discount/calculate-coupon-discount/index.js +74 -0
- package/.medusa/server/src/workflows/discount/create-bulk-discount/index.js +46 -0
- package/.medusa/server/src/workflows/discount/create-bulk-discount/steps/add-bulk-codes-to-rule.js +84 -0
- package/.medusa/server/src/workflows/discount/create-discount-code/index.js +10 -0
- package/.medusa/server/src/workflows/discount/create-discount-code/steps/create-discount-code-step.js +20 -0
- package/.medusa/server/src/workflows/discount/create-discount-price-rule/index.js +56 -0
- package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/create-discount-price-rule-step.js +58 -0
- package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/validate-customer-exists.js +21 -0
- package/.medusa/server/src/workflows/discount/create-freebie-rule/index.js +44 -0
- package/.medusa/server/src/workflows/discount/create-freebie-rule/steps/create-freebie-rule-step.js +64 -0
- package/.medusa/server/src/workflows/discount/export-codes/index.js +14 -0
- package/.medusa/server/src/workflows/discount/export-codes/steps/export-codes-step.js +116 -0
- package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/index.js +15 -0
- package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/step/get-cart-eligible-coupon.js +39 -0
- package/.medusa/server/src/workflows/discount/get-product-offers/index.js +25 -0
- package/.medusa/server/src/workflows/discount/get-product-offers/step/calculate-product-offers.js +53 -0
- package/.medusa/server/src/workflows/discount/index.js +28 -0
- package/.medusa/server/src/workflows/discount/remove-coupon/index.js +18 -0
- package/.medusa/server/src/workflows/discount/remove-coupon/step/remove-coupon-step.js +32 -0
- package/.medusa/server/src/workflows/discount/steps/validate-cart-exists.js +22 -0
- package/.medusa/server/src/workflows/discount/steps/validate-discount-code-exists.js +20 -0
- package/.medusa/server/src/workflows/discount/steps/validate-freebie-code-exists.js +16 -0
- package/.medusa/server/src/workflows/discount/steps/validate-same-prefix-rule-exists.js +20 -0
- package/.medusa/server/src/workflows/discount/update-discount-price-rule/index.js +42 -0
- package/.medusa/server/src/workflows/discount/update-discount-price-rule/steps/update-discount-price-rule-step.js +160 -0
- package/.medusa/server/src/workflows/discount/update-discount-price-rule/steps/validate-discount-price-rule-update-step.js +175 -0
- package/.medusa/server/src/workflows/discount/update-freebie-price-rule/index.js +44 -0
- package/.medusa/server/src/workflows/discount/update-freebie-price-rule/steps/update-freebie-price-rule-step.js +201 -0
- package/.medusa/server/src/workflows/discount/update-freebie-price-rule/steps/validate-freebie-rule-update-step.js +44 -0
- package/.medusa/server/src/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/product/steps/validate-product-category-exists.js +26 -0
- package/.medusa/server/src/workflows/product/steps/validate-product-exists.js +28 -0
- package/.medusa/server/src/workflows/product/steps/validate-product-variant-exists.js +26 -0
- package/.medusa/server/src/workflows/steps/throw-error-step.js +9 -0
- package/README.md +64 -0
- package/package.json +87 -0
package/.medusa/server/src/workflows/discount/apply-freebie/steps/add-freebie-items-to-cart.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.addFreebieItemsToCartStep = void 0;
|
|
7
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
8
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
9
|
+
const validators_1 = require("../../../../api/admin/discounts/validators");
|
|
10
|
+
const mtm_freebie_rule_with_products_variants_1 = __importDefault(require("../../../../links/mtm-freebie-rule-with-products-variants"));
|
|
11
|
+
const helpers_1 = require("@medusajs/medusa/api/store/carts/helpers");
|
|
12
|
+
const utils_1 = require("../../../../lib/utils");
|
|
13
|
+
exports.addFreebieItemsToCartStep = (0, workflows_sdk_1.createStep)("add-freebie-items-to-cart", async (input, { container }) => {
|
|
14
|
+
const query = container.resolve("query");
|
|
15
|
+
const cartService = container.resolve("cart");
|
|
16
|
+
const { data: freebieRules } = await query.graph({
|
|
17
|
+
entity: "freebie_rule",
|
|
18
|
+
fields: [
|
|
19
|
+
"*",
|
|
20
|
+
"product_variants.*",
|
|
21
|
+
"product_categories.*",
|
|
22
|
+
"product_categories.products.id",
|
|
23
|
+
"customers.*",
|
|
24
|
+
],
|
|
25
|
+
filters: { status: "ACTIVE" },
|
|
26
|
+
});
|
|
27
|
+
// console.log("freebieRules: ", JSON.stringify(freebieRules, null, 2));
|
|
28
|
+
const { data: orders } = await query.graph({
|
|
29
|
+
entity: "order",
|
|
30
|
+
fields: ["id"],
|
|
31
|
+
filters: { customer_id: input.customerId, status: "completed" },
|
|
32
|
+
});
|
|
33
|
+
let eligibleFreebieRules = freebieRules.filter((rule) => {
|
|
34
|
+
/* ─────────────────────────────────────────────────────────────
|
|
35
|
+
* Check Coupon Usage Limit
|
|
36
|
+
* ────────────────────────────────────────────────────────────*/
|
|
37
|
+
const { usage_limit: limitMode, usage_limit_specific, usage_count, } = rule;
|
|
38
|
+
const limitReached = (() => {
|
|
39
|
+
switch (limitMode) {
|
|
40
|
+
case "UNLIMITED":
|
|
41
|
+
return false; // no cap
|
|
42
|
+
case "ONLY_ONCE":
|
|
43
|
+
return usage_count >= 1; // hard-coded single use
|
|
44
|
+
case "SPECIFIC":
|
|
45
|
+
// treat null/undefined as “no cap” for safety
|
|
46
|
+
if (typeof usage_limit_specific !== "number")
|
|
47
|
+
return false;
|
|
48
|
+
return usage_count >= usage_limit_specific; // respect custom cap
|
|
49
|
+
default:
|
|
50
|
+
return false; // fallback – shouldn’t happen
|
|
51
|
+
}
|
|
52
|
+
})();
|
|
53
|
+
if (limitReached)
|
|
54
|
+
return false;
|
|
55
|
+
if (rule.only_for_new_customer && !input.customerId)
|
|
56
|
+
return false;
|
|
57
|
+
if (rule.only_for_new_customer && input.customerId && orders.length > 0)
|
|
58
|
+
return false;
|
|
59
|
+
/* ─────────────────────────────────────────────────────────────
|
|
60
|
+
* Check User Specific Freebie Code Usage Limit
|
|
61
|
+
* ────────────────────────────────────────────────────────────*/
|
|
62
|
+
if ((rule.usage_limit_per_customer_type ==
|
|
63
|
+
validators_1.DiscountUsageLimitPerCustomerType.Values.SPECIFIC ||
|
|
64
|
+
rule.usage_limit_per_customer_type ==
|
|
65
|
+
validators_1.DiscountUsageLimitPerCustomerType.Values.ONLY_ONCE) &&
|
|
66
|
+
!input.customerId) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
if (input.customerId &&
|
|
70
|
+
(rule.usage_limit_per_customer_type ==
|
|
71
|
+
validators_1.DiscountUsageLimitPerCustomerType.Values.SPECIFIC ||
|
|
72
|
+
rule.usage_limit_per_customer_type ==
|
|
73
|
+
validators_1.DiscountUsageLimitPerCustomerType.Values.ONLY_ONCE)) {
|
|
74
|
+
if (orders.length >= (rule.usage_limit_per_customer_specific || 1))
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
/* ──────────────────────────────────────────────────────────────
|
|
78
|
+
* Check Customer Existence
|
|
79
|
+
* ─────────────────────────────────────────────────────────────*/
|
|
80
|
+
if (input.customerId && rule.customers && rule.customers.length > 0) {
|
|
81
|
+
if (!rule.customers.some((customer) => customer.id === input.customerId)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/* ──────────────────────────────────────────────────────────────
|
|
86
|
+
* Check Cart Quantity
|
|
87
|
+
* ─────────────────────────────────────────────────────────────*/
|
|
88
|
+
if (rule.min_order_qty != null && rule.min_order_qty != undefined) {
|
|
89
|
+
let cartTotalQuantity = 0;
|
|
90
|
+
if (input.cart.items && input.cart.items.length > 0) {
|
|
91
|
+
cartTotalQuantity = input.cart.items.reduce((total, item) => {
|
|
92
|
+
const isBundle = !!item.metadata?.bundle_type;
|
|
93
|
+
return (total +
|
|
94
|
+
Number(isBundle
|
|
95
|
+
? (item?.variant?.extended_product_variants
|
|
96
|
+
?.products_per_bundle || 1) * (item.quantity || 1)
|
|
97
|
+
: item.quantity || 1));
|
|
98
|
+
}, 0);
|
|
99
|
+
}
|
|
100
|
+
if (rule.min_order_qty && cartTotalQuantity < rule.min_order_qty) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/* ──────────────────────────────────────────────────────────────
|
|
105
|
+
* Check Cart Values
|
|
106
|
+
* ─────────────────────────────────────────────────────────────*/
|
|
107
|
+
if (rule.min_order_value != null && rule.min_order_value != undefined) {
|
|
108
|
+
let cartTotal = 0;
|
|
109
|
+
if (input.cart.items && input.cart.items.length > 0) {
|
|
110
|
+
cartTotal = input.cart.items.reduce((total, item) => {
|
|
111
|
+
let price = 0;
|
|
112
|
+
if (rule.applies_on == validators_1.DiscountAppliesOn.Values.MRP) {
|
|
113
|
+
let variantListingPrice = item?.variant?.extended_product_variants?.compare_at_price;
|
|
114
|
+
const isBundle = !!item.metadata?.bundle_type;
|
|
115
|
+
price = isBundle
|
|
116
|
+
? Number(item.compare_at_unit_price)
|
|
117
|
+
: Number(variantListingPrice);
|
|
118
|
+
}
|
|
119
|
+
if (rule.applies_on == validators_1.DiscountAppliesOn.Values.PRICE)
|
|
120
|
+
price = Number(item.unit_price) || 0;
|
|
121
|
+
return total + Number(price) * Number(item.quantity || 1);
|
|
122
|
+
}, 0);
|
|
123
|
+
}
|
|
124
|
+
if (rule.min_order_value && cartTotal < rule.min_order_value) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
});
|
|
130
|
+
// console.log(
|
|
131
|
+
// "eligibleFreebieRules: ",
|
|
132
|
+
// JSON.stringify(eligibleFreebieRules, null, 2)
|
|
133
|
+
// );
|
|
134
|
+
eligibleFreebieRules = await Promise.all(eligibleFreebieRules.map(async (freebieRule) => {
|
|
135
|
+
const variants = freebieRule.product_variants;
|
|
136
|
+
const { data: productVariantLinks } = await query.graph({
|
|
137
|
+
entity: mtm_freebie_rule_with_products_variants_1.default.entryPoint,
|
|
138
|
+
fields: ["*"],
|
|
139
|
+
filters: { freebie_rule_id: freebieRule.id },
|
|
140
|
+
});
|
|
141
|
+
delete freebieRule.product_variants;
|
|
142
|
+
return {
|
|
143
|
+
...freebieRule,
|
|
144
|
+
applicable_product_variants: variants.filter((variant) => {
|
|
145
|
+
return productVariantLinks.some((link) => link.product_variant_id === variant.id && !link.is_freebie);
|
|
146
|
+
}),
|
|
147
|
+
freebie_product_variants: variants.filter((variant) => {
|
|
148
|
+
return productVariantLinks.some((link) => link.product_variant_id === variant.id && link.is_freebie);
|
|
149
|
+
}),
|
|
150
|
+
};
|
|
151
|
+
}));
|
|
152
|
+
eligibleFreebieRules = eligibleFreebieRules.filter(({ applicable_product_variants, product_categories, applicable_on_bundle, }) => {
|
|
153
|
+
if (!applicable_product_variants?.length &&
|
|
154
|
+
!product_categories?.length) {
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
let eligibleCartItems = [...input.cart.items];
|
|
158
|
+
if (applicable_product_variants?.length) {
|
|
159
|
+
eligibleCartItems = eligibleCartItems.filter((item) => applicable_product_variants.some((v) => v.id === item.variant_id));
|
|
160
|
+
}
|
|
161
|
+
if (product_categories?.length) {
|
|
162
|
+
eligibleCartItems = eligibleCartItems.filter((item) => product_categories.some((v) => v.products?.some((p) => p.id === item.product_id)));
|
|
163
|
+
}
|
|
164
|
+
if (!applicable_on_bundle) {
|
|
165
|
+
eligibleCartItems = eligibleCartItems.filter((item) => !item.metadata?.bundle_type);
|
|
166
|
+
}
|
|
167
|
+
return eligibleCartItems.length > 0;
|
|
168
|
+
});
|
|
169
|
+
// console.log(
|
|
170
|
+
// "eligibleFreebieRules after filtering: ",
|
|
171
|
+
// JSON.stringify(eligibleFreebieRules, null, 2)
|
|
172
|
+
// );
|
|
173
|
+
let itemsToAdd = [];
|
|
174
|
+
for (const freebieRule of eligibleFreebieRules) {
|
|
175
|
+
for (const variant of freebieRule.freebie_product_variants) {
|
|
176
|
+
itemsToAdd.push({
|
|
177
|
+
product_id: variant.product_id,
|
|
178
|
+
variant_id: variant.id,
|
|
179
|
+
quantity: 1,
|
|
180
|
+
unit_price: 0,
|
|
181
|
+
metadata: {
|
|
182
|
+
item_type: utils_1.ProductType.Values.FREEBIE,
|
|
183
|
+
code: freebieRule.code,
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (itemsToAdd.length > 0) {
|
|
189
|
+
await (0, core_flows_1.addToCartWorkflow)(container).run({
|
|
190
|
+
input: { cart_id: input.cart.id, items: itemsToAdd },
|
|
191
|
+
});
|
|
192
|
+
const cart = await (0, helpers_1.refetchCart)(input.cart.id, container, [
|
|
193
|
+
"id",
|
|
194
|
+
"items.metadata",
|
|
195
|
+
"items.id",
|
|
196
|
+
]);
|
|
197
|
+
await Promise.all(cart.items.map(async (item) => {
|
|
198
|
+
if (item.metadata?.item_type === utils_1.ProductType.Values.FREEBIE) {
|
|
199
|
+
const freebieRule = eligibleFreebieRules.find((rule) => rule.code === item.metadata?.code);
|
|
200
|
+
await cartService.addLineItemAdjustments({
|
|
201
|
+
amount: 0,
|
|
202
|
+
code: item.metadata?.code || "",
|
|
203
|
+
description: freebieRule?.description || "",
|
|
204
|
+
item_id: item.id,
|
|
205
|
+
promotion_id: freebieRule?.id || "",
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
return new workflows_sdk_1.StepResponse(eligibleFreebieRules);
|
|
211
|
+
});
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZyZWViaWUtaXRlbXMtdG8tY2FydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvYXBwbHktZnJlZWJpZS9zdGVwcy9hZGQtZnJlZWJpZS1pdGVtcy10by1jYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQU9BLHFFQUE2RTtBQUM3RSw0REFBZ0U7QUFFaEUsMkVBR29EO0FBQ3BELHdJQUFzRztBQUN0RyxzRUFBdUU7QUFDdkUsaURBQW9EO0FBRXZDLFFBQUEseUJBQXlCLEdBQUcsSUFBQSwwQkFBVSxFQUNqRCwyQkFBMkIsRUFDM0IsS0FBSyxFQUNILEtBYUMsRUFDRCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFOUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDL0MsTUFBTSxFQUFFLGNBQWM7UUFDdEIsTUFBTSxFQUFFO1lBQ04sR0FBRztZQUNILG9CQUFvQjtZQUNwQixzQkFBc0I7WUFDdEIsZ0NBQWdDO1lBQ2hDLGFBQWE7U0FDZDtRQUNELE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7S0FDOUIsQ0FBQyxDQUFDO0lBRUgsd0VBQXdFO0lBRXhFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ2QsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFF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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeFreebieFromCartStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const utils_1 = require("../../../../lib/utils");
|
|
6
|
+
exports.removeFreebieFromCartStep = (0, workflows_sdk_1.createStep)("remove-freebie-from-cart", async (input, { container }) => {
|
|
7
|
+
const lineItemsToRemove = input.cart.items?.filter((item) => item.metadata?.item_type == utils_1.ProductType.Values.FREEBIE) || [];
|
|
8
|
+
const lineItemIdsToRemove = lineItemsToRemove.map(({ id }) => id);
|
|
9
|
+
const cartService = container.resolve("cart");
|
|
10
|
+
await cartService.softDeleteLineItems(lineItemIdsToRemove);
|
|
11
|
+
return new workflows_sdk_1.StepResponse({ message: "Freebie items removed from cart" }, { lineItemIdsToRestore: lineItemIdsToRemove });
|
|
12
|
+
}, async (input, { container }) => {
|
|
13
|
+
const cartService = container.resolve("cart");
|
|
14
|
+
await cartService.restoreLineItems(input.lineItemIdsToRestore);
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWZyZWViaWUtZnJvbS1jYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kaXNjb3VudC9hcHBseS1mcmVlYmllL3N0ZXBzL3JlbW92ZS1mcmVlYmllLWZyb20tY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxRUFBNkU7QUFDN0UsaURBQW9EO0FBRXZDLFFBQUEseUJBQXlCLEdBQUcsSUFBQSwwQkFBVSxFQUNqRCwwQkFBMEIsRUFDMUIsS0FBSyxFQUFFLEtBQXdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2hELE1BQU0saUJBQWlCLEdBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FDdEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxJQUFJLG1CQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDakUsSUFBSSxFQUFFLENBQUM7SUFFVixNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsTUFBTSxXQUFXLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzRCxPQUFPLElBQUksNEJBQVksQ0FDckIsRUFBRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsRUFDOUMsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxDQUM5QyxDQUFDO0FBQ0osQ0FBQyxFQUNELEtBQUssRUFBRSxLQUF5QyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNqRSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLE1BQU0sV0FBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoApplyCouponWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const auto_apply_coupon_1 = require("./steps/auto-apply-coupon");
|
|
6
|
+
exports.autoApplyCouponWorkflow = (0, workflows_sdk_1.createWorkflow)("auto-apply-coupon", (input) => {
|
|
7
|
+
const response = (0, auto_apply_coupon_1.autoApplyCouponStep)(input);
|
|
8
|
+
return new workflows_sdk_1.WorkflowResponse(response);
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2F1dG8tYXBwbHktY291cG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcyQztBQUUzQyxpRUFBZ0U7QUFFbkQsUUFBQSx1QkFBdUIsR0FBRyxJQUFBLDhCQUFjLEVBQ25ELG1CQUFtQixFQUNuQixDQUFDLEtBQTJELEVBQUUsRUFBRTtJQUM5RCxNQUFNLFFBQVEsR0FBRyxJQUFBLHVDQUFtQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoApplyCouponStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const apply_coupon_1 = require("../../apply-coupon");
|
|
6
|
+
const calculate_coupon_discount_1 = require("../../calculate-coupon-discount");
|
|
7
|
+
exports.autoApplyCouponStep = (0, workflows_sdk_1.createStep)("auto-apply-coupon", async (input, { container }) => {
|
|
8
|
+
console.log("reached");
|
|
9
|
+
const query = container.resolve("query");
|
|
10
|
+
const { data: priceRules } = await query.graph({
|
|
11
|
+
entity: "discount_price_rule",
|
|
12
|
+
fields: ["*"],
|
|
13
|
+
filters: { auto_apply: true },
|
|
14
|
+
});
|
|
15
|
+
const discounts = await Promise.allSettled(priceRules.map(async (priceRule) => {
|
|
16
|
+
let code = null;
|
|
17
|
+
if (!priceRule.prefix)
|
|
18
|
+
code = priceRule.discount_code;
|
|
19
|
+
else {
|
|
20
|
+
const { data: codes } = await query.graph({
|
|
21
|
+
entity: "discount_code",
|
|
22
|
+
fields: ["*"],
|
|
23
|
+
filters: {
|
|
24
|
+
$and: [
|
|
25
|
+
{ price_rule_id: { $eq: priceRule.id } },
|
|
26
|
+
{ usage_limit: 0 },
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
if (codes.length > 0)
|
|
31
|
+
code = codes[0].code;
|
|
32
|
+
else
|
|
33
|
+
return { discount: 0 };
|
|
34
|
+
}
|
|
35
|
+
const { result: { discount }, } = await (0, calculate_coupon_discount_1.calculateCouponDiscountWorkflow)(container).run({
|
|
36
|
+
input: {
|
|
37
|
+
cart_id: input.cart_id,
|
|
38
|
+
code: code,
|
|
39
|
+
customerId: input.customerId,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
return { discount, code };
|
|
43
|
+
}));
|
|
44
|
+
let currentDiscount = 0;
|
|
45
|
+
let currentCode = undefined;
|
|
46
|
+
discounts.forEach((discount) => {
|
|
47
|
+
if (discount.status === "fulfilled") {
|
|
48
|
+
if (currentDiscount > 0 && currentDiscount > discount.value.discount) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
currentDiscount = discount.value.discount;
|
|
52
|
+
currentCode = discount.value.code || undefined;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
if (currentCode) {
|
|
56
|
+
const { result } = await (0, apply_coupon_1.applyCouponWorkflow)(container).run({
|
|
57
|
+
input: {
|
|
58
|
+
code: currentCode,
|
|
59
|
+
cart_id: input.cart_id,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
if (!result) {
|
|
63
|
+
return new workflows_sdk_1.StepResponse({
|
|
64
|
+
discount: 0,
|
|
65
|
+
code: null,
|
|
66
|
+
isApplied: false,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return new workflows_sdk_1.StepResponse({
|
|
70
|
+
discount: currentDiscount,
|
|
71
|
+
code: currentCode,
|
|
72
|
+
isApplied: true,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return new workflows_sdk_1.StepResponse({
|
|
76
|
+
discount: 0,
|
|
77
|
+
code: null,
|
|
78
|
+
isApplied: false,
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1hcHBseS1jb3Vwb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2F1dG8tYXBwbHktY291cG9uL3N0ZXBzL2F1dG8tYXBwbHktY291cG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSxxREFBeUQ7QUFDekQsK0VBQWtGO0FBRXJFLFFBQUEsbUJBQW1CLEdBQUcsSUFBQSwwQkFBVSxFQUMzQyxtQkFBbUIsRUFDbkIsS0FBSyxFQUFFLEtBQTJELEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3QyxNQUFNLEVBQUUscUJBQXFCO1FBQzdCLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNiLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7S0FDOUIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxTQUFTLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUN4QyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRTtRQUNqQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQUUsSUFBSSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUM7YUFDakQsQ0FBQztZQUNKLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUN4QyxNQUFNLEVBQUUsZUFBZTtnQkFDdkIsTUFBTSxFQUFF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
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateCouponDiscountWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const throw_error_step_1 = require("../../steps/throw-error-step");
|
|
7
|
+
const apply_coupon_step_1 = require("../apply-coupon/steps/apply-coupon-step");
|
|
8
|
+
const validate_coupon_step_1 = require("../apply-coupon/steps/validate-coupon-step");
|
|
9
|
+
const utils_1 = require("../../../lib/utils");
|
|
10
|
+
exports.calculateCouponDiscountWorkflow = (0, workflows_sdk_1.createWorkflow)("calculate-coupon-discount", (input) => {
|
|
11
|
+
const { data: priceRules } = (0, core_flows_1.useQueryGraphStep)({
|
|
12
|
+
entity: "discount_price_rule",
|
|
13
|
+
fields: [
|
|
14
|
+
"*",
|
|
15
|
+
"product_categories.*",
|
|
16
|
+
"product_variants.*",
|
|
17
|
+
"product_categories.products.id",
|
|
18
|
+
"customers.*",
|
|
19
|
+
],
|
|
20
|
+
filters: { discount_codes: { code: input.code } },
|
|
21
|
+
});
|
|
22
|
+
const { data: carts } = (0, core_flows_1.useQueryGraphStep)({
|
|
23
|
+
entity: "cart",
|
|
24
|
+
fields: [
|
|
25
|
+
"*",
|
|
26
|
+
"items.*",
|
|
27
|
+
"items.variant.*",
|
|
28
|
+
"items.variant.prices.*",
|
|
29
|
+
"items.variant.extended_product_variants.compare_at_price",
|
|
30
|
+
],
|
|
31
|
+
filters: { id: input.cart_id },
|
|
32
|
+
options: { throwIfKeyNotFound: true },
|
|
33
|
+
}).config({ name: "get-cart" });
|
|
34
|
+
const cart = (0, workflows_sdk_1.transform)({ carts }, ({ carts }) => {
|
|
35
|
+
let cart = carts[0];
|
|
36
|
+
return {
|
|
37
|
+
...cart,
|
|
38
|
+
items: cart.items.filter((item) => item.metadata?.item_type != utils_1.ProductType.Values.FREEBIE),
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
const priceRule = (0, workflows_sdk_1.transform)({ priceRules }, ({ priceRules }) => priceRules[0]);
|
|
42
|
+
const validationResult = (0, validate_coupon_step_1.validateCouponStep)({
|
|
43
|
+
priceRule,
|
|
44
|
+
code: input.code,
|
|
45
|
+
cart,
|
|
46
|
+
customerId: input.customerId,
|
|
47
|
+
});
|
|
48
|
+
(0, workflows_sdk_1.when)(validationResult, ({ hasError }) => {
|
|
49
|
+
return hasError;
|
|
50
|
+
}).then(() => {
|
|
51
|
+
(0, throw_error_step_1.throwErrorStep)({ errorMessage: validationResult.message }).config({
|
|
52
|
+
name: "throw-error-validate-coupon",
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
const calculateDiscountResult = (0, apply_coupon_step_1.calculateDiscount)({
|
|
56
|
+
priceRule,
|
|
57
|
+
code: input.code,
|
|
58
|
+
cart,
|
|
59
|
+
});
|
|
60
|
+
(0, workflows_sdk_1.when)(calculateDiscountResult, ({ hasError }) => {
|
|
61
|
+
return hasError;
|
|
62
|
+
}).then(() => {
|
|
63
|
+
(0, throw_error_step_1.throwErrorStep)({ errorMessage: calculateDiscountResult.message }).config({
|
|
64
|
+
name: "throw-error-calculate-discount",
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
68
|
+
discount: calculateDiscountResult.discount,
|
|
69
|
+
isApplied: calculateDiscountResult.isApplied,
|
|
70
|
+
message: calculateDiscountResult.message,
|
|
71
|
+
adjustmentLineItems: calculateDiscountResult.adjustmentLineItems,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2NhbGN1bGF0ZS1jb3Vwb24tZGlzY291bnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzJDO0FBQzNDLDREQUFnRTtBQUdoRSxtRUFBOEQ7QUFDOUQsK0VBQTRFO0FBQzVFLHFGQUFnRjtBQUNoRiw4Q0FBaUQ7QUFFcEMsUUFBQSwrQkFBK0IsR0FBRyxJQUFBLDhCQUFjLEVBQzNELDJCQUEyQixFQUMzQixDQUFDLEtBQXlFLEVBQUUsRUFBRTtJQUM1RSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDN0MsTUFBTSxFQUFFLHFCQUFxQjtRQUM3QixNQUFNLEVBQUU7WUFDTixHQUFHO1lBQ0gsc0JBQXNCO1lBQ3RCLG9CQUFvQjtZQUNwQixnQ0FBZ0M7WUFDaEMsYUFBYTtTQUNkO1FBQ0QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRTtLQUNsRCxDQUFDLENBQUM7SUFFSCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDeEMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUU7WUFDTixHQUFHO1lBQ0gsU0FBUztZQUNULGlCQUFpQjtZQUNqQix3QkFBd0I7WUFDeEIsMERBQTBEO1NBQzNEO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUU7UUFDOUIsT0FBTyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO0tBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUVoQyxNQUFNLElBQUksR0FBRyxJQUFBLHlCQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUM5QyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxJQUFJLG1CQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDakU7U0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFBLHlCQUFTLEVBQ3pCLEVBQUUsVUFBVSxFQUFFLEVBQ2QsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUEwQixDQUMzRCxDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLHlDQUFrQixFQUFDO1FBQzFDLFNBQVM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDaEIsSUFBSTtRQUNKLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtLQUM3QixDQUFDLENBQUM7SUFFSCxJQUFBLG9CQUFJLEVBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7UUFDdEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNYLElBQUEsaUNBQWMsRUFBQyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNoRSxJQUFJLEVBQUUsNkJBQTZCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSx1QkFBdUIsR0FBRyxJQUFBLHFDQUFpQixFQUFDO1FBQ2hELFNBQVM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDaEIsSUFBSTtLQUNMLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQUksRUFBQyx1QkFBdUIsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUM3QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1gsSUFBQSxpQ0FBYyxFQUFDLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3ZFLElBQUksRUFBRSxnQ0FBZ0M7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksZ0NBQWdCLENBQUM7UUFDMUIsUUFBUSxFQUFFLHVCQUF1QixDQUFDLFFBQVE7UUFDMUMsU0FBUyxFQUFFLHVCQUF1QixDQUFDLFNBQVM7UUFDNUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLE9BQU87UUFDeEMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsbUJBQW1CO0tBQ2pFLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBulkDiscountWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const validate_product_category_exists_1 = require("../../product/steps/validate-product-category-exists");
|
|
6
|
+
const validate_product_variant_exists_1 = require("../../product/steps/validate-product-variant-exists");
|
|
7
|
+
const throw_error_step_1 = require("../../steps/throw-error-step");
|
|
8
|
+
const create_discount_price_rule_step_1 = require("../create-discount-price-rule/steps/create-discount-price-rule-step");
|
|
9
|
+
const validate_same_prefix_rule_exists_1 = require("../steps/validate-same-prefix-rule-exists");
|
|
10
|
+
const add_bulk_codes_to_rule_1 = require("./steps/add-bulk-codes-to-rule");
|
|
11
|
+
exports.createBulkDiscountWorkflow = (0, workflows_sdk_1.createWorkflow)("create-bulk-discount", (input) => {
|
|
12
|
+
// validate auto_apply count from global config table so that it does not exceed the limit
|
|
13
|
+
const validate = (0, workflows_sdk_1.createHook)("validate", { input });
|
|
14
|
+
(0, workflows_sdk_1.when)("validate-product-variant-exists", input, ({ applicable_product_variant_ids }) => !!applicable_product_variant_ids).then(() => {
|
|
15
|
+
return (0, validate_product_variant_exists_1.validateProductVariantExists)({
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
product_variant_id: input.applicable_product_variant_ids,
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
(0, workflows_sdk_1.when)("validate-category-exists", input, ({ applicable_category_ids }) => !!applicable_category_ids).then(() => {
|
|
21
|
+
return (0, validate_product_category_exists_1.validateProductCategoryExists)({
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
product_category_id: input.applicable_category_ids,
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
const samePrefixRuleExists = (0, validate_same_prefix_rule_exists_1.validateSamePrefixRuleExists)({
|
|
27
|
+
prefix: input.prefix,
|
|
28
|
+
});
|
|
29
|
+
(0, workflows_sdk_1.when)("check-if-same-prefix-rule-exists", samePrefixRuleExists, (exists) => exists).then(() => {
|
|
30
|
+
(0, throw_error_step_1.throwErrorStep)({
|
|
31
|
+
errorMessage: `Discount price rule with prefix already exists`,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
const discountPriceRule = (0, create_discount_price_rule_step_1.createDiscountPriceRuleStep)(input);
|
|
35
|
+
const ruleCreated = (0, workflows_sdk_1.createHook)("ruleCreated", {
|
|
36
|
+
priceRuleId: discountPriceRule.id,
|
|
37
|
+
});
|
|
38
|
+
(0, add_bulk_codes_to_rule_1.addBulkCodesToRuleStep)({
|
|
39
|
+
priceRuleId: discountPriceRule.id,
|
|
40
|
+
codeCountToAdd: input.count,
|
|
41
|
+
});
|
|
42
|
+
return new workflows_sdk_1.WorkflowResponse(discountPriceRule, {
|
|
43
|
+
hooks: [validate, ruleCreated],
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2NyZWF0ZS1idWxrLWRpc2NvdW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUsyQztBQUkzQywyR0FBcUc7QUFDckcseUdBQW1HO0FBQ25HLG1FQUE4RDtBQUM5RCx5SEFBa0g7QUFDbEgsZ0dBQXlGO0FBQ3pGLDJFQUF3RTtBQUUzRCxRQUFBLDBCQUEwQixHQUFHLElBQUEsOEJBQWMsRUFDdEQsc0JBQXNCLEVBQ3RCLENBQUMsS0FBeUMsRUFBRSxFQUFFO0lBQzVDLDBGQUEwRjtJQUMxRixNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFVLEVBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUVuRCxJQUFBLG9CQUFJLEVBQ0YsaUNBQWlDLEVBQ2pDLEtBQUssRUFDTCxDQUFDLEVBQUUsOEJBQThCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUN6RSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVixPQUFPLElBQUEsOERBQTRCLEVBQUM7WUFDbEMsYUFBYTtZQUNiLGtCQUFrQixFQUFFLEtBQUssQ0FBQyw4QkFBOEI7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLG9CQUFJLEVBQ0YsMEJBQTBCLEVBQzFCLEtBQUssRUFDTCxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUMzRCxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVixPQUFPLElBQUEsZ0VBQTZCLEVBQUM7WUFDbkMsYUFBYTtZQUNiLG1CQUFtQixFQUFFLEtBQUssQ0FBQyx1QkFBdUI7U0FDbkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLG9CQUFvQixHQUFHLElBQUEsK0RBQTRCLEVBQUM7UUFDeEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO0tBQ3JCLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQUksRUFDRixrQ0FBa0MsRUFDbEMsb0JBQW9CLEVBQ3BCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQ25CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLElBQUEsaUNBQWMsRUFBQztZQUNiLFlBQVksRUFBRSxnREFBZ0Q7U0FDL0QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGlCQUFpQixHQUFHLElBQUEsNkRBQTJCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0QsTUFBTSxXQUFXLEdBQUcsSUFBQSwwQkFBVSxFQUFDLGFBQWEsRUFBRTtRQUM1QyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsRUFBRTtLQUNsQyxDQUFDLENBQUM7SUFFSCxJQUFBLCtDQUFzQixFQUFDO1FBQ3JCLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO1FBQ2pDLGNBQWMsRUFBRSxLQUFLLENBQUMsS0FBSztLQUM1QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksZ0NBQWdCLENBQUMsaUJBQWlCLEVBQUU7UUFDN0MsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBVTtLQUN4QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
|
package/.medusa/server/src/workflows/discount/create-bulk-discount/steps/add-bulk-codes-to-rule.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addBulkCodesToRuleStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const discounts_1 = require("../../../../modules/discounts");
|
|
7
|
+
exports.addBulkCodesToRuleStep = (0, workflows_sdk_1.createStep)({ name: "add-bulk-codes-to-rule", async: true, backgroundExecution: true }, async (input, { container }) => {
|
|
8
|
+
const { priceRuleId, codeCountToAdd } = input;
|
|
9
|
+
const discountService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
10
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
12
|
+
const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
|
|
13
|
+
const { data: [priceRule], } = await query.graph({
|
|
14
|
+
entity: "discount_price_rule",
|
|
15
|
+
fields: ["id", "prefix", "code_count"],
|
|
16
|
+
filters: { id: priceRuleId },
|
|
17
|
+
});
|
|
18
|
+
logger.info(`Adding ${codeCountToAdd} codes to price rule ${priceRuleId}`);
|
|
19
|
+
if (!priceRule) {
|
|
20
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Price rule with id ${priceRuleId} not found`);
|
|
21
|
+
}
|
|
22
|
+
const prefix = priceRule.prefix;
|
|
23
|
+
logger.info(`Prefix: ${prefix}`);
|
|
24
|
+
if (!prefix) {
|
|
25
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Price rule does not have a prefix");
|
|
26
|
+
}
|
|
27
|
+
// Get the current code count as offset
|
|
28
|
+
const offset = priceRule.code_count || 0;
|
|
29
|
+
logger.info(`Offset: ${offset}`);
|
|
30
|
+
// Calculate the max length needed for the numeric part based on total codes
|
|
31
|
+
const maxLength = String(codeCountToAdd + offset).length;
|
|
32
|
+
logger.info(`Max length: ${maxLength}`);
|
|
33
|
+
// Generate and add codes in batches
|
|
34
|
+
const batchSize = 1000;
|
|
35
|
+
const batches = Math.ceil(codeCountToAdd / batchSize);
|
|
36
|
+
const createdCodes = [];
|
|
37
|
+
logger.info(`Batch size: ${batchSize}`);
|
|
38
|
+
console.time("addBulkCodesToRuleStep");
|
|
39
|
+
for (let batchIndex = 0; batchIndex < batches; batchIndex++) {
|
|
40
|
+
const batchCount = Math.min(batchSize, codeCountToAdd - batchIndex * batchSize);
|
|
41
|
+
const batchCodes = [];
|
|
42
|
+
console.time(`batch-${batchIndex}-generate-whole`);
|
|
43
|
+
// Generate codes for this batch
|
|
44
|
+
console.time(`batch-${batchIndex}-generate`);
|
|
45
|
+
for (let i = 0; i < batchCount; i++) {
|
|
46
|
+
const index = offset + batchIndex * batchSize + i + 1;
|
|
47
|
+
const code = `${prefix.toUpperCase()}${generateRandomAlphaNumeric(4)}${String(index).padStart(maxLength, "0")}`;
|
|
48
|
+
batchCodes.push({ code, price_rule_id: priceRuleId });
|
|
49
|
+
}
|
|
50
|
+
console.timeEnd(`batch-${batchIndex}-generate`);
|
|
51
|
+
console.time(`batch-${batchIndex}`);
|
|
52
|
+
// Create the codes in the database
|
|
53
|
+
await discountService.createDiscountCodes(batchCodes);
|
|
54
|
+
// Update the code count after each batch
|
|
55
|
+
await discountService.incrementCodeCount(priceRuleId, batchCount);
|
|
56
|
+
console.timeEnd(`batch-${batchIndex}`);
|
|
57
|
+
console.timeEnd(`batch-${batchIndex}-generate-whole`);
|
|
58
|
+
console.log("\n");
|
|
59
|
+
}
|
|
60
|
+
console.timeEnd("addBulkCodesToRuleStep");
|
|
61
|
+
logger.info(`Created codes: ${createdCodes.length}`);
|
|
62
|
+
await eventBus.emit({
|
|
63
|
+
data: {
|
|
64
|
+
price_rule_id: priceRuleId,
|
|
65
|
+
type: offset === 0 ? "BULK_CODE_CREATION" : "MORE_CODE_ADDITION",
|
|
66
|
+
status: "COMPLETED",
|
|
67
|
+
},
|
|
68
|
+
name: "bulk_discount",
|
|
69
|
+
});
|
|
70
|
+
return new workflows_sdk_1.StepResponse(createdCodes);
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Generates a random string of uppercase letters
|
|
74
|
+
*/
|
|
75
|
+
function generateRandomAlphaNumeric(length) {
|
|
76
|
+
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
77
|
+
let result = "";
|
|
78
|
+
for (let i = 0; i < length; i++) {
|
|
79
|
+
const randomIndex = Math.floor(Math.random() * characters.length);
|
|
80
|
+
result += characters[randomIndex];
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWJ1bGstY29kZXMtdG8tcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvY3JlYXRlLWJ1bGstZGlzY291bnQvc3RlcHMvYWRkLWJ1bGstY29kZXMtdG8tcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFLbUM7QUFDbkMscUVBQTZFO0FBRTdFLDZEQUFnRTtBQVFuRCxRQUFBLHNCQUFzQixHQUFHLElBQUEsMEJBQVUsRUFDOUMsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsRUFDMUUsS0FBSyxFQUFFLEtBQWdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3hDLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTlDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQWtCLDJCQUFlLENBQUMsQ0FBQztJQUM1RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdEQsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUNsQixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUscUJBQXFCO1FBQzdCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVB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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDiscountCodeWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const create_discount_code_step_1 = require("./steps/create-discount-code-step");
|
|
6
|
+
exports.createDiscountCodeWorkflow = (0, workflows_sdk_1.createWorkflow)("create-discount-code", (input) => {
|
|
7
|
+
const discountCode = (0, create_discount_code_step_1.createDiscountCodeStep)(input);
|
|
8
|
+
return new workflows_sdk_1.WorkflowResponse(discountCode);
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2NyZWF0ZS1kaXNjb3VudC1jb2RlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcyQztBQUczQyxpRkFBMkU7QUFFOUQsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDhCQUFjLEVBQ3RELHNCQUFzQixFQUN0QixDQUFDLEtBQXNDLEVBQUUsRUFBRTtJQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFBLGtEQUFzQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRW5ELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDiscountCodeStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const discounts_1 = require("../../../../modules/discounts");
|
|
6
|
+
exports.createDiscountCodeStep = (0, workflows_sdk_1.createStep)("create-discount-code-step", async (input, { container }) => {
|
|
7
|
+
const { code, price_rule_id } = input;
|
|
8
|
+
const discountService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
9
|
+
const discountCode = await discountService.createDiscountCodes({
|
|
10
|
+
price_rule_id,
|
|
11
|
+
code,
|
|
12
|
+
});
|
|
13
|
+
return new workflows_sdk_1.StepResponse(discountCode, discountCode.id);
|
|
14
|
+
}, async (id, { container }) => {
|
|
15
|
+
if (!id)
|
|
16
|
+
return;
|
|
17
|
+
const discountService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
18
|
+
await discountService.deleteDiscountCodes([id]);
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRpc2NvdW50LWNvZGUtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvY3JlYXRlLWRpc2NvdW50LWNvZGUvc3RlcHMvY3JlYXRlLWRpc2NvdW50LWNvZGUtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFHN0UsNkRBQWdFO0FBR25ELFFBQUEsc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUM5QywyQkFBMkIsRUFDM0IsS0FBSyxFQUFFLEtBQXNDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzlELE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRXRDLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQWtCLDJCQUFlLENBQUMsQ0FBQztJQUU1RSxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RCxhQUFhO1FBQ2IsSUFBSTtLQUNMLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSw0QkFBWSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekQsQ0FBQyxFQUNELEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzFCLElBQUksQ0FBQyxFQUFFO1FBQUUsT0FBTztJQUVoQixNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFrQiwyQkFBZSxDQUFDLENBQUM7SUFFNUUsTUFBTSxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FDRixDQUFDIn0=
|