@devx-commerce/plugin-gati 0.0.29 → 0.0.31-beta.0

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 (82) hide show
  1. package/.medusa/server/src/api/admin/masters/[master]/[id]/route.js +121 -0
  2. package/.medusa/server/src/api/admin/masters/[master]/route.js +33 -0
  3. package/.medusa/server/src/api/admin/masters/middlewares.js +35 -0
  4. package/.medusa/server/src/api/admin/masters/query-config.js +14 -0
  5. package/.medusa/server/src/api/admin/masters/search-middleware.js +16 -0
  6. package/.medusa/server/src/api/admin/masters/utils.js +108 -0
  7. package/.medusa/server/src/api/admin/masters/validators.js +28 -0
  8. package/.medusa/server/src/api/admin/middlewares.js +6 -2
  9. package/.medusa/server/src/api/admin/variant-options/sync/route.js +313 -0
  10. package/.medusa/server/src/api/erp/webhook/config.js +28 -5
  11. package/.medusa/server/src/jobs/process-variant-option-sync.js +428 -0
  12. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +14 -0
  13. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +14 -0
  14. package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +14 -0
  15. package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +14 -0
  16. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +14 -0
  17. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +14 -0
  18. package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +14 -0
  19. package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +14 -0
  20. package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +14 -0
  21. package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +14 -0
  22. package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +14 -0
  23. package/.medusa/server/src/modules/extended-product/models/extended-product.js +2 -1
  24. package/.medusa/server/src/modules/item-size-master/index.js +13 -0
  25. package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +17 -0
  26. package/.medusa/server/src/modules/item-size-master/models/item-size-master.js +14 -0
  27. package/.medusa/server/src/modules/item-size-master/service.js +10 -0
  28. package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +14 -0
  29. package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +14 -0
  30. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +14 -0
  31. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +14 -0
  32. package/.medusa/server/src/modules/quality-master/index.js +13 -0
  33. package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +16 -0
  34. package/.medusa/server/src/modules/quality-master/models/quality-master.js +15 -0
  35. package/.medusa/server/src/modules/quality-master/service.js +10 -0
  36. package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +14 -0
  37. package/.medusa/server/src/modules/raw-master/models/raw-master.js +2 -1
  38. package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +14 -0
  39. package/.medusa/server/src/modules/shape-master/models/shape-master.js +2 -1
  40. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +14 -0
  41. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +14 -0
  42. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +14 -0
  43. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +14 -0
  44. package/.medusa/server/src/modules/tone-master/index.js +13 -0
  45. package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +16 -0
  46. package/.medusa/server/src/modules/tone-master/models/tone-master.js +15 -0
  47. package/.medusa/server/src/modules/tone-master/service.js +10 -0
  48. package/.medusa/server/src/modules/variant-option-sync-queue/index.js +13 -0
  49. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +19 -0
  50. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +16 -0
  51. package/.medusa/server/src/modules/variant-option-sync-queue/models/variant-option-sync-queue.js +23 -0
  52. package/.medusa/server/src/modules/variant-option-sync-queue/service.js +10 -0
  53. package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +39 -2
  54. package/.medusa/server/src/workflows/helpers/product-helper.js +122 -66
  55. package/.medusa/server/src/workflows/helpers/variant-helper.js +212 -0
  56. package/.medusa/server/src/workflows/item-size-master/create-or-update-item-size-master.js +51 -0
  57. package/.medusa/server/src/workflows/item-size-master/index.js +15 -0
  58. package/.medusa/server/src/workflows/item-size-master/steps/create-item-size.js +21 -0
  59. package/.medusa/server/src/workflows/item-size-master/steps/delete-item-size.js +23 -0
  60. package/.medusa/server/src/workflows/item-size-master/steps/fetch-item-size-master.js +55 -0
  61. package/.medusa/server/src/workflows/item-size-master/steps/update-item-size.js +36 -0
  62. package/.medusa/server/src/workflows/party-master/steps/delete-party.js +2 -6
  63. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +89 -2
  64. package/.medusa/server/src/workflows/quality-master/create-or-update-quality-master.js +56 -0
  65. package/.medusa/server/src/workflows/quality-master/index.js +30 -0
  66. package/.medusa/server/src/workflows/quality-master/steps/create-quality.js +22 -0
  67. package/.medusa/server/src/workflows/quality-master/steps/delete-quality.js +20 -0
  68. package/.medusa/server/src/workflows/quality-master/steps/fetch-quality-master.js +54 -0
  69. package/.medusa/server/src/workflows/quality-master/steps/update-quality.js +37 -0
  70. package/.medusa/server/src/workflows/raw-master/create-or-update-raw-master.js +58 -0
  71. package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +9 -11
  72. package/.medusa/server/src/workflows/shape-master/create-or-update-shape-master.js +53 -0
  73. package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +9 -9
  74. package/.medusa/server/src/workflows/style-master/steps/delete-style-master.js +10 -7
  75. package/.medusa/server/src/workflows/tone-master/create-or-update-tone-master.js +52 -0
  76. package/.medusa/server/src/workflows/tone-master/index.js +30 -0
  77. package/.medusa/server/src/workflows/tone-master/steps/create-tone.js +22 -0
  78. package/.medusa/server/src/workflows/tone-master/steps/delete-tone.js +20 -0
  79. package/.medusa/server/src/workflows/tone-master/steps/fetch-tone-master.js +54 -0
  80. package/.medusa/server/src/workflows/tone-master/steps/update-tone.js +37 -0
  81. package/package.json +1 -1
  82. package/.medusa/server/development/erp-order-payload-example.js +0 -76
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
6
+ const api_response_1 = require("../../../../lib/api-response");
7
+ const POST = async (req, res) => {
8
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
9
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
10
+ const { product_id: productIdInput, variant_id: variantIdInput } = (req.body || {});
11
+ if (!productIdInput && !variantIdInput) {
12
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Provide either product_id or variant_id", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
13
+ }
14
+ try {
15
+ // Build master maps (same as job)
16
+ const { data: rawMasterArr } = await query.graph({
17
+ entity: "raw_master",
18
+ fields: ["id", "title", "raw_code"],
19
+ });
20
+ const { data: qualityMasterArr } = await query.graph({
21
+ entity: "quality_master",
22
+ fields: ["id", "title", "qly_code"],
23
+ });
24
+ const { data: toneMasterArr } = await query.graph({
25
+ entity: "tone_master",
26
+ fields: ["id", "title", "tone_code"],
27
+ });
28
+ const { data: itemSizeMasterArr } = await query.graph({
29
+ entity: "item_size_master",
30
+ fields: ["id", "title", "item_size_code"],
31
+ });
32
+ const rawMasterMap = new Map();
33
+ rawMasterArr?.forEach((x) => rawMasterMap.set(x.raw_code, x.title));
34
+ const qualityMasterMap = new Map();
35
+ qualityMasterArr?.forEach((x) => qualityMasterMap.set(x.qly_code, x.title));
36
+ const toneMasterMap = new Map();
37
+ toneMasterArr?.forEach((x) => toneMasterMap.set(x.tone_code, x.title));
38
+ const itemSizeMasterMap = new Map();
39
+ itemSizeMasterArr?.forEach((x) => itemSizeMasterMap.set(x.item_size_code, x.title));
40
+ const masterMaps = {
41
+ rawMasterMap,
42
+ qualityMasterMap,
43
+ toneMasterMap,
44
+ itemSizeMasterMap,
45
+ };
46
+ // Determine target variants and products
47
+ let productIds = [];
48
+ let targetVariants = [];
49
+ if (variantIdInput) {
50
+ const { data: variantArr } = await query.graph({
51
+ entity: "product_variant",
52
+ fields: ["id", "product_id"],
53
+ filters: { id: variantIdInput },
54
+ });
55
+ const variant = variantArr?.[0];
56
+ if (!variant) {
57
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Variant not found", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
58
+ }
59
+ const { data: evArr } = await query.graph({
60
+ entity: "extended_variant",
61
+ fields: ["id", "mapping_id"],
62
+ filters: { mapping_id: variant.id },
63
+ });
64
+ const ev = evArr?.[0];
65
+ if (!ev) {
66
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Extended variant not found for mapping", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
67
+ }
68
+ productIds = [variant.product_id];
69
+ targetVariants = [
70
+ { variantId: variant.id, productId: variant.product_id, extendedVariantId: ev.id },
71
+ ];
72
+ }
73
+ else if (productIdInput) {
74
+ const { data: variantArr } = await query.graph({
75
+ entity: "product_variant",
76
+ fields: ["id", "product_id"],
77
+ filters: { product_id: productIdInput },
78
+ });
79
+ if (!variantArr || variantArr.length === 0) {
80
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("No variants for product", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
81
+ }
82
+ const mappingIds = variantArr.map((v) => v.id);
83
+ const { data: evArr } = await query.graph({
84
+ entity: "extended_variant",
85
+ fields: ["id", "mapping_id"],
86
+ filters: { mapping_id: mappingIds },
87
+ });
88
+ const mappingToEv = new Map();
89
+ evArr?.forEach((ev) => {
90
+ if (ev.mapping_id)
91
+ mappingToEv.set(ev.mapping_id, ev.id);
92
+ });
93
+ productIds = [productIdInput];
94
+ targetVariants = variantArr
95
+ .filter((v) => mappingToEv.has(v.id))
96
+ .map((v) => ({
97
+ variantId: v.id,
98
+ productId: v.product_id,
99
+ extendedVariantId: mappingToEv.get(v.id),
100
+ }));
101
+ if (targetVariants.length === 0) {
102
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("No extended variants found for product variants", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
103
+ }
104
+ }
105
+ // Load products with options
106
+ const { data: products } = await query.graph({
107
+ entity: "product",
108
+ fields: ["id", "external_id", "options.*"],
109
+ filters: { id: productIds },
110
+ });
111
+ // Load extended variants for target list (include details needed for option generation)
112
+ const evIds = targetVariants.map((v) => v.extendedVariantId);
113
+ const { data: extendedVariants } = await query.graph({
114
+ entity: "extended_variant",
115
+ fields: [
116
+ "id",
117
+ "mapping_id",
118
+ "party_style_id",
119
+ "style_id",
120
+ "item_size",
121
+ "party_style_details.*",
122
+ ],
123
+ filters: { id: evIds },
124
+ });
125
+ const newOptionValuesByProduct = new Map();
126
+ const variantsToUpdate = [];
127
+ for (const tv of targetVariants) {
128
+ const product = products?.find((p) => p.id === tv.productId);
129
+ const extendedVariant = extendedVariants?.find((ev) => ev.id === tv.extendedVariantId);
130
+ if (!product || !extendedVariant)
131
+ continue;
132
+ if (!newOptionValuesByProduct.has(tv.productId)) {
133
+ newOptionValuesByProduct.set(tv.productId, new Map());
134
+ }
135
+ const productOptionMap = newOptionValuesByProduct.get(tv.productId);
136
+ const variantOptions = {};
137
+ // Size
138
+ if (extendedVariant.item_size) {
139
+ const sizeTitle = (masterMaps.itemSizeMasterMap.get(extendedVariant.item_size) ||
140
+ String(extendedVariant.item_size)).trim();
141
+ const sizeOption = product.options?.find((opt) => opt.title === "Size");
142
+ if (sizeOption) {
143
+ variantOptions["Size"] = sizeTitle;
144
+ // Track this value for product options update
145
+ if (!productOptionMap.has("Size")) {
146
+ productOptionMap.set("Size", new Set());
147
+ }
148
+ productOptionMap.get("Size").add(sizeTitle);
149
+ }
150
+ }
151
+ // Process party_style_details for metals, metal colors, and diamond qualities
152
+ let hasMetalOption = false;
153
+ let hasDiamondOption = false;
154
+ if (extendedVariant.party_style_details) {
155
+ for (const detail of extendedVariant.party_style_details) {
156
+ // Metal options
157
+ if (detail.raw_type === "Metal" && detail.is_base) {
158
+ hasMetalOption = true;
159
+ const qualityTitle = (masterMaps.qualityMasterMap.get(detail.qly_code) ||
160
+ detail.qly_code).trim();
161
+ const rawTitle = (masterMaps.rawMasterMap.get(detail.raw_code) ||
162
+ detail.raw_code).trim();
163
+ const metalValue = `${qualityTitle} ${rawTitle}`.trim();
164
+ const metalOption = product.options?.find((opt) => opt.title === "Metal");
165
+ if (metalOption) {
166
+ variantOptions["Metal"] = metalValue;
167
+ // Track this value for product options update
168
+ if (!productOptionMap.has("Metal")) {
169
+ productOptionMap.set("Metal", new Set());
170
+ }
171
+ productOptionMap.get("Metal").add(metalValue);
172
+ }
173
+ // Metal Color
174
+ if (detail.tone_code) {
175
+ let colorTitle = masterMaps.toneMasterMap.get(detail.tone_code) ||
176
+ detail.tone_code;
177
+ // Fallback to static mappings if not in master
178
+ if (!masterMaps.toneMasterMap.has(detail.tone_code)) {
179
+ if (detail.tone_code === "R")
180
+ colorTitle = "Rose";
181
+ else if (detail.tone_code === "Y")
182
+ colorTitle = "Yellow";
183
+ else if (detail.tone_code === "W")
184
+ colorTitle = "White";
185
+ else if (detail.tone_code === "YRW")
186
+ colorTitle = "YELLOW/ROSE/WHITE";
187
+ else if (detail.tone_code === "YW")
188
+ colorTitle = "YELLOW/WHITE";
189
+ else if (detail.tone_code === "RW")
190
+ colorTitle = "ROSE/WHITE";
191
+ else if (detail.tone_code === "BU")
192
+ colorTitle = "BLUE";
193
+ else if (detail.tone_code === "BL")
194
+ colorTitle = "BLACK";
195
+ }
196
+ colorTitle = colorTitle.trim();
197
+ const metalColorOption = product.options?.find((opt) => opt.title === "Metal Color");
198
+ if (metalColorOption) {
199
+ variantOptions["Metal Color"] = colorTitle;
200
+ // Track this value for product options update
201
+ if (!productOptionMap.has("Metal Color")) {
202
+ productOptionMap.set("Metal Color", new Set());
203
+ }
204
+ productOptionMap.get("Metal Color").add(colorTitle);
205
+ }
206
+ }
207
+ }
208
+ // Diamond Quality
209
+ if (detail.raw_type === "Diamond" &&
210
+ detail.tone_code &&
211
+ detail.qly_code &&
212
+ detail.is_base) {
213
+ hasDiamondOption = true;
214
+ const toneTitle = (masterMaps.toneMasterMap.get(detail.tone_code) ||
215
+ detail.tone_code).trim();
216
+ const qualityTitle = (masterMaps.qualityMasterMap.get(detail.qly_code) ||
217
+ detail.qly_code).trim();
218
+ const diamondValue = `${toneTitle} ${qualityTitle}`.trim();
219
+ const diamondOption = product.options?.find((opt) => opt.title === "Diamond Quality");
220
+ if (diamondOption) {
221
+ variantOptions["Diamond Quality"] = diamondValue;
222
+ // Track this value for product options update
223
+ if (!productOptionMap.has("Diamond Quality")) {
224
+ productOptionMap.set("Diamond Quality", new Set());
225
+ }
226
+ productOptionMap.get("Diamond Quality").add(diamondValue);
227
+ }
228
+ }
229
+ }
230
+ }
231
+ variantsToUpdate.push({
232
+ variant: {
233
+ id: tv.variantId,
234
+ options: variantOptions,
235
+ },
236
+ });
237
+ }
238
+ // STEP 1: Update product options FIRST to include all new values
239
+ // This ensures option values exist before assigning them to variants
240
+ const productsToUpdate = [];
241
+ for (const productId of productIds) {
242
+ const { data: allVariants } = await query.graph({
243
+ entity: "product_variant",
244
+ fields: ["id", "options.*"],
245
+ filters: { product_id: productId },
246
+ });
247
+ // Collect unique option values from existing variants
248
+ const productOptionsMap = new Map();
249
+ // First, collect from existing variants
250
+ for (const variant of allVariants || []) {
251
+ if (variant.options) {
252
+ for (const opt of variant.options) {
253
+ if (opt.title && opt.value) {
254
+ if (!productOptionsMap.has(opt.title)) {
255
+ productOptionsMap.set(opt.title, new Set());
256
+ }
257
+ productOptionsMap.get(opt.title).add(opt.value.trim());
258
+ }
259
+ }
260
+ }
261
+ }
262
+ // Then, merge in the new option values we'll be using
263
+ const newValuesForProduct = newOptionValuesByProduct.get(productId);
264
+ if (newValuesForProduct) {
265
+ for (const [optionTitle, newValues,] of newValuesForProduct.entries()) {
266
+ if (!productOptionsMap.has(optionTitle)) {
267
+ productOptionsMap.set(optionTitle, new Set());
268
+ }
269
+ // Merge new values into existing set
270
+ for (const value of newValues) {
271
+ productOptionsMap.get(optionTitle).add(value.trim());
272
+ }
273
+ }
274
+ }
275
+ // Convert to options format, filtering out empty strings
276
+ const productOptions = Array.from(productOptionsMap.entries())
277
+ .map(([title, values]) => ({
278
+ title,
279
+ values: Array.from(values).filter((v) => v.length > 0),
280
+ }))
281
+ .filter((opt) => opt.values.length > 0); // Only include options with values
282
+ productsToUpdate.push({
283
+ product: {
284
+ id: productId,
285
+ options: productOptions,
286
+ },
287
+ });
288
+ }
289
+ // Update products FIRST
290
+ if (productsToUpdate.length > 0) {
291
+ await (0, core_flows_1.updateProductsWorkflow)(req.scope).run({
292
+ input: { products: productsToUpdate.map((p) => p.product) },
293
+ });
294
+ }
295
+ // STEP 2: Now update variants with the new option values
296
+ // The option values now exist in the products, so this will succeed
297
+ if (variantsToUpdate.length > 0) {
298
+ await (0, core_flows_1.updateProductVariantsWorkflow)(req.scope).run({
299
+ input: { product_variants: variantsToUpdate.map((v) => v.variant) },
300
+ });
301
+ }
302
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
303
+ updated_products: productsToUpdate.length,
304
+ updated_variants: variantsToUpdate.length,
305
+ }, "Variant options synced"));
306
+ }
307
+ catch (e) {
308
+ logger.error("Error syncing variant options", e);
309
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(e?.message || "Internal error", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
310
+ }
311
+ };
312
+ exports.POST = POST;
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3ZhcmlhbnQtb3B0aW9ucy9zeW5jL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFzRTtBQUN0RSw0REFHcUM7QUFFckMsK0RBTXNDO0FBRS9CLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBK0IsRUFDL0IsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5FLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUdqRixDQUFDO0lBRUYsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFDakIseUNBQXlDLEVBQ3pDLHlCQUFVLENBQUMsV0FBVyxFQUN0Qix3QkFBUyxDQUFDLGdCQUFnQixDQUMzQixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsa0NBQWtDO1FBQ2xDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQy9DLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDO1NBQ3BDLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdC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
@@ -11,6 +11,14 @@ const party_style_master_1 = require("../../../workflows/party-style-master");
11
11
  const promocode_master_1 = require("../../../workflows/promocode-master");
