@devx-commerce/plugin-gati 0.0.34-beta.1 → 0.0.34

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 (107) 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 +6 -32
  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 +9 -89
  7. package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +12 -145
  8. package/.medusa/server/src/modules/raw-master/models/raw-master.js +1 -2
  9. package/.medusa/server/src/modules/shape-master/models/shape-master.js +1 -2
  10. package/.medusa/server/src/subscribers/cutomer-updated.js +2 -1
  11. package/.medusa/server/src/subscribers/party-master.js +2 -2
  12. package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +2 -39
  13. package/.medusa/server/src/workflows/helpers/product-helper.js +106 -409
  14. package/.medusa/server/src/workflows/inward-master/helper/index.js +39 -88
  15. package/.medusa/server/src/workflows/party-master/steps/delete-party.js +7 -4
  16. package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +49 -1
  17. package/.medusa/server/src/workflows/party-master/workflows/index.js +1 -2
  18. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +189 -307
  19. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +4 -120
  20. package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +11 -9
  21. package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +9 -9
  22. package/package.json +1 -1
  23. package/.medusa/server/src/api/admin/masters/[master]/[id]/route.js +0 -121
  24. package/.medusa/server/src/api/admin/masters/[master]/route.js +0 -33
  25. package/.medusa/server/src/api/admin/masters/middlewares.js +0 -35
  26. package/.medusa/server/src/api/admin/masters/query-config.js +0 -14
  27. package/.medusa/server/src/api/admin/masters/search-middleware.js +0 -16
  28. package/.medusa/server/src/api/admin/masters/utils.js +0 -108
  29. package/.medusa/server/src/api/admin/masters/validators.js +0 -28
  30. package/.medusa/server/src/api/admin/variant-options/sync/route.js +0 -313
  31. package/.medusa/server/src/api/store/gold-rate/current/route.js +0 -70
  32. package/.medusa/server/src/api/store/gold-rate/historical/route.js +0 -108
  33. package/.medusa/server/src/api/store/gold-rate/middleware.js +0 -19
  34. package/.medusa/server/src/api/store/gold-rate/validators.js +0 -37
  35. package/.medusa/server/src/jobs/process-variant-option-sync.js +0 -521
  36. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +0 -14
  37. package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +0 -14
  38. package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +0 -14
  39. package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +0 -14
  40. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +0 -14
  41. package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +0 -14
  42. package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +0 -14
  43. package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +0 -14
  44. package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +0 -14
  45. package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +0 -14
  46. package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +0 -14
  47. package/.medusa/server/src/modules/extended-product/migrations/Migration20251119062526.js +0 -16
  48. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202055742.js +0 -14
  49. package/.medusa/server/src/modules/extended-product/migrations/Migration20251202064200.js +0 -16
  50. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251119063328.js +0 -20
  51. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120045708.js +0 -14
  52. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120051832.js +0 -14
  53. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120052514.js +0 -14
  54. package/.medusa/server/src/modules/extended-variant/migrations/Migration20251202055952.js +0 -14
  55. package/.medusa/server/src/modules/item-size-master/index.js +0 -13
  56. package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +0 -17
  57. package/.medusa/server/src/modules/item-size-master/models/item-size-master.js +0 -14
  58. package/.medusa/server/src/modules/item-size-master/service.js +0 -10
  59. package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +0 -14
  60. package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +0 -14
  61. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +0 -14
  62. package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +0 -14
  63. package/.medusa/server/src/modules/quality-master/index.js +0 -13
  64. package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +0 -16
  65. package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +0 -14
  66. package/.medusa/server/src/modules/quality-master/models/quality-master.js +0 -17
  67. package/.medusa/server/src/modules/quality-master/service.js +0 -10
  68. package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +0 -14
  69. package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +0 -14
  70. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +0 -14
  71. package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +0 -14
  72. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +0 -14
  73. package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +0 -14
  74. package/.medusa/server/src/modules/tone-master/index.js +0 -13
  75. package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +0 -16
  76. package/.medusa/server/src/modules/tone-master/models/tone-master.js +0 -15
  77. package/.medusa/server/src/modules/tone-master/service.js +0 -10
  78. package/.medusa/server/src/modules/variant-option-sync-queue/index.js +0 -13
  79. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +0 -19
  80. package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +0 -16
  81. package/.medusa/server/src/modules/variant-option-sync-queue/models/variant-option-sync-queue.js +0 -23
  82. package/.medusa/server/src/modules/variant-option-sync-queue/service.js +0 -49
  83. package/.medusa/server/src/utils/build-redis-key.js +0 -30
  84. package/.medusa/server/src/workflows/helpers/update-variant-option-metadata.js +0 -105
  85. package/.medusa/server/src/workflows/helpers/variant-helper.js +0 -212
  86. package/.medusa/server/src/workflows/item-size-master/create-or-update-item-size-master.js +0 -51
  87. package/.medusa/server/src/workflows/item-size-master/index.js +0 -15
  88. package/.medusa/server/src/workflows/item-size-master/steps/create-item-size.js +0 -21
  89. package/.medusa/server/src/workflows/item-size-master/steps/delete-item-size.js +0 -23
  90. package/.medusa/server/src/workflows/item-size-master/steps/fetch-item-size-master.js +0 -55
  91. package/.medusa/server/src/workflows/item-size-master/steps/update-item-size.js +0 -36
  92. package/.medusa/server/src/workflows/party-master/workflows/delete-party-master.js +0 -60
  93. package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-variant-update.js +0 -367
  94. package/.medusa/server/src/workflows/quality-master/create-or-update-quality-master.js +0 -58
  95. package/.medusa/server/src/workflows/quality-master/index.js +0 -30
  96. package/.medusa/server/src/workflows/quality-master/steps/create-quality.js +0 -22
  97. package/.medusa/server/src/workflows/quality-master/steps/delete-quality.js +0 -20
  98. package/.medusa/server/src/workflows/quality-master/steps/fetch-quality-master.js +0 -54
  99. package/.medusa/server/src/workflows/quality-master/steps/update-quality.js +0 -37
  100. package/.medusa/server/src/workflows/raw-master/create-or-update-raw-master.js +0 -58
  101. package/.medusa/server/src/workflows/shape-master/create-or-update-shape-master.js +0 -53
  102. package/.medusa/server/src/workflows/tone-master/create-or-update-tone-master.js +0 -52
  103. package/.medusa/server/src/workflows/tone-master/index.js +0 -30
  104. package/.medusa/server/src/workflows/tone-master/steps/create-tone.js +0 -22
  105. package/.medusa/server/src/workflows/tone-master/steps/delete-tone.js +0 -20
  106. package/.medusa/server/src/workflows/tone-master/steps/fetch-tone-master.js +0 -54
  107. package/.medusa/server/src/workflows/tone-master/steps/update-tone.js +0 -37
