@devx-commerce/plugin-gati 0.0.34 → 0.0.35-beta.2

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