12
12
  const raw_master_1 = require("../../../workflows/raw-master");
13
13
  const shape_master_1 = require("../../../workflows/shape-master");
14
+ const create_or_update_shape_master_1 = require("../../../workflows/shape-master/create-or-update-shape-master");
15
+ const create_or_update_raw_master_1 = require("../../../workflows/raw-master/create-or-update-raw-master");
16
+ const create_or_update_quality_master_1 = require("../../../workflows/quality-master/create-or-update-quality-master");
17
+ const quality_master_1 = require("../../../workflows/quality-master");
18
+ const create_or_update_tone_master_1 = require("../../../workflows/tone-master/create-or-update-tone-master");
19
+ const tone_master_1 = require("../../../workflows/tone-master");
20
+ const create_or_update_item_size_master_1 = require("../../../workflows/item-size-master/create-or-update-item-size-master");
21
+ const item_size_master_1 = require("../../../workflows/item-size-master");
14
22
  const shipping_info_master_1 = require("../../../workflows/shipping-info-master");
15
23
  const workflows_1 = require("../../../workflows/style-master/workflows");
16
24
  const sub_category_master_1 = require("../../../workflows/sub-category-master");
@@ -76,13 +84,28 @@ exports.MASTER_WORKFLOW_CONFIG = {
76
84
  },