@@ -1,31 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeProductOptions = exports.createProductOptionsForPartyStyleId = exports.createProductOptionsStepFromData = exports.getPartyStyleExplorationLines = exports.getPartyStyleDetailLines = exports.getStyleCollectionLines = exports.getStyleExplorationLines = exports.getStyleDetailLines = exports.getExtendedVariantData = exports.getExtendedProductData = exports.getBaseMetalDetails = exports.calculateStyleCostsAndAmounts = exports.toKebabCase = exports.calculateDiamondDiscount = void 0;
3
+ exports.mergeProductOptions = exports.createProductOptionsForPartyStyleId = exports.createProductOptionsStepFromData = exports.getPartyStyleExplorationLines = exports.getPartyStyleDetailLines = exports.getStyleCollectionLines = exports.getStyleExplorationLines = exports.getStyleDetailLines = exports.getExtendedVariantData = exports.getExtendedProductData = exports.getBaseMetalDetails = exports.calculateStyleCostsAndAmounts = exports.toKebabCase = void 0;
4
4
  const common_1 = require("../types/common");
5
- /**
6
- * Calculate diamond discount value and type based on dis_markup_on flag
7
- * If dis_markup_on is false -> use dis_markup_per (percentage) -> type "percentage"
8
- * If dis_markup_on is true -> use dis_markup_amt (fixed amount in rupees) -> type "rupees"
9
- */
10
- const calculateDiamondDiscount = (styleDetails) => {
11
- const diamondDetails = styleDetails.find((detail) => detail.RawType === "Diamond");
12
- let totalValue = 0;
13
- let type = "rupees"; // Default to rupees
14
- if (diamondDetails) {
15
- if (diamondDetails.DisMarkupOn === false) {
16
- // Use percentage-based discount
17
- totalValue += diamondDetails.DisMarkupPer ?? 0;
18
- type = "percentage";
19
- }
20
- else if (diamondDetails.DisMarkupOn === true) {
21
- // Use fixed amount discount (rupees)
22
- totalValue += diamondDetails.DisMarkupAmt ?? 0;
23
- type = "rupees";
24
- }
25
- }
26
- return { value: totalValue, type };
27
- };
28
- exports.calculateDiamondDiscount = calculateDiamondDiscount;
29
5
  const toKebabCase = (strings) => {
30
6
  return strings
31
7
  .filter(Boolean)
@@ -61,20 +37,6 @@ const calculateStyleCostsAndAmounts = (styleDetails) => {
61
37
  const cpfTotalAmount = styleDetails
62
38
  .filter((detail) => detail.RawType === "Metal")
63
39
  .reduce((acc, detail) => acc + detail.CPFAmt, 0);
64
- // Calculate actual total amounts
65
- const actualMetalTotalAmount = styleDetails
66
- .filter((detail) => detail.RawType === "Metal")
67
- .reduce((acc, detail) => acc + (detail.ActualAmount ?? 0), 0);
68
- const actualDiamondTotalAmount = styleDetails
69
- .filter((detail) => detail.RawType === "Diamond")
70
- .reduce((acc, detail) => acc + (detail.ActualAmount ?? 0), 0);
71
- const actualStoneTotalAmount = styleDetails
72
- .filter((detail) => detail.RawType === "Stone" || detail.RawType === "Stone(Color Stone)")
73
- .reduce((acc, detail) => acc + (detail.ActualAmount ?? 0), 0);
74
- const actualCpfTotalAmount = styleDetails
75
- .filter((detail) => detail.RawType === "Metal")
76
- .reduce((acc, detail) => acc + (detail.OriginalCPFAmt ?? 0), 0);
77
- const actualTotalAmount = actualMetalTotalAmount + actualDiamondTotalAmount + actualStoneTotalAmount + actualCpfTotalAmount;
78
40
  return {
79
41
  metal_total_cost: metalTotalCost,
80
42
  diamond_total_cost: diamondTotalCost,
@@ -84,11 +46,6 @@ const calculateStyleCostsAndAmounts = (styleDetails) => {
84
46
  diamond_total_amount: diamondTotalAmount,
85
47
  stone_total_amount: stoneTotalAmount,
86
48
  cpf_total_amount: cpfTotalAmount,
87
- actual_metal_total_amount: actualMetalTotalAmount,
88
- actual_diamond_total_amount: actualDiamondTotalAmount,
89
- actual_stone_total_amount: actualStoneTotalAmount,
90
- actual_cpf_total_amount: actualCpfTotalAmount,
91
- actual_total_amount: actualTotalAmount,
92
49
  };
93
50
  };
94
51
  exports.calculateStyleCostsAndAmounts = calculateStyleCostsAndAmounts;
@@ -107,7 +64,6 @@ const getExtendedProductData = (styleData, baseMetalDetails, styleCalculations)
107
64
  style_date: styleData.StyleDate,
108
65
  style_code: styleData.StyleCode,
109
66
  style_alias_no: styleData.StyleAliasNo,
110
- parent_style_code: styleData.ParentStyleCode,
111
67
  grp_group_no: styleData.GrpGroupNo,
112
68
  category_group_name: styleData.CategoryGroupName,
113
69
  category_group_code: styleData.CategoryGroupCode,
@@ -170,48 +126,6 @@ const getExtendedProductData = (styleData, baseMetalDetails, styleCalculations)
170
126
  diamond_total_amount: styleCalculations.diamond_total_amount,
171
127
  stone_total_amount: styleCalculations.stone_total_amount,
172
128
  cpf_total_amount: styleCalculations.cpf_total_amount,
173
- actual_metal_total_amount: styleCalculations.actual_metal_total_amount,
174
- actual_diamond_total_amount: styleCalculations.actual_diamond_total_amount,
175
- actual_stone_total_amount: styleCalculations.actual_stone_total_amount,
176
- actual_cpf_total_amount: styleCalculations.actual_cpf_total_amount,
177
- actual_total_amount: styleCalculations.actual_total_amount,
178
- diamond_dis_markup_value: (0, exports.calculateDiamondDiscount)(styleData.StyleMstDetail).value,
179
- diamond_dis_markup_type: (0, exports.calculateDiamondDiscount)(styleData.StyleMstDetail).type,
180
- discount_markup_cost: styleData.DiscountMarkupCost || "",
181
- making_cost_on: styleData.MakingCostOn || "",
182
- metal_calculation_cost_on: styleData.MetalCalculationCostOn || "",
183
- gold_loss_cost_formula: styleData.GoldLossCostFormula || "",
184
- labour_cost_formula: styleData.LabourCostFormula || "",
185
- cost_margin_per: styleData.CostMarginPer ?? undefined,
186
- cost_margin_is_fix: styleData.CostMarginIsFix ?? undefined,
187
- actual_cost_margin_amt: styleData.ActualCostMarginAmt ?? undefined,
188
- cost_margin_amt: styleData.CostMarginAmt ?? undefined,
189
- cost_discount_per: styleData.CostDiscountPer ?? undefined,
190
- cost_discount_is_fix: styleData.CostDiscountIsFix ?? undefined,
191
- actual_cost_discount_amt: styleData.ActualCostDiscountAmt ?? undefined,
192
- cost_discount_amt: styleData.CostDiscountAmt ?? undefined,
193
- actual_cost: styleData.ActualCost ?? undefined,
194
- making_on: styleData.MakingOn || "",
195
- metal_calculation_on: styleData.MetalCalculationOn || "",
196
- gold_loss_formula: styleData.GoldLossFormula || "",
197
- labour_formula: styleData.LabourFormula || "",
198
- margin_per: styleData.MarginPer ?? undefined,
199
- margin_is_fix: styleData.MarginIsFix ?? undefined,
200
- actual_margin_amt: styleData.ActualMarginAmt ?? undefined,
201
- margin_amt: styleData.MarginAmt ?? undefined,
202
- discount_per: styleData.DiscountPer ?? undefined,
203
- discount_is_fix: styleData.DiscountIsFix ?? undefined,
204
- actual_discount_amt: styleData.ActualDiscountAmt ?? undefined,
205
- discount_amt: styleData.DiscountAmt ?? undefined,
206
- actual_mrp: styleData.ActualMRP ?? undefined,
207
- stamping_instruction: styleData.StampingInstruction || "",
208
- design_production_instruction: styleData.DesignProductionInstruction || "",
209
- customer_production_instruction: styleData.CustomerProductionInstruction || "",
210
- design_by: styleData.DesignBy || "",
211
- re_order_qty: styleData.ReOrderQty ?? undefined,
212
- master_qty: styleData.MasterQty ?? undefined,
213
- hsn_id: styleData.HSNId?.toString() ?? undefined,
214
- style_history: styleData.StyleHistory || "",
215
129
  };
216
130
  };
