@devx-commerce/plugin-gati 0.0.34-beta.27 → 0.0.34-beta.29

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 (46) hide show
  1. package/.medusa/server/src/api/pos/gold/calculate/route.js +104 -0
  2. package/.medusa/server/src/api/pos/gold/item-master-purity.js +46 -0
  3. package/.medusa/server/src/api/pos/gold/middleware.js +18 -0
  4. package/.medusa/server/src/api/pos/gold/route.js +83 -0
  5. package/.medusa/server/src/api/pos/gold-rate/route.js +23 -16
  6. package/.medusa/server/src/api/pos/middleware.js +11 -3
  7. package/.medusa/server/src/api/pos/old-gold-item/middleware.js +10 -0
  8. package/.medusa/server/src/api/pos/old-gold-item/route.js +52 -0
  9. package/.medusa/server/src/api/pos/platinumdata/middleware.js +13 -0
  10. package/.medusa/server/src/api/pos/platinumdata/route.js +41 -0
  11. package/.medusa/server/src/api/pos/silverdata/middleware.js +13 -0
  12. package/.medusa/server/src/api/pos/silverdata/route.js +41 -0
  13. package/.medusa/server/src/jobs/sync-addless-detail.js +60 -0
  14. package/.medusa/server/src/jobs/sync-book-list-and-applicable-policy.js +13 -1
  15. package/.medusa/server/src/jobs/sync-item-master.js +20 -0
  16. package/.medusa/server/src/lib/api-response.js +2 -1
  17. package/.medusa/server/src/modules/addless-detail/index.js +13 -0
  18. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260212101102.js +15 -0
  19. package/.medusa/server/src/modules/addless-detail/migrations/Migration20260213000000.js +47 -0
  20. package/.medusa/server/src/modules/addless-detail/models/addless-master.js +17 -0
  21. package/.medusa/server/src/modules/addless-detail/service.js +10 -0
  22. package/.medusa/server/src/modules/erp/service.js +96 -1
  23. package/.medusa/server/src/modules/item-master/index.js +13 -0
  24. package/.medusa/server/src/modules/item-master/migrations/Migration20260212101055.js +15 -0
  25. package/.medusa/server/src/modules/item-master/models/item-master.js +20 -0
  26. package/.medusa/server/src/modules/item-master/service.js +10 -0
  27. package/.medusa/server/src/utils/build-redis-key.js +3 -1
  28. package/.medusa/server/src/workflows/addless-detail/index.js +11 -0
  29. package/.medusa/server/src/workflows/addless-detail/steps/create-or-update-addless-detail.js +36 -0
  30. package/.medusa/server/src/workflows/addless-detail/steps/fetch-addless-detail.js +73 -0
  31. package/.medusa/server/src/workflows/index.js +2 -1
  32. package/.medusa/server/src/workflows/item-master/index.js +11 -0
  33. package/.medusa/server/src/workflows/item-master/steps/create-or-update-item-master.js +50 -0
  34. package/.medusa/server/src/workflows/item-master/steps/fetch-item-master.js +29 -0
  35. package/.medusa/server/src/workflows/orders/steps/index.js +2 -1
  36. package/.medusa/server/src/workflows/orders/steps/sync-old-gold-to-erp-step.js +161 -0
  37. package/.medusa/server/src/workflows/orders/utils/order-helper.js +42 -24
  38. package/.medusa/server/src/workflows/orders/workflows/index.js +2 -1
  39. package/.medusa/server/src/workflows/orders/workflows/sync-old-gold-to-erp.js +10 -0
  40. package/.medusa/server/src/workflows/party-master/steps/create-user-erp.js +96 -0
  41. package/.medusa/server/src/workflows/party-master/steps/index.js +2 -1
  42. package/.medusa/server/src/workflows/party-master/workflows/create-user-erp.js +11 -0
  43. package/.medusa/server/src/workflows/party-master/workflows/index.js +2 -1
  44. package/.medusa/server/src/workflows/payment-book-master/steps/create-or-update-payment-book-master.js +21 -15
  45. package/.medusa/server/src/workflows/rate-chart-master/steps/create-or-update-rate-chart-master.js +9 -11
  46. package/package.json +1 -1