77
85
  ShapeMst: {
78
86
  delete: createWorkflowHandler(shape_master_1.shapeMasterWorkflow, "ShapeMst", "delete"),
79
- add: createWorkflowHandler(shape_master_1.shapeMasterWorkflow, "ShapeMst", "add"),
80
- update: createWorkflowHandler(shape_master_1.shapeMasterWorkflow, "ShapeMst", "update"),
87
+ add: createWorkflowHandler(create_or_update_shape_master_1.createOrUpdateShapeMasterWorkflow, "ShapeMst", "add"),
88
+ update: createWorkflowHandler(create_or_update_shape_master_1.createOrUpdateShapeMasterWorkflow, "ShapeMst", "update"),
89
+ },
90
+ QualityMst: {
91
+ delete: createWorkflowHandler(quality_master_1.qualityMasterWorkflow, "QualityMst", "delete"),
92
+ add: createWorkflowHandler(create_or_update_quality_master_1.createOrUpdateQualityMasterWorkflow, "QualityMst", "add"),
93
+ update: createWorkflowHandler(create_or_update_quality_master_1.createOrUpdateQualityMasterWorkflow, "QualityMst", "update"),
94
+ },
95
+ ToneMst: {
96
+ delete: createWorkflowHandler(tone_master_1.toneMasterWorkflow, "ToneMst", "delete"),
97
+ add: createWorkflowHandler(create_or_update_tone_master_1.createOrUpdateToneMasterWorkflow, "ToneMst", "add"),
98
+ update: createWorkflowHandler(create_or_update_tone_master_1.createOrUpdateToneMasterWorkflow, "ToneMst", "update"),
99
+ },
100
+ ItemSizeMst: {
101
+ delete: createWorkflowHandler(item_size_master_1.itemSizeMasterWorkflow, "ItemSizeMst", "delete"),
102
+ add: createWorkflowHandler(create_or_update_item_size_master_1.createOrUpdateItemSizeMasterWorkflow, "ItemSizeMst", "add"),
103
+ update: createWorkflowHandler(create_or_update_item_size_master_1.createOrUpdateItemSizeMasterWorkflow, "ItemSizeMst", "update"),
81
104
  },
