@devx-commerce/plugin-gati 0.0.31-beta.6 → 0.0.31

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 (91) hide show
  1. package/.medusa/server/development/erp-order-payload-example.js +76 -0
  2. package/.medusa/server/src/api/admin/middlewares.js +2 -6
  3. package/.medusa/server/src/api/erp/webhook/config.js +5 -28
  4. package/.medusa/server/src/api/store/middleware.js +1 -3
  5. package/.medusa/server/src/modules/erp/service.js +1 -14
  6. package/.medusa/server/src/modules/extended-product/models/extended-product.js +1 -2
  7. package/.medusa/server/src/modules/raw-master/models/raw-master.js +1 -2
  8. package/.medusa/server/src/modules/shape-master/models/shape-master.js +1 -2
  9. package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +2 -39
  10. package/.medusa/server/src/workflows/helpers/product-helper.js +53 -145
  11. package/.medusa/server/src/workflows/party-master/steps/delete-party.js +6 -2
  12. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +189 -307
  13. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +2 -108
  14. package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +11 -9
  15. package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +9 -9
  16. package/package.json +1 -1
  17. package/.medusa/server/src/api/admin/masters/[master]/[id]/route.js +0 -121
  18. package/.medusa/server/src/api/admin/masters/[master]/route.js +0 -33
  19. package/.medusa/server/src/api/admin/masters/middlewares.js +0 -35
  20. package/.medusa/server/src/api/admin/masters/query-config.js +0 -14
  21. package/.medusa/server/src/api/admin/masters/search-middleware.js +0 -16
  22. package/.medusa/server/src/api/admin/masters/utils.js +0 -108
  23. package/.medusa/server/src/api/admin/masters/validators.js +0 -28
  24. package/.medusa/server/src/api/admin/variant-options/sync/route.js +0 -313
  25. package/.medusa/server/src/api/store/gold-rate/current/route.js +0 -70
  26. package/.medusa/server/src/api/store/gold-rate/historical/route.js +0 -108
  27. package/.medusa/server/src/api/store/gold-rate/middleware.js +0 -19
  28. package/.medusa/server/src/api/store/gold-rate/validators.js +0 -37
  29. package/.medusa/server/src/jobs/process-variant-option-sync.js +0 -471
  30. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +0 -14
  31. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +0 -14
  32. package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +0 -14
  33. package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +0 -14
  34. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +0 -14
  35. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +0 -14
  36. package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +0 -14
  37. package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +0 -14
  38. package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +0 -14
  39. package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +0 -14
  40. package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +0 -14
  41. package/.medusa/server/src/modules/item-size-master/index.js +0 -13
  42. package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +0 -17
  43. package/.medusa/server/src/modules/item-size-master/models/item-size-master.js +0 -14
  44. package/.medusa/server/src/modules/item-size-master/service.js +0 -10
  45. package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +0 -14
  46. package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +0 -14
  47. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +0 -14
  48. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +0 -14
  49. package/.medusa/server/src/modules/quality-master/index.js +0 -13
  50. package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +0 -16
  51. package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +0 -14
  52. package/.medusa/server/src/modules/quality-master/models/quality-master.js +0 -17
  53. package/.medusa/server/src/modules/quality-master/service.js +0 -10
  54. package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +0 -14
  55. package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +0 -14
  56. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +0 -14
  57. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +0 -14
  58. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +0 -14
  59. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +0 -14
  60. package/.medusa/server/src/modules/tone-master/index.js +0 -13
  61. package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +0 -16
  62. package/.medusa/server/src/modules/tone-master/models/tone-master.js +0 -15
  63. package/.medusa/server/src/modules/tone-master/service.js +0 -10
  64. package/.medusa/server/src/modules/variant-option-sync-queue/index.js +0 -13
  65. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +0 -19
  66. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +0 -16
  67. package/.medusa/server/src/modules/variant-option-sync-queue/models/variant-option-sync-queue.js +0 -23
  68. package/.medusa/server/src/modules/variant-option-sync-queue/service.js +0 -10
  69. package/.medusa/server/src/utils/build-redis-key.js +0 -30
  70. package/.medusa/server/src/workflows/helpers/variant-helper.js +0 -212
  71. package/.medusa/server/src/workflows/item-size-master/create-or-update-item-size-master.js +0 -51
  72. package/.medusa/server/src/workflows/item-size-master/index.js +0 -15
  73. package/.medusa/server/src/workflows/item-size-master/steps/create-item-size.js +0 -21
  74. package/.medusa/server/src/workflows/item-size-master/steps/delete-item-size.js +0 -23
  75. package/.medusa/server/src/workflows/item-size-master/steps/fetch-item-size-master.js +0 -55
  76. package/.medusa/server/src/workflows/item-size-master/steps/update-item-size.js +0 -36
  77. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-variant-update.js +0 -317
  78. package/.medusa/server/src/workflows/quality-master/create-or-update-quality-master.js +0 -58
  79. package/.medusa/server/src/workflows/quality-master/index.js +0 -30
  80. package/.medusa/server/src/workflows/quality-master/steps/create-quality.js +0 -22
  81. package/.medusa/server/src/workflows/quality-master/steps/delete-quality.js +0 -20
  82. package/.medusa/server/src/workflows/quality-master/steps/fetch-quality-master.js +0 -54
  83. package/.medusa/server/src/workflows/quality-master/steps/update-quality.js +0 -37
  84. package/.medusa/server/src/workflows/raw-master/create-or-update-raw-master.js +0 -58
  85. package/.medusa/server/src/workflows/shape-master/create-or-update-shape-master.js +0 -53
  86. package/.medusa/server/src/workflows/tone-master/create-or-update-tone-master.js +0 -52
  87. package/.medusa/server/src/workflows/tone-master/index.js +0 -30
  88. package/.medusa/server/src/workflows/tone-master/steps/create-tone.js +0 -22
  89. package/.medusa/server/src/workflows/tone-master/steps/delete-tone.js +0 -20
  90. package/.medusa/server/src/workflows/tone-master/steps/fetch-tone-master.js +0 -54
  91. package/.medusa/server/src/workflows/tone-master/steps/update-tone.js +0 -37
