@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
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateVariantOptionMetadata = updateVariantOptionMetadata;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const variant_option_sync_queue_1 = require("../../modules/variant-option-sync-queue");
6
+ /**
7
+ * Updates product_option_value metadata with raw values
8
+ *
9
+ * This function:
10
+ * 1. Queries product variants to get their option values (product_option_value IDs)
11
+ * 2. Matches the raw values with the option values using variantId + optionTitle + optionValue
12
+ * 3. Updates the product_option_value.metadata column with the raw_value
13
+ *
14
+ * @param container - Medusa container
15
+ * @param rawValueMappings - Array of variant option raw value mappings
16
+ *
17
+ * @example
18
+ * // Assume you want to attach a raw_value "R" to the "Color" option value "Rose"
19
+ * // for variant "variant_123", and "W" for "Color":"White" for "variant_456":
20
+ * const rawValueMappings = [
21
+ * {
22
+ * variantId: "variant_123",
23
+ * optionTitle: "Metal Color",
24
+ * optionValue: "Rose",
25
+ * rawValue: "R"
26
+ * },
27
+ * {
28
+ * variantId: "variant_456",
29
+ * optionTitle: "Metal Color",
30
+ * optionValue: "White",
31
+ * rawValue: "W"
32
+ * }
33
+ * ];
34
+ * await updateVariantOptionMetadata(container, rawValueMappings);
35
+ */
36
+ async function updateVariantOptionMetadata(container, rawValueMappings) {
37
+ if (!rawValueMappings || rawValueMappings.length === 0) {
38
+ return;
39
+ }
40
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
41
+ const service = container.resolve(variant_option_sync_queue_1.VARIANT_OPTION_SYNC_QUEUE_MODULE);
42
+ try {
43
+ // Step 1: Get unique variant IDs
44
+ const variantIds = [...new Set(rawValueMappings.map((m) => m.variantId))];
45
+ // Step 2: Query variants with their options to get product_option_value IDs
46
+ const { data: productVariants } = await query.graph({
47
+ entity: "product_variant",
48
+ fields: [
49
+ "id",
50
+ "options.id", // This is the product_option_value.id
51
+ "options.value",
52
+ "options.option.title",
53
+ "options.metadata",
54
+ ],
55
+ filters: {
56
+ id: variantIds,
57
+ },
58
+ });
59
+ // Step 3: Build lookup map: variantId:optionTitle:optionValue -> rawValue
60
+ // Example:
61
+ // { variantId: "variant_123", optionTitle: "Metal Color", optionValue: "Rose", rawValue: "R" }
62
+ // the key will be "variant_123:Metal Color:Rose" and value will be "R"
63
+ const rawValueMap = new Map();
64
+ for (const mapping of rawValueMappings) {
65
+ const key = `${mapping.variantId}:${mapping.optionTitle}:${mapping.optionValue}`;
66
+ rawValueMap.set(key, mapping.rawValue);
67
+ }
68
+ // Step 4: Match queried options with raw values and prepare updates
69
+ const updates = [];
70
+ for (const variant of productVariants || []) {
71
+ if (!variant.options)
72
+ continue;
73
+ for (const option of variant.options) {
74
+ const optionTitle = option.option?.title; // example: "Metal Color"
75
+ const optionValue = option.value; // example: "Rose"
76
+ const optionId = option.id; // This is product_option_value.id
77
+ if (!optionTitle || !optionValue || !optionId)
78
+ continue;
79
+ // Match using variantId:optionTitle:optionValue
80
+ const key = `${variant.id}:${optionTitle}:${optionValue}`;
81
+ const rawValue = rawValueMap.get(key);
82
+ if (rawValue) {
83
+ // Merge with existing metadata and add raw_value example: { raw_value: "R" }
84
+ const existingMetadata = option.metadata || {};
85
+ updates.push({
86
+ id: optionId,
87
+ metadata: {
88
+ ...existingMetadata,
89
+ raw_value: rawValue,
90
+ },
91
+ });
92
+ }
93
+ }
94
+ }
95
+ // Step 5: Execute updates via service
96
+ if (updates.length > 0) {
97
+ await service.updateVariantOptionMetadata(updates);
98
+ }
99
+ }
100
+ catch (error) {
101
+ console.error("Error updating variant option metadata:", error);
102
+ // Don't throw - we don't want to break the main flow if metadata update fails
103
+ }
104
+ }
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXZhcmlhbnQtb3B0aW9uLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9oZWxwZXJzL3VwZGF0ZS12YXJpYW50LW9wdGlvbi1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRDQSxrRUFvRkM7QUFoSUQscURBQXNFO0FBQ3RFLHVGQUEyRjtBQWEzRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSSxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFNBQWMsRUFDZCxnQkFBeUM7SUFFekMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsTUFBTSxPQUFPLEdBQWtDLFNBQVMsQ0FBQyxPQUFPLENBQzlELDREQUFnQyxDQUNqQyxDQUFDO0lBRUYsSUFBSSxDQUFDO1FBQ0gsaUNBQWlDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUUsNEVBQTRFO1FBQzVFLE1BQU0sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2xELE1BQU0sRUFBRSxpQkFBaUI7WUFDekIsTUFBTSxFQUFFO2dCQUNOLElBQUk7Z0JBQ0osWUFBWSxFQUFFLHNDQUFzQztnQkFDcEQsZUFBZTtnQkFDZixzQkFBc0I7Z0JBQ3RCLGtCQUFrQjthQUNuQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsVUFBVTthQUNmO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMEVBQTBFO1FBQzFFLFlBQVk7UUFDWixnR0FBZ0c7UUFDaEcsd0VBQXdFO1FBQ3hFLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQzlDLEtBQUssTUFBTSxPQUFPLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakYsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxvRUFBb0U7UUFDcEUsTUFBTSxPQUFPLEdBR1IsRUFBRSxDQUFDO1FBRVIsS0FBSyxNQUFNLE9BQU8sSUFBSSxlQUFlLElBQUksRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO2dCQUFFLFNBQVM7WUFFL0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMseUJBQXlCO2dCQUNuRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCO2dCQUNwRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsa0NBQWtDO2dCQUU5RCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUTtvQkFBRSxTQUFTO2dCQUV4RCxnREFBZ0Q7Z0JBQ2hELE1BQU0sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxXQUFXLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQzFELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXRDLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsNkVBQTZFO29CQUM3RSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO29CQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNYLEVBQUUsRUFBRSxRQUFRO3dCQUNaLFFBQVEsRUFBRTs0QkFDUixHQUFHLGdCQUFnQjs0QkFDbkIsU0FBUyxFQUFFLFFBQVE7eUJBQ3BCO3FCQUNGLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sT0FBTyxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEUsOEVBQThFO0lBQ2hGLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findVariantsAffectedByMasterUpdate = findVariantsAffectedByMasterUpdate;
4
+ const BATCH_SIZE = 250; // Process extended variants in batches to avoid memory issues
5
+ /**
6
+ * Helper function to process extended variants in batches with pagination
7
+ * Returns a map of mapping_id -> extended_variant_id
8
+ */
9
+ async function processExtendedVariantsInBatches(query, fields, filters, processFn) {
10
+ const mappingIdToExtendedVariantId = new Map();
11
+ let skip = 0;
12
+ let hasMore = true;
13
+ while (hasMore) {
14
+ const { data: extendedVariants } = await query.graph({
15
+ entity: "extended_variant",
16
+ fields,
17
+ filters,
18
+ pagination: {
19
+ skip,
20
+ take: BATCH_SIZE,
21
+ },
22
+ });
23
+ if (!extendedVariants || extendedVariants.length === 0) {
24
+ hasMore = false;
25
+ break;
26
+ }
27
+ for (const ev of extendedVariants) {
28
+ if (processFn(ev) && ev.mapping_id && ev.id) {
29
+ mappingIdToExtendedVariantId.set(ev.mapping_id, ev.id);
30
+ }
31
+ }
32
+ // If we got fewer results than requested, we've reached the end
33
+ if (extendedVariants.length < BATCH_SIZE) {
34
+ hasMore = false;
35
+ }
36
+ else {
37
+ skip += BATCH_SIZE;
38
+ }
39
+ }
40
+ return mappingIdToExtendedVariantId;
41
+ }
42
+ /**
43
+ * Batch lookup product variants by their IDs
44
+ */
45
+ async function batchLookupProductVariants(query, variantIds) {
46
+ const variantIdToProductId = new Map();
47
+ if (variantIds.length === 0) {
48
+ return variantIdToProductId;
49
+ }
50
+ // Process in batches to avoid query size limits
51
+ const VARIANT_LOOKUP_BATCH_SIZE = 1000;
52
+ for (let i = 0; i < variantIds.length; i += VARIANT_LOOKUP_BATCH_SIZE) {
53
+ const batch = variantIds.slice(i, i + VARIANT_LOOKUP_BATCH_SIZE);
54
+ const { data: variants } = await query.graph({
55
+ entity: "product_variant",
56
+ fields: ["id", "product_id"],
57
+ filters: {
58
+ id: batch,
59
+ },
60
+ });
61
+ if (variants) {
62
+ for (const variant of variants) {
63
+ if (variant.product_id) {
64
+ variantIdToProductId.set(variant.id, variant.product_id);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ return variantIdToProductId;
70
+ }
71
+ /**
72
+ * Finds variants affected by a master title update
73
+ * Uses pagination and batching to avoid memory issues
74
+ * @param query - Query service instance
75
+ * @param masterType - Type of master (RawMst, QualityMst, ToneMst, ItemSizeMst)
76
+ * @param masterCode - The master code to search for
77
+ * @returns Array of affected variants with their product IDs
78
+ */
79
+ async function findVariantsAffectedByMasterUpdate(query, masterType, masterCode) {
80
+ const affectedVariants = [];
81
+ try {
82
+ let extendedVariantIdMap = new Map();
83
+ switch (masterType) {
84
+ case "RawMst": {
85
+ // Find variants where party_style_details have matching raw_code AND is_base === true
86
+ const fields = [
87
+ "id",
88
+ "mapping_id",
89
+ "style_id",
90
+ "party_style_details.raw_code",
91
+ "party_style_details.is_base",
92
+ "party_style_details.raw_type",
93
+ ];
94
+ extendedVariantIdMap = await processExtendedVariantsInBatches(query, fields, {}, (ev) => {
95
+ if (ev.party_style_details) {
96
+ return ev.party_style_details.some((detail) => detail.raw_code === masterCode &&
97
+ detail.is_base === true &&
98
+ detail.raw_type === "Metal");
99
+ }
100
+ return false;
101
+ });
102
+ break;
103
+ }
104
+ case "QualityMst": {
105
+ // Find variants where party_style_details have matching qly_code
106
+ const fields = [
107
+ "id",
108
+ "mapping_id",
109
+ "style_id",
110
+ "party_style_details.qly_code",
111
+ ];
112
+ extendedVariantIdMap = await processExtendedVariantsInBatches(query, fields, {}, (ev) => {
113
+ if (ev.party_style_details) {
114
+ return ev.party_style_details.some((detail) => detail.qly_code === masterCode);
115
+ }
116
+ return false;
117
+ });
118
+ break;
119
+ }
120
+ case "ToneMst": {
121
+ // Find variants where party_style_details have matching tone_code
122
+ const fields = [
123
+ "id",
124
+ "mapping_id",
125
+ "style_id",
126
+ "party_style_details.tone_code",
127
+ ];
128
+ extendedVariantIdMap = await processExtendedVariantsInBatches(query, fields, {}, (ev) => {
129
+ if (ev.party_style_details) {
130
+ return ev.party_style_details.some((detail) => detail.tone_code === masterCode);
131
+ }
132
+ return false;
133
+ });
134
+ break;
135
+ }
136
+ case "ItemSizeMst": {
137
+ // Find variants where extended_variant.item_size matches masterCode
138
+ // This case can use a filter, so we can query more efficiently
139
+ let skip = 0;
140
+ let hasMore = true;
141
+ while (hasMore) {
142
+ const { data: extendedVariants } = await query.graph({
143
+ entity: "extended_variant",
144
+ fields: ["id", "mapping_id", "style_id", "item_size"],
145
+ filters: {
146
+ item_size: masterCode,
147
+ },
148
+ pagination: {
149
+ skip,
150
+ take: BATCH_SIZE,
151
+ },
152
+ });
153
+ if (!extendedVariants || extendedVariants.length === 0) {
154
+ hasMore = false;
155
+ break;
156
+ }
157
+ for (const ev of extendedVariants) {
158
+ if (ev.mapping_id && ev.id) {
159
+ extendedVariantIdMap.set(ev.mapping_id, ev.id);
160
+ }
161
+ }
162
+ if (extendedVariants.length < BATCH_SIZE) {
163
+ hasMore = false;
164
+ }
165
+ else {
166
+ skip += BATCH_SIZE;
167
+ }
168
+ }
169
+ break;
170
+ }
171
+ case "ShapeMst": {
172
+ // Find variants where party_style_details have matching shape_code on base Diamond
173
+ const fields = [
174
+ "id",
175
+ "mapping_id",
176
+ "style_id",
177
+ "party_style_details.shape_code",
178
+ "party_style_details.raw_type",
179
+ "party_style_details.is_base",
180
+ ];
181
+ extendedVariantIdMap = await processExtendedVariantsInBatches(query, fields, {}, (ev) => {
182
+ if (ev.party_style_details) {
183
+ return ev.party_style_details.some((detail) => detail.shape_code === masterCode &&
184
+ detail.is_base === true &&
185
+ detail.raw_type === "Diamond");
186
+ }
187
+ return false;
188
+ });
189
+ break;
190
+ }
191
+ }
192
+ // Get all matching mapping IDs (variant IDs)
193
+ const matchingMappingIds = Array.from(extendedVariantIdMap.keys());
194
+ // Batch lookup all product variants at once
195
+ const variantIdToProductId = await batchLookupProductVariants(query, matchingMappingIds);
196
+ // Build the result array
197
+ for (const variantId of matchingMappingIds) {
198
+ const productId = variantIdToProductId.get(variantId);
199
+ const extendedVariantId = extendedVariantIdMap.get(variantId);
200
+ if (productId && extendedVariantId) {
201
+ affectedVariants.push({
202
+ variantId,
203
+ productId,
204
+ extendedVariantId,
205
+ });
206
+ }
207
+ }
208
+ }
209
+ catch (error) {
210
+ console.error(`Error finding affected variants for ${masterType} with code ${masterCode}:`, error);
211
+ throw error;
212
+ }
213
+ return affectedVariants;
214
+ }
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hlbHBlcnMvdmFyaWFudC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFzR0EsZ0ZBZ01DO0FBOVJELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLDhEQUE4RDtBQUV0Rjs7O0dBR0c7QUFDSCxLQUFLLFVBQVUsZ0NBQWdDLENBQzdDLEtBQVUsRUFDVixNQUFnQixFQUNoQixPQUFZLEVBQ1osU0FBK0I7SUFFL0IsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUMvRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFbkIsT0FBTyxPQUFPLEVBQUUsQ0FBQztRQUNmLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDbkQsTUFBTSxFQUFFLGtCQUFrQjtZQUMxQixNQUFNO1lBQ04sT0FBTztZQUNQLFVBQVUsRUFBRTtnQkFDVixJQUFJO2dCQUNKLElBQUksRUFBRSxVQUFVO2FBQ2pCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ2hCLE1BQU07UUFDUixDQUFDO1FBRUQsS0FBSyxNQUFNLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM1Qyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENB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
@@ -1,20 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
3
+ const utils_1 = require("@medusajs/framework/utils");
4
4
  const core_flows_1 = require("@medusajs/medusa/core-flows");
5
- const emitProductSyncedWorkflow = (0, workflows_sdk_1.createWorkflow)("emit-product-synced", ({ productId, additional_data, }) => {
6
- (0, core_flows_1.emitEventStep)({
7
- eventName: "product-status-synced",
8
- data: { productId, additional_data },
9
- });
10
- });
11
5
  core_flows_1.updateProductsWorkflow.hooks.productsUpdated(async ({ products, additional_data }, { container }) => {
12
- const eventWorkflow = emitProductSyncedWorkflow(container);
13
- await Promise.all(products.map((product) => eventWorkflow.run({
14
- input: {
6
+ const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
7
+ await Promise.all(products.map((product) => eventBus.emit({
8
+ name: "product-status-synced",
9
+ data: {
15
10
  productId: product.id,
16
11
  additional_data: additional_data?.[product?.external_id] || additional_data,
17
12
  },
18
13
  })));
19
14
  });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC11cGRhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9ob29rcy9wcm9kdWN0LXVwZGF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxRUFBbUU7QUFDbkUsNERBR3FDO0FBRXJDLE1BQU0seUJBQXlCLEdBQUcsSUFBQSw4QkFBYyxFQUM5QyxxQkFBcUIsRUFDckIsQ0FBQyxFQUNDLFNBQVMsRUFDVCxlQUFlLEdBSWhCLEVBQUUsRUFBRTtJQUNILElBQUEsMEJBQWEsRUFBQztRQUNaLFNBQVMsRUFBRSx1QkFBdUI7UUFDbEMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtLQUNyQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQztBQUVGLG1DQUFzQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQzFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDckQsTUFBTSxhQUFhLEdBQUcseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUN2QixhQUFhLENBQUMsR0FBRyxDQUFDO1FBQ2hCLEtBQUssRUFBRTtZQUNMLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNyQixlQUFlLEVBQ2IsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVksQ0FBQyxJQUFJLGVBQWU7U0FDOUQ7S0FDRixDQUFDLENBQ0gsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC11cGRhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9ob29rcy9wcm9kdWN0LXVwZGF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBb0Q7QUFDcEQsNERBQXFFO0FBR3JFLG1DQUFzQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQzFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDckQsTUFBTSxRQUFRLEdBQTJCLFNBQVMsQ0FBQyxPQUFPLENBQ3hELGVBQU8sQ0FBQyxTQUFTLENBQ2xCLENBQUM7SUFFRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDWixJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNyQixlQUFlLEVBQ2IsZUFBZSxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVksQ0FBQyxJQUFJLGVBQWU7U0FDOUQ7S0FDRixDQUFDLENBQ0gsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
@@ -44,27 +44,34 @@ const transformInwardMaster = (input) => {
44
44
  currency: input.Currency,
45
45
  rate_chart: input.RateChart,
46
46
  discount_markup: input.DiscountMarkup,
47
+ discount_markup_cost: input.DiscountMarkupCost,
47
48
  making_cost_on: input.MakingCostOn,
48
49
  metal_calculation_cost_on: input.MetalCalculationCostOn,
49
50
  gold_loss_cost_formula: input.GoldLossCostFormula,
50
51
  labour_cost_formula: input.LabourCostFormula,
51
- cost_margin_per: input.CostMarginPer,
52
- cost_margin_is_fix: input.CostMarginIsFix,
53
- cost_margin_amt: input.CostMarginAmt,
54
- cost_discount_per: input.CostDiscountPer,
55
- cost_discount_is_fix: input.CostDiscountIsFix,
56
- cost_discount_amt: input.CostDiscountAmt,
52
+ cost_margin_per: input.CostMarginPer ?? undefined,
53
+ cost_margin_is_fix: input.CostMarginIsFix ?? undefined,
54
+ actual_cost_margin_amt: input.ActualCostMarginAmt ?? undefined,
55
+ cost_margin_amt: input.CostMarginAmt ?? undefined,
56
+ cost_discount_per: input.CostDiscountPer ?? undefined,
57
+ cost_discount_is_fix: input.CostDiscountIsFix ?? undefined,
58
+ actual_cost_discount_amt: input.ActualCostDiscountAmt ?? undefined,
59
+ cost_discount_amt: input.CostDiscountAmt ?? undefined,
60
+ actual_cost: input.ActualCost ?? undefined,
57
61
  cost: input.Cost,
58
62
  making_on: input.MakingOn,
59
63
  metal_calculation_on: input.MetalCalculationOn,
60
64
  gold_loss_formula: input.GoldLossFormula,
61
65
  labour_formula: input.LabourFormula,
62
- margin_per: input.MarginPer,
63
- margin_is_fix: input.MarginIsFix,
64
- margin_amt: input.MarginAmt,
65
- discount_per: input.DiscountPer,
66
- discount_is_fix: input.DiscountIsFix,
67
- discount_amt: input.DiscountAmt,
66
+ margin_per: input.MarginPer ?? undefined,
67
+ margin_is_fix: input.MarginIsFix ?? undefined,
68
+ actual_margin_amt: input.ActualMarginAmt ?? undefined,
69
+ margin_amt: input.MarginAmt ?? undefined,
70
+ discount_per: input.DiscountPer ?? undefined,
71
+ discount_is_fix: input.DiscountIsFix ?? undefined,
72
+ actual_discount_amt: input.ActualDiscountAmt ?? undefined,
73
+ discount_amt: input.DiscountAmt ?? undefined,
74
+ actual_mrp: input.ActualMRP ?? undefined,
68
75
  mrp: input.Mrp,
69
76
  remarks: input.Remarks,
70
77
  hsn_id: input.HSNId,
@@ -120,32 +127,74 @@ const transformInwardDetail = (detail) => {
120
127
  pieces: detail.Pieces,
121
128
  weight: detail.Weight,
122
129
  raw_formula: detail.RawFormula,
123
- cost_rate: detail.CostRate,
124
- cost_amount: detail.CostAmount,
125
- hand_cost_rate: detail.HandCostRate,
126
- hand_cost_amount: detail.HandCostAmount,
127
- set_cost_rate: detail.SetCostRate,
128
- set_cost_amount: detail.SetCostAmount,
129
- loss_cost_per: detail.LossCostPer,
130
- loss_cost_per_is_fix: detail.LossCostPerIsFix,
131
- loss_cost_weight: detail.LossCostWeight,
132
- loss_cost_amt: detail.LossCostAmt,
133
- cpf_cost_rate: detail.CPFCostRate,
134
- cpf_cost_is_fix: detail.CPFCostIsFix,
135
- cpf_cost_amt: detail.CPFCostAmt,
136
- rate: detail.Rate,
137
- amount: detail.Amount,
138
- hand_rate: detail.HandRate,
139
- hand_amount: detail.HandAmount,
140
- set_rate: detail.SetRate,
141
- set_amount: detail.SetAmount,
142
- loss_per: detail.LossPer,
143
- loss_per_is_fix: detail.LossPerIsFix,
144
- loss_weight: detail.LossWeight,
145
- loss_amt: detail.LossAmt,
146
- cpf_rate: detail.CPFRate,
147
- cpf_is_fix: detail.CPFIsFix,
148
- cpf_amt: detail.CPFAmt,
130
+ original_cost_rate: detail.OriginalCostRate ?? null,
131
+ actual_cost_amount: detail.ActualCostAmount ?? null,
132
+ dis_markup_cost_per: detail.DisMarkupCostPer ?? null,
133
+ dis_markup_cost_on: detail.DisMarkupCostOn ?? null,
134
+ cost_rate: detail.CostRate ?? 0,
135
+ cost_amount: detail.CostAmount ?? 0,
136
+ dis_markup_cost_amt: detail.DisMarkupCostAmt ?? null,
137
+ final_cost_amt: detail.FinalCostAmt ?? null,
138
+ original_hand_cost_rate: detail.OriginalHandCostRate ?? null,
139
+ actual_hand_cost_amount: detail.ActualHandCostAmount ?? null,
140
+ hand_dis_markup_cost_per: detail.HandDisMarkupCostPer ?? null,
141
+ hand_dis_markup_cost_on: detail.HandDisMarkupCostOn ?? null,
142
+ hand_cost_rate: detail.HandCostRate ?? 0,
143
+ hand_cost_amount: detail.HandCostAmount ?? 0,
144
+ original_set_cost_rate: detail.OriginalSetCostRate ?? null,
145
+ actual_set_cost_amount: detail.ActualSetCostAmount ?? null,
146
+ set_dis_markup_cost_per: detail.SetDisMarkupCostPer ?? null,
147
+ set_dis_markup_cost_on: detail.SetDisMarkupCostOn ?? null,
148
+ set_cost_rate: detail.SetCostRate ?? 0,
149
+ set_cost_amount: detail.SetCostAmount ?? 0,
150
+ loss_cost_per: detail.LossCostPer ?? 0,
151
+ loss_cost_per_is_fix: detail.LossCostPerIsFix ?? false,
152
+ loss_cost_weight: detail.LossCostWeight ?? 0,
153
+ actual_loss_cost_amt: detail.ActualLossCostAmt ?? null,
154
+ metal_loss_per_calc_cost_on: detail.MetalLossPerCalcCostOn ?? null,
155
+ loss_cost_amt: detail.LossCostAmt ?? 0,
156
+ original_cpf_cost_rate: detail.OriginalCPFCostRate ?? null,
157
+ actual_cpf_cost_amt: detail.ActualCPFCostAmt ?? null,
158
+ cpf_dis_markup_cost_per: detail.CPFDisMarkupCostPer ?? null,
159
+ cpf_cost_rate: detail.CPFCostRate ?? 0,
160
+ cpf_cost_is_fix: detail.CPFCostIsFix ?? false,
161
+ original_cpf_cost_amt: detail.OriginalCPFCostAmt ?? null,
162
+ cpf_amt_dis_markup_cost_per: detail.CPFAmtDisMarkupCostPer ?? null,
163
+ cpf_cost_amt: detail.CPFCostAmt ?? 0,
164
+ original_rate: detail.OriginalRate ?? null,
165
+ actual_amount: detail.ActualAmount ?? null,
166
+ dis_markup_on: detail.DisMarkupOn ?? null,
167
+ dis_markup_per: detail.DisMarkupPer ?? null,
168
+ rate: detail.Rate ?? 0,
169
+ amount: detail.Amount ?? 0,
170
+ dis_markup_amt: detail.DisMarkupAmt ?? null,
171
+ final_amt: detail.FinalAmt ?? null,
172
+ original_hand_rate: detail.OriginalHandRate ?? null,
173
+ actual_hand_amount: detail.ActualHandAmount ?? null,
174
+ hand_dis_markup_per: detail.HandDisMarkupPer ?? null,
175
+ hand_dis_markup_on: detail.HandDisMarkupOn ?? null,
176
+ hand_rate: detail.HandRate ?? 0,
177
+ hand_amount: detail.HandAmount ?? 0,
178
+ original_set_rate: detail.OriginalSetRate ?? null,
179
+ actual_set_amount: detail.ActualSetAmount ?? null,
180
+ set_dis_markup_per: detail.SetDisMarkupPer ?? null,
181
+ set_dis_markup_on: detail.SetDisMarkupOn ?? null,
182
+ set_rate: detail.SetRate ?? 0,
183
+ set_amount: detail.SetAmount ?? 0,
184
+ loss_per: detail.LossPer ?? 0,
185
+ loss_per_is_fix: detail.LossPerIsFix ?? false,
186
+ loss_weight: detail.LossWeight ?? 0,
187
+ actual_loss_amt: detail.ActualLossAmt ?? null,
188
+ metal_loss_per_calc_on: detail.MetalLossPerCalcOn ?? null,
189
+ loss_amt: detail.LossAmt ?? 0,
190
+ original_cpf_rate: detail.OriginalCPFRate ?? null,
191
+ actual_cpf_amt: detail.ActualCPFAmt ?? null,
192
+ cpf_dis_markup_per: detail.CPFDisMarkupPer ?? null,
193
+ cpf_rate: detail.CPFRate ?? 0,
194
+ cpf_is_fix: detail.CPFIsFix ?? false,
195
+ original_cpf_amt: detail.OriginalCPFAmt ?? null,
196
+ cpf_amt_dis_markup_per: detail.CPFAmtDisMarkupPer ?? null,
197
+ cpf_amt: detail.CPFAmt ?? 0,
149
198
  };
150
199
  };
151
200
  exports.transformInwardDetail = transformInwardDetail;
@@ -374,4 +423,4 @@ const prepareUpdateInStockInput = ({ allInventoryItems, inwards, stockLocations,
374
423
  return adjustments;
375
424
  };
376
425
  exports.prepareUpdateInStockInput = prepareUpdateInStockInput;
377
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2lud2FyZC1tYXN0ZXIvaGVscGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLCtDQUFrRDtBQWEzQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFO0lBQ3hFLE9BQU87UUFDTCxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzNCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN6QixXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDN0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQ2hDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTztRQUN2QixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDekIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM5QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzVDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDakMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVztRQUMvQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN4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
426
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2lud2FyZC1tYXN0ZXIvaGVscGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLCtDQUFrRDtBQWEzQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFO0lBQ3hFLE9BQU87UUFDTCxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzNCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN6QixXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDN0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQ2hDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTztRQUN2QixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDekIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM5QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzVDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDakMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVztRQUMvQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN4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