@@ -0,0 +1,104 @@
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 build_redis_key_1 = require("../../../../utils/build-redis-key");
6
+ const api_response_1 = require("../../../../lib/api-response");
7
+ const item_master_purity_1 = require("../item-master-purity");
8
+ const KARAT_NORMALIZE = {
9
+ "9": "9K", "9k": "9K",
10
+ "14": "14K", "14k": "14K",
11
+ "18": "18K", "18k": "18K",
12
+ "22": "22K", "22k": "22K",
13
+ "24": "24K", "24k": "24K",
14
+ "og9": "9K", "og9k": "9K",
15
+ "og14": "14K", "og14k": "14K",
16
+ "og18": "18K", "og18k": "18K",
17
+ "og22": "22K", "og22k": "22K",
18
+ "og24": "24K", "og24k": "24K",
19
+ };
20
+ /** Normalize karat input (e.g. og14, OG18K, 14k) to canonical form 9K|14K|18K|22K|24K for cache lookup. */
21
+ function normalizeKarat(karatRaw) {
22
+ const s = karatRaw.trim().toLowerCase().replace(/\s/g, "");
23
+ if (!s)
24
+ return "";
25
+ const direct = KARAT_NORMALIZE[s];
26
+ if (direct)
27
+ return direct;
28
+ const withoutOg = s.replace(/^og/, "");
29
+ const fromOg = KARAT_NORMALIZE[withoutOg] || (withoutOg && !withoutOg.endsWith("k") ? `${withoutOg}K` : withoutOg);
30
+ if (fromOg && KARAT_NORMALIZE[fromOg.toLowerCase()])
31
+ return KARAT_NORMALIZE[fromOg.toLowerCase()];
32
+ const numMatch = s.match(/^og?(\d+)(k?)$/);
33
+ if (numMatch) {
34
+ const n = numMatch[1];
35
+ const mapped = KARAT_NORMALIZE[n] || KARAT_NORMALIZE[`${n}k`];
36
+ if (mapped)
37
+ return mapped;
38
+ return `${n}K`;
39
+ }
40
+ return s.toUpperCase().endsWith("K") ? s.toUpperCase() : `${s}K`.toUpperCase();
41
+ }
42
+ /** Parse first number from string e.g. "38.5%" or "50" -> 38.5 or 50 */
43
+ function parsePurityPercent(value) {
44
+ if (!value || typeof value !== "string")
45
+ return null;
46
+ const match = value.trim().match(/(\d+(?:\.\d+)?)/);
47
+ return match ? Number(match[1]) : null;
48
+ }
49
+ const POST = async (req, res) => {
50
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
51
+ try {
52
+ const body = req.body;
53
+ const karatRaw = body?.karat ?? "";
54
+ const karat = String(karatRaw).trim().toLowerCase();
55
+ const purity = String(body?.purity ?? "").trim();
56
+ const netWeightGms = Number(body?.net_weight_gms);
57
+ const pieces = Number(body?.pieces);
58
+ if (!karat) {
59
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Body parameter karat is required", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
60
+ }
61
+ const normalizedKarat = normalizeKarat(karat);
62
+ const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
63
+ const cacheKey = (0, build_redis_key_1.buildRedisKey)("pos:gold-rate", {});
64
+ const cached = await cacheService.get(cacheKey);
65
+ if (!cached?.oldGoldRateList?.length) {
66
+ logger.warn("[POS-GOLD-CALCULATE] : No cached gold rate");
67
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Gold rate not loaded. Please load gold rate first.", api_response_1.HttpStatus.SERVICE_UNAVAILABLE, api_response_1.ErrorCode.INTERNAL_ERROR));
68
+ }
69
+ const item = cached.oldGoldRateList.find((x) => x.rate.toUpperCase() === normalizedKarat);
70
+ if (!item) {
71
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Karat "${karat}" not found. Supported: 9K, 14K, 18K, 22K, 24K (or og14, og18, etc.)`, api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
72
+ }
73
+ // Base purity: from item_master for this karat (e.g. og18 -> G18) when available, else from cache
74
+ const itemMasterPurity = await (0, item_master_purity_1.getPurityFromItemMaster)(req.scope, normalizedKarat);
75
+ const cachePurityPercent = parsePurityPercent(String(item.purity ?? "")) ?? 100;
76
+ const itemPurityPercent = itemMasterPurity ?? cachePurityPercent;
77
+ // Adjust cache rate to match item_master purity when we used it
78
+ const baseRate = itemMasterPurity != null && cachePurityPercent > 0
79
+ ? (item.amount * itemMasterPurity) / cachePurityPercent
80
+ : item.amount;
81
+ // User-entered purity – when provided, adjust rate so amount updates
82
+ const userPurityPercent = parsePurityPercent(purity);
83
+ let ratePerGms;
84
+ if (userPurityPercent != null && !Number.isNaN(userPurityPercent) && itemPurityPercent > 0) {
85
+ ratePerGms = (baseRate * userPurityPercent) / itemPurityPercent;
86
+ }
87
+ else {
88
+ ratePerGms = baseRate;
89
+ }
90
+ const netWeight = Number.isNaN(netWeightGms) || netWeightGms < 0 ? 0 : netWeightGms;
91
+ const totalAmount = Math.round(ratePerGms * netWeight * 100) / 100;
92
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
93
+ rate_per_gms: ratePerGms,
94
+ total_amount: totalAmount,
95
+ }, "OK"));
96
+ }
97
+ catch (error) {
98
+ const msg = error instanceof Error ? error.message : "Unknown error";
99
+ logger.error(`[POS-GOLD-CALCULATE] : ${msg}`);
100
+ 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));
101
+ }
102
+ };
103
+ exports.POST = POST;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9nb2xkL2NhbGN1bGF0ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxxREFBK0U7QUFDL0UsdUVBQWtFO0FBQ2xFLCtEQU1zQztBQUN0Qyw4REFBZ0U7QUFhaEUsTUFBTSxlQUFlLEdBQTJCO0lBQzlDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDckIsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztJQUN6QixJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQ3pCLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDekIsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztJQUN6QixLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJO0lBQ3pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUs7SUFDN0IsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSztJQUM3QixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLO0lBQzdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUs7Q0FDOUIsQ0FBQztBQUVGLDJHQUEyRztBQUMzRyxTQUFTLGNBQWMsQ0FBQyxRQUFnQjtJQUN0QyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUMx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
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPurityFromItemMaster = getPurityFromItemMaster;
4
+ const item_master_1 = require("../../../modules/item-master");
5
+ const KARAT_TO_ITEM_CODE = {
6
+ "9K": "G9",
7
+ "14K": "G14",
8
+ "18K": "G18",
9
+ "22K": "G22",
10
+ "24K": "G24",
11
+ };
12
+ const OLD_GOLD_RAW_NAME = "Old Gold";
13
+ /**
14
+ * Get purity (qly_mfg_clarity) from item_master for the given normalized karat (9K, 14K, 18K, 22K, 24K).
15
+ * Returns null if no matching Old Gold item found.
16
+ */
17
+ async function getPurityFromItemMaster(container, normalizedKarat) {
18
+ const itemCode = KARAT_TO_ITEM_CODE[normalizedKarat.toUpperCase()];
19
+ if (!itemCode)
20
+ return null;
21
+ try {
22
+ const itemMasterService = container.resolve(item_master_1.ITEM_MASTER_MODULE);
23
+ let list = await itemMasterService.listItemMasters({
24
+ raw_name: OLD_GOLD_RAW_NAME,
25
+ item_code: itemCode,
26
+ });
27
+ if (!list?.length) {
28
+ const all = await itemMasterService.listItemMasters({});
29
+ const match = (all ?? []).find((r) => (r.raw_name || "").trim().toLowerCase() === OLD_GOLD_RAW_NAME.toLowerCase() &&
30
+ (r.item_code || "").trim().toUpperCase() === itemCode.toUpperCase());
31
+ list = match ? [match] : [];
32
+ }
33
+ const row = list?.[0];
34
+ if (row?.qly_mfg_clarity != null && !Number.isNaN(Number(row.qly_mfg_clarity))) {
35
+ return Number(row.qly_mfg_clarity);
36
+ }
37
+ if (row?.qly_clarity != null && !Number.isNaN(Number(row.qly_clarity))) {
38
+ return Number(row.qly_clarity);
39
+ }
40
+ return null;
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1tYXN0ZXItcHVyaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9wb3MvZ29sZC9pdGVtLW1hc3Rlci1wdXJpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFzQkEsMERBaUNDO0FBbERELDhEQUFrRTtBQUdsRSxNQUFNLGtCQUFrQixHQUEyQjtJQUNqRCxJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxLQUFLO0lBQ1osS0FBSyxFQUFFLEtBQUs7SUFDWixLQUFLLEVBQUUsS0FBSztJQUNaLEtBQUssRUFBRSxLQUFLO0NBQ2IsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBRXJDOzs7R0FHRztBQUNJLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsU0FBMEIsRUFDMUIsZUFBdUI7SUFFdkIsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkUsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQztJQUUzQixJQUFJLENBQUM7UUFDSCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0NBQWtCLENBQXNCLENBQUM7UUFDckYsSUFBSSxJQUFJLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxlQUFlLENBQUM7WUFDakQsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsUUFBUTtTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sR0FBRyxHQUFHLE1BQU0saUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUIsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUNULENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUU7Z0JBQzNFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQ3RFLENBQUM7WUFDRixJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksR0FBRyxFQUFFLGVBQWUsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9FLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxHQUFHLEVBQUUsV0FBVyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const framework_1 = require("@medusajs/framework");
4
+ exports.default = (0, framework_1.defineMiddlewares)({
5
+ routes: [
6
+ {
7
+ matcher: "/pos/gold",
8
+ method: "GET",
9
+ middlewares: [],
10
+ },
11
+ {
12
+ matcher: "/pos/gold/calculate",
13
+ method: "POST",
14
+ middlewares: [],
15
+ },
16
+ ],
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL2dvbGQvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1EQUF3RDtBQUV4RCxrQkFBZSxJQUFBLDZCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOO1lBQ0UsT0FBTyxFQUFFLFdBQVc7WUFDcEIsTUFBTSxFQUFFLEtBQUs7WUFDYixXQUFXLEVBQUUsRUFBRTtTQUNoQjtRQUNEO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxFQUFFO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDLENBQUMifQ==
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const build_redis_key_1 = require("../../../utils/build-redis-key");
6
+ const api_response_1 = require("../../../lib/api-response");
7
+ const item_master_purity_1 = require("./item-master-purity");
8
+ const KARAT_NORMALIZE = {
9
+ "9": "9K", "9k": "9K",
10
+ "14": "14K", "14k": "14K",
11
+ "18": "18K", "18k": "18K",
12
+ "22": "22K", "22k": "22K",
13
+ "24": "24K", "24k": "24K",
14
+ "og9": "9K", "og9k": "9K",
15
+ "og14": "14K", "og14k": "14K",
16
+ "og18": "18K", "og18k": "18K",
17
+ "og22": "22K", "og22k": "22K",
18
+ "og999": "24K", "og999k": "24K",
19
+ };
20
+ /** Normalize karat input (e.g. og14, OG18K, 14k) to canonical form 9K|14K|18K|22K|24K for cache lookup. */
21
+ function normalizeKarat(karatRaw) {
22
+ const s = karatRaw.trim().toLowerCase().replace(/\s/g, "");
23
+ if (!s)
24
+ return "";
25
+ const direct = KARAT_NORMALIZE[s];
26
+ if (direct)
27
+ return direct;
28
+ const withoutOg = s.replace(/^og/, "");
29
+ const fromOg = KARAT_NORMALIZE[withoutOg] || (withoutOg && !withoutOg.endsWith("k") ? `${withoutOg}K` : withoutOg);
30
+ if (KARAT_NORMALIZE[fromOg.toLowerCase()])
31
+ return KARAT_NORMALIZE[fromOg.toLowerCase()];
32
+ const numMatch = s.match(/^og?(\d+)(k?)$/);
33
+ if (numMatch) {
34
+ const n = numMatch[1];
35
+ const mapped = KARAT_NORMALIZE[n] || KARAT_NORMALIZE[`${n}k`];
36
+ if (mapped)
37
+ return mapped;
38
+ return `${n}K`;
39
+ }
40
+ return s.toUpperCase().endsWith("K") ? s.toUpperCase() : `${s}K`.toUpperCase();
41
+ }
42
+ const GET = async (req, res) => {
43
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
44
+ try {
45
+ const karatRaw = (req.query?.karat || "").trim().toLowerCase();
46
+ if (!karatRaw) {
47
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Query parameter karat is required (e.g. 9k, 14k, 18k, 24k or og14, OG18K)", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
48
+ }
49
+ const normalizedKarat = normalizeKarat(karatRaw);
50
+ const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
51
+ const cacheKey = (0, build_redis_key_1.buildRedisKey)("pos:gold-rate", {});
52
+ const cached = await cacheService.get(cacheKey);
53
+ if (!cached?.oldGoldRateList?.length) {
54
+ logger.warn("[POS-GOLD] : No cached gold rate; call GET /pos/gold-rate first");
55
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Gold rate not loaded. Please load gold rate first.", api_response_1.HttpStatus.SERVICE_UNAVAILABLE, api_response_1.ErrorCode.INTERNAL_ERROR));
56
+ }
57
+ const item = cached.oldGoldRateList.find((x) => x.rate.toUpperCase() === normalizedKarat.toUpperCase());
58
+ if (!item) {
59
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Karat "${karatRaw}" not found. Supported: 9K, 14K, 18K, 22K, 24K (or og14, og18, etc.)`, api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
60
+ }
61
+ let purity = item.purity ?? "";
62
+ let ratePerGms = item.amount;
63
+ const itemMasterPurity = await (0, item_master_purity_1.getPurityFromItemMaster)(req.scope, normalizedKarat);
64
+ if (itemMasterPurity != null) {
65
+ purity = `${itemMasterPurity}%`;
66
+ const cachePurityNum = parseFloat(String(item.purity ?? "100").replace(/%/g, "")) || 100;
67
+ if (cachePurityNum > 0) {
68
+ ratePerGms = (item.amount * itemMasterPurity) / cachePurityNum;
69
+ }
70
+ }
71
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
72
+ purity,
73
+ rate_per_gms: ratePerGms,
74
+ }, "OK"));
75
+ }
76
+ catch (error) {
77
+ const msg = error instanceof Error ? error.message : "Unknown error";
78
+ logger.error(`[POS-GOLD] : ${msg}`);
79
+ 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));
80
+ }
81
+ };
82
+ exports.GET = GET;
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9nb2xkL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLHFEQUErRTtBQUMvRSxvRUFBK0Q7QUFDL0QsNERBTW1DO0FBQ25DLDZEQUErRDtBQWEvRCxNQUFNLGVBQWUsR0FBMkI7SUFDOUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUNyQixJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQ3pCLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDekIsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztJQUN6QixJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQ3pCLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUk7SUFDekIsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSztJQUM3QixNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLO0lBQzdCLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUs7SUFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSztDQUNoQyxDQUFDO0FBRUYsMkdBQTJHO0FBQzNHLFNBQVMsY0FBYyxDQUFDLFFBQWdCO0lBQ3RDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDbEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksTUFBTTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzFCLE1BQU0sU0FBUyxH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
@@ -19,35 +19,38 @@ const GET = async (req, res) => {
19
19
  return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Gold rate fetched successfully"));
20
20
  }
