@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
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeCouponStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
exports.removeCouponStep = (0, workflows_sdk_1.createStep)("remove-coupon", async (input, { container }) => {
|
|
6
|
+
const query = container.resolve("query");
|
|
7
|
+
const cartService = container.resolve("cart");
|
|
8
|
+
const { data: cart_line_item_adjustment } = await query.graph({
|
|
9
|
+
entity: "line_item_adjustment",
|
|
10
|
+
fields: ["*"],
|
|
11
|
+
filters: {
|
|
12
|
+
$and: [
|
|
13
|
+
{ item_id: { $in: input.cart.items.map((item) => item.id) } },
|
|
14
|
+
...(input.code ? [{ code: input.code }] : []),
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
await cartService.deleteLineItemAdjustments(cart_line_item_adjustment.map((item) => item.id));
|
|
19
|
+
return new workflows_sdk_1.StepResponse(true, {
|
|
20
|
+
prevData: cart_line_item_adjustment,
|
|
21
|
+
});
|
|
22
|
+
}, async (input, { container }) => {
|
|
23
|
+
const cartService = container.resolve("cart");
|
|
24
|
+
await cartService.addLineItemAdjustments(input.prevData.map((item) => ({
|
|
25
|
+
amount: item.amount,
|
|
26
|
+
code: item.code,
|
|
27
|
+
description: item.description,
|
|
28
|
+
item_id: item.item_id,
|
|
29
|
+
promotion_id: item.promotion_id,
|
|
30
|
+
})));
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWNvdXBvbi1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kaXNjb3VudC9yZW1vdmUtY291cG9uL3N0ZXAvcmVtb3ZlLWNvdXBvbi1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFFQUE2RTtBQUVoRSxRQUFBLGdCQUFnQixHQUFHLElBQUEsMEJBQVUsRUFDeEMsZUFBZSxFQUNmLEtBQUssRUFDSCxLQUdDLEVBQ0QsRUFBRSxTQUFTLEVBQUUsRUFDYixFQUFFO0lBQ0YsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTlDLE1BQU0sRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUQsTUFBTSxFQUFFLHNCQUFzQjtRQUM5QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDYixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDN0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUM5QztTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxXQUFXLENBQUMseUJBQXlCLENBQ3pDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUNqRCxDQUFDO0lBRUYsT0FBTyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFO1FBQzVCLFFBQVEsRUFBRSx5QkFBeUI7S0FDcEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxFQUNELEtBQUssRUFBRSxLQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFOUMsTUFBTSxXQUFXLENBQUMsc0JBQXNCLENBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7UUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtLQUNoQyxDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateCartExists = exports.validateCartExistsStepId = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
exports.validateCartExistsStepId = "validate-cart-exists-step";
|
|
7
|
+
/**
|
|
8
|
+
* This step ensures that the product variants with the specified IDs exist.
|
|
9
|
+
* If not valid, the step will throw an error.
|
|
10
|
+
*/
|
|
11
|
+
exports.validateCartExists = (0, workflows_sdk_1.createStep)(exports.validateCartExistsStepId, async (input, { container }) => {
|
|
12
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
13
|
+
const { data: cart } = await query.graph({
|
|
14
|
+
entity: "cart",
|
|
15
|
+
fields: ["id"],
|
|
16
|
+
filters: { id: input.cart_id },
|
|
17
|
+
});
|
|
18
|
+
if (!cart || cart.length === 0) {
|
|
19
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Cart with id: ${input.cart_id} was not found`);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtY2FydC1leGlzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L3N0ZXBzL3ZhbGlkYXRlLWNhcnQtZXhpc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUdtQztBQUNuQyxxRUFBK0Q7QUFNbEQsUUFBQSx3QkFBd0IsR0FDbkMsMkJBQTJCLENBQUM7QUFFOUI7OztHQUdHO0FBQ1UsUUFBQSxrQkFBa0IsR0FBRyxJQUFBLDBCQUFVLEVBQzFDLGdDQUF3QixFQUN4QixLQUFLLEVBQUUsS0FBa0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDMUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN2QyxNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFO0tBQy9CLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixpQkFBaUIsS0FBSyxDQUFDLE9BQU8sZ0JBQWdCLENBQy9DLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateDiscountCodeExists = exports.validateDiscountCodeExistsStepId = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
exports.validateDiscountCodeExistsStepId = "validate-discount-code-exists-step";
|
|
7
|
+
/**
|
|
8
|
+
* This step ensures that the discount codes with the specified codes exist.
|
|
9
|
+
* Returns found and missing codes in the step response.
|
|
10
|
+
*/
|
|
11
|
+
exports.validateDiscountCodeExists = (0, workflows_sdk_1.createStep)(exports.validateDiscountCodeExistsStepId, async (input, { container }) => {
|
|
12
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
13
|
+
const { data: [discount], } = await query.graph({
|
|
14
|
+
entity: "discount_code",
|
|
15
|
+
fields: ["code"],
|
|
16
|
+
filters: { code: input.code },
|
|
17
|
+
});
|
|
18
|
+
return new workflows_sdk_1.StepResponse(!!discount);
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZGlzY291bnQtY29kZS1leGlzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L3N0ZXBzL3ZhbGlkYXRlLWRpc2NvdW50LWNvZGUtZXhpc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUdtQztBQUNuQyxxRUFBNkU7QUFNaEUsUUFBQSxnQ0FBZ0MsR0FDM0Msb0NBQW9DLENBQUM7QUFFdkM7OztHQUdHO0FBQ1UsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDBCQUFVLEVBQ2xELHdDQUFnQyxFQUNoQyxLQUFLLEVBQUUsS0FBMEMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDbEUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqRSxNQUFNLEVBQ0osSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQ2pCLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNoQixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtLQUM5QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksNEJBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateFreebieCodeExists = exports.validateFreebieCodeExistsStepId = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
exports.validateFreebieCodeExistsStepId = "validate-freebie-code-exists-step";
|
|
7
|
+
exports.validateFreebieCodeExists = (0, workflows_sdk_1.createStep)(exports.validateFreebieCodeExistsStepId, async (input, { container }) => {
|
|
8
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
9
|
+
const { data: [freebieCode], } = await query.graph({
|
|
10
|
+
entity: "freebie_rule",
|
|
11
|
+
fields: ["id"],
|
|
12
|
+
filters: { code: input.code },
|
|
13
|
+
});
|
|
14
|
+
return new workflows_sdk_1.StepResponse(!!freebieCode);
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZnJlZWJpZS1jb2RlLWV4aXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvc3RlcHMvdmFsaWRhdGUtZnJlZWJpZS1jb2RlLWV4aXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBc0U7QUFDdEUscUVBQTZFO0FBTWhFLFFBQUEsK0JBQStCLEdBQzFDLG1DQUFtQyxDQUFDO0FBRXpCLFFBQUEseUJBQXlCLEdBQUcsSUFBQSwwQkFBVSxFQUNqRCx1Q0FBK0IsRUFDL0IsS0FBSyxFQUFFLEtBQXlDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakUsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUNwQixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsY0FBYztRQUN0QixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDZCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtLQUM5QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksNEJBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateSamePrefixRuleExists = exports.validateSamePrefixRuleExistanceExistsStepId = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
exports.validateSamePrefixRuleExistanceExistsStepId = "validate-same-prefix-rule-exists-step";
|
|
7
|
+
/**
|
|
8
|
+
* This step ensures that the discount codes with the specified codes exist.
|
|
9
|
+
* Returns found and missing codes in the step response.
|
|
10
|
+
*/
|
|
11
|
+
exports.validateSamePrefixRuleExists = (0, workflows_sdk_1.createStep)(exports.validateSamePrefixRuleExistanceExistsStepId, async (input, { container }) => {
|
|
12
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
13
|
+
const { data: [priceRule], } = await query.graph({
|
|
14
|
+
entity: "discount_price_rule",
|
|
15
|
+
fields: ["prefix"],
|
|
16
|
+
filters: { prefix: input.prefix },
|
|
17
|
+
});
|
|
18
|
+
return new workflows_sdk_1.StepResponse(!!priceRule);
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtc2FtZS1wcmVmaXgtcnVsZS1leGlzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L3N0ZXBzL3ZhbGlkYXRlLXNhbWUtcHJlZml4LXJ1bGUtZXhpc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFzRTtBQUN0RSxxRUFBNkU7QUFNaEUsUUFBQSwyQ0FBMkMsR0FDdEQsdUNBQXVDLENBQUM7QUFFMUM7OztHQUdHO0FBQ1UsUUFBQSw0QkFBNEIsR0FBRyxJQUFBLDBCQUFVLEVBQ3BELG1EQUEyQyxFQUMzQyxLQUFLLEVBQUUsS0FBNEMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDcEUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqRSxNQUFNLEVBQ0osSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQ2xCLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxxQkFBcUI7UUFDN0IsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO0tBQ2xDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSw0QkFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateDiscountPriceRuleWorkflow = 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 update_discount_price_rule_step_1 = require("./steps/update-discount-price-rule-step");
|
|
8
|
+
const validate_discount_price_rule_update_step_1 = require("./steps/validate-discount-price-rule-update-step");
|
|
9
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
10
|
+
const validate_customer_exists_1 = require("../create-discount-price-rule/steps/validate-customer-exists");
|
|
11
|
+
exports.updateDiscountPriceRuleWorkflow = (0, workflows_sdk_1.createWorkflow)("update-discount-price-rule", (input) => {
|
|
12
|
+
const validate = (0, workflows_sdk_1.createHook)("validate", { input });
|
|
13
|
+
(0, validate_discount_price_rule_update_step_1.validateDiscountPriceRuleUpdateStep)(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
|
+
(0, workflows_sdk_1.when)("validate-customer-exists", input, ({ applicable_customer_ids }) => !!applicable_customer_ids).then(() => {
|
|
27
|
+
return (0, validate_customer_exists_1.validateCustomerExists)({
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
customer_id: input.applicable_customer_ids,
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
const discountPriceRule = (0, update_discount_price_rule_step_1.updateDiscountPriceRuleStep)(input);
|
|
33
|
+
const { data: discountPriceRuleData } = (0, core_flows_1.useQueryGraphStep)({
|
|
34
|
+
entity: "discount_price_rule",
|
|
35
|
+
fields: ["*", "discount_codes.*"],
|
|
36
|
+
filters: {
|
|
37
|
+
id: discountPriceRule.id,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
return new workflows_sdk_1.WorkflowResponse(discountPriceRuleData);
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L3VwZGF0ZS1kaXNjb3VudC1wcmljZS1ydWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUsyQztBQUczQywyR0FBcUc7QUFDckcseUdBQW1HO0FBQ25HLDZGQUFzRjtBQUN0RiwrR0FBdUc7QUFDdkcsNERBQWdFO0FBQ2hFLDJHQUFzRztBQUV6RixRQUFBLCtCQUErQixHQUFHLElBQUEsOEJBQWMsRUFDM0QsNEJBQTRCLEVBQzVCLENBQUMsS0FBd0QsRUFBRSxFQUFFO0lBQzNELE1BQU0sUUFBUSxHQUFHLElBQUEsMEJBQVUsRUFBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRW5ELElBQUEsOEVBQW1DLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFFM0MsSUFBQSxvQkFBSSxFQUNGLGlDQUFpQyxFQUNqQyxLQUFLLEVBQ0wsQ0FBQyxFQUFFLDhCQUE4QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FDekUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLDhEQUE0QixFQUFDO1lBQ2xDLGFBQWE7WUFDYixrQkFBa0IsRUFBRSxLQUFLLENBQUMsOEJBQThCO1NBQ3pELENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxvQkFBSSxFQUNGLDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FDM0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLGdFQUE2QixFQUFDO1lBQ25DLGFBQWE7WUFDYixtQkFBbUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1NBQ25ELENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxvQkFBSSxFQUNGLDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FDM0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLGlEQUFzQixFQUFDO1lBQzVCLGFBQWE7WUFDYixXQUFXLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtTQUMzQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBQSw2REFBMkIsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUU3RCxNQUFNLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN4RCxNQUFNLEVBQUUscUJBQXFCO1FBQzdCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQztRQUNqQyxPQUFPLEVBQUU7WUFDUCxFQUFFLEVBQUUsaUJBQWlCLENBQUMsRUFBRTtTQUN6QjtLQUNGLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,160 @@
|
|
|
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.updateDiscountPriceRuleStep = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
9
|
+
const mtm_price_rule_with_products_categories_1 = __importDefault(require("../../../../links/mtm-price-rule-with-products-categories"));
|
|
10
|
+
const mtm_price_rule_with_products_variants_1 = __importDefault(require("../../../../links/mtm-price-rule-with-products-variants"));
|
|
11
|
+
const mtm_price_rule_with_customers_1 = __importDefault(require("../../../../links/mtm-price-rule-with-customers"));
|
|
12
|
+
const discounts_1 = require("../../../../modules/discounts");
|
|
13
|
+
exports.updateDiscountPriceRuleStep = (0, workflows_sdk_1.createStep)("update-discount-price-rule", async (input, { container }) => {
|
|
14
|
+
const { id, is_active, ...updateData } = input;
|
|
15
|
+
const discountPriceRuleService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
16
|
+
const previousData = await discountPriceRuleService.retrieveDiscountPriceRule(id);
|
|
17
|
+
// Update status based on dates if provided
|
|
18
|
+
let status = "ACTIVE";
|
|
19
|
+
const query = container.resolve("query");
|
|
20
|
+
const now = new Date();
|
|
21
|
+
const startsAt = updateData.starts_at
|
|
22
|
+
? new Date(updateData.starts_at)
|
|
23
|
+
: previousData.starts_at;
|
|
24
|
+
const endsAt = updateData.ends_at
|
|
25
|
+
? new Date(updateData.ends_at)
|
|
26
|
+
: previousData.ends_at;
|
|
27
|
+
if (is_active === false)
|
|
28
|
+
status = "DEACTIVATED";
|
|
29
|
+
else if (endsAt && endsAt < now)
|
|
30
|
+
status = "EXPIRED";
|
|
31
|
+
else if (startsAt > now)
|
|
32
|
+
status = "SCHEDULED";
|
|
33
|
+
// Format dates if provided
|
|
34
|
+
const formattedData = {
|
|
35
|
+
id,
|
|
36
|
+
...updateData,
|
|
37
|
+
starts_at: updateData.starts_at
|
|
38
|
+
? new Date(updateData.starts_at)
|
|
39
|
+
: previousData.starts_at,
|
|
40
|
+
ends_at: updateData.ends_at !== undefined
|
|
41
|
+
? updateData.ends_at
|
|
42
|
+
? new Date(updateData.ends_at)
|
|
43
|
+
: null
|
|
44
|
+
: previousData.ends_at,
|
|
45
|
+
...(status && { status }),
|
|
46
|
+
};
|
|
47
|
+
const updatedDiscountPriceRule = await discountPriceRuleService.updateDiscountPriceRules(formattedData);
|
|
48
|
+
// 1. get all previous links in case we need to restore
|
|
49
|
+
const { data: previousProductVariantLinks } = await query.graph({
|
|
50
|
+
entity: mtm_price_rule_with_products_variants_1.default.entryPoint,
|
|
51
|
+
fields: ["*"],
|
|
52
|
+
filters: { discount_price_rule_id: id },
|
|
53
|
+
});
|
|
54
|
+
const { data: previousPriceRuleProductCategoryLinks } = await query.graph({
|
|
55
|
+
entity: mtm_price_rule_with_products_categories_1.default.entryPoint,
|
|
56
|
+
fields: ["*"],
|
|
57
|
+
filters: { discount_price_rule_id: id },
|
|
58
|
+
});
|
|
59
|
+
const { data: previousCustomerLinks } = await query.graph({
|
|
60
|
+
entity: mtm_price_rule_with_customers_1.default.entryPoint,
|
|
61
|
+
fields: ["*"],
|
|
62
|
+
filters: { discount_price_rule_id: id },
|
|
63
|
+
});
|
|
64
|
+
// calculate links to be deleted for both
|
|
65
|
+
const link = container.resolve("link");
|
|
66
|
+
if (Array.isArray(updateData.applicable_product_variant_ids)) {
|
|
67
|
+
const existingVariantIds = previousProductVariantLinks.map((link) => link.product_variant_id);
|
|
68
|
+
const newVariantIds = updateData.applicable_product_variant_ids;
|
|
69
|
+
// 1) figure out which links to delete
|
|
70
|
+
const variantIdsToDelete = existingVariantIds.filter((id) => !newVariantIds.includes(id));
|
|
71
|
+
if (variantIdsToDelete.length > 0) {
|
|
72
|
+
await link.dismiss(variantIdsToDelete.map((variantId) => ({
|
|
73
|
+
[discounts_1.DISCOUNT_MODULE]: {
|
|
74
|
+
discount_price_rule_id: updatedDiscountPriceRule.id,
|
|
75
|
+
},
|
|
76
|
+
[utils_1.Modules.PRODUCT]: { product_variant_id: variantId },
|
|
77
|
+
})));
|
|
78
|
+
}
|
|
79
|
+
// 2) figure out which new links to create
|
|
80
|
+
const variantIdsToCreate = newVariantIds.filter((id) => !existingVariantIds.includes(id));
|
|
81
|
+
if (variantIdsToCreate.length > 0) {
|
|
82
|
+
await link.create(variantIdsToCreate.map((variantId) => ({
|
|
83
|
+
[discounts_1.DISCOUNT_MODULE]: {
|
|
84
|
+
discount_price_rule_id: updatedDiscountPriceRule.id,
|
|
85
|
+
},
|
|
86
|
+
[utils_1.Modules.PRODUCT]: { product_variant_id: variantId },
|
|
87
|
+
})));
|
|
88
|
+
}
|
|
89
|
+
// if we are creating for variant then delete all category links
|
|
90
|
+
await link.dismiss(previousPriceRuleProductCategoryLinks.map(({ product_category_id }) => ({
|
|
91
|
+
[discounts_1.DISCOUNT_MODULE]: {
|
|
92
|
+
discount_price_rule_id: updatedDiscountPriceRule.id,
|
|
93
|
+
},
|
|
94
|
+
[utils_1.Modules.PRODUCT]: { product_category_id },
|
|
95
|
+
})));
|
|
96
|
+
}
|
|
97
|
+
// For product categories
|
|
98
|
+
// only proceed if the client sent us an array of category IDs
|
|
99
|
+
if (Array.isArray(updateData.applicable_category_ids)) {
|
|
100
|
+
const existingCategoryIds = previousPriceRuleProductCategoryLinks.map((link) => link.product_category_id);
|
|
101
|
+
const newCategoryIds = updateData.applicable_category_ids;
|
|
102
|
+
// 1) Delete removed links
|
|
103
|
+
const categoryIdsToDelete = existingCategoryIds.filter((id) => !newCategoryIds.includes(id));
|
|
104
|
+
if (categoryIdsToDelete.length > 0) {
|
|
105
|
+
await link.dismiss(categoryIdsToDelete.map((categoryId) => ({
|
|
106
|
+
[discounts_1.DISCOUNT_MODULE]: {
|
|
107
|
+
discount_price_rule_id: updatedDiscountPriceRule.id,
|
|
108
|
+
},
|
|
109
|
+
[utils_1.Modules.PRODUCT]: { product_category_id: categoryId },
|
|
110
|
+
})));
|
|
111
|
+
}
|
|
112
|
+
// 2) Create new links
|
|
113
|
+
const categoryIdsToCreate = newCategoryIds.filter((id) => !existingCategoryIds.includes(id));
|
|
114
|
+
if (categoryIdsToCreate.length > 0) {
|
|
115
|
+
await link.create(categoryIdsToCreate.map((categoryId) => ({
|
|
116
|
+
[discounts_1.DISCOUNT_MODULE]: {
|
|
117
|
+
discount_price_rule_id: updatedDiscountPriceRule.id,
|
|
118
|
+
},
|
|
119
|
+
[utils_1.Modules.PRODUCT]: { product_category_id: categoryId },
|
|
120
|
+
})));
|
|
121
|
+
}
|
|
122
|
+
// 3) Remove all variant links if categories are set
|
|
123
|
+
await link.dismiss(previousProductVariantLinks.map(({ product_variant_id }) => ({
|
|
124
|
+
[discounts_1.DISCOUNT_MODULE]: {
|
|
125
|
+
discount_price_rule_id: updatedDiscountPriceRule.id,
|
|
126
|
+
},
|
|
127
|
+
[utils_1.Modules.PRODUCT]: { product_variant_id },
|
|
128
|
+
})));
|
|
129
|
+
}
|
|
130
|
+
//For customers
|
|
131
|
+
if (Array.isArray(updateData.applicable_customer_ids)) {
|
|
132
|
+
const existingCustomerIds = previousCustomerLinks.map((link) => link.customer_id);
|
|
133
|
+
const newCustomerIds = updateData.applicable_customer_ids;
|
|
134
|
+
// 1) Delete removed links
|
|
135
|
+
const customerIdsToDelete = existingCustomerIds.filter((id) => !newCustomerIds.includes(id));
|
|
136
|
+
if (customerIdsToDelete.length > 0) {
|
|
137
|
+
await link.dismiss(customerIdsToDelete.map((customerId) => ({
|
|
138
|
+
[discounts_1.DISCOUNT_MODULE]: { discount_price_rule_id: updatedDiscountPriceRule.id },
|
|
139
|
+
[utils_1.Modules.CUSTOMER]: { customer_id: customerId },
|
|
140
|
+
})));
|
|
141
|
+
}
|
|
142
|
+
// 2) Create new links
|
|
143
|
+
const customerIdsToCreate = newCustomerIds.filter((id) => !existingCustomerIds.includes(id));
|
|
144
|
+
if (customerIdsToCreate.length > 0) {
|
|
145
|
+
await link.create(customerIdsToCreate.map((customerId) => ({
|
|
146
|
+
[discounts_1.DISCOUNT_MODULE]: { discount_price_rule_id: updatedDiscountPriceRule.id },
|
|
147
|
+
[utils_1.Modules.CUSTOMER]: { customer_id: customerId },
|
|
148
|
+
})));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const { discount_codes, ...rollbackTo } = previousData;
|
|
152
|
+
return new workflows_sdk_1.StepResponse(updatedDiscountPriceRule, { rollbackTo, id });
|
|
153
|
+
}, async (input, { container }) => {
|
|
154
|
+
if (!input?.id)
|
|
155
|
+
return;
|
|
156
|
+
const discountPriceRuleService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
157
|
+
// Restore the previous state of the discount price rule
|
|
158
|
+
await discountPriceRuleService.updateDiscountPriceRules(input.rollbackTo);
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvdXBkYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUvc3RlcHMvdXBkYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBb0Q7QUFDcEQscUVBQTZFO0FBRzdFLHdJQUFxRztBQUNyRyxvSUFBa0c7QUFDbEcsb0hBQW9GO0FBQ3BGLDZEQUFnRTtBQUduRCxRQUFBLDJCQUEyQixHQUFHLElBQUEsMEJBQVUsRUFDbkQsNEJBQTRCLEVBQzVCLEtBQUssRUFDSCxLQUF3RCxFQUN4RCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUUvQyxNQUFNLHdCQUF3QixHQUM1QixTQUFTLENBQUMsT0FBTyxDQUFrQiwyQkFBZSxDQUFDLENBQUM7SUFFdEQsTUFBTSxZQUFZLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFL0QsMkNBQTJDO0lBQzNDLElBQUksTUFBTSxHQUF1RCxRQUFRLENBQUM7SUFFMUUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxTQUFTO1FBQ25DLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQzNCLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPO1FB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
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateDiscountPriceRuleUpdateStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const validators_1 = require("../../../../api/admin/discounts/validators");
|
|
7
|
+
exports.validateDiscountPriceRuleUpdateStep = (0, workflows_sdk_1.createStep)("validate-discount-price-rule-update", async (input, { container }) => {
|
|
8
|
+
const { id, ...updateData } = input;
|
|
9
|
+
const errors = [];
|
|
10
|
+
// Get existing discount price rule to merge with update data
|
|
11
|
+
const query = container.resolve("query");
|
|
12
|
+
const { data: [existingRule], } = await query.graph({
|
|
13
|
+
entity: "discount_price_rule",
|
|
14
|
+
fields: [
|
|
15
|
+
"*",
|
|
16
|
+
"product_categories.*",
|
|
17
|
+
"product_variants.*",
|
|
18
|
+
"product_categories.products.id",
|
|
19
|
+
],
|
|
20
|
+
filters: { id },
|
|
21
|
+
});
|
|
22
|
+
if (!existingRule) {
|
|
23
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Discount price rule with id ${id} not found`);
|
|
24
|
+
}
|
|
25
|
+
// Merge existing data with update data for validation
|
|
26
|
+
const mergedData = {
|
|
27
|
+
...existingRule,
|
|
28
|
+
...updateData,
|
|
29
|
+
};
|
|
30
|
+
// Apply validation rules from superRefine
|
|
31
|
+
// 1. Check usage_limit_per_customer validation
|
|
32
|
+
if (mergedData.usage_limit_per_customer_type ===
|
|
33
|
+
validators_1.DiscountUsageLimitPerCustomerType.Values.SPECIFIC &&
|
|
34
|
+
(mergedData.usage_limit_per_customer_specific == null ||
|
|
35
|
+
mergedData.usage_limit_per_customer_specific == undefined)) {
|
|
36
|
+
errors.push({
|
|
37
|
+
path: ["usage_limit_per_customer_specific"],
|
|
38
|
+
message: "usage_limit_per_customer_specific is required when usage_limit_per_customer_type is SPECIFIC",
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// 2. Check discount type-specific required fields
|
|
42
|
+
if (mergedData.type === validators_1.DiscountType.Values.FIXED &&
|
|
43
|
+
(mergedData.get_flat_discount == null ||
|
|
44
|
+
mergedData.get_flat_discount == undefined)) {
|
|
45
|
+
errors.push({
|
|
46
|
+
path: ["get_flat_discount"],
|
|
47
|
+
message: "get_flat_discount is required for FIXED discount type",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (mergedData.type === validators_1.DiscountType.Values.PERCENTAGE) {
|
|
51
|
+
if (mergedData.get_percent == null ||
|
|
52
|
+
mergedData.get_percent > 100 ||
|
|
53
|
+
mergedData.get_percent < 0) {
|
|
54
|
+
errors.push({
|
|
55
|
+
path: ["get_percent"],
|
|
56
|
+
message: "get_percent is required for PERCENTAGE discount type and must be between 0-100",
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 3. Check date validation
|
|
61
|
+
if (mergedData.ends_at &&
|
|
62
|
+
mergedData.starts_at &&
|
|
63
|
+
new Date(mergedData.ends_at) <= new Date(mergedData.starts_at)) {
|
|
64
|
+
errors.push({
|
|
65
|
+
path: ["ends_at"],
|
|
66
|
+
message: "ends_at must be later than starts_at",
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// 4. Check BXGY validation
|
|
70
|
+
if (mergedData.type === validators_1.DiscountType.Values.BXGY) {
|
|
71
|
+
if (mergedData.buy_x == null || mergedData.get_y == null) {
|
|
72
|
+
errors.push({
|
|
73
|
+
path: ["buy_x"],
|
|
74
|
+
message: "buy_x and get_y are required for BXGY discounts",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// ── New: Validate any explicitly provided cart‐limit type ──
|
|
79
|
+
if (updateData.usage_limit_per_cart_type !== undefined) {
|
|
80
|
+
// For PERCENTAGE, only ONLY_ONCE is allowed
|
|
81
|
+
if (mergedData.type === validators_1.DiscountType.Values.PERCENTAGE &&
|
|
82
|
+
updateData.usage_limit_per_cart_type !==
|
|
83
|
+
validators_1.DiscountUsageLimitPerCartType.Values.ONLY_ONCE) {
|
|
84
|
+
errors.push({
|
|
85
|
+
path: ["usage_limit_per_cart_type"],
|
|
86
|
+
message: "For PERCENTAGE discounts, usage_limit_per_cart_type can only be ONLY_ONCE",
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// For FIXED, BXGY, BXAY: anything in the enum is OK, so no error
|
|
90
|
+
// For any future or unexpected types, you may want to disallow entirely:
|
|
91
|
+
if (![
|
|
92
|
+
validators_1.DiscountType.Values.FIXED,
|
|
93
|
+
validators_1.DiscountType.Values.PERCENTAGE,
|
|
94
|
+
validators_1.DiscountType.Values.BXGY,
|
|
95
|
+
validators_1.DiscountType.Values.BXAY,
|
|
96
|
+
].includes(mergedData.type)) {
|
|
97
|
+
errors.push({
|
|
98
|
+
path: ["usage_limit_per_cart_type"],
|
|
99
|
+
message: `usage_limit_per_cart_type is not valid for discount type ${mergedData.type}`,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// ── Then continue with your existing SPECIFIC ⇒ require specific‐count check ──
|
|
104
|
+
if (mergedData.usage_limit_per_cart_type ===
|
|
105
|
+
validators_1.DiscountUsageLimitPerCartType.Values.SPECIFIC &&
|
|
106
|
+
(mergedData.usage_limit_per_cart_specific == null ||
|
|
107
|
+
mergedData.usage_limit_per_cart_specific == undefined)) {
|
|
108
|
+
errors.push({
|
|
109
|
+
path: ["usage_limit_per_cart_specific"],
|
|
110
|
+
message: "usage_limit_per_cart_specific is required when usage_limit_per_cart_type is SPECIFIC",
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// 5. Check product vs category scope
|
|
114
|
+
if (updateData.applicable_product_variant_ids?.length &&
|
|
115
|
+
updateData.applicable_category_ids?.length) {
|
|
116
|
+
errors.push({
|
|
117
|
+
path: ["applicable_product_variant_ids", "applicable_category_ids"],
|
|
118
|
+
message: "You should provide either applicable_product_variant_ids or applicable_category_ids",
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// 7. Check min/max values
|
|
122
|
+
if (mergedData.min_order_value != null && mergedData.min_order_value < 0) {
|
|
123
|
+
errors.push({
|
|
124
|
+
path: ["min_order_value"],
|
|
125
|
+
message: "min_order_value cannot be negative",
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
// 8. Check mutual exclusivity of value fields per discount type
|
|
129
|
+
if (mergedData.type === validators_1.DiscountType.Values.FIXED) {
|
|
130
|
+
["get_percent", "buy_x", "get_y", "at_y"].forEach((fld) => {
|
|
131
|
+
if (mergedData[fld] != null) {
|
|
132
|
+
errors.push({
|
|
133
|
+
path: [fld],
|
|
134
|
+
message: `${fld} must be null when discount type is FIXED`,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (mergedData.type === validators_1.DiscountType.Values.PERCENTAGE) {
|
|
140
|
+
["get_flat_discount", "buy_x", "get_y", "at_y"].forEach((fld) => {
|
|
141
|
+
if (mergedData[fld] != null) {
|
|
142
|
+
errors.push({
|
|
143
|
+
path: [fld],
|
|
144
|
+
message: `${fld} must be null when discount type is PERCENTAGE`,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (mergedData.type === validators_1.DiscountType.Values.BXGY) {
|
|
150
|
+
["get_percent", "get_flat_discount", "at_y"].forEach((fld) => {
|
|
151
|
+
if (mergedData[fld] != null) {
|
|
152
|
+
errors.push({
|
|
153
|
+
path: [fld],
|
|
154
|
+
message: `${fld} must be null when discount type is BXGY`,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (mergedData.type === validators_1.DiscountType.Values.BXAY) {
|
|
160
|
+
["get_percent", "get_flat_discount", "get_y"].forEach((fld) => {
|
|
161
|
+
if (mergedData[fld] != null) {
|
|
162
|
+
errors.push({
|
|
163
|
+
path: [fld],
|
|
164
|
+
message: `${fld} must be null when discount type is BXAY`,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
// If there are validation errors, throw an error with all the messages
|
|
170
|
+
if (errors.length > 0) {
|
|
171
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, errors.map((e) => `${e.path.join(".")}: ${e.message}`).join("; "));
|
|
172
|
+
}
|
|
173
|
+
return new workflows_sdk_1.StepResponse(true);
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZGlzY291bnQtcHJpY2UtcnVsZS11cGRhdGUtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvdXBkYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUvc3RlcHMvdmFsaWRhdGUtZGlzY291bnQtcHJpY2UtcnVsZS11cGRhdGUtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBd0Q7QUFDeEQscUVBQTZFO0FBRTdFLDJFQUtvRDtBQU12QyxRQUFBLG1DQUFtQyxHQUFHLElBQUEsMEJBQVUsRUFDM0QscUNBQXFDLEVBQ3JDLEtBQUssRUFBRSxLQUEyQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUEwQyxFQUFFLENBQUM7SUFFekQsNkRBQTZEO0lBQzdELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekMsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUNyQixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUscUJBQXFCO1FBQzdCLE1BQU0sRUFBRTtZQUNOLEdBQUc7WUFDSCxzQkFBc0I7WUFDdEIsb0JBQW9CO1lBQ3BCLGdDQUFnQztTQUNqQztRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRTtLQUNoQixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsK0JBQStCLEVBQUUsWUFBWSxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxN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
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateFreebiePriceRuleWorkflow = 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 update_freebie_price_rule_step_1 = require("./steps/update-freebie-price-rule-step");
|
|
8
|
+
const validate_freebie_rule_update_step_1 = require("./steps/validate-freebie-rule-update-step");
|
|
9
|
+
const validate_customer_exists_1 = require("../create-discount-price-rule/steps/validate-customer-exists");
|
|
10
|
+
exports.updateFreebiePriceRuleWorkflow = (0, workflows_sdk_1.createWorkflow)("update-freebie-price-rule", (input) => {
|
|
11
|
+
const validate = (0, workflows_sdk_1.createHook)("validate", { input });
|
|
12
|
+
(0, validate_freebie_rule_update_step_1.validateFreebieRuleUpdateStep)(input);
|
|
13
|
+
(0, workflows_sdk_1.when)("validate-product-variant-exists", input, ({ applicable_product_variant_ids }) => !!applicable_product_variant_ids).then(() => {
|
|
14
|
+
return (0, validate_product_variant_exists_1.validateProductVariantExists)({
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
product_variant_id: input.applicable_product_variant_ids,
|
|
17
|
+
}).config({
|
|
18
|
+
name: "validate-product-variant-exists",
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
(0, workflows_sdk_1.when)("validate-freebie-product-variant-exists", input, ({ freebie_product_variant_ids }) => !!freebie_product_variant_ids).then(() => {
|
|
22
|
+
return (0, validate_product_variant_exists_1.validateProductVariantExists)({
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
product_variant_id: input.freebie_product_variant_ids,
|
|
25
|
+
}).config({
|
|
26
|
+
name: "validate-freebie-product-variant-exists",
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
(0, workflows_sdk_1.when)("validate-category-exists", input, ({ applicable_category_ids }) => !!applicable_category_ids).then(() => {
|
|
30
|
+
return (0, validate_product_category_exists_1.validateProductCategoryExists)({
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
product_category_id: input.applicable_category_ids,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
(0, workflows_sdk_1.when)("validate-customer-exists", input, ({ applicable_customer_ids }) => !!applicable_customer_ids).then(() => {
|
|
36
|
+
return (0, validate_customer_exists_1.validateCustomerExists)({
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
customer_id: input.applicable_customer_ids,
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
const freebieRule = (0, update_freebie_price_rule_step_1.updateFreebiePriceRuleStep)(input);
|
|
42
|
+
return new workflows_sdk_1.WorkflowResponse(freebieRule);
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L3VwZGF0ZS1mcmVlYmllLXByaWNlLXJ1bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzJDO0FBRzNDLDJHQUFxRztBQUNyRyx5R0FBbUc7QUFDbkcsMkZBQW9GO0FBQ3BGLGlHQUEwRjtBQUMxRiwyR0FBc0c7QUFFekYsUUFBQSw4QkFBOEIsR0FBRyxJQUFBLDhCQUFjLEVBQzFELDJCQUEyQixFQUMzQixDQUFDLEtBQXFELEVBQUUsRUFBRTtJQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFVLEVBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUVuRCxJQUFBLGlFQUE2QixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJDLElBQUEsb0JBQUksRUFDRixpQ0FBaUMsRUFDakMsS0FBSyxFQUNMLENBQUMsRUFBRSw4QkFBOEIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQ3pFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBQSw4REFBNEIsRUFBQztZQUNsQyxhQUFhO1lBQ2Isa0JBQWtCLEVBQUUsS0FBSyxDQUFDLDhCQUE4QjtTQUN6RCxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ1IsSUFBSSxFQUFFLGlDQUFpQztTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQUksRUFDRix5Q0FBeUMsRUFDekMsS0FBSyxFQUNMLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQ25FLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBQSw4REFBNEIsRUFBQztZQUNsQyxhQUFhO1lBQ2Isa0JBQWtCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtTQUN0RCxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ1IsSUFBSSxFQUFFLHlDQUF5QztTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQUksRUFDRiwwQkFBMEIsRUFDMUIsS0FBSyxFQUNMLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQzNELENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBQSxnRUFBNkIsRUFBQztZQUNuQyxhQUFhO1lBQ2IsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtTQUNuRCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQUksRUFDRiwwQkFBMEIsRUFDMUIsS0FBSyxFQUNMLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQzNELENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBQSxpREFBc0IsRUFBQztZQUM1QixhQUFhO1lBQ2IsV0FBVyxFQUFFLEtBQUssQ0FBQyx1QkFBdUI7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFBLDJEQUEwQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXRELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQ0YsQ0FBQyJ9
|