@devx-commerce/plugin-gati 0.0.2 → 0.0.3

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 (148) hide show
  1. package/.medusa/server/src/api/erp/webhook/route.js +99 -14
  2. package/.medusa/server/src/links/extended-product.js +10 -0
  3. package/.medusa/server/src/links/extended-variant.js +10 -0
  4. package/.medusa/server/src/modules/category-group-master/index.js +13 -0
  5. package/.medusa/server/src/modules/category-group-master/migrations/Migration20250531004725.js +15 -0
  6. package/.medusa/server/src/modules/category-group-master/models/category-group-master.js +12 -0
  7. package/.medusa/server/src/modules/category-group-master/service.js +10 -0
  8. package/.medusa/server/src/modules/category-master/index.js +13 -0
  9. package/.medusa/server/src/modules/category-master/migrations/Migration20250513122212.js +15 -0
  10. package/.medusa/server/src/modules/category-master/migrations/Migration20250519180539.js +14 -0
  11. package/.medusa/server/src/modules/category-master/migrations/Migration20250531004724.js +14 -0
  12. package/.medusa/server/src/modules/category-master/models/category-master.js +15 -0
  13. package/.medusa/server/src/modules/category-master/service.js +10 -0
  14. package/.medusa/server/src/modules/collection-group-master/index.js +13 -0
  15. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20250531022203.js +15 -0
  16. package/.medusa/server/src/modules/collection-group-master/models/collection-group-master.js +12 -0
  17. package/.medusa/server/src/modules/collection-group-master/service.js +10 -0
  18. package/.medusa/server/src/modules/collection-master/index.js +13 -0
  19. package/.medusa/server/src/modules/collection-master/migrations/Migration20250513122211.js +16 -0
  20. package/.medusa/server/src/modules/collection-master/migrations/Migration20250531025048.js +14 -0
  21. package/.medusa/server/src/modules/collection-master/models/collection-master.js +15 -0
  22. package/.medusa/server/src/modules/collection-master/service.js +10 -0
  23. package/.medusa/server/src/modules/erp/migrations/Migration20250513121436.js +16 -0
  24. package/.medusa/server/src/modules/erp/models/erp.js +10 -0
  25. package/.medusa/server/src/modules/erp/service.js +1 -1
  26. package/.medusa/server/src/modules/erp-event/index.js +13 -0
  27. package/.medusa/server/src/modules/erp-event/migrations/Migration20250608221239.js +15 -0
  28. package/.medusa/server/src/modules/erp-event/models/erp-event.js +11 -0
  29. package/.medusa/server/src/modules/erp-event/service.js +10 -0
  30. package/.medusa/server/src/modules/extended-product/index.js +13 -0
  31. package/.medusa/server/src/modules/extended-product/migrations/Migration20250519043358.js +27 -0
  32. package/.medusa/server/src/modules/extended-product/migrations/Migration20250601030519.js +23 -0
  33. package/.medusa/server/src/modules/extended-product/models/extended-product.js +173 -0
  34. package/.medusa/server/src/modules/extended-product/service.js +13 -0
  35. package/.medusa/server/src/modules/extended-variant/index.js +13 -0
  36. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250507055941.js +27 -0
  37. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250508025507.js +14 -0
  38. package/.medusa/server/src/modules/extended-variant/migrations/Migration20250601045242.js +18 -0
  39. package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +162 -0
  40. package/.medusa/server/src/modules/extended-variant/service.js +12 -0
  41. package/.medusa/server/src/modules/party-master/index.js +13 -0
  42. package/.medusa/server/src/modules/party-master/migrations/Migration20250604104235.js +16 -0
  43. package/.medusa/server/src/modules/party-master/migrations/Migration20250604115453.js +16 -0
  44. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120348.js +16 -0
  45. package/.medusa/server/src/modules/party-master/migrations/Migration20250604120701.js +14 -0
  46. package/.medusa/server/src/modules/party-master/migrations/Migration20250608220924.js +16 -0
  47. package/.medusa/server/src/modules/party-master/migrations/Migration20250612225738.js +20 -0
  48. package/.medusa/server/src/modules/party-master/migrations/Migration20250612231031.js +16 -0
  49. package/.medusa/server/src/modules/party-master/models/party-master.js +60 -0
  50. package/.medusa/server/src/modules/party-master/service.js +10 -0
  51. package/.medusa/server/src/modules/raw-master/index.js +13 -0
  52. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190057.js +16 -0
  53. package/.medusa/server/src/modules/raw-master/migrations/Migration20250509190322.js +14 -0
  54. package/.medusa/server/src/modules/raw-master/models/raw-master.js +17 -0
  55. package/.medusa/server/src/modules/raw-master/service.js +10 -0
  56. package/.medusa/server/src/modules/shape-master/index.js +13 -0
  57. package/.medusa/server/src/modules/shape-master/migrations/Migration20250509174455.js +16 -0
  58. package/.medusa/server/src/modules/shape-master/models/shape-master.js +13 -0
  59. package/.medusa/server/src/modules/shape-master/service.js +10 -0
  60. package/.medusa/server/src/modules/sub-category-master/index.js +13 -0
  61. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250513115356.js +15 -0
  62. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250519180538.js +14 -0
  63. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20250531010409.js +14 -0
  64. package/.medusa/server/src/modules/sub-category-master/models/sub-category-master.js +15 -0
  65. package/.medusa/server/src/modules/sub-category-master/service.js +10 -0
  66. package/.medusa/server/src/subscribers/category-group-master.js +117 -0
  67. package/.medusa/server/src/subscribers/category-master.js +130 -0
  68. package/.medusa/server/src/subscribers/collection-master.js +115 -0
  69. package/.medusa/server/src/subscribers/party-master-location.js +128 -0
  70. package/.medusa/server/src/subscribers/party-master.js +226 -0
  71. package/.medusa/server/src/subscribers/sub-category-master.js +130 -0
  72. package/.medusa/server/src/utils/address-formatter.js +60 -0
  73. package/.medusa/server/src/utils/phone-mapper.js +28 -0
  74. package/.medusa/server/src/workflows/category-group-master/index.js +58 -0
  75. package/.medusa/server/src/workflows/category-group-master/steps/create-category-group.js +18 -0
  76. package/.medusa/server/src/workflows/category-group-master/steps/delete-category-group.js +23 -0
  77. package/.medusa/server/src/workflows/category-group-master/steps/fetch-category-master.js +70 -0
  78. package/.medusa/server/src/workflows/category-group-master/steps/update-category-group.js +26 -0
  79. package/.medusa/server/src/workflows/category-master/index.js +58 -0
  80. package/.medusa/server/src/workflows/category-master/steps/create-category.js +21 -0
  81. package/.medusa/server/src/workflows/category-master/steps/delete-category.js +23 -0
  82. package/.medusa/server/src/workflows/category-master/steps/fetch-category-master.js +70 -0
  83. package/.medusa/server/src/workflows/category-master/steps/update-category.js +29 -0
  84. package/.medusa/server/src/workflows/collection-group-master/index.js +37 -0
  85. package/.medusa/server/src/workflows/collection-group-master/steps/create-category.js +50 -0
  86. package/.medusa/server/src/workflows/collection-group-master/steps/create-collection-group.js +18 -0
  87. package/.medusa/server/src/workflows/collection-group-master/steps/delete-collection-group.js +23 -0
  88. package/.medusa/server/src/workflows/collection-group-master/steps/fetch-collection-grp-master.js +70 -0
  89. package/.medusa/server/src/workflows/collection-group-master/steps/update-collection-group.js +26 -0
  90. package/.medusa/server/src/workflows/collection-master/index.js +68 -0
  91. package/.medusa/server/src/workflows/collection-master/steps/create-category.js +60 -0
  92. package/.medusa/server/src/workflows/collection-master/steps/create-collection.js +22 -0
  93. package/.medusa/server/src/workflows/collection-master/steps/delete-collection.js +22 -0
  94. package/.medusa/server/src/workflows/collection-master/steps/fetch-collection-master.js +70 -0
  95. package/.medusa/server/src/workflows/collection-master/steps/update-collection.js +32 -0
  96. package/.medusa/server/src/workflows/create-extended-product-from-product/index.js +86 -0
  97. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-extended-product.js +18 -0
  98. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-collection-lines.js +25 -0
  99. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-detail-lines.js +25 -0
  100. package/.medusa/server/src/workflows/create-extended-product-from-product/steps/create-style-exploration-lines.js +26 -0
  101. package/.medusa/server/src/workflows/create-extended-variant-from-variant/index.js +74 -0
  102. package/.medusa/server/src/workflows/create-extended-variant-from-variant/steps/create-extended-variant.js +18 -0
  103. package/.medusa/server/src/workflows/create-extended-variant-from-variant/steps/create-style-detail-lines.js +25 -0
  104. package/.medusa/server/src/workflows/create-or-update-party-style-master/index.js +191 -0
  105. package/.medusa/server/src/workflows/create-or-update-party-style-master/steps/fetch-party-styles.js +70 -0
  106. package/.medusa/server/src/workflows/create-or-update-product-options/index.js +25 -0
  107. package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +28 -0
  108. package/.medusa/server/src/workflows/create-or-update-style-master/index.js +203 -105
  109. package/.medusa/server/src/workflows/create-or-update-style-master/steps/fetch-styles.js +70 -0
  110. package/.medusa/server/src/workflows/erp-event/index.js +10 -0
  111. package/.medusa/server/src/workflows/erp-event/steps/create-erp-event.js +18 -0
  112. package/.medusa/server/src/workflows/helpers/product-helper.js +585 -8
  113. package/.medusa/server/src/workflows/hooks/product-created.js +16 -0
  114. package/.medusa/server/src/workflows/hooks/product-updated.js +16 -0
  115. package/.medusa/server/src/workflows/hooks/variant-created.js +16 -0
  116. package/.medusa/server/src/workflows/index.js +18 -0
  117. package/.medusa/server/src/workflows/party-master/helpers/index.js +9 -0
  118. package/.medusa/server/src/workflows/party-master/index.js +139 -0
  119. package/.medusa/server/src/workflows/party-master/steps/create-party.js +71 -0
  120. package/.medusa/server/src/workflows/party-master/steps/delete-party.js +23 -0
  121. package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +70 -0
  122. package/.medusa/server/src/workflows/party-master/steps/update-party-master-with-field.js +15 -0
  123. package/.medusa/server/src/workflows/party-master/steps/update-party.js +79 -0
  124. package/.medusa/server/src/workflows/party-master/workflows/update-party-master-with-field.js +11 -0
  125. package/.medusa/server/src/workflows/raw-master/index.js +30 -0
  126. package/.medusa/server/src/workflows/raw-master/steps/create-raw.js +25 -0
  127. package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +23 -0
  128. package/.medusa/server/src/workflows/raw-master/steps/fetch-raw-master.js +70 -0
  129. package/.medusa/server/src/workflows/raw-master/steps/update-raw.js +34 -0
  130. package/.medusa/server/src/workflows/shape-master/index.js +30 -0
  131. package/.medusa/server/src/workflows/shape-master/steps/create-shape.js +20 -0
  132. package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +23 -0
  133. package/.medusa/server/src/workflows/shape-master/steps/fetch-shape-master.js +70 -0
  134. package/.medusa/server/src/workflows/shape-master/steps/update-shape.js +30 -0
  135. package/.medusa/server/src/workflows/sub-category-master/index.js +58 -0
  136. package/.medusa/server/src/workflows/sub-category-master/steps/create-sub-category.js +21 -0
  137. package/.medusa/server/src/workflows/sub-category-master/steps/delete-sub-category.js +23 -0
  138. package/.medusa/server/src/workflows/sub-category-master/steps/fetch-category-master.js +70 -0
  139. package/.medusa/server/src/workflows/sub-category-master/steps/update-sub-category.js +31 -0
  140. package/.medusa/server/src/workflows/types/index.js +9 -1
  141. package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +48 -0
  142. package/.medusa/server/src/workflows/update-extended-product-from-product/steps/update-extended-product-from-product.js +56 -0
  143. package/.medusa/server/src/workflows/update-extended-product-from-product/steps/update-extended-product-with-field.js +15 -0
  144. package/.medusa/server/src/workflows/update-extended-variant-from-variant/index.js +43 -0
  145. package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-product-from-product.js +54 -0
  146. package/.medusa/server/src/workflows/update-extended-variant-from-variant/steps/update-extended-variant-with-field.js +15 -0
  147. package/package.json +6 -2
  148. package/.medusa/server/src/workflows/create-or-update-style-master/steps/index.js +0 -18
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const product_helper_1 = require("../../helpers/product-helper");
6
+ const getProductOptionsStep = (0, workflows_sdk_1.createStep)("get-product-options", async (input, { container }) => {
7
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const productWithOptions = [];
9
+ for (const product of input.existingProducts) {
10
+ const productOptions = (0, product_helper_1.createProductOptionsStepFromData)(input.partyStyleData);
11
+ const productOption = productOptions.find((option) => option.styleId === product.external_id);
12
+ const filteredOptions = productOption?.options?.filter((option) => option.values.length > 0) ||
13
+ [];
14
+ const { data: product_option } = await query.graph({
15
+ entity: "product_option",
16
+ fields: ["id", "title", "values.*"],
17
+ filters: { product_id: product.id },
18
+ });
19
+ const mergedOptions = (0, product_helper_1.mergeProductOptions)(product_option, filteredOptions);
20
+ productWithOptions.push({
21
+ id: product.id,
22
+ options: mergedOptions,
23
+ });
24
+ }
25
+ return new workflows_sdk_1.StepResponse(productWithOptions);
26
+ });
27
+ exports.default = getProductOptionsStep;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXVwZGF0ZS1wcm9kdWN0LW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2NyZWF0ZS1vci11cGRhdGUtcHJvZHVjdC1vcHRpb25zL3N0ZXBzL2NyZWF0ZS11cGRhdGUtcHJvZHVjdC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EscUVBQTZFO0FBRTdFLHFEQUFzRTtBQUV0RSxpRUFHc0M7QUFZdEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3RDLHFCQUFxQixFQUNyQixLQUFLLEVBQUUsS0FBZ0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLGtCQUFrQixHQUF5QixFQUFFLENBQUM7SUFDcEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFBLGlEQUFnQyxFQUNyRCxLQUFLLENBQUMsY0FBYyxDQUNyQixDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FDdkMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLFdBQVcsQ0FDbkQsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUNuQixhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3BFLEVBQUUsQ0FBQztRQUNMLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2pELE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUM7WUFDbkMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7U0FDcEMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBQSxvQ0FBbUIsRUFDdkMsY0FBYyxFQUNkLGVBQWUsQ0FDaEIsQ0FBQztRQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUN0QixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDZCxPQUFPLEVBQUUsYUFBYTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLDRCQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQ0YsQ0FBQztBQUVGLGtCQUFlLHFCQUFxQixDQUFDIn0=
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
4
4
  const core_flows_1 = require("@medusajs/medusa/core-flows");
