@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.
Files changed (105) hide show
  1. package/.medusa/server/src/admin/index.js +20 -0
  2. package/.medusa/server/src/admin/index.mjs +21 -0
  3. package/.medusa/server/src/api/admin/discounts/freebie-rules/[id]/route.js +75 -0
  4. package/.medusa/server/src/api/admin/discounts/freebie-rules/route.js +73 -0
  5. package/.medusa/server/src/api/admin/discounts/middlewares.js +113 -0
  6. package/.medusa/server/src/api/admin/discounts/price-rules/[id]/codes/export/route.js +41 -0
  7. package/.medusa/server/src/api/admin/discounts/price-rules/[id]/codes/route.js +20 -0
  8. package/.medusa/server/src/api/admin/discounts/price-rules/[id]/route.js +50 -0
  9. package/.medusa/server/src/api/admin/discounts/price-rules/bulk/[id]/add-more-codes/route.js +34 -0
  10. package/.medusa/server/src/api/admin/discounts/price-rules/bulk/route.js +33 -0
  11. package/.medusa/server/src/api/admin/discounts/price-rules/route.js +47 -0
  12. package/.medusa/server/src/api/admin/discounts/validators.js +649 -0
  13. package/.medusa/server/src/api/admin/plugin/route.js +7 -0
  14. package/.medusa/server/src/api/middlewares.js +14 -0
  15. package/.medusa/server/src/api/store/discounts/apply/route.js +24 -0
  16. package/.medusa/server/src/api/store/discounts/apply-freebie/route.js +20 -0
  17. package/.medusa/server/src/api/store/discounts/auto-apply/route.js +125 -0
  18. package/.medusa/server/src/api/store/discounts/cart-eligible-coupons/[cart_id]/route.js +19 -0
  19. package/.medusa/server/src/api/store/discounts/middlewares.js +49 -0
  20. package/.medusa/server/src/api/store/discounts/offers-on-product/[variant_id]/route.js +19 -0
  21. package/.medusa/server/src/api/store/discounts/price-rules/route.js +20 -0
  22. package/.medusa/server/src/api/store/discounts/remove/route.js +21 -0
  23. package/.medusa/server/src/api/store/plugin/route.js +7 -0
  24. package/.medusa/server/src/index.js +18 -0
  25. package/.medusa/server/src/jobs/price-rule-status-updates.js +80 -0
  26. package/.medusa/server/src/lib/api-response.js +42 -0
  27. package/.medusa/server/src/lib/utils.js +10 -0
  28. package/.medusa/server/src/links/mtm-freebie-rule-with-customers.js +16 -0
  29. package/.medusa/server/src/links/mtm-freebie-rule-with-products-categories.js +16 -0
  30. package/.medusa/server/src/links/mtm-freebie-rule-with-products-variants.js +18 -0
  31. package/.medusa/server/src/links/mtm-price-rule-with-customers.js +16 -0
  32. package/.medusa/server/src/links/mtm-price-rule-with-products-categories.js +16 -0
  33. package/.medusa/server/src/links/mtm-price-rule-with-products-variants.js +16 -0
  34. package/.medusa/server/src/modules/discounts/index.js +13 -0
  35. package/.medusa/server/src/modules/discounts/migrations/Migration20250526174351.js +21 -0
  36. package/.medusa/server/src/modules/discounts/migrations/Migration20250527074936.js +14 -0
  37. package/.medusa/server/src/modules/discounts/migrations/Migration20250527104919.js +14 -0
  38. package/.medusa/server/src/modules/discounts/migrations/Migration20250527113947.js +14 -0
  39. package/.medusa/server/src/modules/discounts/migrations/Migration20250529123956.js +14 -0
  40. package/.medusa/server/src/modules/discounts/migrations/Migration20250602052234.js +14 -0
  41. package/.medusa/server/src/modules/discounts/migrations/Migration20250602052239.js +14 -0
  42. package/.medusa/server/src/modules/discounts/migrations/Migration20250602165037.js +16 -0
  43. package/.medusa/server/src/modules/discounts/migrations/Migration20250602194000.js +130 -0
  44. package/.medusa/server/src/modules/discounts/migrations/Migration20250603053221.js +16 -0
  45. package/.medusa/server/src/modules/discounts/migrations/Migration20250604162727.js +14 -0
  46. package/.medusa/server/src/modules/discounts/migrations/Migration20250604162741.js +14 -0
  47. package/.medusa/server/src/modules/discounts/migrations/Migration20250604175305.js +15 -0
  48. package/.medusa/server/src/modules/discounts/migrations/Migration20250605161922.js +14 -0
  49. package/.medusa/server/src/modules/discounts/migrations/Migration20250605162116.js +14 -0
  50. package/.medusa/server/src/modules/discounts/migrations/Migration20250605164908.js +14 -0
  51. package/.medusa/server/src/modules/discounts/migrations/Migration20250610063653.js +14 -0
  52. package/.medusa/server/src/modules/discounts/migrations/Migration20250611105345.js +14 -0
  53. package/.medusa/server/src/modules/discounts/migrations/Migration20250611105356.js +14 -0
  54. package/.medusa/server/src/modules/discounts/migrations/Migration20250617113007.js +14 -0
  55. package/.medusa/server/src/modules/discounts/models/discount-code.js +20 -0
  56. package/.medusa/server/src/modules/discounts/models/freebie-rule.js +27 -0
  57. package/.medusa/server/src/modules/discounts/models/price-rule.js +53 -0
  58. package/.medusa/server/src/modules/discounts/service.js +98 -0
  59. package/.medusa/server/src/workflows/discount/add-more-code-in-price-rule/index.js +28 -0
  60. package/.medusa/server/src/workflows/discount/apply-coupon/index.js +41 -0
  61. package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step-backup.js +245 -0
  62. package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step.js +244 -0
  63. package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js +28 -0
  64. package/.medusa/server/src/workflows/discount/apply-coupon/steps/validate-coupon-step.js +212 -0
  65. package/.medusa/server/src/workflows/discount/apply-freebie/index.js +31 -0
  66. package/.medusa/server/src/workflows/discount/apply-freebie/steps/add-freebie-items-to-cart.js +212 -0
  67. package/.medusa/server/src/workflows/discount/apply-freebie/steps/remove-freebie-from-cart.js +16 -0
  68. package/.medusa/server/src/workflows/discount/auto-apply-coupon/index.js +10 -0
  69. package/.medusa/server/src/workflows/discount/auto-apply-coupon/steps/auto-apply-coupon.js +81 -0
  70. package/.medusa/server/src/workflows/discount/calculate-coupon-discount/index.js +74 -0
  71. package/.medusa/server/src/workflows/discount/create-bulk-discount/index.js +46 -0
  72. package/.medusa/server/src/workflows/discount/create-bulk-discount/steps/add-bulk-codes-to-rule.js +84 -0
  73. package/.medusa/server/src/workflows/discount/create-discount-code/index.js +10 -0
  74. package/.medusa/server/src/workflows/discount/create-discount-code/steps/create-discount-code-step.js +20 -0
  75. package/.medusa/server/src/workflows/discount/create-discount-price-rule/index.js +56 -0
  76. package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/create-discount-price-rule-step.js +58 -0
  77. package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/validate-customer-exists.js +21 -0
  78. package/.medusa/server/src/workflows/discount/create-freebie-rule/index.js +44 -0
  79. package/.medusa/server/src/workflows/discount/create-freebie-rule/steps/create-freebie-rule-step.js +64 -0
  80. package/.medusa/server/src/workflows/discount/export-codes/index.js +14 -0
  81. package/.medusa/server/src/workflows/discount/export-codes/steps/export-codes-step.js +116 -0
  82. package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/index.js +15 -0
  83. package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/step/get-cart-eligible-coupon.js +39 -0
  84. package/.medusa/server/src/workflows/discount/get-product-offers/index.js +25 -0
  85. package/.medusa/server/src/workflows/discount/get-product-offers/step/calculate-product-offers.js +53 -0
  86. package/.medusa/server/src/workflows/discount/index.js +28 -0
  87. package/.medusa/server/src/workflows/discount/remove-coupon/index.js +18 -0
  88. package/.medusa/server/src/workflows/discount/remove-coupon/step/remove-coupon-step.js +32 -0
  89. package/.medusa/server/src/workflows/discount/steps/validate-cart-exists.js +22 -0
  90. package/.medusa/server/src/workflows/discount/steps/validate-discount-code-exists.js +20 -0
  91. package/.medusa/server/src/workflows/discount/steps/validate-freebie-code-exists.js +16 -0
  92. package/.medusa/server/src/workflows/discount/steps/validate-same-prefix-rule-exists.js +20 -0
  93. package/.medusa/server/src/workflows/discount/update-discount-price-rule/index.js +42 -0
  94. package/.medusa/server/src/workflows/discount/update-discount-price-rule/steps/update-discount-price-rule-step.js +160 -0
  95. package/.medusa/server/src/workflows/discount/update-discount-price-rule/steps/validate-discount-price-rule-update-step.js +175 -0
  96. package/.medusa/server/src/workflows/discount/update-freebie-price-rule/index.js +44 -0
  97. package/.medusa/server/src/workflows/discount/update-freebie-price-rule/steps/update-freebie-price-rule-step.js +201 -0
  98. package/.medusa/server/src/workflows/discount/update-freebie-price-rule/steps/validate-freebie-rule-update-step.js +44 -0
  99. package/.medusa/server/src/workflows/index.js +18 -0
  100. package/.medusa/server/src/workflows/product/steps/validate-product-category-exists.js +26 -0
  101. package/.medusa/server/src/workflows/product/steps/validate-product-exists.js +28 -0
  102. package/.medusa/server/src/workflows/product/steps/validate-product-variant-exists.js +26 -0
  103. package/.medusa/server/src/workflows/steps/throw-error-step.js +9 -0
  104. package/README.md +64 -0
  105. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZGlzY291bnQvY3JlYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUvc3RlcHMvY3JlYXRlLWRpc2NvdW50LXByaWNlLXJ1bGUtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBb0Q7QUFDcEQscUVBQTZFO0FBRzdFLDZEQUFnRTtBQU9uRCxRQUFBLDJCQUEyQixHQUFHLElBQUEsMEJBQVUsRUFDbkQsNEJBQTRCLEVBQzVCLEtBQUssRUFBRSxLQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4Qyw4RUFBOEU7SUFDOUUsTUFBTSxFQUNKLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QixHQUFHLGNBQWMsRUFDbEIsR0FBRyxLQUFLLENBQUM7SUFFVixNQUFNLHdCQUF3QixHQUM1QixTQUFTLENBQUMsT0FBTyxDQUFDLDJCQUFlLENBQUMsQ0FBQztJQUVyQyxJQUFJLE1BQU0sR0FBdUMsUUFBUSxDQUFDO0lBRTFELE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRTlELElBQUksTUFBTSxJQUFJLE1BQU0sR0FBRyxHQUFHO1FBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUMxQyxJQUFJLFFBQVEsR0FBRyxHQUFHO1FBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQzs7UUFDekMsTUFBTSxH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
@@ -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==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNvZGVzLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Rpc2NvdW50L2V4cG9ydC1jb2Rlcy9zdGVwcy9leHBvcnQtY29kZXMtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0U7QUFDL0UscUVBQTZFO0FBQzdFLDREQUFrRTtBQUNsRSx1Q0FBa0M7QUFFbEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBRW5CLFFBQUEsZUFBZSxHQUFHLElBQUEsMEJBQVUsRUFDdkMsY0FBYyxFQUNkLEtBQUssRUFBRSxLQUFnRCxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQztJQUVyRCxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7SUFFMUIsTUFBTSxFQUNKLElBQUk7SUFDSixhQUFhO0lBQ2IsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUNoQyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFO1FBQy9DLFVBQVUsRUFBRSxF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
@@ -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
@@ -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