82
105
  RawMst: {
83
106
  delete: createWorkflowHandler(raw_master_1.rawMasterWorkflow, "RawMst", "delete"),
84
- add: createWorkflowHandler(raw_master_1.rawMasterWorkflow, "RawMst", "add"),
85
- update: createWorkflowHandler(raw_master_1.rawMasterWorkflow, "RawMst", "update"),
107
+ add: createWorkflowHandler(create_or_update_raw_master_1.createOrUpdateRawMasterWorkflow, "RawMst", "add"),
108
+ update: createWorkflowHandler(create_or_update_raw_master_1.createOrUpdateRawMasterWorkflow, "RawMst", "update"),
86
109
  },
87
110
  CollectionMst: {
88
111
  delete: createWorkflowHandler(collection_master_1.collectionMasterWorkflow, "CollectionMst", "delete"),
@@ -136,4 +159,4 @@ exports.MASTER_WORKFLOW_CONFIG = {
136
159
  update: createWorkflowHandler(promocode_master_1.promocodeMasterWorkflow, "Promocode", "update"),
137
160
  },
138
161
  };
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9lcnAvd2ViaG9vay9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0ZBQXVGO0FBQ3ZGLHdFQUE0RTtBQUM1RSx3RkFBMkY7QUFDM0YsNEVBQWdGO0FBQ2hGLG9FQUkwQztBQUMxQyxrRUFBc0U7QUFDdEUsOEVBRytDO0FBQy9DLDBFQUE4RTtBQUM5RSw4REFBa0U7QUFDbEUsa0VBQXNFO0FBQ3RFLGtGQUlpRDtBQUNqRCx5RUFHbUQ7QUFDbkQsZ0ZBQW1GO0FBNEJuRjs7R0FFRztBQUNILEtBQUssVUFBVSxtQkFBbUIsQ0FDaEMsS0FBVSxFQUNWLE1BQWEsRUFDYixPQUFtQixFQUNuQixTQUFvQixFQUNwQixlQUF3QjtJQUV4QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxJQUFJLE9BQU8sbUJBQW1CLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDdEIsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUNMLGVBQWU7b0JBQ2YsR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdkQsU0FBUyxFQUFFLEdBQUcsU0FBUyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDbEQsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQzlCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILEtBQUssVUFBVSw0QkFBNEIs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
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9lcnAvd2ViaG9vay9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0ZBQXVGO0FBQ3ZGLHdFQUE0RTtBQUM1RSx3RkFBMkY7QUFDM0YsNEVBQWdGO0FBQ2hGLG9FQUkwQztBQUMxQyxrRUFBc0U7QUFDdEUsOEVBRytDO0FBQy9DLDBFQUE4RTtBQUM5RSw4REFBa0U7QUFDbEUsa0VBQXNFO0FBQ3RFLGlIQUFrSDtBQUNsSCwyR0FBNEc7QUFDNUcsdUhBQXdIO0FBQ3hILHNFQUEwRTtBQUMxRSw4R0FBK0c7QUFDL0csZ0VBQW9FO0FBQ3BFLDZIQUE2SDtBQUM3SCwwRUFBNkU7QUFDN0Usa0ZBSWlEO0FBQ2pELHlFQUdtRDtBQUNuRCxnRkFBbUY7QUErQm5GOztHQUVHO0FBQ0gsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxLQUFVLEVBQ1YsTUFBYSxFQUNiLE9BQW1CLEVBQ25CLFNBQW9CLEVBQ3BCLGVBQXdCO0lBRXhCLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLElBQUksT0FBTyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLEVBQUUscUJBQXFCO1lBQzNCLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQ0wsZUFBZTtvQkFDZixHQUFHLFNBQVMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN2RCxTQUFTLEVBQUUsR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNsRCxLQUFLLEVBQUUs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