217
131
  exports.getExtendedProductData = getExtendedProductData;
@@ -258,42 +172,8 @@ const getExtendedVariantData = (styleData, baseMetalDetails, styleCalculations,
258
172
  currency: styleData.Currency || "INR",
259
173
  rate_chart: styleData.RateChart || "",
260
174
  discount_markup: styleData.DiscountMarkup || "",
261
- discount_markup_cost: styleData.DiscountMarkupCost || "",
262
- making_cost_on: styleData.MakingCostOn || "",
263
- metal_calculation_cost_on: styleData.MetalCalculationCostOn || "",
264
- gold_loss_cost_formula: styleData.GoldLossCostFormula || "",
265
- labour_cost_formula: styleData.LabourCostFormula || "",
266
- cost_margin_per: styleData.CostMarginPer ?? undefined,
267
- cost_margin_is_fix: styleData.CostMarginIsFix ?? undefined,
268
- actual_cost_margin_amt: styleData.ActualCostMarginAmt ?? undefined,
269
- cost_margin_amt: styleData.CostMarginAmt ?? undefined,
270
- cost_discount_per: styleData.CostDiscountPer ?? undefined,
271
- cost_discount_is_fix: styleData.CostDiscountIsFix ?? undefined,
272
- actual_cost_discount_amt: styleData.ActualCostDiscountAmt ?? undefined,
273
- cost_discount_amt: styleData.CostDiscountAmt ?? undefined,
274
- actual_cost: styleData.ActualCost ?? undefined,
275
175
  cost: styleData.Cost || 0,
276
- making_on: styleData.MakingOn || "",
277
- metal_calculation_on: styleData.MetalCalculationOn || "",
278
- gold_loss_formula: styleData.GoldLossFormula || "",
279
- labour_formula: styleData.LabourFormula || "",
280
- margin_per: styleData.MarginPer ?? undefined,
281
- margin_is_fix: styleData.MarginIsFix ?? undefined,
282
- actual_margin_amt: styleData.ActualMarginAmt ?? undefined,
283
- margin_amt: styleData.MarginAmt ?? undefined,
284
- discount_per: styleData.DiscountPer ?? undefined,
285
- discount_is_fix: styleData.DiscountIsFix ?? undefined,
286
- actual_discount_amt: styleData.ActualDiscountAmt ?? undefined,
287
- discount_amt: styleData.DiscountAmt ?? undefined,
288
- actual_mrp: styleData.ActualMRP ?? undefined,
289
176
  mrp: styleData.Mrp || 0,
290
- stamping_instruction: styleData.StampingInstruction || "",
291
- design_production_instruction: styleData.DesignProductionInstruction || "",
292
- customer_production_instruction: styleData.CustomerProductionInstruction || "",
293
- design_by: styleData.DesignBy || "",
294
- master_qty: styleData.MasterQty || undefined,
295
- hsn_id: styleData.HSNId?.toString() || undefined,
296
- style_history: styleData.StyleHistory || "",
297
177
  hsn_code: styleData.HSN || "",
298
178
  gross_weight: styleData.GrossWt || 0,
299
179
  net_weight: styleData.NetWt || 0,
@@ -322,13 +202,6 @@ const getExtendedVariantData = (styleData, baseMetalDetails, styleCalculations,
322
202
  diamond_total_amount: styleCalculations.diamond_total_amount,
323
203
  stone_total_amount: styleCalculations.stone_total_amount,
324
204
  cpf_total_amount: styleCalculations.cpf_total_amount,
325
- actual_metal_total_amount: styleCalculations.actual_metal_total_amount,
326
- actual_diamond_total_amount: styleCalculations.actual_diamond_total_amount,
327
- actual_stone_total_amount: styleCalculations.actual_stone_total_amount,
328
- actual_cpf_total_amount: styleCalculations.actual_cpf_total_amount,
329
- actual_total_amount: styleCalculations.actual_total_amount,
330
- diamond_dis_markup_value: (0, exports.calculateDiamondDiscount)(styleData.PartyStyleMstDetail).value,
331
- diamond_dis_markup_type: (0, exports.calculateDiamondDiscount)(styleData.PartyStyleMstDetail).type,
332
205
  sales_channels: [salesChannelId],
333
206
  is_default: false,
334
207
  };
@@ -336,7 +209,6 @@ const getExtendedVariantData = (styleData, baseMetalDetails, styleCalculations,
336
209
  exports.getExtendedVariantData = getExtendedVariantData;
337
210
  const getStyleDetailLines = (data) => {
338
211
  return data.map((detail) => {
339
- console.log(detail);
340
212
  return {
341
213
  style_id: detail.StyleId,
342
214
  style_mst_detail_id: detail.StyleMstDetailId,
@@ -372,74 +244,32 @@ const getStyleDetailLines = (data) => {
372
244
  stone_wt: detail.StoneWt || 0,
373
245
  default_wt: detail.DefaultWt || 0,
374
246
  raw_formula: detail.RawFormula || "",
375
- original_cost_rate: detail.OriginalCostRate ?? null,
376
- actual_cost_amount: detail.ActualCostAmount ?? null,
377
- dis_markup_cost_per: detail.DisMarkupCostPer ?? null,
378
- dis_markup_cost_on: detail.DisMarkupCostOn ?? null,
379
- cost_rate: detail.CostRate ?? 0,
380
- cost_amount: detail.CostAmount ?? 0,
381
- dis_markup_cost_amt: detail.DisMarkupCostAmt ?? null,
382
- final_cost_amt: detail.FinalCostAmt ?? null,
383
- original_hand_cost_rate: detail.OriginalHandCostRate ?? null,
384
- actual_hand_cost_amount: detail.ActualHandCostAmount ?? null,
385
- hand_dis_markup_cost_per: detail.HandDisMarkupCostPer ?? null,
386
- hand_dis_markup_cost_on: detail.HandDisMarkupCostOn ?? null,
387
- hand_cost_rate: detail.HandCostRate ?? 0,
388
- hand_cost_amount: detail.HandCostAmount ?? 0,
389
- original_set_cost_rate: detail.OriginalSetCostRate ?? null,
390
- actual_set_cost_amount: detail.ActualSetCostAmount ?? null,
391
- set_dis_markup_cost_per: detail.SetDisMarkupCostPer ?? null,
392
- set_dis_markup_cost_on: detail.SetDisMarkupCostOn ?? null,
393
- set_cost_rate: detail.SetCostRate ?? 0,
394
- set_cost_amount: detail.SetCostAmount ?? 0,
395
- loss_cost_per: detail.LossCostPer ?? 0,
396
- loss_cost_per_is_fix: detail.LossCostPerIsFix ?? false,
397
- loss_cost_weight: detail.LossCostWeight ?? 0,
398
- actual_loss_cost_amt: detail.ActualLossCostAmt ?? null,
399
- metal_loss_per_calc_cost_on: detail.MetalLossCostCalcOn ?? null,
400
- loss_cost_amt: detail.LossCostAmt ?? 0,
401
- original_cpf_cost_rate: detail.OriginalCPFCostRate ?? null,
402
- actual_cpf_cost_amt: detail.ActualCPFCostAmt ?? null,
403
- cpf_dis_markup_cost_per: detail.CPFDisMarkupCostPer ?? null,
404
- cpf_cost_rate: detail.CPFCostRate ?? 0,
405
- cpf_cost_is_fix: detail.CPFCostIsFix ?? false,
406
- original_cpf_cost_amt: detail.OriginalCPFCostAmt ?? null,
407
- cpf_amt_dis_markup_cost_per: detail.CPFAmtDisMarkupCostPer ?? null,
408
- cpf_cost_amt: detail.CPFCostAmt ?? 0,
409
- original_rate: detail.OriginalRate ?? null,
410
- actual_amount: detail.ActualAmount ?? null,
411
- dis_markup_on: detail.DisMarkupOn ?? null,
412
- dis_markup_per: detail.DisMarkupPer ?? null,
413
- rate: detail.Rate ?? 0,
414
- amount: detail.Amount ?? 0,
415
- dis_markup_amt: detail.DisMarkupAmt ?? null,
416
- final_amt: detail.FinalAmt ?? null,
417
- original_hand_rate: detail.OriginalHandRate ?? null,
418
- actual_hand_amount: detail.ActualHandAmount ?? null,
419
- hand_dis_markup_per: detail.HandDisMarkupPer ?? null,
420
- hand_dis_markup_on: detail.HandDisMarkupOn ?? null,
421
- hand_rate: detail.HandRate ?? 0,
422
- hand_amount: detail.HandAmount ?? 0,
423
- original_set_rate: detail.OriginalSetRate ?? null,
424
- actual_set_amount: detail.ActualSetAmount ?? null,
425
- set_dis_markup_per: detail.SetDisMarkupPer ?? null,
426
- set_dis_markup_on: detail.SetDisMarkupOn ?? null,
427
- set_rate: detail.SetRate ?? 0,
428
- set_amount: detail.SetAmount ?? 0,
429
- loss_per: detail.LossPer ?? 0,
430
- loss_per_is_fix: detail.LossPerIsFix ?? false,
431
- loss_weight: detail.LossWeight ?? 0,
432
- actual_loss_amt: detail.ActualLossAmt ?? null,
433
- metal_loss_per_calc_on: detail.MetalLossCalcOn ?? null,
434
- loss_amt: detail.LossAmt ?? 0,
435
- original_cpf_rate: detail.OriginalCPFRate ?? null,
436
- actual_cpf_amt: detail.ActualCPFAmt ?? null,
437
- cpf_dis_markup_per: detail.CPFDisMarkupPer ?? null,
438
- cpf_rate: detail.CPFRate ?? 0,
439
- cpf_is_fix: detail.CPFIsFix ?? false,
440
- original_cpf_amt: detail.OriginalCPFAmt ?? null,
441
- cpf_amt_dis_markup_per: detail.CPFAmtDisMarkupPer ?? null,
442
- cpf_amt: detail.CPFAmt ?? 0,
247
+ cost_rate: detail.CostRate || 0,
248
+ cost_amount: detail.CostAmount || 0,
249
+ hand_cost_rate: detail.HandCostRate || 0,
250
+ hand_cost_amount: detail.HandCostAmount || 0,
251
+ set_cost_rate: detail.SetCostRate || 0,
252
+ set_cost_amount: detail.SetCostAmount || 0,
253
+ loss_cost_per: detail.LossCostPer || 0,
254
+ loss_cost_per_is_fix: detail.LossCostPerIsFix || false,
255
+ loss_cost_weight: detail.LossCostWeight || 0,
256
+ loss_cost_amt: detail.LossCostAmt || 0,
257
+ cpf_cost_rate: detail.CPFCostRate || 0,
258
+ cpf_cost_is_fix: detail.CPFCostIsFix || false,
259
+ cpf_cost_amt: detail.CPFCostAmt || 0,
260
+ rate: detail.Rate || 0,
261
+ amount: detail.Amount || 0,
262
+ hand_rate: detail.HandRate || 0,
263
+ hand_amount: detail.HandAmount || 0,
264
+ set_rate: detail.SetRate || 0,
265
+ set_amount: detail.SetAmount || 0,
266
+ loss_per: detail.LossPer || 0,
267
+ loss_per_is_fix: detail.LossPerIsFix || false,
268
+ loss_weight: detail.LossWeight || 0,
269
+ loss_amt: detail.LossAmt || 0,
270
+ cpf_rate: detail.CPFRate || 0,
271
+ cpf_is_fix: detail.CPFIsFix || false,
272
+ cpf_amt: detail.CPFAmt || 0,
443
273
  };
444
274
  });
445
275
  };
@@ -506,74 +336,32 @@ const getPartyStyleDetailLines = (data) => {
506
336
  stone_wt: detail.StoneWt || 0,
507
337
  default_wt: detail.DefaultWt || 0,
508
338
  raw_formula: detail.RawFormula || "",
509
- original_cost_rate: detail.OriginalCostRate ?? null,
510
- actual_cost_amount: detail.ActualCostAmount ?? null,
511
- dis_markup_cost_per: detail.DisMarkupCostPer ?? null,
512
- dis_markup_cost_on: detail.DisMarkupCostOn ?? null,
513
- cost_rate: detail.CostRate ?? 0,
514
- cost_amount: detail.CostAmount ?? 0,
515
- dis_markup_cost_amt: detail.DisMarkupCostAmt ?? null,
516
- final_cost_amt: detail.FinalCostAmt ?? null,
517
- original_hand_cost_rate: detail.OriginalHandCostRate ?? null,
518
- actual_hand_cost_amount: detail.ActualHandCostAmount ?? null,
519
- hand_dis_markup_cost_per: detail.HandDisMarkupCostPer ?? null,
520
- hand_dis_markup_cost_on: detail.HandDisMarkupCostOn ?? null,
521
- hand_cost_rate: detail.HandCostRate ?? 0,
522
- hand_cost_amount: detail.HandCostAmount ?? 0,
523
- original_set_cost_rate: detail.OriginalSetCostRate ?? null,
524
- actual_set_cost_amount: detail.ActualSetCostAmount ?? null,
525
- set_dis_markup_cost_per: detail.SetDisMarkupCostPer ?? null,
526
- set_dis_markup_cost_on: detail.SetDisMarkupCostOn ?? null,
527
- set_cost_rate: detail.SetCostRate ?? 0,
528
- set_cost_amount: detail.SetCostAmount ?? 0,
529
- loss_cost_per: detail.LossCostPer ?? 0,
530
- loss_cost_per_is_fix: detail.LossCostPerIsFix ?? false,
531
- loss_cost_weight: detail.LossCostWeight ?? 0,
532
- actual_loss_cost_amt: detail.ActualLossCostAmt ?? null,
533
- metal_loss_per_calc_cost_on: detail.MetalLossCostCalcOn ?? null,
534
- loss_cost_amt: detail.LossCostAmt ?? 0,
535
- original_cpf_cost_rate: detail.OriginalCPFCostRate ?? null,
536
- actual_cpf_cost_amt: detail.ActualCPFCostAmt ?? null,
537
- cpf_dis_markup_cost_per: detail.CPFDisMarkupCostPer ?? null,
538
- cpf_cost_rate: detail.CPFCostRate ?? 0,
539
- cpf_cost_is_fix: detail.CPFCostIsFix ?? false,
540
- original_cpf_cost_amt: detail.OriginalCPFCostAmt ?? null,
541
- cpf_amt_dis_markup_cost_per: detail.CPFAmtDisMarkupCostPer ?? null,
542
- cpf_cost_amt: detail.CPFCostAmt ?? 0,
543
- original_rate: detail.OriginalRate ?? null,
544
- actual_amount: detail.ActualAmount ?? null,
545
- dis_markup_on: detail.DisMarkupOn ?? null,
546
- dis_markup_per: detail.DisMarkupPer ?? null,
547
- rate: detail.Rate ?? 0,
548
- amount: detail.Amount ?? 0,
549
- dis_markup_amt: detail.DisMarkupAmt ?? null,
550
- final_amt: detail.FinalAmt ?? null,
551
- original_hand_rate: detail.OriginalHandRate ?? null,
552
- actual_hand_amount: detail.ActualHandAmount ?? null,
553
- hand_dis_markup_per: detail.HandDisMarkupPer ?? null,
554
- hand_dis_markup_on: detail.HandDisMarkupOn ?? null,
555
- hand_rate: detail.HandRate ?? 0,
556
- hand_amount: detail.HandAmount ?? 0,
557
- original_set_rate: detail.OriginalSetRate ?? null,
558
- actual_set_amount: detail.ActualSetAmount ?? null,
559
- set_dis_markup_per: detail.SetDisMarkupPer ?? null,
560
- set_dis_markup_on: detail.SetDisMarkupOn ?? null,
561
- set_rate: detail.SetRate ?? 0,
562
- set_amount: detail.SetAmount ?? 0,
563
- loss_per: detail.LossPer ?? 0,
564
- loss_per_is_fix: detail.LossPerIsFix ?? false,
565
- loss_weight: detail.LossWeight ?? 0,
566
- actual_loss_amt: detail.ActualLossAmt ?? null,
567
- metal_loss_per_calc_on: detail.MetalLossCalcOn ?? null,
568
- loss_amt: detail.LossAmt ?? 0,
569
- original_cpf_rate: detail.OriginalCPFRate ?? null,
570
- actual_cpf_amt: detail.ActualCPFAmt ?? null,
571
- cpf_dis_markup_per: detail.CPFDisMarkupPer ?? null,
572
- cpf_rate: detail.CPFRate ?? 0,
573
- cpf_is_fix: detail.CPFIsFix ?? false,
574
- original_cpf_amt: detail.OriginalCPFAmt ?? null,
575
- cpf_amt_dis_markup_per: detail.CPFAmtDisMarkupPer ?? null,
576
- cpf_amt: detail.CPFAmt ?? 0,
339
+ cost_rate: detail.CostRate || 0,
340
+ cost_amount: detail.CostAmount || 0,
341
+ hand_cost_rate: detail.HandCostRate || 0,
342
+ hand_cost_amount: detail.HandCostAmount || 0,
343
+ set_cost_rate: detail.SetCostRate || 0,
344
+ set_cost_amount: detail.SetCostAmount || 0,
345
+ loss_cost_per: detail.LossCostPer || 0,
346
+ loss_cost_per_is_fix: detail.LossCostPerIsFix || false,
347
+ loss_cost_weight: detail.LossCostWeight || 0,
348
+ loss_cost_amt: detail.LossCostAmt || 0,
349
+ cpf_cost_rate: detail.CPFCostRate || 0,
350
+ cpf_cost_is_fix: detail.CPFCostIsFix || false,
351
+ cpf_cost_amt: detail.CPFCostAmt || 0,
352
+ rate: detail.Rate || 0,
353
+ amount: detail.Amount || 0,
354
+ hand_rate: detail.HandRate || 0,
355
+ hand_amount: detail.HandAmount || 0,
356
+ set_rate: detail.SetRate || 0,
357
+ set_amount: detail.SetAmount || 0,
358
+ loss_per: detail.LossPer || 0,
359
+ loss_per_is_fix: detail.LossPerIsFix || false,
360
+ loss_weight: detail.LossWeight || 0,
361
+ loss_amt: detail.LossAmt || 0,
362
+ cpf_rate: detail.CPFRate || 0,
363
+ cpf_is_fix: detail.CPFIsFix || false,
364
+ cpf_amt: detail.CPFAmt || 0,
577
365
  };
578
366
  });
579
367
  };