21
21
  logger.info("[POS-GOLD-RATE] : Cache miss, fetching from ERP and quality master");
22
- const [quality14Result, quality18Result, quality22Result] = await Promise.all([
22
+ const [quality9Result, quality14Result, quality18Result, quality22Result] = await Promise.all([
23
23
  query.graph({
24
24
  entity: "quality_master",
25
25
  fields: ["id", "qly_code", "qly_mfg_clarity"],
26
- filters: {
27
- qly_code: "14",
28
- },
26
+ filters: { qly_code: "9" },
29
27
  }),
30
28
  query.graph({
31
29
  entity: "quality_master",
32
30
  fields: ["id", "qly_code", "qly_mfg_clarity"],
33
- filters: {
34
- qly_code: "18",
35
- },
31
+ filters: { qly_code: "14" },
36
32
  }),
37
33
  query.graph({
38
34
  entity: "quality_master",
39
35
  fields: ["id", "qly_code", "qly_mfg_clarity"],
40
- filters: {
41
- qly_code: "22",
42
- },
36
+ filters: { qly_code: "18" },
37
+ }),
38
+ query.graph({
39
+ entity: "quality_master",
40
+ fields: ["id", "qly_code", "qly_mfg_clarity"],
41
+ filters: { qly_code: "22" },
43
42
  }),
44
43
  ]);
44
+ const { data: qualityMasters9 } = quality9Result;
45
45
  const { data: qualityMasters14 } = quality14Result;
46
46
  const { data: qualityMasters18 } = quality18Result;
47
47
  const { data: qualityMasters22 } = quality22Result;
48
+ const qly9 = qualityMasters9?.[0];
48
49
  const qly14 = qualityMasters14?.[0];
49
50
  const qly18 = qualityMasters18?.[0];
50
51
  const qly22 = qualityMasters22?.[0];
52
+ // 9K: use quality_master if present, else 37.5% (9/24)
53
+ const qly9Clarity = qly9?.qly_mfg_clarity ?? 37.5;
51
54
  if (!qly22?.qly_mfg_clarity ||
52
55
  !qly18?.qly_mfg_clarity ||
53
56
  !qly14?.qly_mfg_clarity) {
@@ -60,8 +63,9 @@ const GET = async (req, res) => {
60
63
  logger.error("[POS-GOLD-RATE] : No gold rate data available from ERP");
61
64
  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));
62
65
  }
63
- const purity = ["14", "18", "22", "24"];
66
+ const purityKarats = ["9", "14", "18", "22", "24"];
64
67
  const qlyMap = {
68
+ "9": { qly_mfg_clarity: qly9Clarity },
65
69
  "14": qly14,
66
70
  "18": qly18,
67
71
  "22": qly22,
@@ -69,18 +73,21 @@ const GET = async (req, res) => {
69
73
  };
70
74
  const currentGoldData = goldRateData.CurrentGoldRate?.find((item) => item.RawName === "GOLD");
71
75
  const oldGoldData = goldRateData.CurrentGoldRate?.find((item) => item.RawName === "Old Gold");
72
- const goldRateList = purity.map((karat) => {
76
+ const goldRateList = purityKarats.map((karat) => {
73
77
  const qly = qlyMap[karat];
78
+ const clarity = qly?.qly_mfg_clarity ?? 0;
74
79
  return {
75
80
  rate: `${karat}K`,
76
- amount: ((currentGoldData?.SaleRate || 0) * qly.qly_mfg_clarity) / 100,
81
+ amount: ((currentGoldData?.SaleRate || 0) * clarity) / 100,
77
82
  };
78
83
  }).filter(Boolean);
79
- const oldGoldRateList = purity.map((karat) => {
84
+ const oldGoldRateList = purityKarats.map((karat) => {
80
85
  const qly = qlyMap[karat];
86
+ const clarity = qly?.qly_mfg_clarity ?? 0;
81
87
  return {
82
88
  rate: `${karat}K`,
83
- amount: ((oldGoldData?.SaleRate || 0) * qly.qly_mfg_clarity) / 100,
89
+ amount: ((oldGoldData?.SaleRate || 0) * clarity) / 100,
90
+ purity: `${clarity}%`,
84
91
  };
85
92
  }).filter(Boolean);
86
93
  const result = {
@@ -99,4 +106,4 @@ const GET = async (req, res) => {
99
106
  }
100
107
  };
101
108
  exports.GET = GET;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9nb2xkLXJhdGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStFO0FBQy9FLG9FQUd3QztBQUN4Qyw0REFNbUM7QUFFbkMsOENBQWdEO0FBMEJ6QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuRSxJQUFJLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFekQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFhLEVBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDekMsUUFBUSxDQUNULENBQUM7UUFFRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUN6RCxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsb0NBQXFCLEVBQ25CLFlBQVksRUFDWixnQ0FBZ0MsQ0FDakMsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUVsRixNQUFNLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsR0FDdkQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hCLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDN0MsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQztZQUNGLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDN0MsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQztZQUNGLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDN0MsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVMLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFDbkQsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztRQUNuRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsZUFBZSxDQUFDO1FBRW5ELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBDLElBQ0UsQ0FBQyxLQUFLLEVBQUUsZUFBZTtZQUN2QixDQUFDLEtBQUssRUFBRSxlQUFlO1lBQ3ZCLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFDdkIsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsMkZBQTJGLENBQUMsQ0FBQztZQUMxRyxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQ2pCLHlFQUF5RSxFQUN6RSx5QkFBVSxDQUFDLFNBQVMsRUFDcEIsd0JBQVMsQ0FBQyxTQUFTLENBQ3BCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQU0sVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFpQixDQUFDO1FBRTFFLElBQ0UsQ0FBQyxZQUFZLEVBQUUsZUFBZTtZQUM5QixZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQ3pDLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7WUFDdkUsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUNqQixzQ0FBc0MsRUFDdEMseUJBQVUsQ0FBQyxxQkFBcUIsRUFDaEMsd0JBQVMsQ0FBQyxjQUFjLENBQ3pCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25DLE1BQU0sTUFBTSxHQUF3QjtZQUNsQyxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLEtBQUs7WUFDWCxJQUFJLEVBQUUsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLEVBQUUsNEJBQTRCO1NBQzdELENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBQyxFQUFFLENBQUEsSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM1RixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBQyxFQUFFLENBQUEsSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQztRQUM1RixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLEdBQUcsS0FBSyxHQUFHO2dCQUNqQixNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxRQUFRLElBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUc7YUFDdEUsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQWUsQ0FBQztRQUVqQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLEdBQUcsS0FBSyxHQUFHO2dCQUNqQixNQUFNLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFFLEdBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUc7YUFDbkUsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQWUsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBcUI7WUFDL0IsbUJBQW1CLEVBQUUsWUFBWTtZQUNqQyxlQUFlLEVBQUUsZUFBZTtTQUNqQyxDQUFDO1FBRUYsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsd0NBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFM0UsTUFBTSxDQUFDLElBQUksQ0FDVCw0RUFBNEUsWUFBWSxDQUFDLE1BQU0sZ0JBQWdCLGVBQWUsQ0FBQyxNQUFNLFFBQVEsQ0FDOUksQ0FBQztRQUVGLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxvQ0FBcUIsRUFBQyxNQUFNLEVBQUUsZ0NBQWdDLENBQUMsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNwRSxNQUFNLENBQUMsS0FBSyxDQUNWLGdEQUFnRCxZQUFZLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDNUcsQ0FBQztRQUNGLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFDakIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLEVBQ2hFLHlCQUFVLENBQUMscUJBQXFCLEVBQ2hDLHdCQUFTLENBQUMsY0FBYyxDQUN6QixDQUNGLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBckpXLFFBQUEsR0FBRyxPQXFKZCJ9
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9nb2xkLXJhdGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStFO0FBQy9FLG9FQUd3QztBQUN4Qyw0REFNbUM7QUFFbkMsOENBQWdEO0FBMkJ6QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuRSxJQUFJLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFFekQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFhLEVBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDekMsUUFBUSxDQUNULENBQUM7UUFFRixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUN6RCxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsb0NBQXFCLEVBQ25CLFlBQVksRUFDWixnQ0FBZ0MsQ0FDakMsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVE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
@@ -5,13 +5,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const framework_1 = require("@medusajs/framework");
7
7
  const middleware_1 = __importDefault(require("./gold-rate/middleware"));
8
- const middleware_2 = __importDefault(require("./customer-ledger/middleware"));
9
- const middleware_3 = __importDefault(require("./wallet-balance/middleware"));
8
+ const middleware_2 = __importDefault(require("./gold/middleware"));
9
+ const middleware_3 = __importDefault(require("./customer-ledger/middleware"));
10
+ const middleware_4 = __importDefault(require("./wallet-balance/middleware"));
11
+ const middleware_5 = __importDefault(require("./old-gold-item/middleware"));
12
+ const middleware_6 = __importDefault(require("./silverdata/middleware"));
13
+ const middleware_7 = __importDefault(require("./platinumdata/middleware"));
10
14
  exports.default = (0, framework_1.defineMiddlewares)({
11
15
  routes: [
12
16
  ...(middleware_1.default.routes || []),
13
17
  ...(middleware_2.default.routes || []),
14
18
  ...(middleware_3.default.routes || []),
19
+ ...(middleware_4.default.routes || []),
20
+ ...(middleware_5.default.routes || []),
21
+ ...(middleware_6.default.routes || []),
22
+ ...(middleware_7.default.routes || []),
15
23
  ],
16
24
  });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFBd0Q7QUFFeEQsd0VBQTREO0FBQzVELDhFQUF3RTtBQUN4RSw2RUFBc0U7QUFFdEUsa0JBQWUsSUFBQSw2QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTixHQUFHLENBQUMsb0JBQXNCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN4QyxHQUFHLENBQUMsb0JBQTRCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxHQUFHLENBQUMsb0JBQTJCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztLQUM5QztDQUNGLENBQUMsQ0FBQyJ9
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFBd0Q7QUFFeEQsd0VBQTREO0FBQzVELG1FQUFtRDtBQUNuRCw4RUFBd0U7QUFDeEUsNkVBQXNFO0FBQ3RFLDRFQUFtRTtBQUNuRSx5RUFBK0Q7QUFDL0QsMkVBQW1FO0FBRW5FLGtCQUFlLElBQUEsNkJBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sR0FBRyxDQUFDLG9CQUFzQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDeEMsR0FBRyxDQUFDLG9CQUFrQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDcEMsR0FBRyxDQUFDLG9CQUE0QixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDOUMsR0FBRyxDQUFDLG9CQUEyQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDN0MsR0FBRyxDQUFDLG9CQUF5QixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDM0MsR0FBRyxDQUFDLG9CQUF3QixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDMUMsR0FBRyxDQUFDLG9CQUEwQixDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7S0FDN0M7Q0FDRixDQUFDLENBQUMifQ==
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const framework_1 = require("@medusajs/framework");
4
+ exports.default = (0, framework_1.defineMiddlewares)({
5
+ routes: [
6
+ { matcher: "/pos/old-gold-item", method: "GET", middlewares: [] },
7
+ { matcher: "/pos/old-gold-item", method: "POST", middlewares: [] },
8
+ ],
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL29sZC1nb2xkLWl0ZW0vbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1EQUF3RDtBQUV4RCxrQkFBZSxJQUFBLDZCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtRQUNqRSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7S0FDbkU7Q0FDRixDQUFDLENBQUMifQ==
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ exports.POST = POST;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const api_response_1 = require("../../../lib/api-response");
7
+ const item_master_1 = require("../../../modules/item-master");
8
+ const item_master_2 = require("../../../workflows/item-master");
9
+ const OLD_GOLD_RAW_NAME = "Old Gold";
10
+ async function GET(req, res) {
11
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
12
+ try {
13
+ const itemMasterService = req.scope.resolve(item_master_1.ITEM_MASTER_MODULE);
14
+ const all = await itemMasterService.listItemMasters({});
15
+ const oldGoldItems = all
16
+ .filter((row) => (row.raw_name || "").trim().toLowerCase() === OLD_GOLD_RAW_NAME.toLowerCase())
17
+ .map((row) => ({
18
+ item_code: (row.item_code || "").trim(),
19
+ item_name: (row.item_name || "").trim(),
20
+ }))
21
+ .filter((item) => item.item_code || item.item_name);
22
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ items: oldGoldItems }, "OK"));
23
+ }
24
+ catch (error) {
25
+ const msg = error instanceof Error ? error.message : "Unknown error";
26
+ logger.error(`[POS-OLD-GOLD-ITEM] GET: ${msg}`);
27
+ 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));
28
+ }
29
+ }
30
+ async function POST(req, res) {
31
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
32
+ try {
33
+ await (0, item_master_2.itemMasterWorkflow)(req.scope).run({ input: {} });
34
+ const itemMasterService = req.scope.resolve(item_master_1.ITEM_MASTER_MODULE);
35
+ const all = await itemMasterService.listItemMasters({});
36
+ const oldGoldItems = all
37
+ .filter((row) => (row.raw_name || "").trim().toLowerCase() === OLD_GOLD_RAW_NAME.toLowerCase())
38
+ .map((row) => ({
39
+ item_code: (row.item_code || "").trim(),
40
+ item_name: (row.item_name || "").trim(),
41
+ }))
42
+ .filter((item) => item.item_code || item.item_name);
43
+ logger.info(`[POS-OLD-GOLD-ITEM] Sync completed; ${oldGoldItems.length} old gold items`);
44
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ items: oldGoldItems, synced: true }, "Old gold items synced from ERP"));
45
+ }
46
+ catch (error) {
47
+ const msg = error instanceof Error ? error.message : "Unknown error";
48
+ logger.error(`[POS-OLD-GOLD-ITEM] POST sync: ${msg}`);
49
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error instanceof Error ? error.message : "Sync failed", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9vbGQtZ29sZC1pdGVtL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMkJBLGtCQW9DQztBQUVELG9CQXVDQztBQWhHRCxxREFBc0U7QUFDdEUsNERBTW1DO0FBQ25DLDhEQUFrRTtBQUVsRSxnRUFBb0U7QUFFcEUsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUM7QUFPOUIsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5FLElBQUksQ0FBQztRQUNILE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0NBQWtCLENBQXNCLENBQUM7UUFDckYsTUFBTSxHQUFHLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQXFCLEdBQUc7YUFDdkMsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQ2hGO2FBQ0EsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2IsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7U0FDeEMsQ0FBQyxDQUFDO2FBQ0YsTUFBTSxDQUFDLENBQUMsSUFB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
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const framework_1 = require("@medusajs/framework");
4
+ exports.default = (0, framework_1.defineMiddlewares)({
5
+ routes: [
6
+ {
7
+ matcher: "/pos/platinumdata",
8
+ method: "GET",
9
+ middlewares: [],
10
+ },
11
+ ],
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL3BsYXRpbnVtZGF0YS9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQXdEO0FBRXhELGtCQUFlLElBQUEsNkJBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLEVBQUU7U0FDaEI7S0FDRjtDQUNGLENBQUMsQ0FBQyJ9
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const build_redis_key_1 = require("../../../utils/build-redis-key");
6
+ const api_response_1 = require("../../../lib/api-response");
7
+ const erp_1 = require("../../../modules/erp");
8
+ const GET = async (req, res) => {
9
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
10
+ try {
11
+ logger.info("[POS-PLATINUM-DATA] : Fetching platinum rate data");
12
+ const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
13
+ const erpService = req.scope.resolve(erp_1.ERP_MODULE);
14
+ const cacheKey = (0, build_redis_key_1.buildRedisKey)("pos:platinum-rate", {});
15
+ const cachedResult = await cacheService.get(cacheKey);
16
+ if (cachedResult) {
17
+ logger.info("[POS-PLATINUM-DATA] : Returning cached result");
18
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Platinum rate fetched successfully"));
19
+ }
20
+ logger.info("[POS-PLATINUM-DATA] : Cache miss, fetching from ERP");
21
+ const platinumRateData = (await erpService.getPlatinumRateData());
22
+ const currentList = platinumRateData?.CurrentPlatinumRate?.map((item) => ({
23
+ rate: item.RawName || "Platinum",
24
+ amount: item.SaleRate ?? 0,
25
+ })) ?? [];
26
+ const result = {
27
+ currentPlatinumRateList: currentList,
28
+ };
29
+ await cacheService.set(cacheKey, result, build_redis_key_1.CACHE_VALIDATION_TIMES.PLATINUM_RATE);
30
+ logger.info(`[POS-PLATINUM-DATA] : Successfully computed and cached platinum rates - Current: ${currentList.length}`);
31
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result, "Platinum rate fetched successfully"));
32
+ }
33
+ catch (error) {
34
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
35
+ const errorStack = error instanceof Error ? error.stack : undefined;
36
+ logger.error(`[POS-PLATINUM-DATA] : Error fetching platinum rate - ${errorMessage}${errorStack ? `\nStack: ${errorStack}` : ""}`);
37
+ 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));
38
+ }
39
+ };
40
+ exports.GET = GET;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9wbGF0aW51bWRhdGEvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStFO0FBQy9FLG9FQUd3QztBQUN4Qyw0REFNbUM7QUFFbkMsOENBQWtEO0FBb0IzQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVuRSxJQUFJLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFFakUsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFlLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQUMsQ0FBQztRQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFhLEVBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFeEQsTUFBTSxZQUFZLEdBQ2hCLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBdUIsUUFBUSxDQUFDLENBQUM7UUFFekQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLCtDQUErQyxDQUFDLENBQUM7WUFDN0QsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUNuQixZQUFZLEVBQ1osb0NBQW9DLENBQ3JDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFFbkUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBRW5ELENBQUM7UUFFZCxNQUFNLFdBQVcsR0FDZixnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksVUFBVTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDO1NBQzNCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE1BQU0sTUFBTSxHQUF5QjtZQUNuQyx1QkFBdUIsRUFBRSxXQUFXO1NBQ3JDLENBQUM7UUFFRixNQUFNLFlBQVksQ0FBQyxHQUFHLENBQ3BCLFFBQVEsRUFDUixNQUFNLEVBQ04sd0NBQXNCLENBQUMsYUFBYSxDQUNyQyxDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FDVCxvRkFBb0YsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUN6RyxDQUFDO1FBRUYsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUFDLE1BQU0sRUFBRSxvQ0FBb0MsQ0FBQyxDQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFDOUUsTUFBTSxVQUFVLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxLQUFLLENBQ1Ysd0RBQXdELFlBQVksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNwSCxDQUFDO1FBQ0YsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUNqQixLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsRUFDaEUseUJBQVUsQ0FBQyxxQkFBcUIsRUFDaEMsd0JBQVMsQ0FBQyxjQUFjLENBQ3pCLENBQ0YsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUM7QUF4RVcsUUFBQSxHQUFHLE9Bd0VkIn0=
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const framework_1 = require("@medusajs/framework");
4
+ exports.default = (0, framework_1.defineMiddlewares)({
5
+ routes: [
6
+ {
7
+ matcher: "/pos/silverdata",
8
+ method: "GET",
9
+ middlewares: [],
10
+ },
11
+ ],
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL3NpbHZlcmRhdGEvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1EQUF3RDtBQUV4RCxrQkFBZSxJQUFBLDZCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixNQUFNLEVBQUUsS0FBSztZQUNiLFdBQVcsRUFBRSxFQUFFO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDLENBQUMifQ==
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const build_redis_key_1 = require("../../../utils/build-redis-key");
6
+ const api_response_1 = require("../../../lib/api-response");
7
+ const erp_1 = require("../../../modules/erp");
8
+ const GET = async (req, res) => {
9
+ const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
10
+ try {
11
+ logger.info("[POS-SILVER-DATA] : Fetching silver rate data");
12
+ const cacheService = req.scope.resolve(utils_1.Modules.CACHE);
13
+ const erpService = req.scope.resolve(erp_1.ERP_MODULE);
14
+ const cacheKey = (0, build_redis_key_1.buildRedisKey)("pos:silver-rate", {});
15
+ const cachedResult = await cacheService.get(cacheKey);
16
+ if (cachedResult) {
17
+ logger.info("[POS-SILVER-DATA] : Returning cached result");
18
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(cachedResult, "Silver rate fetched successfully"));
19
+ }
20
+ logger.info("[POS-SILVER-DATA] : Cache miss, fetching from ERP");
21
+ const silverRateData = (await erpService.getSilverRateData());
22
+ const currentList = silverRateData?.CurrentSilverRate?.map((item) => ({
23
+ rate: item.RawName || "Silver",
24
+ amount: item.SaleRate ?? 0,
25
+ })) ?? [];
26
+ const result = {
27
+ currentSilverRateList: currentList,
28
+ };
29
+ await cacheService.set(cacheKey, result, build_redis_key_1.CACHE_VALIDATION_TIMES.SILVER_RATE);
30
+ logger.info(`[POS-SILVER-DATA] : Successfully computed and cached silver rates - Current: ${currentList.length}`);
31
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result, "Silver rate fetched successfully"));
32
+ }
33
+ catch (error) {
34
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
35
+ const errorStack = error instanceof Error ? error.stack : undefined;
36
+ logger.error(`[POS-SILVER-DATA] : Error fetching silver rate - ${errorMessage}${errorStack ? `\nStack: ${errorStack}` : ""}`);
37
+ 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));
38
+ }
39
+ };
40
+ exports.GET = GET;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9zaWx2ZXJkYXRhL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUErRTtBQUMvRSxvRUFHd0M7QUFDeEMsNERBTW1DO0FBRW5DLDhDQUFrRDtBQW9CM0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBRTdELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBZSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBVSxDQUFDLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQUcsSUFBQSwrQkFBYSxFQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRELE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBcUIsUUFBUSxDQUFDLENBQUM7UUFFMUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7WUFDM0QsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUNuQixZQUFZLEVBQ1osa0NBQWtDLENBQ25DLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFFakUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUUvQyxDQUFDO1FBRWQsTUFBTSxXQUFXLEdBQ2YsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNoRCxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxRQUFRO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUM7U0FDM0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosTUFBTSxNQUFNLEdBQXVCO1lBQ2pDLHFCQUFxQixFQUFFLFdBQVc7U0FDbkMsQ0FBQztRQUVGLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FDcEIsUUFBUSxFQUNSLE1BQU0sRUFDTix3Q0FBc0IsQ0FBQyxXQUFXLENBQ25DLENBQUM7UUFFRixNQUFNLENBQUMsSUFBSSxDQUNULGdGQUFnRixXQUFXLENBQUMsTUFBTSxFQUFFLENBQ3JHLENBQUM7UUFFRixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsb0NBQXFCLEVBQUMsTUFBTSxFQUFFLGtDQUFrQyxDQUFDLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEUsTUFBTSxDQUFDLEtBQUssQ0FDVixvREFBb0QsWUFBWSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2hILENBQUM7UUFDRixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQ2pCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixFQUNoRSx5QkFBVSxDQUFDLHFCQUFxQixFQUNoQyx3QkFBUyxDQUFDLGNBQWMsQ0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQXZFVyxRQUFBLEdBQUcsT0F1RWQifQ==