5
5
  const product_helper_1 = require("../helpers/product-helper");
6
- const steps_1 = require("./steps");
6
+ const fetch_styles_1 = require("./steps/fetch-styles");
7
7
  /**
8
8
  * Main workflow for handling StyleMst operations
9
9
  * This workflow:
@@ -15,12 +15,12 @@ const steps_1 = require("./steps");
15
15
  */
16
16
  const styleMstWorkflow = (0, workflows_sdk_1.createWorkflow)("style-mst", (input) => {
17
17
  // Step 1: Fetch style data from ERP system
18
- const styleData = (0, steps_1.fetchStyleData)(input);
18
+ const styleData = (0, fetch_styles_1.fetchStyleData)(input);
19
19
  // Step 2: Get all sales channels for product creation
20
- const { data: stores } = (0, core_flows_1.useQueryGraphStep)({
21
- entity: "store",
22
- fields: ["default_sales_channel_id"],
23
- });
20
+ const { data: salesChannels } = (0, core_flows_1.useQueryGraphStep)({
21
+ entity: "sales_channel",
22
+ fields: ["id", "name"],
23
+ }).config({ name: "sales-channels" });
24
24
  // Step 3: Get shipping profile for product creation
25
25
  const { data: shippingProfiles } = (0, core_flows_1.useQueryGraphStep)({
26
26
  entity: "shipping_profile",
@@ -34,6 +34,56 @@ const styleMstWorkflow = (0, workflows_sdk_1.createWorkflow)("style-mst", (input
34
34
  }, (data) => {
35
35
  return data.styleData.map((product) => `${product.StyleId}`);
36
36
  });
37
+ const externalCollectionFilters = (0, workflows_sdk_1.transform)({
38
+ styleData,
39
+ }, (data) => {
40
+ return data.styleData.map((product) => {
41
+ const collection = product?.StyleMstCollection?.find((collection) => collection.CollectionGroupName.toLowerCase() === "collection")?.Collection;
42
+ return collection;
43
+ });
44
+ });
45
+ const externalCollectionGroupFilters = (0, workflows_sdk_1.transform)({
46
+ styleData,
47
+ }, (data) => {
48
+ return data.styleData
49
+ .map((product) => {
50
+ return product?.StyleMstCollection?.filter((collection) => collection.CollectionGroupName.toLowerCase() !== "collection")?.map((collection) => collection.CollectionGroupNo);
51
+ })
52
+ .flat()
53
+ .filter(Boolean);
54
+ });
55
+ const externalCollectionCategoryFilters = (0, workflows_sdk_1.transform)({
56
+ styleData,
57
+ }, (data) => {
58
+ return data.styleData
59
+ .map((product) => {
60
+ return product?.StyleMstCollection?.filter((collection) => collection.CollectionGroupName.toLowerCase() !== "collection")?.map((collection) => collection.DesgNo);
61
+ })
62
+ .flat()
63
+ .filter(Boolean);
64
+ });
65
+ const externalCategoryGroupFilters = (0, workflows_sdk_1.transform)({
66
+ styleData,
67
+ }, (data) => {
68
+ return data.styleData.map((product) => product?.GrpGroupNo);
69
+ });
70
+ const externalCategoryFilters = (0, workflows_sdk_1.transform)({
71
+ styleData,
72
+ }, (data) => {
73
+ return data.styleData.map((product) => product?.GrpNo);
74
+ });
75
+ const externalSubCategoryFilters = (0, workflows_sdk_1.transform)({
76
+ styleData,
77
+ }, (data) => {
78
+ return data.styleData.map((product) => product?.SubItmNo);
79
+ });
80
+ const combinedCategoryFilters = (0, workflows_sdk_1.transform)({
81
+ externalCategoryFilters,
82
+ externalSubCategoryFilters,
83
+ }, (data) => [
84
+ ...data.externalCategoryFilters,
85
+ ...data.externalSubCategoryFilters,
86
+ ]);
37
87
  // @ts-ignore
38
88
  const { data: existingProducts } = (0, core_flows_1.useQueryGraphStep)({
39
89
  entity: "product",
@@ -43,46 +93,127 @@ const styleMstWorkflow = (0, workflows_sdk_1.createWorkflow)("style-mst", (input
43
93
  external_id: externalIdsFilters,
44
94
  },
45
95
  }).config({ name: "existing-products" });
46
- // Conditional step: Only create products if operation is "add"
96
+ const { data: existingCollection } = (0, core_flows_1.useQueryGraphStep)({
97
+ entity: "collection_master",
98
+ fields: ["*"],
99
+ filters: {
100
+ collection_code: externalCollectionFilters,
101
+ },
102
+ }).config({ name: "existing-collection" });
103
+ const { data: existingCategoryGroup } = (0, core_flows_1.useQueryGraphStep)({
104
+ entity: "category_group_master",
105
+ fields: ["*"],
106
+ filters: {
107
+ grp_no: externalCategoryGroupFilters,
108
+ },
109
+ }).config({ name: "existing-category-group" });
110
+ const { data: existingCategory } = (0, core_flows_1.useQueryGraphStep)({
111
+ entity: "category_master",
112
+ fields: ["*"],
113
+ filters: {
114
+ grp_no: combinedCategoryFilters,
115
+ },
116
+ }).config({ name: "existing-category" });
117
+ const { data: existingSubCategory } = (0, core_flows_1.useQueryGraphStep)({
118
+ entity: "sub_category_master",
119
+ fields: ["*"],
120
+ filters: {
121
+ sub_item_no: externalSubCategoryFilters,
122
+ },
123
+ }).config({ name: "existing-sub-category" });
124
+ const { data: existingCollectionGroup } = (0, core_flows_1.useQueryGraphStep)({
125
+ entity: "collection_group_master",
126
+ fields: ["*"],
127
+ filters: {
128
+ collection_group_no: externalCollectionGroupFilters,
129
+ },
130
+ }).config({ name: "existing-collection-group" });
131
+ const { data: existingCollectionCategory } = (0, core_flows_1.useQueryGraphStep)({
132
+ entity: "collection_master",
133
+ fields: ["*"],
134
+ filters: {
135
+ collection_no: externalCollectionCategoryFilters,
136
+ },
137
+ }).config({ name: "existing-collection-category" });
47
138
  (0, workflows_sdk_1.when)(input, (input) => {
48
- return input.operation === "add";
139
+ return input.operation === "add" || input.operation === "update";
49
140
  }).then(() => {
50
141
  const { productsToCreate, productsToUpdate } = (0, workflows_sdk_1.transform)({
51
142
  styleData,
52
143
  shippingProfiles,
53
- stores,
144
+ salesChannels,
54
145
  existingProducts,
146
+ existingCollection,
147
+ existingCategoryGroup,
148
+ existingCategory,
149
+ existingSubCategory,
150
+ existingCollectionGroup,
151
+ existingCollectionCategory,
55
152
  }, (data) => {
56
153
  const productsToCreate = [];
57
154
  const productsToUpdate = [];
58
155
  data.styleData.forEach((styleData) => {
59
156
  // Calculate costs based on raw codes
60
- const metalTotalCost = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Metal").reduce((acc, detail) => acc + detail.CostAmount, 0);
61
- const diamondTotalCost = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Diamond").reduce((acc, detail) => acc + detail.CostAmount, 0);
62
- const stoneTotalCost = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Stone" ||
63
- detail.RawType === "Stone(Color Stone)").reduce((acc, detail) => acc + detail.CostAmount, 0);
64
- // const czTotalCost = styleData.StyleMstDetail.filter(
65
- // (detail) => detail.RawType === "CZ"
66
- // ).reduce((acc, detail) => acc + detail.CostAmount, 0);
67
- const cpfTotalCost = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Metal").reduce((acc, detail) => acc + detail.CPFCostAmt, 0);
68
- // const otherMaterialTotalCost = styleData.StyleMstDetail.filter(
69
- // (detail) => detail.RawType === "Other Material"
70
- // ).reduce((acc, detail) => acc + detail.CostAmount, 0);
71
- // Calculate amounts based on raw codes
72
- const metalTotalAmount = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Metal").reduce((acc, detail) => acc + detail.Amount, 0);
73
- const diamondTotalAmount = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Diamond").reduce((acc, detail) => acc + detail.Amount, 0);
74
- const stoneTotalAmount = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Stone" ||
75
- detail.RawType === "Stone(Color Stone)").reduce((acc, detail) => acc + detail.Amount, 0);
76
- // const otherMaterialTotalAmount = styleData.StyleMstDetail.filter(
77
- // (detail) => detail.RawType === "Other Material"
78
- // ).reduce((acc, detail) => acc + detail.Amount, 0);
79
- const cpfTotalAmount = styleData.StyleMstDetail.filter((detail) => detail.RawType === "Metal").reduce((acc, detail) => acc + detail.CPFAmt, 0);
80
- const productTitle = styleData.StyleMstExploration.find((exploration) => exploration.ExplorationCode === "Product Name")?.ExplorationValue || "";
81
- console.log("productTitle", productTitle);
157
+ const { metal_total_cost, diamond_total_cost, stone_total_cost, cpf_total_cost, metal_total_amount, diamond_total_amount, stone_total_amount, cpf_total_amount, } = (0, product_helper_1.calculateStyleCostsAndAmounts)(styleData.StyleMstDetail);
158
+ const productTitle = styleData.StyleMstExploration?.find((exploration) => exploration.ExplorationCode === "Product Name")?.ExplorationValue ||
159
+ `Style ${styleData.StyleCode}-${styleData.StyleId}`;
160
+ const productDescription = styleData.StyleMstExploration?.find((exploration) => exploration.ExplorationCode === "PD")?.ExplorationValue || "";
161
+ const productAvailabilityInOnline = styleData.StyleMstExploration?.find((exploration) => exploration.ExplorationCode.toLowerCase() === "web indicator")?.ExplorationValue.toLowerCase() === "true";
162
+ const { baseMetal, baseMetalPurity, baseMetalColor } = (0, product_helper_1.getBaseMetalDetails)(styleData.StyleMstDetail);
163
+ let collectionId = "";
164
+ const categoryIds = [];
165
+ const collection = styleData?.StyleMstCollection?.find((collection) => collection.CollectionGroupName.toLowerCase() === "collection")?.Collection;
166
+ if (styleData.GrpGroupNo) {
167
+ const existingCategoryGroupData = data.existingCategoryGroup.find((c) => c.grp_no === styleData.GrpGroupNo);
168
+ if (existingCategoryGroupData) {
169
+ categoryIds.push(existingCategoryGroupData?.mapping_id);
170
+ }
171
+ }
172
+ if (styleData.GrpNo) {
173
+ const existingCategoryData = data.existingCategory.find((c) => c.grp_no === styleData.GrpNo);
174
+ if (existingCategoryData) {
175
+ categoryIds.push(existingCategoryData?.mapping_id);
176
+ }
177
+ }
178
+ if (styleData.SubItmNo) {
179
+ const existingSubCategoryData = data.existingSubCategory.find((c) => c.sub_item_no === styleData.SubItmNo);
180
+ if (existingSubCategoryData) {
181
+ categoryIds.push(existingSubCategoryData?.mapping_id);
182
+ }
183
+ }
184
+ const categories = styleData?.StyleMstCollection?.filter((collection) => collection.CollectionGroupName.toLowerCase() !== "collection")?.map((collection) => collection.DesgNo);
185
+ if (categories?.length > 0) {
186
+ for (const category of categories) {
187
+ const existingCollectionCategoryData = data.existingCollectionCategory.find((c) => c.collection_no === category);
188
+ if (existingCollectionCategoryData) {
189
+ categoryIds.push(existingCollectionCategoryData?.mapping_id);
190
+ }
191
+ }
192
+ }
193
+ const categoriesByGroup = styleData?.StyleMstCollection?.filter((collection) => collection.CollectionGroupName.toLowerCase() !== "collection")?.map((collection) => collection.CollectionGroupNo);
194
+ if (categoriesByGroup?.length > 0) {
195
+ for (const category of categoriesByGroup) {
196
+ const existingCollectionGroupData = data.existingCollectionGroup.find((c) => c.collection_group_no === category);
197
+ if (existingCollectionGroupData) {
198
+ categoryIds.push(existingCollectionGroupData?.mapping_id);
199
+ }
200
+ }
201
+ }
202
+ if (collection) {
203
+ const existingCollectionData = data.existingCollection.find((c) => c.collection_code === collection);
204
+ if (existingCollectionData) {
205
+ collectionId = existingCollectionData?.mapping_id;
206
+ }
207
+ }
208
+ const onlineSalesChannelId = data.salesChannels.find((channel) => channel.name.toLowerCase() === "online")?.id || "";
209
+ const offlineSalesChannelId = data.salesChannels.find((channel) => channel.name.toLowerCase() === "offline")?.id || "";
210
+ const width = parseFloat(styleData.StyleMstExploration.find((i) => i.ExplorationName.toLowerCase() === "width")?.ExplorationValue?.split(" ")[0] || "0");
211
+ const height = parseFloat(styleData.StyleMstExploration.find((i) => i.ExplorationName.toLowerCase() === "height")?.ExplorationValue?.split(" ")[0] || "0");
212
+ //TODO: Add category ids
82
213
  const product = {
83
214
  external_id: `${styleData.StyleId}`,
84
- title: productTitle,
85
- description: styleData.WebDescription || "",
215
+ title: productTitle || "",
216
+ description: productDescription || styleData.WebDescription || "",
86
217
  status: "draft",
87
218
  options: [
88
219
  {
@@ -90,99 +221,66 @@ const styleMstWorkflow = (0, workflows_sdk_1.createWorkflow)("style-mst", (input
90
221
  values: ["Default"],
91
222
  },
92
223
  ],
93
- hs_code: styleData.HSN || "",
224
+ origin_country: "IN",
225
+ material: styleData.StyleMstDetail.find((i) => i.RawType === "Metal" && i.IsBase)?.RawCode || "",
226
+ height,
227
+ width,
94
228
  handle: (0, product_helper_1.toKebabCase)([productTitle, styleData.StyleCode]),
95
229
  variants: [],
96
230
  shipping_profile_id: data.shippingProfiles[0].id,
231
+ category_ids: categoryIds.filter(Boolean),
97
232
  sales_channels: [
98
233
  {
99
- id: data.stores[0].default_sales_channel_id || "",
234
+ id: productAvailabilityInOnline
235
+ ? onlineSalesChannelId
236
+ : offlineSalesChannelId,
100
237
  },
101
238
  ],
102
239
  };
103
240
  const existingProduct = data.existingProducts.find((p) => p.external_id === product.external_id);
241
+ if (collectionId) {
242
+ product.collection_id = collectionId;
243
+ }
104
244
  if (existingProduct) {
105
245
  product.id = existingProduct.id;
106
246
  product.status = existingProduct.status;
247
+ product.title = existingProduct.title;
248
+ product.description = existingProduct.description;
249
+ product.handle = existingProduct.handle;
107
250
  }
108
- product.variants?.push({
109
- id: existingProduct ? existingProduct.variants[0].id : undefined,
110
- title: "Default",
111
- options: {
112
- Default: "Default",
113
- },
114
- prices: [
115
- {
116
- amount: styleData.Mrp,
117
- currency_code: "INR",
118
- },
119
- ],
120
- metadata: {
121
- external_id: `${styleData.StyleId}`,
122
- },
123
- manage_inventory: false,
251
+ const extendedProductData = (0, product_helper_1.getExtendedProductData)(styleData, { baseMetal, baseMetalPurity, baseMetalColor }, {
252
+ metal_total_cost,
253
+ diamond_total_cost,
254
+ stone_total_cost,
255
+ cpf_total_cost,
256
+ metal_total_amount,
257
+ diamond_total_amount,
258
+ stone_total_amount,
259
+ cpf_total_amount,
124
260
  });
125
- const additionalData = {
126
- styleId: styleData.StyleId,
127
- styleDate: styleData.StyleDate,
128
- styleCode: styleData.StyleCode,
129
- styleAliasNo: styleData.StyleAliasNo,
130
- category: styleData.Category || "",
131
- subCategory: styleData.SubCategory || "",
132
- manufacturer: styleData.Manufacturer || "",
133
- manufacturerNo: styleData.ManufacturerNo || "",
134
- makeType: styleData.MakeType || "",
135
- stockType: styleData.StockType || "",
136
- itemSize: styleData.ItemSize || "",
137
- brand: styleData.Brand || "",
138
- gender: (0, product_helper_1.genderMapper)(styleData.Gender),
139
- shapeCode: styleData.StyleMstDetail.find((detail) => detail.IsCenterStone)
140
- ?.ShapeCode || "",
141
- isComplete: styleData.IsComplete || false,
142
- restricted: styleData.Restricted || false,
143
- currency: styleData.Currency || "INR",
144
- rateChart: styleData.RateChart || "",
145
- discountMarkup: styleData.DiscountMarkup || "",
146
- cost: styleData.Cost || 0,
147
- mrp: styleData.Mrp || 0,
148
- hsnCode: styleData.HSN || "",
149
- grossWeight: styleData.GrossWt || 0,
150
- netWeight: styleData.NetWt || 0,
151
- waxWeight: styleData.WaxWt || 0,
152
- modelWeight: styleData.ModelWt || 0,
153
- totalDiamondPcs: styleData.TotDiamondPcs || 0,
154
- totalDiamondWeight: styleData.TotDiamondWt || 0,
155
- totalClientDiamondPcs: styleData.TotClientDiamondPcs || 0,
156
- totalClientDiamondWeight: styleData.TotClientDiamondWt || 0,
157
- totalStonePcs: styleData.TotStonePcs || 0,
158
- totalStoneWeight: styleData.TotStoneWt || 0,
159
- totalCzPcs: styleData.TotCzPcs || 0,
160
- totalCzWeight: styleData.TotCzWt || 0,
161
- webDescription: styleData.WebDescription || "",
162
- remarks: styleData.Remarks || "",
163
- customerRemarks: styleData.CustomerRemarks || "",
164
- specialRemarks: styleData.SpecialRemarks || "",
165
- metalTotalCost,
166
- diamondTotalCost,
167
- stoneTotalCost,
168
- czTotalCost: 0,
169
- cpfTotalCost,
170
- metalTotalAmount,
171
- diamondTotalAmount,
172
- stoneTotalAmount,
173
- czTotalAmount: 0,
174
- cpfTotalAmount,
175
- };
261
+ const styleDetails = (0, product_helper_1.getStyleDetailLines)(styleData?.StyleMstDetail || []);
262
+ const styleExploration = (0, product_helper_1.getStyleExplorationLines)(styleData?.StyleMstExploration || []);
263
+ const styleCollection = (0, product_helper_1.getStyleCollectionLines)(styleData?.StyleMstCollection || []);
176
264
  if (existingProduct) {
177
265
  productsToUpdate.push({
178
266
  product: product,
179
- additional_data: additionalData,
267
+ additional_data: {
268
+ extendedProductData,
269
+ styleDetails,
270
+ styleExploration,
271
+ styleCollection,
272
+ },
180
273
  });
181
274
  }
182
275
  else {
183
276
  productsToCreate.push({
184
277
  product: product,
185
- additional_data: additionalData,
278
+ additional_data: {
279
+ extendedProductData,
280
+ styleDetails,
281
+ styleExploration,
282
+ styleCollection,
283
+ },
186
284
  });
187
285
  }
188
286
  });
@@ -225,4 +323,4 @@ const styleMstWorkflow = (0, workflows_sdk_1.createWorkflow)("style-mst", (input
225
323
  });
226
324
  });
227
325
  exports.default = styleMstWorkflow;
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2NyZWF0ZS1vci11cGRhdGUtc3R5bGUtbWFzdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUVBSzJDO0FBQzNDLDREQUlxQztBQU1yQyw4REFBc0U7QUFFdEUsbUNBQXlDO0FBRXpDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDhCQUFjLEVBQUMsV0FBVyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFO0lBQzVFLDJDQUEyQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFjLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEMsc0RBQXNEO0lBQ3RELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO0tBQ3JDLENBQUMsQ0FBQztJQUVILG9EQUFvRDtJQUNwRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUNuRCxNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxDQUFDO1NBQ1I7S0FDRixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUV4QyxNQUFNLGtCQUFrQixHQUFHLElBQUEseUJBQVMsRUFDbEM7UUFDRSxTQUFTO0tBQ1YsRUFDRCxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMs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
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2NyZWF0ZS1vci11cGRhdGUtc3R5bGUtbWFzdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEscUVBSzJDO0FBQzNDLDREQUlxQztBQUdyQyw4REFRbUM7QUFFbkMsdURBQXNEO0FBRXREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDhCQUFjLEVBQUMsV0FBVyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFO0lBQzVFLDJDQUEyQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFBLDZCQUFjLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEMsc0RBQXNEO0lBQ3RELE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUNoRCxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0tBQ3ZCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRXRDLG9EQUFvRDtJQUNwRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUNuRCxNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxDQUFDO1NBQ1I7S0FDRixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUV4QyxNQUFNLGtCQUFrQixHQUFHLElBQUEseUJBQVMsRUFDbEM7UUFDRSxTQUFTO0tBQ1YsRUFDRCxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FB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
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchStyleData = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const BATCH_SIZE = 50; // Process 50 items at a time
6
+ const MAX_RETRIES = 3;
7
+ const RETRY_DELAY = 1000; // 1 second delay between retries
8
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9
+ const processBatch = async (erpService, datafor, batch, retryCount = 0) => {
10
+ try {
11
+ const results = await Promise.all(batch.map(async (transactionId) => {
12
+ try {
13
+ return await erpService.getMasterData(datafor, transactionId);
14
+ }
15
+ catch (error) {
16
+ console.error(`Error fetching data for ID ${transactionId}:`, error);
17
+ return null;
18
+ }
19
+ }));
20
+ // Filter out failed requests
21
+ const successfulResults = results.filter((result) => result !== null);
22
+ // If we have failed requests and haven't exceeded max retries, retry them
23
+ if (results.length !== successfulResults.length &&
24
+ retryCount < MAX_RETRIES) {
25
+ const failedIds = batch.filter((_, index) => results[index] === null);
26
+ console.log(`Retrying ${failedIds.length} failed requests (attempt ${retryCount + 1})`);
27
+ await sleep(RETRY_DELAY);
28
+ const retryResults = await processBatch(erpService, datafor, failedIds, retryCount + 1);
29
+ return [...successfulResults, ...retryResults];
30
+ }
31
+ return successfulResults;
32
+ }
33
+ catch (error) {
34
+ console.error("Batch processing error:", error);
35
+ if (retryCount < MAX_RETRIES) {
36
+ console.log(`Retrying entire batch (attempt ${retryCount + 1})`);
37
+ await sleep(RETRY_DELAY);
38
+ return processBatch(erpService, datafor, batch, retryCount + 1);
39
+ }
40
+ throw error;
41
+ }
42
+ };
43
+ /**
44
+ * Step to fetch style data from ERP system
45
+ * This step processes data in batches to avoid timeouts and handle large datasets
46
+ * @param input - Contains datafor type and array of transaction IDs
47
+ * @param container - Dependency injection container to resolve services
48
+ */
49
+ exports.fetchStyleData = (0, workflows_sdk_1.createStep)("fetch-style-data", async (input, { container }) => {
50
+ const erpService = container.resolve("erp");
51
+ const { datafor, data } = input;
52
+ // Split data into batches
53
+ const batches = [];
54
+ for (let i = 0; i < data.length; i += BATCH_SIZE) {
55
+ batches.push(data.slice(i, i + BATCH_SIZE));
56
+ }
57
+ console.log(`Processing ${data.length} items in ${batches.length} batches`);
58
+ // Process each batch sequentially
59
+ const allResults = [];
60
+ for (let i = 0; i < batches.length; i++) {
61
+ console.log(`Processing batch ${i + 1}/${batches.length}`);
62
+ const batchResults = await processBatch(erpService, datafor, batches[i]);
63
+ allResults.push(...batchResults);
64
+ }
65
+ console.log(`Successfully processed ${allResults.length} items`);
66
+ return new workflows_sdk_1.StepResponse(allResults);
67
+ }, async (result, { container }) => {
68
+ console.log("Something went wrong in fetch-style-data");
69
+ });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtc3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9jcmVhdGUtb3ItdXBkYXRlLXN0eWxlLW1hc3Rlci9zdGVwcy9mZXRjaC1zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBSTdFLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtBQUNwRCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsaUNBQWlDO0FBRTNELE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFDeEIsVUFBNEIsRUFDNUIsT0FBZSxFQUNmLEtBQWUsRUFDZixVQUFVLEdBQUcsQ0FBQyxFQUNFLEVBQUU7SUFDbEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUMvQixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLGFBQWEsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNyRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsNkJBQTZCO1FBQzdCLE1BQU0saUJBQWlCLEdBQUcsT0FB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
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.erpEventWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const create_erp_event_1 = require("./steps/create-erp-event");
6
+ exports.erpEventWorkflow = (0, workflows_sdk_1.createWorkflow)("erp-event", (input) => {
7
+ const erpEvent = (0, create_erp_event_1.createErpEventStep)(input);
8
+ return new workflows_sdk_1.WorkflowResponse(erpEvent);
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2VycC1ldmVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFHMkM7QUFFM0MsK0RBQThEO0FBUWpELFFBQUEsZ0JBQWdCLEdBQUcsSUFBQSw4QkFBYyxFQUM1QyxXQUFXLEVBQ1gsQ0FBQyxLQUFvQixFQUFFLEVBQUU7SUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBQSxxQ0FBa0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxPQUFPLElBQUksZ0NBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createErpEventStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const erp_event_1 = require("../../../modules/erp-event");
6
+ exports.createErpEventStep = (0, workflows_sdk_1.createStep)("create-erp-event-step", async (input, { container }) => {
7
+ const erpEventModuleService = container.resolve(erp_event_1.ERP_EVENT_MODULE);
8
+ const erpEvent = await erpEventModuleService.createErpEvents({
9
+ datafor: input.datafor,
10
+ operation: input.operation,
11
+ data: input.data,
12
+ });
13
+ return new workflows_sdk_1.StepResponse(erpEvent, erpEvent.id);
14
+ }, async (id, { container }) => {
15
+ const erpEventModuleService = container.resolve(erp_event_1.ERP_EVENT_MODULE);
16
+ await erpEventModuleService.deleteErpEvents(id);
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWVycC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZXJwLWV2ZW50L3N0ZXBzL2NyZWF0ZS1lcnAtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBRTdFLDBEQUE4RDtBQVNqRCxRQUFBLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDMUMsdUJBQXVCLEVBQ3ZCLEtBQUssRUFBRSxLQUFvQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM1QyxNQUFNLHFCQUFxQixHQUN6QixTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxlQUFlLENBQUM7UUFDM0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7S0FDakIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLDRCQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRCxDQUFDLEVBQ0QsS0FBSyxFQUFFLEVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDbEMsTUFBTSxxQkFBcUIsR0FDekIsU0FBUyxDQUFDLE9BQU8sQ0FBQyw0QkFBZ0IsQ0FBQyxDQUFDO0lBRXRDLE1BQU0scUJBQXFCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FDRixDQUFDIn0=