@@ -590,7 +378,7 @@ const getPartyStyleExplorationLines = (data) => {
590
378
  });
591
379
  };
592
380
  exports.getPartyStyleExplorationLines = getPartyStyleExplorationLines;
593
- const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qualityMasterMap, toneMasterMap, itemSizeMasterMap, shapeMasterMap, }) => {
381
+ const createProductOptionsStepFromData = (partyStyles) => {
594
382
  // Group all styles by StyleId
595
383
  const stylesByStyleId = new Map();
596
384
  partyStyles?.forEach((style) => {
@@ -608,8 +396,6 @@ const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qua
608
396
  metalColors: new Set(),
609
397
  diamondQualities: new Set(),
610
398
  sizes: new Set(),
611
- shapes: new Set(),
612
- carat: new Set(),
613
399
  };
614
400
  // Track if all styles in the group have each option type
615
401
  const optionAvailability = {
@@ -617,7 +403,6 @@ const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qua
617
403
  metalColors: true,
618
404
  diamondQualities: true,
619
405
  sizes: true,
620
- shapes: true,
621
406
  };
622
407
  // First, check option availability across all styles in this group
623
408
  styles.forEach((style) => {
@@ -629,7 +414,6 @@ const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qua
629
414
  let hasMetals = false;
630
415
  let hasMetalColors = false;
631
416
  let hasDiamondQualities = false;
632
- let hasShapes = false;
633
417
  style.PartyStyleMstDetail.forEach((detail) => {
634
418
  if (detail.RawType === "Metal" && detail.IsBase) {
635
419
  hasMetals = true;
@@ -637,9 +421,6 @@ const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qua
637
421
  }
638
422
  if (detail.RawType === "Diamond") {
639
423
  hasDiamondQualities = true;
640
- if (detail.IsBase) {
641
- hasShapes = true;
642
- }
643
424
  }
644
425
  });
645
426
  if (!hasMetals)
@@ -648,45 +429,37 @@ const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qua
648
429
  optionAvailability.metalColors = false;
649
430
  if (!hasDiamondQualities)
650
431
  optionAvailability.diamondQualities = false;
651
- if (!hasShapes)
652
- optionAvailability.shapes = false;
653
432
  });
654
433
  // Now gather values only for available options
655
434
  styles.forEach((style) => {
656
435
  // Only collect size data if all items have it
657
436
  if (optionAvailability.sizes && style.ItemSize) {
658
- options.sizes.add(itemSizeMasterMap.get(style.ItemSize) || String(style.ItemSize));
437
+ options.sizes.add(String(style.ItemSize));
659
438
  }
660
- const isSolitaireStyle = style.StockType === "LG SOLITAIRE" || style.StockType === "SOLITAIRE";
661
439
  // Process other options
662
440
  style.PartyStyleMstDetail.forEach((detail) => {
663
441
  if (optionAvailability.metals &&
664
442
  detail.RawType === "Metal" &&
665
443
  detail.IsBase) {
666
- options.metals.add(`${qualityMasterMap.get(detail.QlyCode)} ${rawMasterMap.get(detail.RawCode)}`);
444
+ options.metals.add(`${detail.QlyCode}KT ${detail.RawCode}`);
667
445
  // Map ToneCode to color name if metal colors are available
668
446
  if (optionAvailability.metalColors) {
669
- if (toneMasterMap.has(detail.ToneCode)) {
670
- options.metalColors.add(toneMasterMap.get(detail.ToneCode));
671
- }
672
- else {
673
- if (detail.ToneCode === "R")
674
- options.metalColors.add("Rose");
675
- else if (detail.ToneCode === "Y")
676
- options.metalColors.add("Yellow");
677
- else if (detail.ToneCode === "W")
678
- options.metalColors.add("White");
679
- else if (detail.ToneCode === "YRW")
680
- options.metalColors.add("YELLOW/ROSE/WHITE");
681
- else if (detail.ToneCode === "YW")
682
- options.metalColors.add("YELLOW/WHITE");
683
- else if (detail.ToneCode === "RW")
684
- options.metalColors.add("ROSE/WHITE");
685
- else if (detail.ToneCode === "BU")
686
- options.metalColors.add("BLUE");
687
- else if (detail.ToneCode === "BL")
688
- options.metalColors.add("BLACK");
689
- }
447
+ if (detail.ToneCode === "R")
448
+ options.metalColors.add("Rose");
449
+ else if (detail.ToneCode === "Y")
450
+ options.metalColors.add("Yellow");
451
+ else if (detail.ToneCode === "W")
452
+ options.metalColors.add("White");
453
+ else if (detail.ToneCode === "YRW")
454
+ options.metalColors.add("YELLOW/ROSE/WHITE");
455
+ else if (detail.ToneCode === "YW")
456
+ options.metalColors.add("YELLOW/WHITE");
457
+ else if (detail.ToneCode === "RW")
458
+ options.metalColors.add("ROSE/WHITE");
459
+ else if (detail.ToneCode === "BU")
460
+ options.metalColors.add("BLUE");
461
+ else if (detail.ToneCode === "BL")
462
+ options.metalColors.add("BLACK");
690
463
  }
691
464
  }
692
465
  if (optionAvailability.diamondQualities &&
@@ -694,18 +467,7 @@ const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qua
694
467
  detail.ToneCode &&
695
468
  detail.QlyCode &&
696
469
  detail.IsBase) {
697
- options.diamondQualities.add(`${toneMasterMap.get(detail.ToneCode)} ${qualityMasterMap.get(detail.QlyCode)}`);
698
- }
699
- if (optionAvailability.shapes &&
700
- isSolitaireStyle &&
701
- detail.RawType === "Diamond" &&
702
- detail.RawCode === "LGS" &&
703
- detail.IsBase) {
704
- const shapeTitle = shapeMasterMap.get(detail.ShapeCode) || detail.ShapeCode;
705
- if (shapeTitle) {
706
- options.shapes.add(shapeTitle);
707
- }
708
- options.carat.add(String(detail.Weight || 0));
470
+ options.diamondQualities.add(`${detail.ToneCode}/${detail.QlyCode}`);
709
471
  }
710
472
  });
711
473
  });
@@ -729,97 +491,51 @@ const createProductOptionsStepFromData = async (partyStyles, { rawMasterMap, qua
729
491
  if (optionAvailability.sizes && options.sizes.size > 0) {
730
492
  optionsArray.push({ title: "Size", values: Array.from(options.sizes) });
731
493
  }
732
- if (optionAvailability.shapes && options.shapes.size > 0) {
733
- optionsArray.push({ title: "Shape", values: Array.from(options.shapes) });
734
- }
735
- // Add Carat only for solitaire groups when we collected values
736
- if (options.carat.size > 0) {
737
- optionsArray.push({ title: "Carat", values: Array.from(options.carat) });
738
- }
739
- // Sort values alphabetically within each option and sort option titles
740
- const sortedOptions = optionsArray
741
- .map((opt) => ({
742
- title: opt.title,
743
- values: opt.values.slice().sort((a, b) => a.localeCompare(b)),
744
- }))
745
- .sort((a, b) => a.title.localeCompare(b.title));
746
494
  return {
747
495
  styleId,
748
- options: sortedOptions,
496
+ options: optionsArray,
749
497
  };
750
498
  });
751
499
  };
752
500
  exports.createProductOptionsStepFromData = createProductOptionsStepFromData;
753
- const createProductOptionsForPartyStyleId = (partyStyle, existingProduct, masterMaps) => {
501
+ const createProductOptionsForPartyStyleId = (partyStyle, existingProduct) => {
754
502
  const options = {
755
503
  metals: new Set(),
756
504
  metalColors: new Set(),
757
505
  diamondQualities: new Set(),
758
506
  sizes: new Set(),
759
- shapes: new Set(),
760
- carat: new Set(),
761
507
  };
762
508
  // Size
763
- if (partyStyle.ItemSize) {
764
- const sizeTitle = masterMaps.itemSizeMasterMap.get(partyStyle.ItemSize) ||
765
- String(partyStyle.ItemSize);
766
- options.sizes.add(sizeTitle);
767
- }
509
+ if (partyStyle.ItemSize)
510
+ options.sizes.add(String(partyStyle.ItemSize));
768
511
  // Track if this style has each option type
769
512
  let hasMetalOption = false;
770
513
  let hasDiamondOption = false;
771
- let hasShapeOption = false;
772
- // Detect solitaire for this party style
773
- const isSolitaireStyle = partyStyle.StockType === "LG SOLITAIRE" || partyStyle.StockType === "SOLITAIRE";
774
514
  partyStyle.PartyStyleMstDetail.forEach((detail) => {
775
515
  if (detail.RawType === "Metal" && detail.IsBase) {
776
516
  hasMetalOption = true;
777
- const qualityTitle = masterMaps.qualityMasterMap.get(detail.QlyCode) || detail.QlyCode;
778
- const rawTitle = masterMaps.rawMasterMap.get(detail.RawCode) || detail.RawCode;
779
- options.metals.add(`${qualityTitle} ${rawTitle}`);
780
- // Map ToneCode to color name using master first, then fallback to static values
781
- if (masterMaps.toneMasterMap.has(detail.ToneCode)) {
782
- options.metalColors.add(masterMaps.toneMasterMap.get(detail.ToneCode));
783
- }
784
- else {
785
- if (detail.ToneCode === "R")
786
- options.metalColors.add("Rose");
787
- else if (detail.ToneCode === "Y")
788
- options.metalColors.add("Yellow");
789
- else if (detail.ToneCode === "W")
790
- options.metalColors.add("White");
791
- else if (detail.ToneCode === "YRW")
792
- options.metalColors.add("YELLOW/ROSE/WHITE");
793
- else if (detail.ToneCode === "YW")
794
- options.metalColors.add("YELLOW/WHITE");
795
- else if (detail.ToneCode === "RW")
796
- options.metalColors.add("ROSE/WHITE");
797
- else if (detail.ToneCode === "BU")
798
- options.metalColors.add("BLUE");
799
- else if (detail.ToneCode === "BL")
800
- options.metalColors.add("BLACK");
801
- }
517
+ options.metals.add(`${detail.QlyCode}KT ${detail.RawCode}`);
518
+ // Map ToneCode to color name
519
+ if (detail.ToneCode === "R")
520
+ options.metalColors.add("Rose");
521
+ else if (detail.ToneCode === "Y")
522
+ options.metalColors.add("Yellow");
523
+ else if (detail.ToneCode === "W")
524
+ options.metalColors.add("White");
525
+ else if (detail.ToneCode === "YRW")
526
+ options.metalColors.add("YELLOW/ROSE/WHITE");
527
+ else if (detail.ToneCode === "YW")
528
+ options.metalColors.add("YELLOW/WHITE");
529
+ else if (detail.ToneCode === "RW")
530
+ options.metalColors.add("ROSE/WHITE");
531
+ else if (detail.ToneCode === "BU")
532
+ options.metalColors.add("BLUE");
533
+ else if (detail.ToneCode === "BL")
534
+ options.metalColors.add("BLACK");
802
535
  }
803
- if (detail.RawType === "Diamond" &&
804
- detail.ToneCode &&
805
- detail.QlyCode &&
806
- detail.IsBase) {
536
+ if (detail.RawType === "Diamond" && detail.ToneCode && detail.QlyCode && detail.IsBase) {
807
537
  hasDiamondOption = true;
808
- const toneTitle = masterMaps.toneMasterMap.get(detail.ToneCode) || detail.ToneCode;
809
- const qualityTitle = masterMaps.qualityMasterMap.get(detail.QlyCode) || detail.QlyCode;
810
- options.diamondQualities.add(`${toneTitle} ${qualityTitle}`);
811
- }
812
- // Handle solitaire shapes and carat
813
- if (isSolitaireStyle &&
814
- detail.RawType === "Diamond" &&
815
- detail.RawCode === "LGS" &&
816
- detail.IsBase) {
817
- hasShapeOption = true;
818
- const shapeTitle = masterMaps.shapeMasterMap?.get(detail.ShapeCode) || detail.ShapeCode;
819
- if (shapeTitle) {
820
- options.shapes.add(shapeTitle);
821
- }
822
- options.carat.add(String(detail.Weight || 0));
538
+ options.diamondQualities.add(`${detail.ToneCode}/${detail.QlyCode}`);
823
539
  }
824
540
  });
825
541
  // Prepare result object with only options that exist
@@ -828,42 +544,24 @@ const createProductOptionsForPartyStyleId = (partyStyle, existingProduct, master
828
544
  if (hasMetalOption &&
829
545
  options.metals.size > 0 &&
830
546
  existingProduct.options.find((option) => option.title === "Metal")) {
831
- result["Metal"] = Array.from(options.metals).sort((a, b) => a.localeCompare(b))[0];
547
+ result["Metal"] = Array.from(options.metals)[0];
832
548
  }
833
549
  if (hasMetalOption &&
834
550
  options.metalColors.size > 0 &&
835
551
  existingProduct.options.find((option) => option.title === "Metal Color")) {
836
- result["Metal Color"] = Array.from(options.metalColors).sort((a, b) => a.localeCompare(b))[0];
552
+ result["Metal Color"] = Array.from(options.metalColors)[0];
837
553
  }
838
554
  if (hasDiamondOption &&
839
555
  options.diamondQualities.size > 0 &&
840
556
  existingProduct.options.find((option) => option.title === "Diamond Quality")) {
841
- result["Diamond Quality"] = Array.from(options.diamondQualities).sort((a, b) => a.localeCompare(b))[0];
557
+ result["Diamond Quality"] = Array.from(options.diamondQualities)[0];
842
558
  }
843
559
  if (partyStyle.ItemSize &&
844
560
  options.sizes.size > 0 &&
845
561
  existingProduct.options.find((option) => option.title === "Size")) {
846
- result["Size"] = Array.from(options.sizes).sort((a, b) => a.localeCompare(b))[0];
847
- }
848
- if (isSolitaireStyle &&
849
- hasShapeOption &&
850
- options.shapes.size > 0 &&
851
- existingProduct.options.find((option) => option.title === "Shape")) {
852
- result["Shape"] = Array.from(options.shapes).sort((a, b) => a.localeCompare(b))[0];
853
- }
854
- // Add Carat only if solitaire and product has Carat option
855
- if (isSolitaireStyle &&
856
- options.carat.size > 0 &&
857
- existingProduct.options.find((option) => option.title === "Carat")) {
858
- result["Carat"] = Array.from(options.carat).sort((a, b) => a.localeCompare(b))[0];
859
- }
860
- // Sort result keys alphabetically for consistent ordering
861
- const sortedResult = {};
862
- const sortedKeys = Object.keys(result).sort((a, b) => a.localeCompare(b));
863
- for (const key of sortedKeys) {
864
- sortedResult[key] = result[key];
562
+ result["Size"] = Array.from(options.sizes)[0];
865
563
  }
866
- return sortedResult;
564
+ return result;
867
565
  };
868
566
  exports.createProductOptionsForPartyStyleId = createProductOptionsForPartyStyleId;
869
567
  const mergeProductOptions = (currentOptions, filteredOptions) => {
@@ -885,15 +583,14 @@ const mergeProductOptions = (currentOptions, filteredOptions) => {
885
583
  filteredOpt.values.forEach((value) => existingValues.add(value));
886
584
  allOptions.set(filteredOpt.title, existingValues);
887
585
  }
888
- // Convert back to the required format with sorted values and sorted titles
586
+ // Convert back to the required format
889
587
  for (const [title, values] of allOptions.entries()) {
890
588
  mergedOptions.push({
891
589
  title,
892
- values: Array.from(values).sort((a, b) => a.localeCompare(b)),
590
+ values: Array.from(values),
893
591
  });
894
592
  }
895
- // Sort options by title alphabetically
896
- return mergedOptions.sort((a, b) => a.title.localeCompare(b.title));
593
+ return mergedOptions;
897
594
  };
898
595
  exports.mergeProductOptions = mergeProductOptions;
899
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hlbHBlcnMvcHJvZHVjdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsNENBQStDO0FBRS9DOzs7O0dBSUc7QUFDSSxNQUFNLHdCQUF3QixHQUFHLENBQ3RDLFlBQTRELEVBQzNCLEVBQUU7SUFDbkMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FDdEMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUN6QyxDQUFDO0lBRUYsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLG9CQUFvQjtJQUV6QyxJQUFHLGNBQWMsRUFBQyxDQUFDO1FBQ2pCLElBQUksY0FBYyxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxnQ0FBZ0M7WUFDaEMsVUFBVSxJQUFJLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksR0FBRyxZQUFZLENBQUM7UUFDdEIsQ0FBQzthQUFNLElBQUksY0FBYyxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxxQ0FBcUM7WUFDckMsVUFBVSxJQUFJLGNBQWMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksR0FBRyxRQUFRLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUF2QlcsUUFBQSx3QkFBd0IsNEJBdUJuQztBQUVLLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBaUIsRUFBVSxFQUFFO0lBQ3ZELE9BQU8sT0FBTztTQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixJQUFJ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
596
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hlbHBlcnMvcHJvZHVjdC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsNENBQStDO0FBRXhDLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBaUIsRUFBVSxFQUFFO0lBQ3ZELE9BQU8sT0FBTztTQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ1QsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyw4QkFBOEI7U0FDbkQsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7U0FDMUIsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUM7QUFSVyxRQUFBLFdBQVcsZUFRdEI7QUFFSyxNQUFNLDZCQUE2QixHQUFHLENBQzNDLFlBQTRELEVBQ3pDLEVBQUU7SUFDckIsTUFBTSxjQUFjLEdBQUcsWUFBWTtTQUNoQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDO1NBQzlDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWTtTQUNsQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO1NBQ2hELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sY0FBYyxHQUFH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