@@ -1,317 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateProductOptionsAfterVariantUpdateStep = 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
- exports.updateProductOptionsAfterVariantUpdateStep = (0, workflows_sdk_1.createStep)("update-product-options-after-variant-update", async (input, { container }) => {
8
- try {
9
- const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
10
- // Get products with their options
11
- const { data: products } = await query.graph({
12
- entity: "product",
13
- fields: ["id", "options.*"],
14
- filters: {
15
- id: input.productIds,
16
- },
17
- });
18
- // Get all variants for these products with extended variant data
19
- const { data: variants } = await query.graph({
20
- entity: "product_variant",
21
- fields: [
22
- "id",
23
- "product_id",
24
- "extended_variant.id",
25
- "extended_variant.item_size",
26
- "extended_variant.party_style_details.*",
27
- ],
28
- filters: {
29
- product_id: input.productIds,
30
- },
31
- });
32
- // Get extended variant IDs
33
- const extendedVariantIds = variants
34
- .map((v) => v.extended_variant?.id)
35
- .filter(Boolean);
36
- // Get extended variants with party_style_details
37
- const { data: extendedVariants } = await query.graph({
38
- entity: "extended_variant",
39
- fields: ["id", "item_size", "stock_type", "party_style_details.*"],
40
- filters: {
41
- id: extendedVariantIds,
42
- },
43
- });
44
- // Load master maps
45
- const { data: rawMasterArr } = await query.graph({
46
- entity: "raw_master",
47
- fields: ["id", "title", "raw_code"],
48
- });
49
- const { data: qualityMasterArr } = await query.graph({
50
- entity: "quality_master",
51
- fields: ["id", "title", "qly_code"],
52
- });
53
- const { data: toneMasterArr } = await query.graph({
54
- entity: "tone_master",
55
- fields: ["id", "title", "tone_code"],
56
- });
57
- const { data: itemSizeMasterArr } = await query.graph({
58
- entity: "item_size_master",
59
- fields: ["id", "title", "item_size_code"],
60
- });
61
- const { data: shapeMasterArr } = await query.graph({
62
- entity: "shape_master",
63
- fields: ["id", "title", "shape_code"],
64
- });
65
- const rawMasterMap = new Map();
66
- rawMasterArr?.forEach((x) => rawMasterMap.set(x.raw_code, x.title));
67
- const qualityMasterMap = new Map();
68
- qualityMasterArr?.forEach((x) => qualityMasterMap.set(x.qly_code, x.title));
69
- const toneMasterMap = new Map();
70
- toneMasterArr?.forEach((x) => toneMasterMap.set(x.tone_code, x.title));
71
- const itemSizeMasterMap = new Map();
72
- itemSizeMasterArr?.forEach((x) => itemSizeMasterMap.set(x.item_size_code, x.title));
73
- const shapeMasterMap = new Map();
74
- shapeMasterArr?.forEach((x) => shapeMasterMap.set(x.shape_code, x.title));
75
- const masterMaps = {
76
- rawMasterMap,
77
- qualityMasterMap,
78
- toneMasterMap,
79
- itemSizeMasterMap,
80
- shapeMasterMap,
81
- };
82
- // Recalculate variant options from extended variant data
83
- const variantsToUpdate = [];
84
- const productOptionsMap = new Map();
85
- for (const variant of variants) {
86
- const productId = variant.product_id;
87
- if (!productId)
88
- continue;
89
- const product = products?.find((p) => p.id === productId);
90
- const extendedVariant = extendedVariants?.find((ev) => ev.id === variant.extended_variant?.id);
91
- if (!product || !extendedVariant)
92
- continue;
93
- // Initialize product options map if not exists
94
- if (!productOptionsMap.has(productId)) {
95
- productOptionsMap.set(productId, new Map());
96
- }
97
- const productOptionMap = productOptionsMap.get(productId);
98
- // Generate options from extended variant data
99
- const variantOptions = {};
100
- // Detect solitaire styles based on stock_type
101
- const stockType = extendedVariant
102
- ?.stock_type;
103
- const isSolitaire = stockType === "LGSOLITAIRE" || stockType === "SOLITAIRE";
104
- // Size
105
- if (extendedVariant.item_size) {
106
- const sizeTitle = (masterMaps.itemSizeMasterMap.get(extendedVariant.item_size) ||
107
- String(extendedVariant.item_size)).trim();
108
- const sizeOption = product.options?.find((opt) => opt.title === "Size");
109
- if (sizeOption) {
110
- variantOptions["Size"] = sizeTitle;
111
- if (!productOptionMap.has("Size")) {
112
- productOptionMap.set("Size", new Set());
113
- }
114
- productOptionMap.get("Size").add(sizeTitle);
115
- }
116
- }
117
- // Process party_style_details for metals, metal colors, diamond qualities, shapes and solitaire carat
118
- if (extendedVariant.party_style_details) {
119
- for (const detail of extendedVariant.party_style_details) {
120
- // Metal options
121
- if (detail.raw_type === "Metal" && detail.is_base) {
122
- const qualityTitle = (masterMaps.qualityMasterMap.get(detail.qly_code) ||
123
- detail.qly_code).trim();
124
- const rawTitle = (masterMaps.rawMasterMap.get(detail.raw_code) || detail.raw_code).trim();
125
- const metalValue = `${qualityTitle} ${rawTitle}`.trim();
126
- const metalOption = product.options?.find((opt) => opt.title === "Metal");
127
- if (metalOption) {
128
- variantOptions["Metal"] = metalValue;
129
- if (!productOptionMap.has("Metal")) {
130
- productOptionMap.set("Metal", new Set());
131
- }
132
- productOptionMap.get("Metal").add(metalValue);
133
- }
134
- // Metal Color
135
- if (detail.tone_code) {
136
- let colorTitle = masterMaps.toneMasterMap.get(detail.tone_code) ||
137
- detail.tone_code;
138
- // Fallback to static mappings if not in master
139
- if (!masterMaps.toneMasterMap.has(detail.tone_code)) {
140
- if (detail.tone_code === "R")
141
- colorTitle = "Rose";
142
- else if (detail.tone_code === "Y")
143
- colorTitle = "Yellow";
144
- else if (detail.tone_code === "W")
145
- colorTitle = "White";
146
- else if (detail.tone_code === "YRW")
147
- colorTitle = "YELLOW/ROSE/WHITE";
148
- else if (detail.tone_code === "YW")
149
- colorTitle = "YELLOW/WHITE";
150
- else if (detail.tone_code === "RW")
151
- colorTitle = "ROSE/WHITE";
152
- else if (detail.tone_code === "BU")
153
- colorTitle = "BLUE";
154
- else if (detail.tone_code === "BL")
155
- colorTitle = "BLACK";
156
- }
157
- colorTitle = colorTitle.trim();
158
- const metalColorOption = product.options?.find((opt) => opt.title === "Metal Color");
159
- if (metalColorOption) {
160
- variantOptions["Metal Color"] = colorTitle;
161
- if (!productOptionMap.has("Metal Color")) {
162
- productOptionMap.set("Metal Color", new Set());
163
- }
164
- productOptionMap.get("Metal Color").add(colorTitle);
165
- }
166
- }
167
- }
168
- // Diamond Quality
169
- if (detail.raw_type === "Diamond" &&
170
- detail.tone_code &&
171
- detail.qly_code &&
172
- detail.is_base) {
173
- const toneTitle = (masterMaps.toneMasterMap.get(detail.tone_code) ||
174
- detail.tone_code).trim();
175
- const qualityTitle = (masterMaps.qualityMasterMap.get(detail.qly_code) ||
176
- detail.qly_code).trim();
177
- const diamondValue = `${toneTitle} ${qualityTitle}`.trim();
178
- const diamondOption = product.options?.find((opt) => opt.title === "Diamond Quality");
179
- if (diamondOption) {
180
- variantOptions["Diamond Quality"] = diamondValue;
181
- if (!productOptionMap.has("Diamond Quality")) {
182
- productOptionMap.set("Diamond Quality", new Set());
183
- }
184
- productOptionMap.get("Diamond Quality").add(diamondValue);
185
- }
186
- }
187
- // Shape and Carat logic aligned with helper
188
- if (isSolitaire &&
189
- detail.raw_type === "Diamond" &&
190
- detail.raw_code === "LGS" &&
191
- detail.is_base) {
192
- const shapeTitle = (masterMaps.shapeMasterMap.get(detail.shape_code) ||
193
- String(detail.shape_code || "")).trim();
194
- if (shapeTitle) {
195
- const shapeOption = product.options?.find((opt) => opt.title === "Shape");
196
- if (shapeOption) {
197
- variantOptions["Shape"] = shapeTitle;
198
- if (!productOptionMap.has("Shape")) {
199
- productOptionMap.set("Shape", new Set());
200
- }
201
- productOptionMap.get("Shape").add(shapeTitle);
202
- }
203
- }
204
- const weightStr = String(detail?.weight || "").trim();
205
- if (weightStr) {
206
- variantOptions["Carat"] = weightStr;
207
- if (!productOptionMap.has("Carat")) {
208
- productOptionMap.set("Carat", new Set());
209
- }
210
- productOptionMap.get("Carat").add(weightStr);
211
- }
212
- }
213
- }
214
- }
215
- // Ensure variant options keys are in a consistent alphabetical order
216
- const sortedVariantOptions = {};
217
- const sortedKeys = Object.keys(variantOptions).sort((a, b) => a.localeCompare(b));
218
- for (const key of sortedKeys) {
219
- sortedVariantOptions[key] = variantOptions[key];
220
- }
221
- variantsToUpdate.push({
222
- variant: {
223
- id: variant.id,
224
- options: sortedVariantOptions,
225
- },
226
- });
227
- }
228
- // STEP 1: Update products FIRST with all option values that will be used
229
- // This ensures option values exist before assigning them to variants
230
- const productsToUpdate = Array.from(productOptionsMap.entries()).map(([productId, optionsMap]) => {
231
- const options = Array.from(optionsMap.entries())
232
- .sort(([a], [b]) => a.localeCompare(b))
233
- .map(([title, values]) => ({
234
- title,
235
- values: Array.from(values).sort((x, y) => x.localeCompare(y)),
236
- }));
237
- return {
238
- id: productId,
239
- options,
240
- };
241
- });
242
- if (productsToUpdate.length > 0) {
243
- await (0, core_flows_1.updateProductsWorkflow)(container).run({
244
- input: {
245
- products: productsToUpdate,
246
- },
247
- });
248
- }
249
- // STEP 2: Update variants with recalculated options (now that product options exist)
250
- if (variantsToUpdate.length > 0) {
251
- console.log(`Updating ${variantsToUpdate.length} variants with recalculated options`);
252
- await (0, core_flows_1.updateProductVariantsWorkflow)(container).run({
253
- input: {
254
- product_variants: variantsToUpdate.map((v) => v.variant),
255
- },
256
- });
257
- }
258
- // STEP 3: Recalculate product options from all updated variants to ensure consistency
259
- // Get all variants again after update to collect latest option values
260
- const { data: updatedVariants } = await query.graph({
261
- entity: "product_variant",
262
- fields: ["id", "product_id", "options.*", "options.option.title"],
263
- filters: {
264
- product_id: input.productIds,
265
- },
266
- });
267
- // Group options by product_id, then by title within each product
268
- const finalProductOptionsMap = new Map();
269
- updatedVariants.forEach((variant) => {
270
- const productId = variant.product_id;
271
- if (!productId)
272
- return;
273
- if (!finalProductOptionsMap.has(productId)) {
274
- finalProductOptionsMap.set(productId, new Map());
275
- }
276
- const optionsMap = finalProductOptionsMap.get(productId);
277
- variant.options?.forEach((optionValue) => {
278
- const title = optionValue.option?.title;
279
- const value = optionValue.value;
280
- if (title && value) {
281
- if (!optionsMap.has(title)) {
282
- optionsMap.set(title, new Set());
283
- }
284
- optionsMap.get(title).add(value);
285
- }
286
- });
287
- });
288
- // Convert to products array format for final update
289
- const finalProductsToUpdate = Array.from(finalProductOptionsMap.entries()).map(([productId, optionsMap]) => {
290
- const options = Array.from(optionsMap.entries())
291
- .sort(([a], [b]) => a.localeCompare(b))
292
- .map(([title, values]) => ({
293
- title,
294
- values: Array.from(values).sort((x, y) => x.localeCompare(y)),
295
- }));
296
- return {
297
- id: productId,
298
- options,
299
- };
300
- });
301
- console.log("finalProductsToUpdate (after variant update)", JSON.stringify(finalProductsToUpdate, null, 2));
302
- // Final update of products with all option values from updated variants
303
- if (finalProductsToUpdate.length > 0) {
304
- await (0, core_flows_1.updateProductsWorkflow)(container).run({
305
- input: {
306
- products: finalProductsToUpdate,
307
- },
308
- });
309
- }
310
- return new workflows_sdk_1.StepResponse(finalProductsToUpdate);
311
- }
312
- catch (error) {
313
- console.error("Error updating product options after variant update:", error);
314
- throw error;
315
- }
316
- });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXByb2R1Y3Qtb3B0aW9ucy1hZnRlci12YXJpYW50LXVwZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGFydHktc3R5bGUtbWFzdGVyL3N0ZXBzL3VwZGF0ZS1wcm9kdWN0LW9wdGlvbnMtYWZ0ZXItdmFyaWFudC11cGRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXNFO0FBQ3RFLHFFQUE2RTtBQUM3RSw0REFHcUM7QUFNeEIsUUFBQSwwQ0FBMEMsR0FBRyxJQUFBLDBCQUFVLEVBQ2xFLDZDQUE2QyxFQUM3QyxLQUFLLEVBQ0gsS0FBc0QsRUFDdEQsRUFBRSxTQUFTLEVBQUUsRUFDYixFQUFFO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxrQ0FBa0M7UUFDbEMsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxFQUFFLFNBQVM7WUFDakIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQztZQUMzQixPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsaUVBQWlFO1FBQ2pFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzNDLE1BQU0sRUFBRSxpQkFBaUI7WUFDekIsTUFBTSxFQUFFO2dCQUNOLElBQUk7Z0JBQ0osWUFBWTtnQkFDWixxQkFBcUI7Z0JBQ3JCLDRCQUE0QjtnQkFDNUIsd0NBQXdDO2FBQ3pDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTthQUM3QjtTQUNG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
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createOrUpdateQualityMasterWorkflow = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const fetch_quality_master_1 = require("./steps/fetch-quality-master");
6
- const workflows_sdk_2 = require("@medusajs/framework/workflows-sdk");
7
- const quality_master_1 = require("../../modules/quality-master");
8
- const createOrUpdateQualityStep = (0, workflows_sdk_2.createStep)("create-or-update-quality", async (input, { container }) => {
9
- const service = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
10
- if (!input?.length) {
11
- return new workflows_sdk_2.StepResponse([], []);
12
- }
13
- const qlyNos = input.map((i) => i.QlyNo);
14
- const prev = await service.listQualityMasters({ qly_no: qlyNos });
15
- const toUpdate = [];
16
- const toCreate = [];
17
- for (const item of input) {
18
- const match = prev.find((p) => p.qly_no === item.QlyNo);
19
- const mapped = {
20
- title: match?.title ? match.title : item.QlyName,
21
- qly_no: item.QlyNo,
22
- qly_for: item.QlyFor,
23
- qly_code: item.QlyCode,
24
- qly_name: item.QlyName,
25
- qly_alias_name: item.QlyAliasName,
26
- is_block_for_use: !!item.IsBlockForUse,
27
- qly_clarity: item.QlyClarity,
28
- qly_mfg_clarity: item.QlyMfgClarity,
29
- };
30
- if (match) {
31
- toUpdate.push({ id: match.id, ...mapped });
32
- }
33
- else {
34
- toCreate.push(mapped);
35
- }
36
- }
37
- const results = [];
38
- if (toUpdate.length) {
39
- const updated = await service.updateQualityMasters(toUpdate);
40
- results.push(...(Array.isArray(updated) ? updated : [updated]));
41
- }
42
- if (toCreate.length) {
43
- const created = await service.createQualityMasters(toCreate);
44
- results.push(...(Array.isArray(created) ? created : [created]));
45
- }
46
- return new workflows_sdk_2.StepResponse(results, prev);
47
- }, async (prev, { container }) => {
48
- if (!prev?.length)
49
- return;
50
- const service = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
51
- await service.updateQualityMasters(prev);
52
- });
53
- exports.createOrUpdateQualityMasterWorkflow = (0, workflows_sdk_1.createWorkflow)("create-or-update-quality-master", (input) => {
54
- const data = (0, fetch_quality_master_1.fetchQualityData)(input);
55
- const result = createOrUpdateQualityStep(data);
56
- return new workflows_sdk_1.WorkflowResponse(result);
57
- });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLXVwZGF0ZS1xdWFsaXR5LW1hc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcXVhbGl0eS1tYXN0ZXIvY3JlYXRlLW9yLXVwZGF0ZS1xdWFsaXR5LW1hc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUY7QUFFckYsdUVBQWdFO0FBQ2hFLHFFQUE2RTtBQUM3RSxpRUFBcUU7QUFjckUsTUFBTSx5QkFBeUIsR0FBRyxJQUFBLDBCQUFVLEVBQzFDLDBCQUEwQixFQUMxQixLQUFLLEVBQUUsS0FBdUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxPQUFPLEdBQXlCLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQztJQUUvRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSw0QkFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBUyxDQUFDLENBQUM7SUFFekUsTUFBTSxRQUFRLEdBQUcsRUFBVyxDQUFDO0lBQzdCLE1BQU0sUUFBUSxHQUFHLEVBQVcsQ0FBQztJQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1B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
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.qualityMasterWorkflow = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const create_quality_1 = require("./steps/create-quality");
6
- const delete_quality_1 = require("./steps/delete-quality");
7
- const fetch_quality_master_1 = require("./steps/fetch-quality-master");
8
- const update_quality_1 = require("./steps/update-quality");
9
- exports.qualityMasterWorkflow = (0, workflows_sdk_1.createWorkflow)("quality-master", (input) => {
10
- const qualityData = (0, fetch_quality_master_1.fetchQualityData)(input);
11
- (0, workflows_sdk_1.when)("create-quality", input, (input) => {
12
- return input.operation === "add";
13
- }).then(() => {
14
- const quality = (0, create_quality_1.createQualityStep)(qualityData);
15
- return new workflows_sdk_1.WorkflowResponse(quality);
16
- });
17
- (0, workflows_sdk_1.when)("update-quality", input, (input) => {
18
- return input.operation === "update";
19
- }).then(() => {
20
- const quality = (0, update_quality_1.updateQualityStep)(qualityData);
21
- return new workflows_sdk_1.WorkflowResponse(quality);
22
- });
23
- (0, workflows_sdk_1.when)("delete-quality", input, (input) => {
24
- return input.operation === "delete";
25
- }).then(() => {
26
- const quality = (0, delete_quality_1.deleteQualityStep)(qualityData);
27
- return new workflows_sdk_1.WorkflowResponse(quality);
28
- });
29
- });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3F1YWxpdHktbWFzdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUkyQztBQUczQywyREFBMkQ7QUFDM0QsMkRBQTJEO0FBQzNELHVFQUFnRTtBQUNoRSwyREFBMkQ7QUFFOUMsUUFBQSxxQkFBcUIsR0FBRyxJQUFBLDhCQUFjLEVBQ2pELGdCQUFnQixFQUNoQixDQUFDLEtBQWtCLEVBQUUsRUFBRTtJQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFBLHVDQUFnQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVDLElBQUEsb0JBQUksRUFBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QyxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFpQixFQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQUksRUFBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QyxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFpQixFQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsb0JBQUksRUFBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QyxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFpQixFQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDIn0=
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createQualityStep = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const quality_master_1 = require("../../../modules/quality-master");
6
- exports.createQualityStep = (0, workflows_sdk_1.createStep)("create-quality-step", async (input, { container }) => {
7
- const qualityMasterModuleService = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
8
- const quality = await qualityMasterModuleService.createQualityMasters(input.map((item) => ({
9
- title: item.QlyName,
10
- qly_no: item.QlyNo,
11
- qly_for: item.QlyFor,
12
- qly_code: item.QlyCode,
13
- qly_name: item.QlyName,
14
- qly_alias_name: item.QlyAliasName,
15
- is_block_for_use: !!item.IsBlockForUse,
16
- })));
17
- return new workflows_sdk_1.StepResponse(quality, quality.map((item) => item.id));
18
- }, async (ids, { container }) => {
19
- const qualityMasterModuleService = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
20
- await qualityMasterModuleService.deleteQualityMasters(ids);
21
- });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXF1YWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3F1YWxpdHktbWFzdGVyL3N0ZXBzL2NyZWF0ZS1xdWFsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSxvRUFBd0U7QUFZM0QsUUFBQSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLHFCQUFxQixFQUNyQixLQUFLLEVBQUUsS0FBK0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdkQsTUFBTSwwQkFBMEIsR0FDOUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQ0FBcUIsQ0FBQyxDQUFDO0lBRTNDLE1BQU0sT0FBTyxHQUFHLE1BQU0sMEJBQTBCLENBQUMsb0JBQW9CLENBQ25FLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSztRQUNsQixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTztRQUN0QixjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7UUFDakMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhO0tBQ3ZDLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFFRixPQUFPLElBQUksNEJBQVksQ0FDckIsT0FBTyxFQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDL0IsQ0FBQztBQUNKLENBQUMsRUFDRCxLQUFLLEVBQUUsR0FBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNyQyxNQUFNLDBCQUEwQixHQUM5QixTQUFTLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUFDLENBQUM7SUFFM0MsTUFBTSwwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQ0YsQ0FBQyJ9
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteQualityStep = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const quality_master_1 = require("../../../modules/quality-master");
6
- exports.deleteQualityStep = (0, workflows_sdk_1.createStep)("delete-quality-step", async (input, { container }) => {
7
- const qualityMasterModuleService = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
8
- const qualityNos = input.map((item) => item.QlyNo);
9
- const prev = await qualityMasterModuleService.listQualityMasters({
10
- qly_no: qualityNos,
11
- });
12
- const deleted = await qualityMasterModuleService.softDeleteQualityMasters(prev.map((item) => item.id));
13
- return new workflows_sdk_1.StepResponse(deleted, prev);
14
- }, async (prevData, { container }) => {
15
- if (!prevData)
16
- return;
17
- const qualityMasterModuleService = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
18
- await qualityMasterModuleService.createQualityMasters(prevData);
19
- });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLXF1YWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3F1YWxpdHktbWFzdGVyL3N0ZXBzL2RlbGV0ZS1xdWFsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUU3RSxvRUFBd0U7QUFZM0QsUUFBQSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLHFCQUFxQixFQUNyQixLQUFLLEVBQUUsS0FBK0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdkQsTUFBTSwwQkFBMEIsR0FDOUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQ0FBcUIsQ0FBQyxDQUFDO0lBRTNDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuRCxNQUFNLElBQUksR0FBRyxNQUFNLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDO1FBQy9ELE1BQU0sRUFBRSxVQUFVO0tBQ25CLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sMEJBQTBCLENBQUMsd0JBQXdCLENBQ3ZFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDNUIsQ0FBQztJQUVGLE9BQU8sSUFBSSw0QkFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QyxDQUFDLEVBQ0QsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDaEMsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPO0lBQ3RCLE1BQU0sMEJBQTBCLEdBQzlCLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQztJQUUzQyxNQUFNLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xFLENBQUMsQ0FDRixDQUFDIn0=
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchQualityData = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const BATCH_SIZE = 50;
6
- const MAX_RETRIES = 3;
7
- const RETRY_DELAY = 1000;
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
- const successfulResults = results.filter((result) => result !== null);
21
- if (results.length !== successfulResults.length && retryCount < MAX_RETRIES) {
22
- const failedIds = batch.filter((_, index) => results[index] === null);
23
- await sleep(RETRY_DELAY);
24
- const retryResults = await processBatch(erpService, datafor, failedIds, retryCount + 1);
25
- return [...successfulResults, ...retryResults];
26
- }
27
- return successfulResults.filter(Boolean);
28
- }
29
- catch (error) {
30
- console.error("Batch processing error:", error);
31
- if (retryCount < MAX_RETRIES) {
32
- await sleep(RETRY_DELAY);
33
- return processBatch(erpService, datafor, batch, retryCount + 1);
34
- }
35
- throw error;
36
- }
37
- };
38
- exports.fetchQualityData = (0, workflows_sdk_1.createStep)("fetch-quality-data", async (input, { container }) => {
39
- const erpService = container.resolve("erp");
40
- const { datafor, data } = input;
41
- const batches = [];
42
- for (let i = 0; i < data.length; i += BATCH_SIZE) {
43
- batches.push(data.slice(i, i + BATCH_SIZE));
44
- }
45
- const allResults = [];
46
- for (let i = 0; i < batches.length; i++) {
47
- const batchResults = await processBatch(erpService, datafor, batches[i]);
48
- allResults.push(...batchResults);
49
- }
50
- return new workflows_sdk_1.StepResponse(allResults.flatMap((innerArray) => innerArray));
51
- }, async () => {
52
- // noop
53
- });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtcXVhbGl0eS1tYXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3F1YWxpdHktbWFzdGVyL3N0ZXBzL2ZldGNoLXF1YWxpdHktbWFzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUk3RSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQztBQUV6QixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVoRixNQUFNLFlBQVksR0FBRyxLQUFLLEVBQ3hCLFVBQTRCLEVBQzVCLE9BQWUsRUFDZixLQUFlLEVBQ2YsVUFBVSxHQUFHLENBQUMsRUFDRSxFQUFFO0lBQ2xCLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDO2dCQUNILE9BQU8sTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixhQUFhLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckUsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFF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
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateQualityStep = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const quality_master_1 = require("../../../modules/quality-master");
6
- exports.updateQualityStep = (0, workflows_sdk_1.createStep)("update-quality-step", async (input, { container }) => {
7
- const qualityMasterModuleService = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
8
- const qualityNos = input.map((item) => item.QlyNo);
9
- const prev = await qualityMasterModuleService.listQualityMasters({
10
- qly_no: qualityNos,
11
- });
12
- const toUpdate = input
13
- .map((item) => {
14
- const prevItem = prev.find((p) => p.qly_no === item.QlyNo);
15
- if (prevItem) {
16
- return {
17
- id: prevItem.id,
18
- qly_no: item.QlyNo,
19
- qly_for: item.QlyFor,
20
- qly_code: item.QlyCode,
21
- qly_name: item.QlyName,
22
- qly_alias_name: item.QlyAliasName,
23
- is_block_for_use: item.IsBlockForUse,
24
- };
25
- }
26
- return null;
27
- })
28
- .filter(Boolean);
29
- const updated = await qualityMasterModuleService.updateQualityMasters(toUpdate);
30
- return new workflows_sdk_1.StepResponse(updated, prev);
31
- }, async (prevData, { container }) => {
32
- if (!prevData)
33
- return;
34
- const qualityMasterModuleService = container.resolve(quality_master_1.QUALITY_MASTER_MODULE);
35
- await qualityMasterModuleService.updateQualityMasters(prevData);
36
- });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXF1YWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3F1YWxpdHktbWFzdGVyL3N0ZXBzL3VwZGF0ZS1xdWFsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUU3RSxvRUFBd0U7QUFhM0QsUUFBQSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLHFCQUFxQixFQUNyQixLQUFLLEVBQUUsS0FBK0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdkQsTUFBTSwwQkFBMEIsR0FBeUIsU0FBUyxDQUFDLE9BQU8sQ0FDeEUsc0NBQXFCLENBQ3RCLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQztRQUMvRCxNQUFNLEVBQUUsVUFBVTtLQUNuQixDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxLQUFLO1NBQ25CLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDbEIsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDdEIsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUNqQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNyQyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO1NBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FRZCxDQUFDO0lBRUosTUFBTSxPQUFPLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FDbkUsUUFBUSxDQUNULENBQUM7SUFFRixPQUFPLElBQUksNEJBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQyxFQUNELEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTztJQUN0QixNQUFNLDBCQUEwQixHQUF5QixTQUFTLENBQUMsT0FBTyxDQUN4RSxzQ0FBcUIsQ0FDdEIsQ0FBQztJQUVGLE1BQU0sMEJBQTBCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUNGLENBQUMifQ==