@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,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDiscountPriceRuleWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const validate_product_category_exists_1 = require("../../product/steps/validate-product-category-exists");
|
|
7
|
+
const validate_product_variant_exists_1 = require("../../product/steps/validate-product-variant-exists");
|
|
8
|
+
const throw_error_step_1 = require("../../steps/throw-error-step");
|
|
9
|
+
const create_discount_code_step_1 = require("../create-discount-code/steps/create-discount-code-step");
|
|
10
|
+
const validate_discount_code_exists_1 = require("../steps/validate-discount-code-exists");
|
|
11
|
+
const create_discount_price_rule_step_1 = require("./steps/create-discount-price-rule-step");
|
|
12
|
+
const validate_customer_exists_1 = require("./steps/validate-customer-exists");
|
|
13
|
+
exports.createDiscountPriceRuleWorkflow = (0, workflows_sdk_1.createWorkflow)("create-discount-price-rule", (input) => {
|
|
14
|
+
// validate auto_apply count from global config table so that it does not exceed the limit
|
|
15
|
+
const validate = (0, workflows_sdk_1.createHook)("validate", { input });
|
|
16
|
+
// validate applicable_product_variant_ids and applicable_category_ids existence
|
|
17
|
+
(0, workflows_sdk_1.when)("validate-product-variant-exists", input, ({ applicable_product_variant_ids }) => !!applicable_product_variant_ids).then(() => {
|
|
18
|
+
return (0, validate_product_variant_exists_1.validateProductVariantExists)({
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
product_variant_id: input.applicable_product_variant_ids,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
(0, workflows_sdk_1.when)("validate-category-exists", input, ({ applicable_category_ids }) => !!applicable_category_ids).then(() => {
|
|
24
|
+
return (0, validate_product_category_exists_1.validateProductCategoryExists)({
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
product_category_id: input.applicable_category_ids,
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
(0, workflows_sdk_1.when)("validate-customer-exists", input, ({ applicable_customer_ids }) => !!applicable_customer_ids).then(() => {
|
|
30
|
+
return (0, validate_customer_exists_1.validateCustomerExists)({
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
customer_id: input.applicable_customer_ids,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
// code should not repeat
|
|
36
|
+
const doCodeExists = (0, validate_discount_code_exists_1.validateDiscountCodeExists)({ code: input.code });
|
|
37
|
+
(0, workflows_sdk_1.when)("check-if-discount-code-exists", doCodeExists, (exists) => exists).then(() => {
|
|
38
|
+
(0, throw_error_step_1.throwErrorStep)({ errorMessage: `Discount code already exists.` });
|
|
39
|
+
});
|
|
40
|
+
const discountPriceRule = (0, create_discount_price_rule_step_1.createDiscountPriceRuleStep)(input);
|
|
41
|
+
(0, workflows_sdk_1.when)("check-if-we-need-to-create-a-code-too-here", input, ({ code }) => !!code).then(() => {
|
|
42
|
+
return (0, create_discount_code_step_1.createDiscountCodeStep)({
|
|
43
|
+
code: input.code,
|
|
44
|
+
price_rule_id: discountPriceRule.id,
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
const { data: discountPriceRuleData } = (0, core_flows_1.useQueryGraphStep)({
|
|
48
|
+
entity: "discount_price_rule",
|
|
49
|
+
fields: ["*", "discount_codes.*"],
|
|
50
|
+
filters: {
|
|
51
|
+
id: discountPriceRule.id,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
return new workflows_sdk_1.WorkflowResponse(discountPriceRuleData);
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2NyZWF0ZS1kaXNjb3VudC1wcmljZS1ydWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUsyQztBQUUzQyw0REFBZ0U7QUFFaEUsMkdBQXFHO0FBQ3JHLHlHQUFtRztBQUNuRyxtRUFBOEQ7QUFDOUQsdUdBQWlHO0FBQ2pHLDBGQUFvRjtBQUNwRiw2RkFBc0Y7QUFDdEYsK0VBQTBFO0FBRTdELFFBQUEsK0JBQStCLEdBQUcsSUFBQSw4QkFBYyxFQUMzRCw0QkFBNEIsRUFDNUIsQ0FBQyxLQUFxQyxFQUFFLEVBQUU7SUFDeEMsMEZBQTBGO0lBQzFGLE1BQU0sUUFBUSxHQUFHLElBQUEsMEJBQVUsRUFBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRW5ELGdGQUFnRjtJQUVoRixJQUFBLG9CQUFJLEVBQ0YsaUNBQWlDLEVBQ2pDLEtBQUssRUFDTCxDQUFDLEVBQUUsOEJBQThCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUN6RSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVixPQUFPLElBQUEsOERBQTRCLEVBQUM7WUFDbEMsYUFBYTtZQUNiLGtCQUFrQixFQUFFLEtBQUssQ0FBQyw4QkFBOEI7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLG9CQUFJLEVBQ0YsMEJBQTBCLEVBQzFCLEtBQUssRUFDTCxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUMzRCxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVixPQUFPLElBQUEsZ0VBQTZCLEVBQUM7WUFDbkMsYUFBYTtZQUNiLG1CQUFtQixFQUFFLEtBQUssQ0FBQyx1QkFBdUI7U0FDbkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLG9CQUFJLEVBQ0YsMEJBQTBCLEVBQzFCLEtBQUssRUFDTCxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUMzRCxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVixPQUFPLElBQUEsaURBQXNCLEVBQUM7WUFDNUIsY0FBYztZQUNkLFdBQVcsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgseUJBQXlCO0lBQ3pCLE1BQU0sWUFBWSxHQUFHLElBQUEsMERBQTBCLEVBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEUsSUFBQSxvQkFBSSxFQUNGLCtCQUErQixFQUMvQixZQUFZLEVBQ1osQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FDbkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsSUFBQSxpQ0FBYyxFQUFDLEVBQUUsWUFBWSxFQUFFLCtCQUErQixFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBQSw2REFBMkIsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUU3RCxJQUFBLG9CQUFJLEVBQ0YsNENBQTRDLEVBQzVDLEtBQUssRUFDTCxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3JCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBQSxrREFBc0IsRUFBQztZQUM1QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsYUFBYSxFQUFFLGlCQUFpQixDQUFDLEVBQUU7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN4RCxNQUFNLEVBQUUscUJBQXFCO1FBQzdCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQztRQUNqQyxPQUFPLEVBQUU7WUFDUCxFQUFFLEVBQUUsaUJBQWlCLENBQUMsRUFBRTtTQUN6QjtLQUNGLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDiscountPriceRuleStep = 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.createDiscountPriceRuleStep = (0, workflows_sdk_1.createStep)("create-discount-price-rule", async (input, { container }) => {
|
|
8
|
+
// Remove code property if present, as code should not be stored in price rule
|
|
9
|
+
const { count, applicable_category_ids, applicable_product_variant_ids, applicable_customer_ids, ...priceRuleInput } = input;
|
|
10
|
+
const discountPriceRuleService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
11
|
+
let status = "ACTIVE";
|
|
12
|
+
const now = new Date();
|
|
13
|
+
const startsAt = new Date(input.starts_at);
|
|
14
|
+
const endsAt = input.ends_at ? new Date(input.ends_at) : null;
|
|
15
|
+
if (endsAt && endsAt < now)
|
|
16
|
+
status = "EXPIRED";
|
|
17
|
+
else if (startsAt > now)
|
|
18
|
+
status = "SCHEDULED";
|
|
19
|
+
else
|
|
20
|
+
status = "ACTIVE";
|
|
21
|
+
const discountPriceRule = await discountPriceRuleService.createDiscountPriceRules({
|
|
22
|
+
...priceRuleInput,
|
|
23
|
+
ends_at: input.ends_at ? new Date(input.ends_at) : null,
|
|
24
|
+
starts_at: new Date(input.starts_at),
|
|
25
|
+
status,
|
|
26
|
+
code_count: input.prefix ? 0 : 1,
|
|
27
|
+
});
|
|
28
|
+
const link = container.resolve("link");
|
|
29
|
+
if (applicable_category_ids && applicable_category_ids.length) {
|
|
30
|
+
await link.create(applicable_category_ids.map((categoryId) => ({
|
|
31
|
+
[discounts_1.DISCOUNT_MODULE]: { discount_price_rule_id: discountPriceRule.id },
|
|
32
|
+
[utils_1.Modules.PRODUCT]: { product_category_id: categoryId },
|
|
33
|
+
})));
|
|
34
|
+
}
|
|
35
|
+
if (applicable_product_variant_ids &&
|
|
36
|
+
applicable_product_variant_ids.length) {
|
|
37
|
+
await link.create(applicable_product_variant_ids.map((productVariantId) => ({
|
|
38
|
+
[discounts_1.DISCOUNT_MODULE]: { discount_price_rule_id: discountPriceRule.id },
|
|
39
|
+
[utils_1.Modules.PRODUCT]: { product_variant_id: productVariantId },
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
if (applicable_customer_ids &&
|
|
43
|
+
applicable_customer_ids.length) {
|
|
44
|
+
await link.create(applicable_customer_ids.map((customerId) => ({
|
|
45
|
+
[discounts_1.DISCOUNT_MODULE]: { discount_price_rule_id: discountPriceRule.id },
|
|
46
|
+
[utils_1.Modules.CUSTOMER]: { customer_id: customerId },
|
|
47
|
+
})));
|
|
48
|
+
}
|
|
49
|
+
return new workflows_sdk_1.StepResponse(discountPriceRule, discountPriceRule.id);
|
|
50
|
+
}, async (id, { container }) => {
|
|
51
|
+
if (!id)
|
|
52
|
+
return;
|
|
53
|
+
const discountPriceRuleService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
54
|
+
await discountPriceRuleService.deleteDiscountPriceRules([id]);
|
|
55
|
+
const link = container.resolve("link");
|
|
56
|
+
await link.delete({ [discounts_1.DISCOUNT_MODULE]: { discount_price_rule_id: id } });
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvY3JlYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUvc3RlcHMvY3JlYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBb0Q7QUFDcEQscUVBQTZFO0FBRzdFLDZEQUFnRTtBQU9uRCxRQUFBLDJCQUEyQixHQUFHLElBQUEsMEJBQVUsRUFDbkQsNEJBQTRCLEVBQzVCLEtBQUssRUFBRSxLQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4Qyw4RUFBOEU7SUFDOUUsTUFBTSxFQUNKLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QixHQUFHLGNBQWMsRUFDbEIsR0FBRyxLQUFLLENBQUM7SUFFVixNQUFNLHdCQUF3QixHQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLDJCQUFlLENBQUMsQ0FBQztJQUVyQyxJQUFJLE1BQU0sR0FBdUMsUUFBUSxDQUFDO0lBRTFELE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRTlELElBQUksTUFBTSxJQUFJLE1BQU0sR0FBRyxHQUFHO1FBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUMxQyxJQUFJLFFBQVEsR0FBRyxHQUFHO1FBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQzs7UUFDekMsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUV2QixNQUFNLGlCQUFpQixHQUNyQixNQUFNLHdCQUF3QixDQUFDLHdCQUF3QixDQUFDO1FBQ3RELEdBQUcsY0FBYztRQUNqQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ3ZELFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3BDLE1BQU07UUFDTixVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pDLENBQUMsQ0FBQztJQUVMLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkMsSUFBSSx1QkFBdUIsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5RCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQ2YsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsMkJBQWUsQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFO1lBQ25FLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFO1NBQ3ZELENBQUMsQ0FBQyxDQUNKLENBQUM7SUFDSixDQUFDO0lBRUQsSUFDRSw4QkFBOEI7UUFDOUIsOEJBQThCLENBQUMsTUFBTSxFQUNyQyxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUNmLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUMsMkJBQWUsQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFO1lBQ25FLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUU7U0FDNUQsQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxJQUNFLHVCQUF1QjtRQUN2Qix1QkFBdUIsQ0FBQyxNQUFNLEVBQzlCLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQ2YsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsMkJBQWUsQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFO1lBQ25FLENBQUMsZUFBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtTQUNoRCxDQUFDLENBQUMsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLENBQUMsRUFDRCxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUMxQixJQUFJLENBQUMsRUFBRTtRQUFFLE9BQU87SUFFaEIsTUFBTSx3QkFBd0IsR0FDNUIsU0FBUyxDQUFDLE9BQU8sQ0FBa0IsMkJBQWUsQ0FBQyxDQUFDO0lBRXRELE1BQU0sd0JBQXdCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTlELE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQywyQkFBZSxDQUFDLEVBQUUsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateCustomerExists = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
exports.validateCustomerExists = (0, workflows_sdk_1.createStep)('validate-customer-exists', async (input, { container }) => {
|
|
7
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
8
|
+
const customerIds = Array.isArray(input.customer_id)
|
|
9
|
+
? input.customer_id
|
|
10
|
+
: [input.customer_id];
|
|
11
|
+
const { data: customers } = await query.graph({
|
|
12
|
+
entity: "customer",
|
|
13
|
+
fields: ["id"],
|
|
14
|
+
filters: { id: customerIds },
|
|
15
|
+
});
|
|
16
|
+
const diff = customerIds.filter((id) => !customers.some((customer) => customer.id === id));
|
|
17
|
+
if (diff.length > 0) {
|
|
18
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Customers with ids: ${diff.join(", ")} were not found`);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtY3VzdG9tZXItZXhpc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kaXNjb3VudC9jcmVhdGUtZGlzY291bnQtcHJpY2UtcnVsZS9zdGVwcy92YWxpZGF0ZS1jdXN0b21lci1leGlzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQW1GO0FBQ25GLHFFQUErRDtBQU1sRCxRQUFBLHNCQUFzQixHQUFHLElBQUEsMEJBQVUsRUFDNUMsMEJBQTBCLEVBQzFCLEtBQUssRUFBRSxLQUFzQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM1RCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNoRCxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVc7UUFDbkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFCLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzFDLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUU7S0FDL0IsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FDM0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FDNUQsQ0FBQztJQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQix1QkFBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQzFELENBQUM7SUFDTixDQUFDO0FBQ0wsQ0FBQyxDQUNKLENBQUEifQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFreebieRuleWorkflow = 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 create_freebie_rule_step_1 = require("./steps/create-freebie-rule-step");
|
|
8
|
+
const validate_freebie_code_exists_1 = require("../steps/validate-freebie-code-exists");
|
|
9
|
+
const throw_error_step_1 = require("../../steps/throw-error-step");
|
|
10
|
+
const validate_customer_exists_1 = require("../create-discount-price-rule/steps/validate-customer-exists");
|
|
11
|
+
exports.createFreebieRuleWorkflow = (0, workflows_sdk_1.createWorkflow)("create-freebie-rule", (input) => {
|
|
12
|
+
const validate = (0, workflows_sdk_1.createHook)("validate", { 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({ name: "validate-product-variant-exists" });
|
|
18
|
+
});
|
|
19
|
+
(0, workflows_sdk_1.when)("validate-freebie-product-variant-exists", input, ({ freebie_product_variant_ids }) => !!freebie_product_variant_ids).then(() => {
|
|
20
|
+
return (0, validate_product_variant_exists_1.validateProductVariantExists)({
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
product_variant_id: input.freebie_product_variant_ids,
|
|
23
|
+
}).config({ name: "validate-freebie-product-variant-exists" });
|
|
24
|
+
});
|
|
25
|
+
(0, workflows_sdk_1.when)("validate-category-exists", input, ({ applicable_category_ids }) => !!applicable_category_ids).then(() => {
|
|
26
|
+
return (0, validate_product_category_exists_1.validateProductCategoryExists)({
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
product_category_id: input.applicable_category_ids,
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
(0, workflows_sdk_1.when)("validate-customer-exists", input, ({ applicable_customer_ids }) => !!applicable_customer_ids).then(() => {
|
|
32
|
+
return (0, validate_customer_exists_1.validateCustomerExists)({
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
customer_id: input.applicable_customer_ids,
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
const doCodeExists = (0, validate_freebie_code_exists_1.validateFreebieCodeExists)({ code: input.code });
|
|
38
|
+
(0, workflows_sdk_1.when)("check-if-freebie-code-exists", doCodeExists, (exists) => exists).then(() => {
|
|
39
|
+
(0, throw_error_step_1.throwErrorStep)({ errorMessage: `Freebie code already exists.` });
|
|
40
|
+
});
|
|
41
|
+
const freebieRule = (0, create_freebie_rule_step_1.createFreebieRuleStep)(input);
|
|
42
|
+
return new workflows_sdk_1.WorkflowResponse(freebieRule);
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2NyZWF0ZS1mcmVlYmllLXJ1bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzJDO0FBRzNDLDJHQUFxRztBQUNyRyx5R0FBbUc7QUFDbkcsK0VBQXlFO0FBQ3pFLHdGQUFrRjtBQUNsRixtRUFBOEQ7QUFDOUQsMkdBQXNHO0FBRXpGLFFBQUEseUJBQXlCLEdBQUcsSUFBQSw4QkFBYyxFQUNyRCxxQkFBcUIsRUFDckIsQ0FBQyxLQUFvQyxFQUFFLEVBQUU7SUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQkFBVSxFQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFbkQsSUFBQSxvQkFBSSxFQUNGLGlDQUFpQyxFQUNqQyxLQUFLLEVBQ0wsQ0FBQyxFQUFFLDhCQUE4QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FDekUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLDhEQUE0QixFQUFDO1lBQ2xDLGFBQWE7WUFDYixrQkFBa0IsRUFBRSxLQUFLLENBQUMsOEJBQThCO1NBQ3pELENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxvQkFBSSxFQUNGLHlDQUF5QyxFQUN6QyxLQUFLLEVBQ0wsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FDbkUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLDhEQUE0QixFQUFDO1lBQ2xDLGFBQWE7WUFDYixrQkFBa0IsRUFBRSxLQUFLLENBQUMsMkJBQTJCO1NBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUseUNBQXlDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxvQkFBSSxFQUNGLDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FDM0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLGdFQUE2QixFQUFDO1lBQ25DLGFBQWE7WUFDYixtQkFBbUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1NBQ25ELENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxvQkFBSSxFQUNGLDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FDM0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLGlEQUFzQixFQUFDO1lBQzVCLGFBQWE7WUFDYixXQUFXLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtTQUMzQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sWUFBWSxHQUFHLElBQUEsd0RBQXlCLEVBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFckUsSUFBQSxvQkFBSSxFQUFDLDhCQUE4QixFQUFFLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUN6RSxHQUFHLEVBQUU7UUFDSCxJQUFBLGlDQUFjLEVBQUMsRUFBRSxZQUFZLEVBQUUsOEJBQThCLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUcsSUFBQSxnREFBcUIsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUVqRCxPQUFPLElBQUksZ0NBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUNGLENBQUMifQ==
|
package/.medusa/server/src/workflows/discount/create-freebie-rule/steps/create-freebie-rule-step.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFreebieRuleStep = 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.createFreebieRuleStep = (0, workflows_sdk_1.createStep)("create-freebie-rule", async (input, { container }) => {
|
|
8
|
+
// Remove code property if present, as code should not be stored in freebie rule
|
|
9
|
+
const { applicable_category_ids, applicable_product_variant_ids, freebie_product_variant_ids, applicable_customer_ids, ...freebieRuleInput } = input;
|
|
10
|
+
const freebieRuleService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
11
|
+
let status = "ACTIVE";
|
|
12
|
+
const now = new Date();
|
|
13
|
+
const startsAt = new Date(input.starts_at);
|
|
14
|
+
const endsAt = input.ends_at ? new Date(input.ends_at) : null;
|
|
15
|
+
if (endsAt && endsAt < now)
|
|
16
|
+
status = "EXPIRED";
|
|
17
|
+
else if (startsAt > now)
|
|
18
|
+
status = "SCHEDULED";
|
|
19
|
+
else
|
|
20
|
+
status = "ACTIVE";
|
|
21
|
+
const freebieRule = await freebieRuleService.createFreebieRules({
|
|
22
|
+
...freebieRuleInput,
|
|
23
|
+
ends_at: input.ends_at ? new Date(input.ends_at) : null,
|
|
24
|
+
starts_at: new Date(input.starts_at),
|
|
25
|
+
status,
|
|
26
|
+
});
|
|
27
|
+
const link = container.resolve("link");
|
|
28
|
+
if (applicable_category_ids && applicable_category_ids.length) {
|
|
29
|
+
await link.create(applicable_category_ids.map((categoryId) => ({
|
|
30
|
+
[discounts_1.DISCOUNT_MODULE]: { freebie_rule_id: freebieRule.id },
|
|
31
|
+
[utils_1.Modules.PRODUCT]: { product_category_id: categoryId },
|
|
32
|
+
})));
|
|
33
|
+
}
|
|
34
|
+
if (applicable_product_variant_ids &&
|
|
35
|
+
applicable_product_variant_ids.length) {
|
|
36
|
+
await link.create(applicable_product_variant_ids.map((productVariantId) => ({
|
|
37
|
+
[discounts_1.DISCOUNT_MODULE]: { freebie_rule_id: freebieRule.id },
|
|
38
|
+
[utils_1.Modules.PRODUCT]: { product_variant_id: productVariantId },
|
|
39
|
+
data: { is_freebie: false },
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
if (freebie_product_variant_ids && freebie_product_variant_ids.length) {
|
|
43
|
+
await link.create(freebie_product_variant_ids.map((productVariantId) => ({
|
|
44
|
+
[discounts_1.DISCOUNT_MODULE]: { freebie_rule_id: freebieRule.id },
|
|
45
|
+
[utils_1.Modules.PRODUCT]: { product_variant_id: productVariantId },
|
|
46
|
+
data: { is_freebie: true },
|
|
47
|
+
})));
|
|
48
|
+
}
|
|
49
|
+
if (applicable_customer_ids && applicable_customer_ids.length) {
|
|
50
|
+
await link.create(applicable_customer_ids.map((customerId) => ({
|
|
51
|
+
[discounts_1.DISCOUNT_MODULE]: { freebie_rule_id: freebieRule.id },
|
|
52
|
+
[utils_1.Modules.CUSTOMER]: { customer_id: customerId },
|
|
53
|
+
})));
|
|
54
|
+
}
|
|
55
|
+
return new workflows_sdk_1.StepResponse(freebieRule, freebieRule.id);
|
|
56
|
+
}, async (id, { container }) => {
|
|
57
|
+
if (!id)
|
|
58
|
+
return;
|
|
59
|
+
const discountFreebieRuleService = container.resolve(discounts_1.DISCOUNT_MODULE);
|
|
60
|
+
await discountFreebieRuleService.deleteFreebieRules([id]);
|
|
61
|
+
const link = container.resolve("link");
|
|
62
|
+
await link.delete({ [discounts_1.DISCOUNT_MODULE]: { freebie_rule_id: id } });
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWZyZWViaWUtcnVsZS1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kaXNjb3VudC9jcmVhdGUtZnJlZWJpZS1ydWxlL3N0ZXBzL2NyZWF0ZS1mcmVlYmllLXJ1bGUtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBb0Q7QUFDcEQscUVBQTZFO0FBRzdFLDZEQUFnRTtBQUtuRCxRQUFBLHFCQUFxQixHQUFHLElBQUEsMEJBQVUsRUFDN0MscUJBQXFCLEVBQ3JCLEtBQUssRUFBRSxLQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4QyxnRkFBZ0Y7SUFDaEYsTUFBTSxFQUNKLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixHQUFHLGdCQUFnQixFQUNwQixHQUFHLEtBQUssQ0FBQztJQUVWLE1BQU0sa0JBQWtCLEdBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkJBQWUsQ0FBQyxDQUFDO0lBRXJDLElBQUksTUFBTSxHQUF1QyxRQUFRLENBQUM7SUFFMUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFOUQsSUFBSSxNQUFNLElBQUksTUFBTSxHQUFHLEdBQUc7UUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO1NBQzFDLElBQUksUUFBUSxHQUFHLEdBQUc7UUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDOztRQUN6QyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lB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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exportCodesWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const export_codes_step_1 = require("./steps/export-codes-step");
|
|
6
|
+
exports.exportCodesWorkflow = (0, workflows_sdk_1.createWorkflow)("export-codes", (input) => {
|
|
7
|
+
const validate = (0, workflows_sdk_1.createHook)("validate", { input });
|
|
8
|
+
(0, export_codes_step_1.exportCodesStep)({
|
|
9
|
+
email: input.email,
|
|
10
|
+
price_rule_id: input.price_rule_id,
|
|
11
|
+
}).config({ async: true, backgroundExecution: true });
|
|
12
|
+
return new workflows_sdk_1.WorkflowResponse({ message: "Codes export started" }, { hooks: [validate] });
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2V4cG9ydC1jb2Rlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFJMkM7QUFFM0MsaUVBQTREO0FBRS9DLFFBQUEsbUJBQW1CLEdBQUcsSUFBQSw4QkFBYyxFQUMvQyxjQUFjLEVBQ2QsQ0FBQyxLQUFnRCxFQUFFLEVBQUU7SUFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQkFBVSxFQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFbkQsSUFBQSxtQ0FBZSxFQUFDO1FBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtLQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXRELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FDekIsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsRUFDbkMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQVUsRUFBRSxDQUMvQixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exportCodesStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
7
|
+
const json2csv_1 = require("json2csv");
|
|
8
|
+
const ITEMS_PER_CSV = 1_000_000;
|
|
9
|
+
exports.exportCodesStep = (0, workflows_sdk_1.createStep)("export-codes", async (input, { container }) => {
|
|
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
|
+
logger.setLogLevel(process.env.LOG_LEVEL || "error");
|
|
14
|
+
const keys = [];
|
|
15
|
+
const { data,
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
metadata: { count: totalCount }, } = await query.graph({
|
|
18
|
+
entity: "discount_code",
|
|
19
|
+
fields: ["id", "code"],
|
|
20
|
+
filters: { price_rule_id: input.price_rule_id },
|
|
21
|
+
pagination: { take: 1, skip: 0 },
|
|
22
|
+
});
|
|
23
|
+
logger.info("totalCount: " + totalCount);
|
|
24
|
+
const totalPages = Math.ceil(totalCount / ITEMS_PER_CSV);
|
|
25
|
+
logger.info("totalPages: " + totalPages);
|
|
26
|
+
for (let i = 0; i < totalPages; i++) {
|
|
27
|
+
const { data, metadata } = await query.graph({
|
|
28
|
+
entity: "discount_code",
|
|
29
|
+
fields: ["usage_count", "code"],
|
|
30
|
+
filters: { price_rule_id: input.price_rule_id },
|
|
31
|
+
pagination: { take: ITEMS_PER_CSV, skip: i * ITEMS_PER_CSV },
|
|
32
|
+
});
|
|
33
|
+
logger.info("metadata: " + metadata);
|
|
34
|
+
const codes = data.reduce((acc, discount_code) => {
|
|
35
|
+
const { id, code, usage_count } = discount_code;
|
|
36
|
+
acc.push({ id, code, usage_count });
|
|
37
|
+
return acc;
|
|
38
|
+
}, []);
|
|
39
|
+
try {
|
|
40
|
+
const parser = new json2csv_1.Parser({
|
|
41
|
+
fields: ["code", "usage_count"],
|
|
42
|
+
});
|
|
43
|
+
const csvData = parser.parse(codes);
|
|
44
|
+
const fileLocation = `discount_codes_${i + 1}_${new Date().getTime()}.csv`;
|
|
45
|
+
logger.info("csvData storing at s3: " + fileLocation);
|
|
46
|
+
const { result, errors } = await (0, core_flows_1.uploadFilesWorkflow)(container).run({
|
|
47
|
+
input: {
|
|
48
|
+
files: [
|
|
49
|
+
{
|
|
50
|
+
filename: fileLocation,
|
|
51
|
+
mimeType: "text/csv",
|
|
52
|
+
content: Buffer.from(csvData).toString("binary"),
|
|
53
|
+
access: "private",
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
keys.push(result[0].id);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
logger.error("Error generating CSV", error);
|
|
62
|
+
}
|
|
63
|
+
if (input.email) {
|
|
64
|
+
const notificationService = container.resolve("notification");
|
|
65
|
+
const fileService = container.resolve("file");
|
|
66
|
+
const s3ProviderService = fileService.getProvider();
|
|
67
|
+
const preSignedDownloadUrls = await Promise.all(keys.map((url) => s3ProviderService.getPresignedDownloadUrl({ fileKey: url })));
|
|
68
|
+
await notificationService.createNotifications({
|
|
69
|
+
to: input.email,
|
|
70
|
+
channel: "email",
|
|
71
|
+
template: "test",
|
|
72
|
+
content: {
|
|
73
|
+
subject: "🎉 Your Discount Codes Export is Ready!",
|
|
74
|
+
html: `
|
|
75
|
+
<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;">
|
|
76
|
+
<h2 style="color: #2E7D32; margin-bottom: 20px;">Your Discount Codes Export is Ready! 🎉</h2>
|
|
77
|
+
|
|
78
|
+
<p style="color: #333; line-height: 1.6;">
|
|
79
|
+
Great news! Your discount codes have been successfully exported and split into multiple CSV files for better organization. 🎯
|
|
80
|
+
</p>
|
|
81
|
+
|
|
82
|
+
<div style="background-color: #F5F5F5; padding: 15px; border-radius: 5px; margin: 20px 0;">
|
|
83
|
+
<p style="margin: 0; color: #666;">
|
|
84
|
+
You can download your files using the links below. Simply click on the links for each part to download.
|
|
85
|
+
</p>
|
|
86
|
+
<ul style="margin: 10px 0; padding-left: 20px;">
|
|
87
|
+
${preSignedDownloadUrls
|
|
88
|
+
.map((url, index) => `
|
|
89
|
+
<li style="margin: 5px 0;">
|
|
90
|
+
<a href="${url}" style="color: #1976D2; text-decoration: none;">Download Part ${index + 1})</a>
|
|
91
|
+
</li>
|
|
92
|
+
`)
|
|
93
|
+
.join("")}
|
|
94
|
+
</ul>
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<p style="color: #666; font-size: 14px; margin-top: 20px;">
|
|
98
|
+
Thank you for using our discount code export service! We hope this helps streamline your process. If you need any further assistance, feel free to reach out.
|
|
99
|
+
</p>
|
|
100
|
+
</div>
|
|
101
|
+
`,
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
await eventBus.emit({
|
|
107
|
+
data: {
|
|
108
|
+
price_rule_id: input.price_rule_id,
|
|
109
|
+
type: "BULK_EXPORT",
|
|
110
|
+
status: "COMPLETED",
|
|
111
|
+
},
|
|
112
|
+
name: "bulk_discount",
|
|
113
|
+
});
|
|
114
|
+
return new workflows_sdk_1.StepResponse({ data });
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNvZGVzLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2V4cG9ydC1jb2Rlcy9zdGVwcy9leHBvcnQtY29kZXMtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0U7QUFDL0UscUVBQTZFO0FBQzdFLDREQUFrRTtBQUNsRSx1Q0FBa0M7QUFFbEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBRW5CLFFBQUEsZUFBZSxHQUFHLElBQUEsMEJBQVUsRUFDdkMsY0FBYyxFQUNkLEtBQUssRUFBRSxLQUFnRCxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQztJQUVyRCxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7SUFFMUIsTUFBTSxFQUNKLElBQUk7SUFDSixhQUFhO0lBQ2IsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUNoQyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFO1FBQy9DLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtLQUNqQyxDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUV6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQztJQUV6RCxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUV6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDcEMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxFQUFFLGVBQWU7WUFDdkIsTUFBTSxFQUFFLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztZQUMvQixPQUFPLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUMvQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsYUFBYSxFQUFFO1NBQzdELENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRXJDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLEVBQUU7WUFDL0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBRWhELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDcEMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFNLENBQUM7Z0JBQ3hCLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVwQyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7WUFFM0UsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUV0RCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxnQ0FBbUIsRUFBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xFLEtBQUssRUFBRTtvQkFDTCxLQUFLLEVBQUU7d0JBQ0w7NEJBQ0UsUUFBUSxFQUFFLFlBQVk7NEJBQ3RCLFFBQVEsRUFBRSxVQUFVOzRCQUNwQixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDOzRCQUNoRCxNQUFNLEVBQUUsU0FBUzt5QkFDbEI7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sbUJBQW1CLEdBQVEsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNuRSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTlDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXBELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDZixpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUM1RCxDQUNGLENBQUM7WUFFRixNQUFNLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDO2dCQUM1QyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2YsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLHlDQUF5QztvQkFDbEQsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7O3NCQWFJLHFCQUFxQjt5QkFDcEIsR0FBRyxDQUNGLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7O21DQUVMLEdBQUcsa0VBQWtFLEtBQUssR0FBRyxDQUFDOztxQkFFNUYsQ0FDRTt5QkFDQSxJQUFJLENBQUMsRUFBRSxDQUFDOzs7Ozs7OzthQVFsQjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2xCLElBQUksRUFBRTtZQUNKLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNsQyxJQUFJLEVBQUUsYUFBYTtZQUNuQixNQUFNLEVBQUUsV0FBVztTQUNwQjtRQUNELElBQUksRUFBRSxlQUFlO0tBQ3RCLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSw0QkFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCartEligibleCouponsWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const validate_cart_exists_1 = require("../steps/validate-cart-exists");
|
|
6
|
+
const get_cart_eligible_coupon_1 = require("./step/get-cart-eligible-coupon");
|
|
7
|
+
exports.getCartEligibleCouponsWorkflow = (0, workflows_sdk_1.createWorkflow)("get-cart-eligible-coupons", (input) => {
|
|
8
|
+
(0, validate_cart_exists_1.validateCartExists)({ cart_id: input.cart_id });
|
|
9
|
+
const getCartEligibleCoupons = (0, get_cart_eligible_coupon_1.getCartEligibleCouponsStep)({
|
|
10
|
+
cart_id: input.cart_id,
|
|
11
|
+
customerId: input.customerId,
|
|
12
|
+
});
|
|
13
|
+
return new workflows_sdk_1.WorkflowResponse(getCartEligibleCoupons);
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2dldC1jYXJ0LWVsaWdpYmxlLWNvdXBvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSTJDO0FBRTNDLHdFQUFtRTtBQUNuRSw4RUFBNkU7QUFFaEUsUUFBQSw4QkFBOEIsR0FBRyxJQUFBLDhCQUFjLEVBQzFELDJCQUEyQixFQUMzQixDQUFDLEtBQStDLEVBQUUsRUFBRTtJQUVsRCxJQUFBLHlDQUFrQixFQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sc0JBQXNCLEdBQUcsSUFBQSxxREFBMEIsRUFBQztRQUN4RCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO0tBQzdCLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCartEligibleCouponsStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const calculate_coupon_discount_1 = require("../../calculate-coupon-discount");
|
|
7
|
+
exports.getCartEligibleCouponsStep = (0, workflows_sdk_1.createStep)("get-cart-eligible-coupons-step", async (input, { container }) => {
|
|
8
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
9
|
+
const { data: priceRules } = await query.graph({
|
|
10
|
+
entity: "discount_price_rule",
|
|
11
|
+
fields: ["*"],
|
|
12
|
+
filters: {
|
|
13
|
+
$and: [
|
|
14
|
+
{ visibility: true },
|
|
15
|
+
{ prefix: { $eq: null } },
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
const discounts = await Promise.allSettled(priceRules.map(async (priceRule) => {
|
|
20
|
+
let code = priceRule.discount_code || undefined;
|
|
21
|
+
const { result: { discount }, } = await (0, calculate_coupon_discount_1.calculateCouponDiscountWorkflow)(container).run({
|
|
22
|
+
input: {
|
|
23
|
+
cart_id: input.cart_id,
|
|
24
|
+
code: code,
|
|
25
|
+
customerId: input.customerId,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
return { discount, code, priceRule };
|
|
29
|
+
}));
|
|
30
|
+
function isFulfilledWithPositiveDiscount(r) {
|
|
31
|
+
// after `status === "fulfilled"` narrows, `r.value` is safe to touch
|
|
32
|
+
return r.status === "fulfilled";
|
|
33
|
+
}
|
|
34
|
+
const eligiblePriceRules = discounts
|
|
35
|
+
.filter(isFulfilledWithPositiveDiscount)
|
|
36
|
+
.map(r => r.value);
|
|
37
|
+
return new workflows_sdk_1.StepResponse(eligiblePriceRules);
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNhcnQtZWxpZ2libGUtY291cG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kaXNjb3VudC9nZXQtY2FydC1lbGlnaWJsZS1jb3Vwb25zL3N0ZXAvZ2V0LWNhcnQtZWxpZ2libGUtY291cG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFzRTtBQUN0RSxxRUFBNkU7QUFHN0UsK0VBQWtGO0FBU3JFLFFBQUEsMEJBQTBCLEdBQUcsSUFBQSwwQkFBVSxFQUNsRCxnQ0FBZ0MsRUFDaEMsS0FBSyxFQUNILEtBQStDLEVBQy9DLEVBQUUsU0FBUyxFQUFFLEVBQ2IsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDN0MsTUFBTSxFQUFFLHFCQUFxQjtRQUM3QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDYixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO2dCQUNwQixFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTthQUMxQjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxTQUFTLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUN4QyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRTtRQUNqQyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FBQztRQUVoRCxNQUFNLEVBQ0osTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQ3JCLEdBQUcsTUFBTSxJQUFBLDJEQUErQixFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN2RCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixJQUFJLEVBQUUsSUFBSTtnQkFDVixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDN0I7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsU0FBUywrQkFBK0IsQ0FDdEMsQ0FBdUM7UUFFdkMscUVBQXFFO1FBQ3JFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUdELE1BQU0sa0JBQWtCLEdBQXFCLFNBQVM7U0FDbkQsTUFBTSxDQUFDLCtCQUErQixDQUFDO1NBQ3ZDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyQixPQUFPLElBQUksNEJBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateProductOfferWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const validate_product_variant_exists_1 = require("../../product/steps/validate-product-variant-exists");
|
|
6
|
+
const calculate_product_offers_1 = require("./step/calculate-product-offers");
|
|
7
|
+
exports.calculateProductOfferWorkflow = (0, workflows_sdk_1.createWorkflow)("calculate-product-offer", (input) => {
|
|
8
|
+
(0, workflows_sdk_1.when)("validate-product-variant-exists", input, ({ variant_id }) => !!variant_id).then(() => {
|
|
9
|
+
return (0, validate_product_variant_exists_1.validateProductVariantExists)({
|
|
10
|
+
product_variant_id: input.variant_id,
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
const getVariantPrice = (0, workflows_sdk_1.createHook)("getVariantPrice", {
|
|
14
|
+
variant_id: input.variant_id,
|
|
15
|
+
});
|
|
16
|
+
const variantPrices = getVariantPrice.getResult();
|
|
17
|
+
const calculateProductOffers = (0, calculate_product_offers_1.calculateProductOffersStep)({
|
|
18
|
+
variant_id: input.variant_id,
|
|
19
|
+
variant_price: variantPrices,
|
|
20
|
+
});
|
|
21
|
+
return new workflows_sdk_1.WorkflowResponse(calculateProductOffers, {
|
|
22
|
+
hooks: [getVariantPrice],
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2dldC1wcm9kdWN0LW9mZmVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFLMkM7QUFFM0MseUdBQW1HO0FBQ25HLDhFQUE2RTtBQUVoRSxRQUFBLDZCQUE2QixHQUFHLElBQUEsOEJBQWMsRUFDekQseUJBQXlCLEVBQ3pCLENBQUMsS0FBNkIsRUFBRSxFQUFFO0lBQ2hDLElBQUEsb0JBQUksRUFDRixpQ0FBaUMsRUFDakMsS0FBSyxFQUNMLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FDakMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1YsT0FBTyxJQUFBLDhEQUE0QixFQUFDO1lBQ2xDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxVQUFVO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxlQUFlLEdBQUcsSUFBQSwwQkFBVSxFQUFDLGlCQUFpQixFQUFFO1FBQ3BELFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtLQUM3QixDQUFDLENBQUM7SUFFSCxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUM7SUFFbEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLHFEQUEwQixFQUFDO1FBQ3hELFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM1QixhQUFhLEVBQUUsYUFBK0M7S0FDL0QsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLGdDQUFnQixDQUFDLHNCQUFzQixFQUFFO1FBQ2xELEtBQUssRUFBRSxDQUFDLGVBQWUsQ0FBVTtLQUNsQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
|
package/.medusa/server/src/workflows/discount/get-product-offers/step/calculate-product-offers.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateProductOffersStep = 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
|
+
const utils_2 = require("../../../../lib/utils");
|
|
8
|
+
exports.calculateProductOffersStep = (0, workflows_sdk_1.createStep)("calculate-product-offers-step", async (input, { container }) => {
|
|
9
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
10
|
+
const { data: [variant], } = await query.graph({
|
|
11
|
+
entity: "variant",
|
|
12
|
+
fields: ["id", "product.type.value", "product.id"],
|
|
13
|
+
filters: { id: input.variant_id },
|
|
14
|
+
});
|
|
15
|
+
const isVariantBundle = variant?.product.type.value === utils_2.ProductType.Values.BYOB ||
|
|
16
|
+
variant?.product.type.value === utils_2.ProductType.Values.COMBO;
|
|
17
|
+
const { data: priceRules } = await query.graph({
|
|
18
|
+
entity: "discount_price_rule",
|
|
19
|
+
fields: ["*", "product_variants.id", "product_categories.products.id"],
|
|
20
|
+
filters: {
|
|
21
|
+
type: [validators_1.DiscountType.Values.FIXED, validators_1.DiscountType.Values.PERCENTAGE],
|
|
22
|
+
status: validators_1.DiscountStatus.Values.ACTIVE,
|
|
23
|
+
...(isVariantBundle && { applicable_on_bundle: true }),
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
const applicablePriceRules = priceRules.filter(({ product_variants, product_categories }) => {
|
|
27
|
+
if (!product_variants.length && !product_categories.length)
|
|
28
|
+
return true;
|
|
29
|
+
if (product_variants.length) {
|
|
30
|
+
return product_variants.some(({ id }) => id === input.variant_id);
|
|
31
|
+
}
|
|
32
|
+
if (product_categories.length) {
|
|
33
|
+
return product_categories.some(({ products }) => products.some(({ id }) => id === variant.product.id));
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const discountsOffers = applicablePriceRules
|
|
37
|
+
.map((rule) => {
|
|
38
|
+
const { type, get_percent, get_flat_discount, applies_on } = rule;
|
|
39
|
+
const { mrp, price } = input.variant_price;
|
|
40
|
+
if (type === validators_1.DiscountType.Values.FIXED)
|
|
41
|
+
return { discount: get_flat_discount, code: rule.discount_code };
|
|
42
|
+
if (type === validators_1.DiscountType.Values.PERCENTAGE) {
|
|
43
|
+
const discount = (0, utils_2.toTwoDecimal)((applies_on === validators_1.DiscountAppliesOn.Values.MRP ? mrp : price) *
|
|
44
|
+
(0, utils_2.toTwoDecimal)(get_percent / 100));
|
|
45
|
+
return { discount, code: rule.discount_code };
|
|
46
|
+
}
|
|
47
|
+
return { discount: 0, code: rule.discount_code };
|
|
48
|
+
})
|
|
49
|
+
.filter(({ discount }) => discount > 0)
|
|
50
|
+
.sort((a, b) => b.discount - a.discount);
|
|
51
|
+
return new workflows_sdk_1.StepResponse(discountsOffers);
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLXByb2R1Y3Qtb2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kaXNjb3VudC9nZXQtcHJvZHVjdC1vZmZlcnMvc3RlcC9jYWxjdWxhdGUtcHJvZHVjdC1vZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXNFO0FBQ3RFLHFFQUE2RTtBQUU3RSwyRUFJb0Q7QUFDcEQsaURBQWtFO0FBRXJELFFBQUEsMEJBQTBCLEdBQUcsSUFBQSwwQkFBVSxFQUNsRCwrQkFBK0IsRUFDL0IsS0FBSyxFQUNILEtBR0MsRUFDRCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FDaEIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFLFlBQVksQ0FBQztRQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtLQUNsQyxDQUFDLENBQUM7SUFFSCxNQUFNLGVBQWUsR0FDbkIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLG1CQUFXLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDdkQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLG1CQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUUzRCxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3QyxNQUFNLEVBQUUscUJBQXFCO1FBQzdCLE1BQU0s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
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./apply-coupon"), exports);
|
|
18
|
+
__exportStar(require("./auto-apply-coupon"), exports);
|
|
19
|
+
__exportStar(require("./apply-freebie"), exports);
|
|
20
|
+
__exportStar(require("./get-product-offers"), exports);
|
|
21
|
+
__exportStar(require("./create-bulk-discount"), exports);
|
|
22
|
+
__exportStar(require("./add-more-code-in-price-rule"), exports);
|
|
23
|
+
__exportStar(require("./export-codes"), exports);
|
|
24
|
+
__exportStar(require("./create-freebie-rule"), exports);
|
|
25
|
+
__exportStar(require("./update-freebie-price-rule"), exports);
|
|
26
|
+
__exportStar(require("./create-discount-price-rule"), exports);
|
|
27
|
+
__exportStar(require("./update-discount-price-rule"), exports);
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBK0I7QUFDL0Isc0RBQW9DO0FBQ3BDLGtEQUFnQztBQUNoQyx1REFBcUM7QUFDckMseURBQXVDO0FBQ3ZDLGdFQUE4QztBQUM5QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBQ3RDLDhEQUE0QztBQUM1QywrREFBNkM7QUFDN0MsK0RBQTZDIn0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeCouponWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const remove_coupon_step_1 = require("./step/remove-coupon-step");
|
|
7
|
+
exports.removeCouponWorkflow = (0, workflows_sdk_1.createWorkflow)("remove-coupon", (input) => {
|
|
8
|
+
const { data: carts } = (0, core_flows_1.useQueryGraphStep)({
|
|
9
|
+
entity: "cart",
|
|
10
|
+
fields: ["*", "items.*"],
|
|
11
|
+
filters: { id: input.cart_id },
|
|
12
|
+
options: { throwIfKeyNotFound: true },
|
|
13
|
+
});
|
|
14
|
+
const cart = (0, workflows_sdk_1.transform)({ carts }, ({ carts }) => carts[0]);
|
|
15
|
+
const removedCoupon = (0, remove_coupon_step_1.removeCouponStep)({ cart, code: input.code });
|
|
16
|
+
return new workflows_sdk_1.WorkflowResponse(removedCoupon);
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L3JlbW92ZS1jb3Vwb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSTJDO0FBQzNDLDREQUFnRTtBQUdoRSxrRUFBNkQ7QUFFaEQsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDhCQUFjLEVBQ2hELGVBQWUsRUFDZixDQUFDLEtBQThCLEVBQUUsRUFBRTtJQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDeEMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFO1FBQzlCLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxJQUFBLHlCQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sYUFBYSxHQUFHLElBQUEscUNBQWdCLEVBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQ0YsQ0FBQyJ9
|