@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.
- package/.medusa/server/src/api/admin/masters/[master]/[id]/route.js +121 -0
- package/.medusa/server/src/api/admin/masters/[master]/route.js +33 -0
- package/.medusa/server/src/api/admin/masters/middlewares.js +35 -0
- package/.medusa/server/src/api/admin/masters/query-config.js +14 -0
- package/.medusa/server/src/api/admin/masters/search-middleware.js +16 -0
- package/.medusa/server/src/api/admin/masters/utils.js +108 -0
- package/.medusa/server/src/api/admin/masters/validators.js +28 -0
- package/.medusa/server/src/api/admin/middlewares.js +6 -2
- package/.medusa/server/src/api/admin/variant-options/recalculate/route.js +446 -0
- package/.medusa/server/src/api/admin/variant-options/sync/route.js +329 -0
- package/.medusa/server/src/api/erp/webhook/config.js +37 -6
- package/.medusa/server/src/api/erp/webhook/route.js +10 -137
- package/.medusa/server/src/api/middlewares.js +3 -1
- package/.medusa/server/src/api/pos/gold-rate/middleware.js +13 -0
- package/.medusa/server/src/api/pos/gold-rate/route.js +96 -0
- package/.medusa/server/src/api/pos/middleware.js +13 -0
- package/.medusa/server/src/api/store/gold-rate/current/route.js +70 -0
- package/.medusa/server/src/api/store/gold-rate/historical/route.js +108 -0
- package/.medusa/server/src/api/store/gold-rate/middleware.js +19 -0
- package/.medusa/server/src/api/store/gold-rate/validators.js +37 -0
- package/.medusa/server/src/api/store/middleware.js +3 -1
- package/.medusa/server/src/jobs/process-erp-events.js +205 -0
- package/.medusa/server/src/jobs/process-variant-option-sync.js +536 -0
- package/.medusa/server/src/jobs/sync-order-erp.js +2 -2
- package/.medusa/server/src/modules/category-group-master/migrations/Migration20251031061116.js +14 -0
- package/.medusa/server/src/modules/category-group-master/migrations/Migration20251104045912.js +14 -0
- package/.medusa/server/src/modules/category-master/migrations/Migration20251031061327.js +14 -0
- package/.medusa/server/src/modules/category-master/migrations/Migration20251104045755.js +14 -0
- package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251031061432.js +14 -0
- package/.medusa/server/src/modules/collection-group-master/migrations/Migration20251104050102.js +14 -0
- package/.medusa/server/src/modules/collection-master/migrations/Migration20251031060941.js +14 -0
- package/.medusa/server/src/modules/collection-master/migrations/Migration20251104050012.js +14 -0
- package/.medusa/server/src/modules/discount-master/migrations/Migration20251031061523.js +14 -0
- package/.medusa/server/src/modules/discount-master/migrations/Migration20251104050153.js +14 -0
- package/.medusa/server/src/modules/erp/service.js +59 -1
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251103182726.js +14 -0
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251119062526.js +16 -0
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251202055742.js +14 -0
- package/.medusa/server/src/modules/extended-product/migrations/Migration20251202064200.js +16 -0
- package/.medusa/server/src/modules/extended-product/models/extended-product.js +89 -9
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251119063328.js +20 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120045708.js +14 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120051832.js +14 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251120052514.js +14 -0
- package/.medusa/server/src/modules/extended-variant/migrations/Migration20251202055952.js +14 -0
- package/.medusa/server/src/modules/extended-variant/models/extended-variant.js +145 -12
- package/.medusa/server/src/modules/item-size-master/index.js +13 -0
- package/.medusa/server/src/modules/item-size-master/migrations/Migration20251031111036.js +17 -0
- package/.medusa/server/src/modules/item-size-master/models/item-size-master.js +14 -0
- package/.medusa/server/src/modules/item-size-master/service.js +10 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20251031061657.js +14 -0
- package/.medusa/server/src/modules/party-master/migrations/Migration20251104050242.js +14 -0
- package/.medusa/server/src/modules/promocode-master/migrations/Migration20251031061829.js +14 -0
- package/.medusa/server/src/modules/promocode-master/migrations/Migration20251104050332.js +14 -0
- package/.medusa/server/src/modules/quality-master/index.js +13 -0
- package/.medusa/server/src/modules/quality-master/migrations/Migration20251031095211.js +16 -0
- package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +14 -0
- package/.medusa/server/src/modules/quality-master/models/quality-master.js +17 -0
- package/.medusa/server/src/modules/quality-master/service.js +10 -0
- package/.medusa/server/src/modules/raw-master/migrations/Migration20251031061912.js +14 -0
- package/.medusa/server/src/modules/raw-master/models/raw-master.js +2 -1
- package/.medusa/server/src/modules/shape-master/migrations/Migration20251031062019.js +14 -0
- package/.medusa/server/src/modules/shape-master/models/shape-master.js +2 -1
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251031062128.js +14 -0
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251104050501.js +14 -0
- package/.medusa/server/src/modules/shipping-info-master/migrations/Migration20251203083315.js +16 -0
- package/.medusa/server/src/modules/shipping-info-master/models/shipping-info-master.js +2 -2
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251031062303.js +14 -0
- package/.medusa/server/src/modules/sub-category-master/migrations/Migration20251104050743.js +14 -0
- package/.medusa/server/src/modules/tone-master/index.js +13 -0
- package/.medusa/server/src/modules/tone-master/migrations/Migration20251031104320.js +16 -0
- package/.medusa/server/src/modules/tone-master/models/tone-master.js +15 -0
- package/.medusa/server/src/modules/tone-master/service.js +10 -0
- package/.medusa/server/src/modules/variant-option-sync-queue/index.js +13 -0
- package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251101082220.js +19 -0
- package/.medusa/server/src/modules/variant-option-sync-queue/migrations/Migration20251103123857.js +16 -0
- package/.medusa/server/src/modules/variant-option-sync-queue/models/variant-option-sync-queue.js +23 -0
- package/.medusa/server/src/modules/variant-option-sync-queue/service.js +49 -0
- package/.medusa/server/src/subscribers/cutomer-updated.js +2 -1
- package/.medusa/server/src/subscribers/party-master.js +35 -34
- package/.medusa/server/src/utils/build-redis-key.js +30 -0
- package/.medusa/server/src/workflows/create-or-update-product-options/steps/create-update-product-options.js +39 -2
- package/.medusa/server/src/workflows/helpers/product-helper.js +445 -115
- package/.medusa/server/src/workflows/helpers/update-variant-option-metadata.js +105 -0
- package/.medusa/server/src/workflows/helpers/variant-helper.js +215 -0
- package/.medusa/server/src/workflows/hooks/product-updated.js +6 -11
- package/.medusa/server/src/workflows/inward-master/helper/index.js +88 -39
- package/.medusa/server/src/workflows/inward-master/workflows/update-inward.js +6 -2
- package/.medusa/server/src/workflows/item-size-master/create-or-update-item-size-master.js +51 -0
- package/.medusa/server/src/workflows/item-size-master/index.js +15 -0
- package/.medusa/server/src/workflows/item-size-master/steps/create-item-size.js +21 -0
- package/.medusa/server/src/workflows/item-size-master/steps/delete-item-size.js +23 -0
- package/.medusa/server/src/workflows/item-size-master/steps/fetch-item-size-master.js +55 -0
- package/.medusa/server/src/workflows/item-size-master/steps/update-item-size.js +36 -0
- package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +3 -2
- package/.medusa/server/src/workflows/orders/utils/order-helper.js +6 -5
- package/.medusa/server/src/workflows/orders/workflows/sync-order-to-erp.js +27 -2
- package/.medusa/server/src/workflows/party-master/steps/delete-party.js +4 -7
- package/.medusa/server/src/workflows/party-master/steps/fetch-party-master.js +2 -1
- package/.medusa/server/src/workflows/party-master/workflows/create-or-update-party-master.js +2 -50
- package/.medusa/server/src/workflows/party-master/workflows/delete-party-master.js +60 -0
- package/.medusa/server/src/workflows/party-master/workflows/index.js +2 -1
- package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-deletion.js +80 -195
- package/.medusa/server/src/workflows/party-style-master/steps/update-product-options-after-variant-update.js +448 -0
- package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master.js +126 -4
- package/.medusa/server/src/workflows/quality-master/create-or-update-quality-master.js +58 -0
- package/.medusa/server/src/workflows/quality-master/index.js +30 -0
- package/.medusa/server/src/workflows/quality-master/steps/create-quality.js +22 -0
- package/.medusa/server/src/workflows/quality-master/steps/delete-quality.js +20 -0
- package/.medusa/server/src/workflows/quality-master/steps/fetch-quality-master.js +54 -0
- package/.medusa/server/src/workflows/quality-master/steps/update-quality.js +37 -0
- package/.medusa/server/src/workflows/raw-master/create-or-update-raw-master.js +58 -0
- package/.medusa/server/src/workflows/raw-master/steps/delete-raw.js +9 -11
- package/.medusa/server/src/workflows/shape-master/create-or-update-shape-master.js +53 -0
- package/.medusa/server/src/workflows/shape-master/steps/delete-shape.js +9 -9
- package/.medusa/server/src/workflows/style-master/workflows/create-or-update-style-master.js +2 -2
- package/.medusa/server/src/workflows/tone-master/create-or-update-tone-master.js +52 -0
- package/.medusa/server/src/workflows/tone-master/index.js +30 -0
- package/.medusa/server/src/workflows/tone-master/steps/create-tone.js +22 -0
- package/.medusa/server/src/workflows/tone-master/steps/delete-tone.js +20 -0
- package/.medusa/server/src/workflows/tone-master/steps/fetch-tone-master.js +54 -0
- package/.medusa/server/src/workflows/tone-master/steps/update-tone.js +37 -0
- package/.medusa/server/src/workflows/update-extended-product-from-product/index.js +6 -8
- package/.medusa/server/src/workflows/update-extended-variant-from-variant/workflows/update-extended-variant-status-from-variant.js +9 -3
- 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
|
|
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
|
|
13
|
-
await Promise.all(products.map((product) =>
|
|
14
|
-
|
|
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,
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2lud2FyZC1tYXN0ZXIvaGVscGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLCtDQUFrRDtBQWEzQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFO0lBQ3hFLE9BQU87UUFDTCxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzNCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN6QixXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDN0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQ2hDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTztRQUN2QixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDekIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM5QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzVDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDakMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVztRQUMvQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN4QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDaEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzlCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN6QixjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDbEMsYUFBYSxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQ2hDLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMzQixlQUFlLEVBQUUsS0FBSyxDQUFDLGFBQWE7UUFDcEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzlCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN6QixjQUFjLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDbEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3ZCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztRQUNsQixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3pCLE1BQU0sRUFBRSxJQUFBLHFCQUFZLEVBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDN0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMzQixlQUFlLEVBQUUsS0FBSyxDQUFDLGNBQWM7UUFDckMsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZO1FBQ2xDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7UUFDdkQsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtRQUNqRCxtQkFBbUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzVDLGVBQWUsRUFBRSxLQUFLLENBQUMsYUFBYTtRQUNwQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN6QyxlQUFlLEVBQUUsS0FBSyxDQUFDLGFBQWE7UUFDcEMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGVBQWU7UUFDeEMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtRQUM3QyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN4QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3pCLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7UUFDOUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGVBQWU7UUFDeEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ25DLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMzQixhQUFhLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDaEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzNCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVztRQUMvQixlQUFlLEVBQUUsS0FBSyxDQUFDLGFBQWE7UUFDcEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQy9CLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztRQUNkLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDbkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHO1FBQ25CLFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3ZCLGNBQWMsRUFBRSxLQUFLLENBQUMsYUFBYTtRQUNuQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1FBQy9DLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7UUFDL0MsWUFBWSxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQzNCLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSztRQUN2QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsYUFBYTtRQUN0QyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsWUFBWTtRQUN4Qyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1FBQ25ELDJCQUEyQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7UUFDckQsZUFBZSxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQ2xDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQ3BDLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUTtRQUM1QixlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDL0IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXBGVyxRQUFBLHFCQUFxQix5QkFvRmhDO0FBRUssTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE1BQXlCLEVBQUUsRUFBRTtJQUNqRSxPQUFPO1FBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3hCLGVBQWUsRUFBRSxNQUFNLENBQUMsYUFBYTtRQUNyQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDdEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQzFCLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUMxQixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDeEIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztRQUNwQixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDeEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3hCLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUztRQUM1QixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3hCLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUN0QixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDMUIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUN0QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQzFCLGNBQWMsRUFBRSxNQUFNLENBQUMsYUFBYTtRQUNwQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDL0IsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGVBQWU7UUFDeEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVztRQUNoQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDM0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3RCLGVBQWUsRUFBRSxNQUFNLENBQUMsYUFBYTtRQUNyQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVTtRQUM5QixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDMUIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzlCLGNBQWMsRUFBRSxNQUFNLENBQUMsWUFBWTtRQUNuQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsY0FBYztRQUN2QyxhQUFhLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDakMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ3JDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVztRQUNqQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1FBQzdDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxjQUFjO1FBQ3ZDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVztRQUNqQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDakMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1FBQ3BDLFlBQVksRUFBRSxNQUFNLENBQUMsVUFBVTtRQUMvQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUMxQixXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVU7UUFDOUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3hCLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUztRQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDeEIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1FBQ3BDLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVTtRQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDeEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3hCLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUMzQixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU07S0FDdkIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQTNEVyxRQUFBLHFCQUFxQix5QkEyRGhDO0FBRUssTUFBTSwyQkFBMkIsR0FBRyxDQUFDLE1BQThCLEVBQUUsRUFBRTtJQUM1RSxPQUFPO1FBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3hCLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEVBQUUsd0JBQXdCO1FBQ2xGLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUN0QixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDMUIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1FBQzFCLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTztRQUN4QixjQUFjLEVBQUUsTUFBTSxDQUFDLGFBQWE7UUFDcEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLO1FBQ3BCLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTztRQUN4QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDeEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzVCLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztRQUNwQixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3RCLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUMxQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDL0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3RCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNyQixXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVU7UUFDOUIsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLHNCQUFzQjtRQUN6RCxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDMUIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzlCLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7UUFDaEQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtLQUN0QixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBL0JXLFFBQUEsMkJBQTJCLCtCQStCdEM7QUFFSyxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBNkIsRUFBRSxFQUFFO0lBQzNFLE9BQU87UUFDTCxRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDeEIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQ3BDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQ3hDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQ3hDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7S0FDM0MsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVJXLFFBQUEsMkJBQTJCLCtCQVF0QztBQUVLLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFDM0IsVUFBVSxFQUNWLGNBQWMsR0FJZixFQUFFLEVBQUU7SUFDSCxPQUFPLFVBQVU7U0FDZCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNaLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUN0QyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsT0FBTyxDQUMvQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTztnQkFDTCxHQUFHLElBQUEsNkJBQXFCLEVBQUMsTUFBTSxDQUFDO2dCQUNoQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEVBQUU7YUFDL0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxFQUFFO1NBQ04sTUFBTSxDQUFDLENBQUMsTUFBTSxFQUF3QyxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQTNCVyxRQUFBLFlBQVksZ0JBMkJ2QjtBQUVLLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxFQUN2QyxVQUFVLEVBQ1YsY0FBYyxHQUlmLEVBQXlFLEVBQUU7SUFDMUUsT0FBTyxVQUFVO1NBQ2QsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDWixJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzNDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ3RDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQy9DLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPO2dCQUNMLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQyxNQUFNLENBQUM7Z0JBQ3RDLGFBQWEsRUFBRSxZQUFZLENBQUMsRUFBRTthQUMvQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7U0FDRCxJQUFJLEVBQUU7U0FDTixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQXdDLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDO0FBM0JXLFFBQUEsd0JBQXdCLDRCQTJCbkM7QUFFSyxNQUFNLDZCQUE2QixHQUFHLENBQUMsRUFDNUMsVUFBVSxFQUNWLGNBQWMsR0FJZixFQUF3RSxFQUFFO0lBQ3pFLE9BQU8sVUFBVTtTQUNkLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1osSUFBSSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUN0QyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsT0FBTyxDQUMvQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTztnQkFDTCxHQUFHLElBQUEsbUNBQTJCLEVBQUMsTUFBTSxDQUFDO2dCQUN0QyxhQUFhLEVBQUUsWUFBWSxDQUFDLEVBQUU7YUFDL0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxFQUFFO1NBQ04sTUFBTSxDQUFDLENBQUMsTUFBTSxFQUF3QyxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQTNCVyxRQUFBLDZCQUE2QixpQ0EyQnhDO0FBRUssTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEVBQ3ZDLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGNBQWMsR0FNZixFQUFFLEVBQUU7SUFDSCxJQUNFLENBQUMsa0JBQWtCLEVBQUUsTUFBTTtRQUMzQixDQUFDLGtCQUFrQixFQUFFLE1BQU07UUFDM0IsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNO1FBQzNCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFDdkIsQ0FBQztRQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakQsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQzdELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE9BQU87UUFDTCxPQUFPLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QixNQUFNLEVBQUU7Z0JBQ04sY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDaEQsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUN0RCxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUMzRDtTQUNGLENBQUMsQ0FBQztLQUNKLENBQUM7QUFDSixDQUFDLENBQUM7QUFqRFcsUUFBQSx3QkFBd0IsNEJBaURuQztBQUVLLE1BQU0sZUFBZSxHQUFHLENBQUMsRUFDOUIsZUFBZSxFQUNmLGdCQUFnQixHQUlqQixFQUFFLEVBQUU7SUFDSCxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsR0FBRyxJQUFJO1FBQ1AsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUNyQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLGtCQUFrQixLQUFLLElBQUksRUFBRSxhQUFhLENBQ2pFLEVBQUUsRUFBRTtLQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBYlcsUUFBQSxlQUFlLG1CQWExQjtBQUVLLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUEwQixFQUFFLEVBQUU7SUFDOUQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBRXZCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN6QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXRDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3QixXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFFRCwyQ0FBMkM7UUFDM0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQWZXLFFBQUEsaUJBQWlCLHFCQWU1QjtBQUVLLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxFQUN4QyxpQkFBaUIsRUFDakIsT0FBTyxFQUNQLGNBQWMsR0FXZixFQUFFLEVBQUU7SUFDSCxNQUFNLFdBQVcsR0FJWixFQUFFLENBQUM7SUFFUiwrQkFBK0I7SUFDL0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLHlCQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZELHFGQUFxRjtJQUNyRixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtRQUMxQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO1FBRWxDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsSUFBSSxDQUNWLDJCQUEyQixhQUFhLENBQUMsRUFBRSxpQkFBaUIsQ0FDN0QsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsbUNBQW1DO1FBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0RCxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN0RCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDcEIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBRXJCLHlDQUF5QztZQUN6QyxhQUFhLENBQUMsT0FBTyxDQUNuQixDQUFDLE1BQWlELEVBQUUsRUFBRTtnQkFDcEQsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQ2hDLFdBQVcsSUFBSSxDQUFDLENBQUM7b0JBQ25CLENBQUM7eUJBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLGNBQWMsRUFBRSxDQUFDO3dCQUM1Qyx3REFBd0Q7d0JBQ3hELFlBQVksSUFBSSxDQUFDLENBQUM7b0JBQ3BCLENBQUM7eUJBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUN2Qyw2Q0FBNkM7d0JBQzdDLFlBQVksSUFBSSxDQUFDLENBQUM7b0JBQ3BCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FDRixDQUFDO1lBRUYsd0RBQXdEO1lBQ3hELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FDckMsQ0FBQztZQUVGLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNwQixXQUFXLENBQUMsSUFBSSxDQUFDO3dCQUNmLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxFQUFFO3dCQUNuQyxXQUFXLEVBQUUsYUFBYSxDQUFDLFVBQVU7d0JBQ3JDLFVBQVUsRUFBRSxXQUFXLEVBQUUsNENBQTRDO3FCQUN0RSxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsMkNBQTJDO29CQUMzQyxXQUFXLENBQUMsSUFBSSxDQUFDO3dCQUNmLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxFQUFFO3dCQUNuQyxXQUFXLEVBQUUsYUFBYSxDQUFDLFVBQVU7d0JBQ3JDLFVBQVUsRUFBRSxDQUFDLFlBQVksRUFBRSwwQ0FBMEM7cUJBQ3RFLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLFdBQVcsR0FBRyxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxPQUFPLENBQUMsSUFBSSxDQUNWLFNBQVMsV0FBVyx5QkFBeUIsWUFBWSwyQkFBMkIsVUFBVSw4QkFBOEIsQ0FDN0gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakUsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBekZXLFFBQUEseUJBQXlCLDZCQXlGcEMifQ==
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2lud2FyZC1tYXN0ZXIvaGVscGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLCtDQUFrRDtBQWEzQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFO0lBQ3hFLE9BQU87UUFDTCxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzNCLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN6QixXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDN0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxXQUFXO1FBQ2hDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTztRQUN2QixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVO1FBQzdCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDekIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM5QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzVDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtRQUN4QixhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDakMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVztRQUMvQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsZUFBZTtRQUN4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
|