@devx-commerce/plugin-gati 0.0.31-beta.0 → 0.0.31-beta.1
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/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/modules/erp/service.js +14 -1
- package/.medusa/server/src/modules/quality-master/migrations/Migration20251105045114.js +14 -0
- package/.medusa/server/src/modules/quality-master/models/quality-master.js +3 -1
- package/.medusa/server/src/utils/build-redis-key.js +30 -0
- package/.medusa/server/src/workflows/quality-master/create-or-update-quality-master.js +3 -1
- package/package.json +1 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const erp_1 = require("../../../../modules/erp");
|
|
6
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
7
|
+
const build_redis_key_1 = require("../../../../utils/build-redis-key");
|
|
8
|
+
const POST = async (req, res) => {
|
|
9
|
+
try {
|
|
10
|
+
const { grams, purity } = req.validatedBody;
|
|
11
|
+
const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
|
|
12
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
13
|
+
const erpService = req.scope.resolve(erp_1.ERP_MODULE);
|
|
14
|
+
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
15
|
+
const calculationCacheKey = (0, build_redis_key_1.buildRedisKey)("gold-rate:calculation", {
|
|
16
|
+
grams,
|
|
17
|
+
purity,
|
|
18
|
+
});
|
|
19
|
+
const cachedResult = await cacheService.get(calculationCacheKey);
|
|
20
|
+
if (cachedResult) {
|
|
21
|
+
logger.info(`[CURRENT-GOLD-RATE] : Returning cached result for grams: ${grams}, purity: ${purity}`);
|
|
22
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Gold rate calculated successfully"));
|
|
23
|
+
}
|
|
24
|
+
const goldRateData = (await erpService.getGoldRateData());
|
|
25
|
+
if (!goldRateData?.CurrentGoldRate?.length) {
|
|
26
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("No gold rate data available from ERP", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
|
|
27
|
+
}
|
|
28
|
+
const { data: qualityMasters } = await query.graph({
|
|
29
|
+
entity: "quality_master",
|
|
30
|
+
fields: ["id", "qly_code", "qly_mfg_clarity"],
|
|
31
|
+
filters: {
|
|
32
|
+
qly_code: purity.toString(),
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
const qly = qualityMasters?.[0];
|
|
36
|
+
if (!qly && purity !== 24) {
|
|
37
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Purity ${purity} not found in QualityMaster`, api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
|
|
38
|
+
}
|
|
39
|
+
if (!qly?.qly_mfg_clarity && purity !== 24) {
|
|
40
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Quality master for purity ${purity} does not have qly_mfg_clarity set`, api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
|
|
41
|
+
}
|
|
42
|
+
const baseGold = goldRateData.CurrentGoldRate.find((g) => g.RawName === "GOLD");
|
|
43
|
+
if (!baseGold) {
|
|
44
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Base gold rate (GOLD) not found in ERP response", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
|
|
45
|
+
}
|
|
46
|
+
let ratePerGram;
|
|
47
|
+
if (purity === 24) {
|
|
48
|
+
ratePerGram = baseGold.SaleRate;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
ratePerGram = (baseGold.SaleRate * qly.qly_mfg_clarity) / 100.0;
|
|
52
|
+
}
|
|
53
|
+
const totalPrice = ratePerGram * grams;
|
|
54
|
+
const result = {
|
|
55
|
+
purity,
|
|
56
|
+
grams,
|
|
57
|
+
base_rate: baseGold.SaleRate,
|
|
58
|
+
rate_per_gram: ratePerGram,
|
|
59
|
+
total_price: totalPrice,
|
|
60
|
+
};
|
|
61
|
+
await cacheService.set(calculationCacheKey, result, build_redis_key_1.CACHE_VALIDATION_TIMES.GOLD_RATE);
|
|
62
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result, "Gold rate calculated successfully"));
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error("Error fetching gold rate:", error);
|
|
66
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error instanceof Error ? error.message : "Internal server error", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.POST = POST;
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2dvbGQtcmF0ZS9jdXJyZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUErRTtBQUMvRSxpREFBcUQ7QUFFckQsK0RBTXNDO0FBRXRDLHVFQUcyQztBQTBCcEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGFBQTJDLENBQUM7UUFFMUUsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRSxNQUFNLG1CQUFtQixHQUFHLElBQUEsK0JBQWEsRUFBQyx1QkFBdUIsRUFBRTtZQUNqRSxLQUFLO1lBQ0wsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDekMsbUJBQW1CLENBQ3BCLENBQUM7UUFFRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsNERBQTRELEtBQUssYUFBYSxNQUFNLEVBQUUsQ0FDdkYsQ0FBQztZQUNGLE9BQU8sSUFBQSw4QkFBZSxFQUNw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
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const erp_1 = require("../../../../modules/erp");
|
|
6
|
+
const build_redis_key_1 = require("../../../../utils/build-redis-key");
|
|
7
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
8
|
+
const POST = async (req, res) => {
|
|
9
|
+
try {
|
|
10
|
+
const { grams } = req.validatedBody;
|
|
11
|
+
const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
|
|
12
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
13
|
+
const erpService = req.scope.resolve(erp_1.ERP_MODULE);
|
|
14
|
+
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
15
|
+
const cacheKey = (0, build_redis_key_1.buildRedisKey)("gold-rate:historical", { grams });
|
|
16
|
+
const cachedResult = await cacheService.get(cacheKey);
|
|
17
|
+
if (cachedResult) {
|
|
18
|
+
logger.info(`[HISTORICAL-GOLD-RATE] : Returning cached result for grams: ${grams}`);
|
|
19
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Historical gold rate fetched successfully"));
|
|
20
|
+
}
|
|
21
|
+
// Fetch gold rate data from ERP
|
|
22
|
+
const goldRateData = (await erpService.getGoldRateData());
|
|
23
|
+
if (!goldRateData?.PreviousGoldRateDetail ||
|
|
24
|
+
goldRateData.PreviousGoldRateDetail.length === 0) {
|
|
25
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("No historical gold rate data available from ERP", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
|
|
26
|
+
}
|
|
27
|
+
// Fetch quality masters for 14, 18 and 22 karat (24 karat uses base rate directly)
|
|
28
|
+
const [quality14Result, quality18Result, quality22Result] = await Promise.all([
|
|
29
|
+
query.graph({
|
|
30
|
+
entity: "quality_master",
|
|
31
|
+
fields: ["id", "qly_code", "qly_mfg_clarity"],
|
|
32
|
+
filters: {
|
|
33
|
+
qly_code: "14",
|
|
34
|
+
},
|
|
35
|
+
}),
|
|
36
|
+
query.graph({
|
|
37
|
+
entity: "quality_master",
|
|
38
|
+
fields: ["id", "qly_code", "qly_mfg_clarity"],
|
|
39
|
+
filters: {
|
|
40
|
+
qly_code: "18",
|
|
41
|
+
},
|
|
42
|
+
}),
|
|
43
|
+
query.graph({
|
|
44
|
+
entity: "quality_master",
|
|
45
|
+
fields: ["id", "qly_code", "qly_mfg_clarity"],
|
|
46
|
+
filters: {
|
|
47
|
+
qly_code: "22",
|
|
48
|
+
},
|
|
49
|
+
}),
|
|
50
|
+
]);
|
|
51
|
+
const { data: qualityMasters14 } = quality14Result;
|
|
52
|
+
const { data: qualityMasters18 } = quality18Result;
|
|
53
|
+
const { data: qualityMasters22 } = quality22Result;
|
|
54
|
+
const qly14 = qualityMasters14?.[0];
|
|
55
|
+
const qly18 = qualityMasters18?.[0];
|
|
56
|
+
const qly22 = qualityMasters22?.[0];
|
|
57
|
+
if (!qly22?.qly_mfg_clarity ||
|
|
58
|
+
!qly18?.qly_mfg_clarity ||
|
|
59
|
+
!qly14?.qly_mfg_clarity) {
|
|
60
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Quality masters for 14/18/22 karat not found or missing qly_mfg_clarity", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
|
|
61
|
+
}
|
|
62
|
+
// Group historical data by date
|
|
63
|
+
const dateGroups = new Map();
|
|
64
|
+
for (const entry of goldRateData.PreviousGoldRateDetail) {
|
|
65
|
+
if (entry.RawName === "GOLD") {
|
|
66
|
+
const dateKey = entry.RateDate.split("T")[0]; // Extract date part
|
|
67
|
+
if (!dateGroups.has(dateKey)) {
|
|
68
|
+
dateGroups.set(dateKey, []);
|
|
69
|
+
}
|
|
70
|
+
dateGroups.get(dateKey).push(entry);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const result = [];
|
|
74
|
+
for (const [dateStr, entries] of dateGroups.entries()) {
|
|
75
|
+
// Get the most recent entry for this date (in case of duplicates)
|
|
76
|
+
const entry = entries.sort((a, b) => new Date(b.RateDate).getTime() - new Date(a.RateDate).getTime())[0];
|
|
77
|
+
const baseSaleRate = entry.SaleRate;
|
|
78
|
+
// Calculate rates per gram for each karat
|
|
79
|
+
const rate24PerGram = baseSaleRate;
|
|
80
|
+
const rate14PerGram = (baseSaleRate * qly14.qly_mfg_clarity) / 100.0;
|
|
81
|
+
const rate22PerGram = (baseSaleRate * qly22.qly_mfg_clarity) / 100.0;
|
|
82
|
+
const rate18PerGram = (baseSaleRate * qly18.qly_mfg_clarity) / 100.0;
|
|
83
|
+
// Calculate total prices for given grams
|
|
84
|
+
const carat24 = rate24PerGram * grams;
|
|
85
|
+
const carat14 = rate14PerGram * grams;
|
|
86
|
+
const carat22 = rate22PerGram * grams;
|
|
87
|
+
const carat18 = rate18PerGram * grams;
|
|
88
|
+
result.push({
|
|
89
|
+
date: entry.RateDate,
|
|
90
|
+
carat14,
|
|
91
|
+
carat24,
|
|
92
|
+
carat22,
|
|
93
|
+
carat18,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// // Sort by date (oldest first)
|
|
97
|
+
// result.sort((a, b) => a.date.getTime() - b.date.getTime());
|
|
98
|
+
// Cache the result
|
|
99
|
+
await cacheService.set(cacheKey, result, build_redis_key_1.CACHE_VALIDATION_TIMES.GOLD_RATE);
|
|
100
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result, "Historical gold rate fetched successfully"));
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error("Error fetching historical gold rate:", error);
|
|
104
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error instanceof Error ? error.message : "Internal server error", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
exports.POST = POST;
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2dvbGQtcmF0ZS9oaXN0b3JpY2FsL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUErRTtBQUcvRSxpREFBcUQ7QUFDckQsdUVBRzJDO0FBQzNDLCtEQU1zQztBQTBCL0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFpRCxFQUNqRCxHQUFtQixFQUNuQixFQUFFO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFcEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRSxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFhLEVBQUMsc0JBQXNCLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDekMsUUFBUSxDQUNULENBQUM7UUFFRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsK0RBQStELEtBQUssRUFBRSxDQUN2RSxDQUFDO1lBQ0YsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUNuQixZ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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const http_1 = require("@medusajs/framework/http");
|
|
4
|
+
const validators_1 = require("./validators");
|
|
5
|
+
exports.default = (0, http_1.defineMiddlewares)({
|
|
6
|
+
routes: [
|
|
7
|
+
{
|
|
8
|
+
matcher: "/store/gold-rate/current",
|
|
9
|
+
method: "POST",
|
|
10
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.GetCurrentGoldRateBody)],
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
matcher: "/store/gold-rate/historical",
|
|
14
|
+
method: "POST",
|
|
15
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.GetHistoricalGoldRateBody)],
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvZ29sZC1yYXRlL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFHa0M7QUFDbEMsNkNBR3NCO0FBRXRCLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxtQ0FBc0IsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsNkJBQTZCO1lBQ3RDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxzQ0FBeUIsQ0FBQyxDQUFDO1NBQ25FO0tBQ0Y7Q0FDRixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetHistoricalGoldRateBody = exports.GetCurrentGoldRateBody = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.GetCurrentGoldRateBody = zod_1.z
|
|
6
|
+
.object({
|
|
7
|
+
grams: zod_1.z
|
|
8
|
+
.number({
|
|
9
|
+
required_error: "Grams is required",
|
|
10
|
+
invalid_type_error: "Grams must be a number",
|
|
11
|
+
})
|
|
12
|
+
.positive({
|
|
13
|
+
message: "Grams must be a positive number",
|
|
14
|
+
}),
|
|
15
|
+
purity: zod_1.z
|
|
16
|
+
.number({
|
|
17
|
+
required_error: "Purity is required",
|
|
18
|
+
invalid_type_error: "Purity must be a number",
|
|
19
|
+
})
|
|
20
|
+
.positive({
|
|
21
|
+
message: "Purity must be a positive number",
|
|
22
|
+
}),
|
|
23
|
+
})
|
|
24
|
+
.strict();
|
|
25
|
+
exports.GetHistoricalGoldRateBody = zod_1.z
|
|
26
|
+
.object({
|
|
27
|
+
grams: zod_1.z
|
|
28
|
+
.number({
|
|
29
|
+
required_error: "Grams is required",
|
|
30
|
+
invalid_type_error: "Grams must be a number",
|
|
31
|
+
})
|
|
32
|
+
.positive({
|
|
33
|
+
message: "Grams must be a positive number",
|
|
34
|
+
}),
|
|
35
|
+
})
|
|
36
|
+
.strict();
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvZ29sZC1yYXRlL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBRVgsUUFBQSxzQkFBc0IsR0FBRyxPQUFDO0tBQ3BDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxPQUFDO1NBQ0wsTUFBTSxDQUFDO1FBQ04sY0FBYyxFQUFFLG1CQUFtQjtRQUNuQyxrQkFBa0IsRUFBRSx3QkFBd0I7S0FDN0MsQ0FBQztTQUNELFFBQVEsQ0FBQztRQUNSLE9BQU8sRUFBRSxpQ0FBaUM7S0FDM0MsQ0FBQztJQUNKLE1BQU0sRUFBRSxPQUFDO1NBQ04sTUFBTSxDQUFDO1FBQ04sY0FBYyxFQUFFLG9CQUFvQjtRQUNwQyxrQkFBa0IsRUFBRSx5QkFBeUI7S0FDOUMsQ0FBQztTQUNELFFBQVEsQ0FBQztRQUNSLE9BQU8sRUFBRSxrQ0FBa0M7S0FDNUMsQ0FBQztDQUNMLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUlDLFFBQUEseUJBQXlCLEdBQUcsT0FBQztLQUN2QyxNQUFNLENBQUM7SUFDTixLQUFLLEVBQUUsT0FBQztTQUNMLE1BQU0sQ0FBQztRQUNOLGNBQWMsRUFBRSxtQkFBbUI7UUFDbkMsa0JBQWtCLEVBQUUsd0JBQXdCO0tBQzdDLENBQUM7U0FDRCxRQUFRLENBQUM7UUFDUixPQUFPLEVBQUUsaUNBQWlDO0tBQzNDLENBQUM7Q0FDTCxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUMifQ==
|
|
@@ -6,10 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const framework_1 = require("@medusajs/framework");
|
|
7
7
|
const middleware_1 = __importDefault(require("./carts/middleware"));
|
|
8
8
|
const middleware_2 = __importDefault(require("./custom-price/middleware"));
|
|
9
|
+
const middleware_3 = __importDefault(require("./gold-rate/middleware"));
|
|
9
10
|
exports.default = (0, framework_1.defineMiddlewares)({
|
|
10
11
|
routes: [
|
|
11
12
|
...(middleware_1.default.routes || []),
|
|
12
13
|
...(middleware_2.default.routes || []),
|
|
14
|
+
...(middleware_3.default.routes || []),
|
|
13
15
|
],
|
|
14
16
|
});
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQUF3RDtBQUV4RCxvRUFBdUQ7QUFDdkQsMkVBQW9FO0FBQ3BFLHdFQUE4RDtBQUU5RCxrQkFBZSxJQUFBLDZCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOLEdBQUcsQ0FBQyxvQkFBcUIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxvQkFBMkIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzdDLEdBQUcsQ0FBQyxvQkFBd0IsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0tBQzNDO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -91,7 +91,20 @@ class ErpService {
|
|
|
91
91
|
return data.data;
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
|
+
async getGoldRateData() {
|
|
95
|
+
const response = await fetch(`${this._options.baseUrl}/GetGoldRateDetail`, {
|
|
96
|
+
method: "GET",
|
|
97
|
+
headers: {
|
|
98
|
+
AuthorizationToken: this._options.authToken,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
throw new Error(`Failed to fetch gold rate data from ERP`);
|
|
103
|
+
}
|
|
104
|
+
const json = await response.json();
|
|
105
|
+
return json.data;
|
|
106
|
+
}
|
|
94
107
|
}
|
|
95
108
|
ErpService.identifier = types_1.ErpKeys.ERP;
|
|
96
109
|
exports.default = ErpService;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2VycC9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBT2lCO0FBRWpCLE1BQXFCLFVBQVU7SUFJN0IsWUFBWSxFQUFFLEVBQUUsT0FBbUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FDakIsT0FBZSxFQUNmLGFBQXFCO1FBRXJCLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLGdCQUFnQixFQUFFO1lBQ3JFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztnQkFDM0MsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGFBQWEsRUFBRSxhQUFhO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLDRDQUE0QyxhQUFhLEVBQUUsQ0FDNUQsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUF1QjtRQUN2QyxNQUFNLE9BQU8sR0FBRztZQUNkLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxTQUFTO1lB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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20251105045114 = void 0;
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
|
+
class Migration20251105045114 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`alter table if exists "quality_master" add column if not exists "qly_clarity" real null, add column if not exists "qly_mfg_clarity" real null;`);
|
|
8
|
+
}
|
|
9
|
+
async down() {
|
|
10
|
+
this.addSql(`alter table if exists "quality_master" drop column if exists "qly_clarity", drop column if exists "qly_mfg_clarity";`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.Migration20251105045114 = Migration20251105045114;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTExMDUwNDUxMTQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9xdWFsaXR5LW1hc3Rlci9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjUxMTA1MDQ1MTE0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBRTNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnSkFBZ0osQ0FBQyxDQUFDO0lBQ2hLLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHNIQUFzSCxDQUFDLENBQUM7SUFDdEksQ0FBQztDQUVGO0FBVkQsMERBVUMifQ==
|
|
@@ -10,6 +10,8 @@ exports.QualityMaster = utils_1.model.define("quality_master", {
|
|
|
10
10
|
qly_code: utils_1.model.text().index(),
|
|
11
11
|
qly_name: utils_1.model.text(),
|
|
12
12
|
qly_alias_name: utils_1.model.text(),
|
|
13
|
+
qly_clarity: utils_1.model.float().nullable(),
|
|
14
|
+
qly_mfg_clarity: utils_1.model.float().nullable(),
|
|
13
15
|
is_block_for_use: utils_1.model.boolean(),
|
|
14
16
|
});
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eS1tYXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9xdWFsaXR5LW1hc3Rlci9tb2RlbHMvcXVhbGl0eS1tYXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBRXJDLFFBQUEsYUFBYSxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7SUFDMUQsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsS0FBSyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDOUIsTUFBTSxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUU7SUFDdEIsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDckIsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFDOUIsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDdEIsY0FBYyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDNUIsV0FBVyxFQUFFLGFBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDckMsZUFBZSxFQUFFLGFBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMsZ0JBQWdCLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRTtDQUNsQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CACHE_VALIDATION_TIMES = exports.buildRedisKey = void 0;
|
|
4
|
+
const buildRedisKey = (prefix, data) => {
|
|
5
|
+
const normalize = (obj) => {
|
|
6
|
+
if (obj === null || obj === undefined)
|
|
7
|
+
return String(obj);
|
|
8
|
+
if (typeof obj === "string" ||
|
|
9
|
+
typeof obj === "number" ||
|
|
10
|
+
typeof obj === "boolean")
|
|
11
|
+
return String(obj);
|
|
12
|
+
if (Array.isArray(obj)) {
|
|
13
|
+
return "[" + obj.map(normalize).join(",") + "]";
|
|
14
|
+
}
|
|
15
|
+
if (typeof obj === "object") {
|
|
16
|
+
const sortedKeys = Object.keys(obj).sort(); // sort for deterministic order
|
|
17
|
+
return ("{" +
|
|
18
|
+
sortedKeys.map((key) => `${key}:${normalize(obj[key])}`).join(",") +
|
|
19
|
+
"}");
|
|
20
|
+
}
|
|
21
|
+
throw new Error("Unsupported type in Redis key builder");
|
|
22
|
+
};
|
|
23
|
+
return `${prefix}:${normalize(data)}`;
|
|
24
|
+
};
|
|
25
|
+
exports.buildRedisKey = buildRedisKey;
|
|
26
|
+
exports.CACHE_VALIDATION_TIMES = {
|
|
27
|
+
VARIANT_OPTIONS: 60 * 60 * 12, // 12 hours
|
|
28
|
+
GOLD_RATE: 60 * 60 * 4, // 4 hours
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcmVkaXMta2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2J1aWxkLXJlZGlzLWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBRSxJQUFTLEVBQVUsRUFBRTtJQUNqRSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVEsRUFBVSxFQUFFO1FBQ3JDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELElBQ0UsT0FBTyxHQUFHLEtBQUssUUFBUTtZQUN2QixPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQ3ZCLE9BQU8sR0FBRyxLQUFLLFNBQVM7WUFFeEIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQywrQkFBK0I7WUFDM0UsT0FBTyxDQUNMLEdBQUc7Z0JBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNsRSxHQUFHLENBQ0osQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDO0lBRUYsT0FBTyxHQUFHLE1BQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUF4QlcsUUFBQSxhQUFhLGlCQXdCeEI7QUFFVyxRQUFBLHNCQUFzQixHQUFHO0lBQ3BDLGVBQWUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXO0lBQzFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVO0NBQ25DLENBQUMifQ==
|
|
@@ -24,6 +24,8 @@ const createOrUpdateQualityStep = (0, workflows_sdk_2.createStep)("create-or-upd
|
|
|
24
24
|
qly_name: item.QlyName,
|
|
25
25
|
qly_alias_name: item.QlyAliasName,
|
|
26
26
|
is_block_for_use: !!item.IsBlockForUse,
|
|
27
|
+
qly_clarity: item.QlyClarity,
|
|
28
|
+
qly_mfg_clarity: item.QlyMfgClarity,
|
|
27
29
|
};
|
|
28
30
|
if (match) {
|
|
29
31
|
toUpdate.push({ id: match.id, ...mapped });
|
|
@@ -53,4 +55,4 @@ exports.createOrUpdateQualityMasterWorkflow = (0, workflows_sdk_1.createWorkflow
|
|
|
53
55
|
const result = createOrUpdateQualityStep(data);
|
|
54
56
|
return new workflows_sdk_1.WorkflowResponse(result);
|
|
55
57
|
});
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLXVwZGF0ZS1xdWFsaXR5LW1hc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcXVhbGl0eS1tYXN0ZXIvY3JlYXRlLW9yLXVwZGF0ZS1xdWFsaXR5LW1hc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUY7QUFFckYsdUVBQWdFO0FBQ2hFLHFFQUE2RTtBQUM3RSxpRUFBcUU7QUFjckUsTUFBTSx5QkFBeUIsR0FBRyxJQUFBLDBCQUFVLEVBQzFDLDBCQUEwQixFQUMxQixLQUFLLEVBQUUsS0FBdUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxPQUFPLEdBQXlCLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXFCLENBQUMsQ0FBQztJQUUvRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSw0QkFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBUyxDQUFDLENBQUM7SUFFekUsTUFBTSxRQUFRLEdBQUcsRUFBVyxDQUFDO0lBQzdCLE1BQU0sUUFBUSxHQUFHLEVBQVcsQ0FBQztJQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELE1B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
|