@devx-commerce/plugin-gati 0.0.34-beta.22 → 0.0.34-beta.25
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/pos/customer-ledger/middleware.js +13 -0
- package/.medusa/server/src/api/pos/customer-ledger/route.js +50 -0
- package/.medusa/server/src/api/pos/generate-invoice/route.js +427 -0
- package/.medusa/server/src/api/pos/middleware.js +5 -1
- package/.medusa/server/src/api/pos/wallet-balance/middleware.js +13 -0
- package/.medusa/server/src/api/pos/wallet-balance/route.js +68 -0
- package/.medusa/server/src/jobs/sync-book-list-and-applicable-policy.js +77 -0
- package/.medusa/server/src/jobs/sync-report-master.js +40 -0
- package/.medusa/server/src/jobs/sync-sale-return-policy-master.js +29 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/index.js +13 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/migrations/Migration20260123083526.js +15 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/models/applicable-sale-return-policy.js +23 -0
- package/.medusa/server/src/modules/applicable-sale-return-policy/service.js +10 -0
- package/.medusa/server/src/modules/book-list/index.js +13 -0
- package/.medusa/server/src/modules/book-list/migrations/Migration20260123083525.js +15 -0
- package/.medusa/server/src/modules/book-list/models/book-list.js +12 -0
- package/.medusa/server/src/modules/book-list/service.js +10 -0
- package/.medusa/server/src/modules/customer-receive-voucher/index.js +13 -0
- package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20250115000000.js +51 -0
- package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20260106050934.js +18 -0
- package/.medusa/server/src/modules/customer-receive-voucher/models/customer-receive-voucher.js +35 -0
- package/.medusa/server/src/modules/customer-receive-voucher/service.js +10 -0
- package/.medusa/server/src/modules/erp/service.js +299 -5
- package/.medusa/server/src/modules/report-master/index.js +13 -0
- package/.medusa/server/src/modules/report-master/migrations/Migration20260121060955.js +15 -0
- package/.medusa/server/src/modules/report-master/migrations/Migration20260121112624.js +15 -0
- package/.medusa/server/src/modules/report-master/models/report-master.js +12 -0
- package/.medusa/server/src/modules/report-master/service.js +10 -0
- package/.medusa/server/src/modules/sale-return-policy-master/index.js +13 -0
- package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260105061449.js +21 -0
- package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129084920.js +14 -0
- package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129085620.js +20 -0
- package/.medusa/server/src/modules/sale-return-policy-master/models/sale-return-policy-master.js +37 -0
- package/.medusa/server/src/modules/sale-return-policy-master/service.js +12 -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/subscribers/shipping-info-master.js +3 -3
- package/.medusa/server/src/utils/state-helper.js +3 -2
- package/.medusa/server/src/workflows/applicable-sale-return-policy/index.js +11 -0
- package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/create-or-update-applicable-sale-return-policy.js +74 -0
- package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/fetch-applicable-sale-return-policy.js +64 -0
- package/.medusa/server/src/workflows/book-list/index.js +11 -0
- package/.medusa/server/src/workflows/book-list/steps/create-or-update-book-list.js +55 -0
- package/.medusa/server/src/workflows/book-list/steps/fetch-book-list.js +64 -0
- package/.medusa/server/src/workflows/customer-advance-payment/index.js +18 -0
- package/.medusa/server/src/workflows/customer-advance-payment/steps/create-receive-voucher.js +71 -0
- package/.medusa/server/src/workflows/customer-advance-payment/steps/index.js +18 -0
- package/.medusa/server/src/workflows/customer-advance-payment/workflows/create-receive-voucher-workflow.js +11 -0
- package/.medusa/server/src/workflows/customer-advance-payment/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/index.js +2 -1
- package/.medusa/server/src/workflows/orders/steps/find-nearest-pincodes-step.js +336 -0
- package/.medusa/server/src/workflows/orders/steps/index.js +11 -1
- package/.medusa/server/src/workflows/orders/steps/sync-advance-payment-to-erp-step.js +16 -2
- package/.medusa/server/src/workflows/orders/steps/sync-buyback-to-erp-step.js +99 -0
- package/.medusa/server/src/workflows/orders/steps/sync-cancel-to-erp-step.js +90 -0
- package/.medusa/server/src/workflows/orders/steps/sync-exchange-to-erp-step.js +101 -0
- package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +642 -12
- package/.medusa/server/src/workflows/orders/steps/sync-sale-return-to-erp-step.js +98 -0
- package/.medusa/server/src/workflows/orders/utils/order-helper.js +6 -2
- package/.medusa/server/src/workflows/orders/utils/order-request-helper.js +184 -0
- package/.medusa/server/src/workflows/party-master/steps/create-customer-erp.js +7 -1
- package/.medusa/server/src/workflows/report-master/index.js +11 -0
- package/.medusa/server/src/workflows/report-master/steps/create-or-update-report-master.js +53 -0
- package/.medusa/server/src/workflows/report-master/steps/fetch-report.js +71 -0
- package/.medusa/server/src/workflows/sale-return-policy-master/index.js +11 -0
- package/.medusa/server/src/workflows/sale-return-policy-master/steps/create-or-update-sale-return-policy-master.js +91 -0
- package/.medusa/server/src/workflows/sale-return-policy-master/steps/fetch-sale-return-policy.js +31 -0
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const http_1 = require("@medusajs/framework/http");
|
|
4
|
+
exports.default = (0, http_1.defineMiddlewares)({
|
|
5
|
+
routes: [
|
|
6
|
+
{
|
|
7
|
+
matcher: "/store/customer-ledger",
|
|
8
|
+
method: "GET",
|
|
9
|
+
middlewares: [],
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL2N1c3RvbWVyLWxlZGdlci9taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBRWtDO0FBRWxDLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLEVBQUU7U0FDaEI7S0FDRjtDQUNGLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,50 @@
|
|
|
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 api_response_1 = require("../../../lib/api-response");
|
|
6
|
+
const erp_1 = require("../../../modules/erp");
|
|
7
|
+
const GET = async (req, res) => {
|
|
8
|
+
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
9
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
10
|
+
try {
|
|
11
|
+
const { customer_id } = req.query;
|
|
12
|
+
if (!customer_id) {
|
|
13
|
+
logger.error("[POS-CUSTOMER-LEDGER] : Missing customer_id parameter");
|
|
14
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("customer_id parameter is required", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
|
|
15
|
+
}
|
|
16
|
+
logger.info(`[POS-CUSTOMER-LEDGER] : Fetching extended customer for customer_id: ${customer_id}`);
|
|
17
|
+
// Fetch customer with extended_customer
|
|
18
|
+
const { data: customerData } = await query.graph({
|
|
19
|
+
entity: "customer",
|
|
20
|
+
fields: ["*", "extended_customer.*"],
|
|
21
|
+
filters: {
|
|
22
|
+
id: customer_id,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const customer = customerData?.[0];
|
|
26
|
+
// const transactionid = "0004000639"
|
|
27
|
+
const transactionid = customer?.extended_customer?.external_id;
|
|
28
|
+
if (!transactionid) {
|
|
29
|
+
logger.error(`[POS-CUSTOMER-LEDGER] : No external_id found for customer_id: ${customer_id}`);
|
|
30
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Customer external_id not found. Customer may not be synced with ERP.", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND));
|
|
31
|
+
}
|
|
32
|
+
logger.info(`[POS-CUSTOMER-LEDGER] : Fetching customer ledger data for transaction ID: ${transactionid} (customer_id: ${customer_id})`);
|
|
33
|
+
const erpService = req.scope.resolve(erp_1.ERP_MODULE);
|
|
34
|
+
const ledgerData = (await erpService.getMasterData("CustomerLedger", transactionid));
|
|
35
|
+
if (!ledgerData || !Array.isArray(ledgerData)) {
|
|
36
|
+
logger.error(`[POS-CUSTOMER-LEDGER] : Invalid response format from ERP for transaction ID: ${transactionid}`);
|
|
37
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Invalid response format from ERP", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
|
|
38
|
+
}
|
|
39
|
+
logger.info(`[POS-CUSTOMER-LEDGER] : Successfully fetched ${ledgerData.length} ledger entries for transaction ID: ${transactionid}`);
|
|
40
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(ledgerData, "Customer ledger fetched successfully"));
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
44
|
+
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
45
|
+
logger.error(`[POS-CUSTOMER-LEDGER] : Error fetching customer ledger - ${errorMessage}${errorStack ? `\nStack: ${errorStack}` : ""}`);
|
|
46
|
+
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));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.GET = GET;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9jdXN0b21lci1sZWRnZXIvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXNFO0FBQ3RFLDREQU1tQztBQUVuQyw4Q0FBa0Q7QUFrQjNDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBaUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFDakIsbUNBQW1DLEVBQ25DLHlCQUFVLENBQUMsV0FBVyxFQUN0Qix3QkFBUyxDQUFDLGdCQUFnQixDQUMzQixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FDVCx1RUFBdUUsV0FBVyxFQUFFLENBQ3JGLENBQUM7UUFFRix3Q0FBd0M7UUFDeEMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDL0MsTUFBTSxFQUFFLFVBQVU7WUFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO1lBQ3BDLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUs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
|
|
@@ -0,0 +1,427 @@
|
|
|
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 api_response_1 = require("../../../lib/api-response");
|
|
6
|
+
const erp_1 = require("../../../modules/erp");
|
|
7
|
+
const jewel_trans_master_1 = require("../../../modules/jewel-trans-master");
|
|
8
|
+
const order_master_1 = require("../../../modules/order-master");
|
|
9
|
+
const GET = async (req, res) => {
|
|
10
|
+
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
11
|
+
try {
|
|
12
|
+
logger.info("[POS-GENERATE-INVOICE] : Generating invoice file");
|
|
13
|
+
const { FileFor, FileType, order_id } = req.query;
|
|
14
|
+
// Validate required parameters
|
|
15
|
+
if (!FileFor || !FileType || !order_id) {
|
|
16
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Missing required parameters: FileFor, FileType, order_id", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
|
|
17
|
+
}
|
|
18
|
+
// Validate FileFor
|
|
19
|
+
const normalizedFileFor = FileFor.toLowerCase();
|
|
20
|
+
if (normalizedFileFor !== "sale" && normalizedFileFor !== "order") {
|
|
21
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("FileFor must be 'Sale' or 'Order'", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
|
|
22
|
+
}
|
|
23
|
+
// Validate FileType
|
|
24
|
+
const normalizedFileType = FileType.toLowerCase();
|
|
25
|
+
if (!["pdf", "xls", "xlsx"].includes(normalizedFileType)) {
|
|
26
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("FileType must be 'pdf', 'xls', or 'xlsx'", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
|
|
27
|
+
}
|
|
28
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
29
|
+
const link = req.scope.resolve("link");
|
|
30
|
+
const erpService = req.scope.resolve(erp_1.ERP_MODULE);
|
|
31
|
+
// Fetch order
|
|
32
|
+
const { data: orderData } = await query.graph({
|
|
33
|
+
entity: "order",
|
|
34
|
+
fields: [
|
|
35
|
+
"id",
|
|
36
|
+
"customer_id",
|
|
37
|
+
"metadata",
|
|
38
|
+
"customer.*",
|
|
39
|
+
"customer.extended_customer.*",
|
|
40
|
+
],
|
|
41
|
+
filters: { id: order_id },
|
|
42
|
+
});
|
|
43
|
+
const order = orderData?.[0];
|
|
44
|
+
if (!order) {
|
|
45
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Order not found", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND_ERROR));
|
|
46
|
+
}
|
|
47
|
+
logger.info(`[POS-GENERATE-INVOICE] : Order found - OrderId: ${order_id}`);
|
|
48
|
+
// Get branch number from order_master
|
|
49
|
+
let branchNo = "";
|
|
50
|
+
let orderMasterRecord = null;
|
|
51
|
+
try {
|
|
52
|
+
logger.info(`[POS-GENERATE-INVOICE] : Fetching order_master for branch number`);
|
|
53
|
+
// Method 1: Try via link module
|
|
54
|
+
try {
|
|
55
|
+
const linkedData = await link.list({
|
|
56
|
+
[utils_1.Modules.ORDER]: { order_id: order_id },
|
|
57
|
+
[order_master_1.ORDER_MASTER_MODULE]: {},
|
|
58
|
+
});
|
|
59
|
+
logger.info(`[POS-GENERATE-INVOICE] : Order_master link data found: ${linkedData?.length || 0} links`);
|
|
60
|
+
if (linkedData && linkedData.length > 0) {
|
|
61
|
+
const orderMasterId = linkedData[0][order_master_1.ORDER_MASTER_MODULE]?.order_master_id;
|
|
62
|
+
if (orderMasterId) {
|
|
63
|
+
const { data: orderMasterData } = await query.graph({
|
|
64
|
+
entity: "order_master",
|
|
65
|
+
fields: ["id", "branch_no", "erp_order_id", "order_no"],
|
|
66
|
+
filters: { id: orderMasterId },
|
|
67
|
+
});
|
|
68
|
+
orderMasterRecord = orderMasterData?.[0];
|
|
69
|
+
logger.info(`[POS-GENERATE-INVOICE] : OrderMaster data from link: ${JSON.stringify(orderMasterRecord)}`);
|
|
70
|
+
if (orderMasterRecord?.branch_no) {
|
|
71
|
+
branchNo = orderMasterRecord.branch_no;
|
|
72
|
+
logger.info(`[POS-GENERATE-INVOICE] : Got branch_no from order_master: ${branchNo}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching order_master via link - ${error}`);
|
|
79
|
+
}
|
|
80
|
+
// Method 2: Fallback - query.graph directly by order_id
|
|
81
|
+
if (!branchNo) {
|
|
82
|
+
try {
|
|
83
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 2 - Trying query.graph for order_master`);
|
|
84
|
+
const { data: orderMasterData } = await query.graph({
|
|
85
|
+
entity: "order_master",
|
|
86
|
+
fields: ["id", "branch_no", "erp_order_id", "order_no"],
|
|
87
|
+
filters: { order_id: order_id },
|
|
88
|
+
});
|
|
89
|
+
orderMasterRecord = orderMasterData?.[0];
|
|
90
|
+
logger.info(`[POS-GENERATE-INVOICE] : OrderMaster data from query.graph: ${JSON.stringify(orderMasterRecord)}`);
|
|
91
|
+
if (orderMasterRecord?.branch_no) {
|
|
92
|
+
branchNo = orderMasterRecord.branch_no;
|
|
93
|
+
logger.info(`[POS-GENERATE-INVOICE] : Got branch_no from query.graph: ${branchNo}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching order_master via query.graph - ${error}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Method 3: Fallback - get from party_master
|
|
101
|
+
if (!branchNo) {
|
|
102
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 3 - Trying party_master for branch number`);
|
|
103
|
+
const customer = order.customer;
|
|
104
|
+
if (customer?.extended_customer?.external_id) {
|
|
105
|
+
const { data: partyData } = await query.graph({
|
|
106
|
+
entity: "party_master",
|
|
107
|
+
fields: ["branch_no", "party_no"],
|
|
108
|
+
filters: {
|
|
109
|
+
party_no: customer.extended_customer.external_id,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
const partyMaster = partyData?.[0];
|
|
113
|
+
if (partyMaster?.branch_no) {
|
|
114
|
+
branchNo = partyMaster.branch_no;
|
|
115
|
+
logger.info(`[POS-GENERATE-INVOICE] : Got branch_no from party_master: ${branchNo}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching branch number - ${error}`);
|
|
122
|
+
}
|
|
123
|
+
if (!branchNo) {
|
|
124
|
+
logger.error(`[POS-GENERATE-INVOICE] : Branch number not found for order ${order_id}`);
|
|
125
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Branch number not found in order_master. Please ensure the order has been synced to ERP.", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND_ERROR));
|
|
126
|
+
}
|
|
127
|
+
// Get transaction ID based on FileFor
|
|
128
|
+
let transactionId = null;
|
|
129
|
+
if (normalizedFileFor === "sale") {
|
|
130
|
+
// For Sale: Get JewelTransId from jewel_trans_master
|
|
131
|
+
// Try multiple methods to find the transaction ID
|
|
132
|
+
logger.info(`[POS-GENERATE-INVOICE] : Searching for JewelTransId for order ${order_id}`);
|
|
133
|
+
// Method 1: Try via link module
|
|
134
|
+
try {
|
|
135
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 1 - Trying link module`);
|
|
136
|
+
const linkedData = await link.list({
|
|
137
|
+
[utils_1.Modules.ORDER]: { order_id: order_id },
|
|
138
|
+
[jewel_trans_master_1.JEWEL_TRANS_MASTER_MODULE]: {},
|
|
139
|
+
});
|
|
140
|
+
logger.info(`[POS-GENERATE-INVOICE] : Link data found: ${linkedData?.length || 0} links`);
|
|
141
|
+
if (linkedData && linkedData.length > 0) {
|
|
142
|
+
const jewelTransMasterId = linkedData[0][jewel_trans_master_1.JEWEL_TRANS_MASTER_MODULE]?.jewel_trans_master_id;
|
|
143
|
+
logger.info(`[POS-GENERATE-INVOICE] : JewelTransMasterId from link: ${jewelTransMasterId}`);
|
|
144
|
+
if (jewelTransMasterId) {
|
|
145
|
+
const { data: jewelTransData } = await query.graph({
|
|
146
|
+
entity: "jewel_trans_master",
|
|
147
|
+
fields: ["erp_jewel_trans_id"],
|
|
148
|
+
filters: { id: jewelTransMasterId },
|
|
149
|
+
});
|
|
150
|
+
const jewelTransMaster = jewelTransData?.[0];
|
|
151
|
+
logger.info(`[POS-GENERATE-INVOICE] : JewelTransMaster data: ${JSON.stringify(jewelTransMaster)}`);
|
|
152
|
+
if (jewelTransMaster?.erp_jewel_trans_id) {
|
|
153
|
+
transactionId = String(jewelTransMaster.erp_jewel_trans_id);
|
|
154
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found JewelTransId via link: ${transactionId}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching jewel_trans_master via link - ${error}`);
|
|
161
|
+
}
|
|
162
|
+
// Method 2: Try using service directly by party_no
|
|
163
|
+
if (!transactionId && order.customer?.extended_customer?.external_id) {
|
|
164
|
+
try {
|
|
165
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 2 - Trying service by party_no`);
|
|
166
|
+
const partyNo = order.customer.extended_customer.external_id;
|
|
167
|
+
logger.info(`[POS-GENERATE-INVOICE] : PartyNo: ${partyNo}`);
|
|
168
|
+
const jewelTransMasterService = req.scope.resolve(jewel_trans_master_1.JEWEL_TRANS_MASTER_MODULE);
|
|
169
|
+
const jewelTransMasters = await jewelTransMasterService.listJewelTransMasters({
|
|
170
|
+
party_no: partyNo,
|
|
171
|
+
});
|
|
172
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found ${jewelTransMasters?.length || 0} jewel_trans_masters for party_no`);
|
|
173
|
+
if (jewelTransMasters && jewelTransMasters.length > 0) {
|
|
174
|
+
// Sort by date descending and get the most recent one with erp_jewel_trans_id
|
|
175
|
+
const sorted = jewelTransMasters
|
|
176
|
+
.filter((item) => item.erp_jewel_trans_id)
|
|
177
|
+
.sort((a, b) => {
|
|
178
|
+
const dateA = new Date(a.jewel_trans_date || 0).getTime();
|
|
179
|
+
const dateB = new Date(b.jewel_trans_date || 0).getTime();
|
|
180
|
+
return dateB - dateA;
|
|
181
|
+
});
|
|
182
|
+
if (sorted.length > 0) {
|
|
183
|
+
transactionId = String(sorted[0].erp_jewel_trans_id);
|
|
184
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found JewelTransId via service fallback (most recent): ${transactionId}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching jewel_trans_master via service - ${error}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Method 3: Try query.graph by party_no as fallback
|
|
193
|
+
if (!transactionId && order.customer?.extended_customer?.external_id) {
|
|
194
|
+
try {
|
|
195
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 3 - Trying query.graph by party_no`);
|
|
196
|
+
const partyNo = order.customer.extended_customer.external_id;
|
|
197
|
+
const { data: jewelTransData } = await query.graph({
|
|
198
|
+
entity: "jewel_trans_master",
|
|
199
|
+
fields: ["erp_jewel_trans_id", "jewel_trans_date"],
|
|
200
|
+
filters: {
|
|
201
|
+
party_no: partyNo,
|
|
202
|
+
},
|
|
203
|
+
pagination: {
|
|
204
|
+
skip: 0,
|
|
205
|
+
take: 10, // Get recent transactions
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
logger.info(`[POS-GENERATE-INVOICE] : Query.graph found ${jewelTransData?.length || 0} records`);
|
|
209
|
+
if (jewelTransData && jewelTransData.length > 0) {
|
|
210
|
+
// Sort by date descending and get the most recent one
|
|
211
|
+
const sorted = jewelTransData
|
|
212
|
+
.filter((item) => item.erp_jewel_trans_id)
|
|
213
|
+
.sort((a, b) => {
|
|
214
|
+
const dateA = new Date(a.jewel_trans_date || 0).getTime();
|
|
215
|
+
const dateB = new Date(b.jewel_trans_date || 0).getTime();
|
|
216
|
+
return dateB - dateA;
|
|
217
|
+
});
|
|
218
|
+
if (sorted.length > 0) {
|
|
219
|
+
transactionId = String(sorted[0].erp_jewel_trans_id);
|
|
220
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found JewelTransId via query.graph fallback (most recent): ${transactionId}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching jewel_trans_master via query.graph fallback - ${error}`);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Method 4: Check order metadata for stored jewel_trans_id
|
|
229
|
+
if (!transactionId && order.metadata) {
|
|
230
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 4 - Checking order metadata`);
|
|
231
|
+
logger.info(`[POS-GENERATE-INVOICE] : Order metadata: ${JSON.stringify(order.metadata)}`);
|
|
232
|
+
const metadataJewelTransId = order.metadata.jewel_trans_id ||
|
|
233
|
+
order.metadata.JewelTransId ||
|
|
234
|
+
order.metadata.jewelTransId;
|
|
235
|
+
if (metadataJewelTransId) {
|
|
236
|
+
transactionId = String(metadataJewelTransId);
|
|
237
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found JewelTransId from order metadata: ${transactionId}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!transactionId) {
|
|
241
|
+
logger.error(`[POS-GENERATE-INVOICE] : All methods failed. Order ID: ${order_id}, Customer External ID: ${order.customer?.extended_customer?.external_id || 'N/A'}`);
|
|
242
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("JewelTransId not found. The sale may not be synced to ERP yet. Please ensure the order has been synced to ERP and try again.", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND_ERROR));
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// For Order: Get erp_order_id from order_master
|
|
247
|
+
logger.info(`[POS-GENERATE-INVOICE] : Searching for OrderId in order_master for order ${order_id}`);
|
|
248
|
+
// Method 1: Try via link module
|
|
249
|
+
try {
|
|
250
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 1 - Trying link module for order_master`);
|
|
251
|
+
const linkedData = await link.list({
|
|
252
|
+
[utils_1.Modules.ORDER]: { order_id: order_id },
|
|
253
|
+
[order_master_1.ORDER_MASTER_MODULE]: {},
|
|
254
|
+
});
|
|
255
|
+
logger.info(`[POS-GENERATE-INVOICE] : Order_master link data found: ${linkedData?.length || 0} links`);
|
|
256
|
+
if (linkedData && linkedData.length > 0) {
|
|
257
|
+
const orderMasterId = linkedData[0][order_master_1.ORDER_MASTER_MODULE]?.order_master_id;
|
|
258
|
+
logger.info(`[POS-GENERATE-INVOICE] : OrderMasterId from link: ${orderMasterId}`);
|
|
259
|
+
if (orderMasterId) {
|
|
260
|
+
const { data: orderMasterData } = await query.graph({
|
|
261
|
+
entity: "order_master",
|
|
262
|
+
fields: ["erp_order_id", "order_no"],
|
|
263
|
+
filters: { id: orderMasterId },
|
|
264
|
+
});
|
|
265
|
+
const orderMaster = orderMasterData?.[0];
|
|
266
|
+
logger.info(`[POS-GENERATE-INVOICE] : OrderMaster data: ${JSON.stringify(orderMaster)}`);
|
|
267
|
+
if (orderMaster?.erp_order_id) {
|
|
268
|
+
transactionId = String(orderMaster.erp_order_id);
|
|
269
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found OrderId via link: ${transactionId}`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching order_master via link - ${error}`);
|
|
276
|
+
}
|
|
277
|
+
// Method 2: Try query.graph directly by medusa order_id
|
|
278
|
+
if (!transactionId) {
|
|
279
|
+
try {
|
|
280
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 2 - Trying query.graph with order_id`);
|
|
281
|
+
const { data: orderMasterData } = await query.graph({
|
|
282
|
+
entity: "order_master",
|
|
283
|
+
fields: ["erp_order_id", "order_no"],
|
|
284
|
+
filters: {
|
|
285
|
+
order_id: order_id,
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
logger.info(`[POS-GENERATE-INVOICE] : Query.graph found ${orderMasterData?.length || 0} order_master records`);
|
|
289
|
+
if (orderMasterData && orderMasterData.length > 0) {
|
|
290
|
+
const orderMaster = orderMasterData[0];
|
|
291
|
+
if (orderMaster?.erp_order_id) {
|
|
292
|
+
transactionId = String(orderMaster.erp_order_id);
|
|
293
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found OrderId via query.graph: ${transactionId}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching order_master via query.graph - ${error}`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Method 3: Check order metadata for stored erp_order_id
|
|
302
|
+
if (!transactionId && order.metadata) {
|
|
303
|
+
try {
|
|
304
|
+
logger.info(`[POS-GENERATE-INVOICE] : Method 3 - Checking order metadata for erp_order_id`);
|
|
305
|
+
logger.info(`[POS-GENERATE-INVOICE] : Order metadata: ${JSON.stringify(order.metadata)}`);
|
|
306
|
+
const metadataOrderId = order.metadata.erp_order_id ||
|
|
307
|
+
order.metadata.OrderId ||
|
|
308
|
+
order.metadata.orderId;
|
|
309
|
+
if (metadataOrderId) {
|
|
310
|
+
transactionId = String(metadataOrderId);
|
|
311
|
+
logger.info(`[POS-GENERATE-INVOICE] : Found OrderId from order metadata: ${transactionId}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error checking order metadata - ${error}`);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
if (!transactionId) {
|
|
319
|
+
logger.error(`[POS-GENERATE-INVOICE] : All methods failed for order_master. Order ID: ${order_id}`);
|
|
320
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("OrderId not found. The order may not be synced to ERP yet. Please ensure the order has been synced to ERP and try again.", api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND_ERROR));
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Get ReportId from report_master table
|
|
324
|
+
const reportListFor = normalizedFileFor; // "sale" or "order"
|
|
325
|
+
let reportId = null;
|
|
326
|
+
let reportName = null;
|
|
327
|
+
try {
|
|
328
|
+
logger.info(`[POS-GENERATE-INVOICE] : Fetching report from report_master - BranchNo: ${branchNo}, ReportListFor: ${reportListFor}`);
|
|
329
|
+
const { data: reportMasterData } = await query.graph({
|
|
330
|
+
entity: "report_master",
|
|
331
|
+
fields: ["id", "report_id", "report_name", "branch_no", "report_list_for"],
|
|
332
|
+
filters: {
|
|
333
|
+
branch_no: branchNo,
|
|
334
|
+
report_list_for: reportListFor,
|
|
335
|
+
},
|
|
336
|
+
pagination: {
|
|
337
|
+
skip: 0,
|
|
338
|
+
take: 100, // Get all available reports for this branch
|
|
339
|
+
},
|
|
340
|
+
});
|
|
341
|
+
logger.info(`[POS-GENERATE-INVOICE] : Report_master query result - Found ${reportMasterData?.length || 0} reports: ${JSON.stringify(reportMasterData)}`);
|
|
342
|
+
if (reportMasterData && reportMasterData.length > 0) {
|
|
343
|
+
// Priority 1: Find report with "LetterHead" in the name (best for formatted invoices)
|
|
344
|
+
let selectedReport = reportMasterData.find((r) => r.report_name && r.report_name.toLowerCase().includes("letterhead"));
|
|
345
|
+
// Priority 2: Find report with "Invoice" in the name
|
|
346
|
+
if (!selectedReport) {
|
|
347
|
+
selectedReport = reportMasterData.find((r) => r.report_name && r.report_name.toLowerCase().includes("invoice"));
|
|
348
|
+
}
|
|
349
|
+
// Priority 3: Use the first report if no priority matches
|
|
350
|
+
if (!selectedReport) {
|
|
351
|
+
selectedReport = reportMasterData[0];
|
|
352
|
+
}
|
|
353
|
+
reportId = String(selectedReport.report_id);
|
|
354
|
+
reportName = selectedReport.report_name || "";
|
|
355
|
+
logger.info(`[POS-GENERATE-INVOICE] : Selected ReportId from ${reportMasterData.length} available reports - ReportId: ${reportId}, ReportName: ${reportName}`);
|
|
356
|
+
if (reportMasterData.length > 1) {
|
|
357
|
+
logger.info(`[POS-GENERATE-INVOICE] : Available reports: ${reportMasterData.map((r) => `${r.report_id}(${r.report_name})`).join(", ")}`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
logger.warn(`[POS-GENERATE-INVOICE] : Error fetching report_master - ${error}`);
|
|
363
|
+
}
|
|
364
|
+
if (!reportId) {
|
|
365
|
+
logger.error(`[POS-GENERATE-INVOICE] : ReportId not found for BranchNo: ${branchNo}, ReportListFor: ${reportListFor}`);
|
|
366
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`ReportId not found for ${reportListFor} in branch ${branchNo}. Please ensure reports are synced to report_master table.`, api_response_1.HttpStatus.NOT_FOUND, api_response_1.ErrorCode.NOT_FOUND_ERROR));
|
|
367
|
+
}
|
|
368
|
+
// Log the payload before calling GenerateFile API
|
|
369
|
+
const generateFilePayload = {
|
|
370
|
+
FileFor: FileFor,
|
|
371
|
+
FileType: FileType,
|
|
372
|
+
ReportId: reportId,
|
|
373
|
+
TransactionId: transactionId,
|
|
374
|
+
LetterHead: reportName || undefined, // Use report name as LetterHead
|
|
375
|
+
};
|
|
376
|
+
logger.info(`[POS-GENERATE-INVOICE] : Calling GenerateFile API with payload: ${JSON.stringify(generateFilePayload)}`);
|
|
377
|
+
logger.info(`[POS-GENERATE-INVOICE] : Additional info - BranchNo: ${branchNo}, ReportName: ${reportName}, OrderId: ${order_id}`);
|
|
378
|
+
logger.info(`[POS-GENERATE-INVOICE] : Request Headers - FileFor: ${FileFor}, FileType: ${FileType}, ReportId: ${reportId}, transactionid: ${transactionId}, LetterHead: ${reportName}`);
|
|
379
|
+
// Generate file
|
|
380
|
+
const result = await erpService.generateFile(generateFilePayload);
|
|
381
|
+
logger.info(`[POS-GENERATE-INVOICE] : GenerateFile API Response: ${JSON.stringify(result)}`);
|
|
382
|
+
logger.info(`[POS-GENERATE-INVOICE] : Response Status: ${result.status}, Message: ${result.message}`);
|
|
383
|
+
if (!result.status) {
|
|
384
|
+
logger.error(`[POS-GENERATE-INVOICE] : GenerateFile API failed - Status: ${result.status}, Message: ${result.message}, Payload: ${JSON.stringify(generateFilePayload)}`);
|
|
385
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(result.message || "Failed to generate invoice", api_response_1.HttpStatus.BAD_REQUEST, api_response_1.ErrorCode.VALIDATION_ERROR));
|
|
386
|
+
}
|
|
387
|
+
logger.info(`[POS-GENERATE-INVOICE] : Invoice generated successfully`);
|
|
388
|
+
logger.info(`[POS-GENERATE-INVOICE] : FileLink: ${result.data?.FileLink}`);
|
|
389
|
+
logger.info(`[POS-GENERATE-INVOICE] : Summary - OrderId: ${order_id}, FileFor: ${FileFor}, FileType: ${FileType}, ReportId: ${reportId}, ReportName: ${reportName}, TransactionId: ${transactionId}, BranchNo: ${branchNo}, LetterHead: ${reportName}`);
|
|
390
|
+
// Disable print option for PDF files
|
|
391
|
+
const responseData = { ...result.data };
|
|
392
|
+
if (FileType.toLowerCase() === "pdf" && responseData.FileLink) {
|
|
393
|
+
// Method 1: Add PDF viewer parameters to disable printing
|
|
394
|
+
// #toolbar=0 - hides the toolbar (removes print button)
|
|
395
|
+
// #navpanes=0 - hides navigation panes
|
|
396
|
+
// &embedded=true - embedded mode (further limits functionality)
|
|
397
|
+
let pdfLink = responseData.FileLink;
|
|
398
|
+
// Add parameters based on viewer type
|
|
399
|
+
if (pdfLink.includes("?")) {
|
|
400
|
+
pdfLink = `${pdfLink}&toolbar=0&navpanes=0`;
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
pdfLink = `${pdfLink}#toolbar=0&navpanes=0`;
|
|
404
|
+
}
|
|
405
|
+
responseData.FileLink = pdfLink;
|
|
406
|
+
logger.info(`[POS-GENERATE-INVOICE] : PDF print option disabled - Updated FileLink: ${responseData.FileLink}`);
|
|
407
|
+
// Method 2: Add HTTP headers to prevent printing
|
|
408
|
+
res.setHeader("X-UA-Compatible", "IE=edge");
|
|
409
|
+
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
410
|
+
res.setHeader("Pragma", "no-cache");
|
|
411
|
+
res.setHeader("Expires", "0");
|
|
412
|
+
res.setHeader("X-Print-Disabled", "true");
|
|
413
|
+
// Method 3: Content Security Policy - prevent print functionality
|
|
414
|
+
res.setHeader("Content-Security-Policy", "print-src 'none'");
|
|
415
|
+
// Method 4: Add iframe sandbox attributes (if PDF is embedded in iframe)
|
|
416
|
+
responseData.sandboxAttributes = "allow-same-origin";
|
|
417
|
+
logger.info(`[POS-GENERATE-INVOICE] : All print prevention methods applied`);
|
|
418
|
+
}
|
|
419
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(responseData, result.message || "Invoice generated successfully"));
|
|
420
|
+
}
|
|
421
|
+
catch (error) {
|
|
422
|
+
logger.error(`[POS-GENERATE-INVOICE] : Error generating invoice - ${error}`);
|
|
423
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error?.message || "Failed to generate invoice", api_response_1.HttpStatus.INTERNAL_SERVER_ERROR, api_response_1.ErrorCode.INTERNAL_ERROR));
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
exports.GET = GET;
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9nZW5lcmF0ZS1pbnZvaWNlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUErRTtBQUMvRSw0REFNbUM7QUFFbkMsOENBQWtEO0FBQ2xELDRFQUFnRjtBQUVoRixnRUFBb0U7QUFFN0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbkUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBRWhFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUkzQyxDQUFDO1FBRUYsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQ2pCLDBEQUEwRCxFQUMxRCx5QkFBVSxDQUFDLFdBQVcsRUFDdEIsd0JBQVMsQ0FBQyxnQkFBZ0IsQ0FDM0IsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELG1CQUFtQjtRQUNuQixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRCxJQUFJLGlCQUFpQixLQUFLLE1BQU0sSUFBSSxpQkFBaUIsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNsRSxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQ2pCLG1DQUFtQyxFQUNuQyx5QkFBVSxDQUFDLFdBQVcsRUFDdEIsd0JBQVMs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
|
|
@@ -5,9 +5,13 @@ 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
10
|
exports.default = (0, framework_1.defineMiddlewares)({
|
|
9
11
|
routes: [
|
|
10
12
|
...(middleware_1.default.routes || []),
|
|
13
|
+
...(middleware_2.default.routes || []),
|
|
14
|
+
...(middleware_3.default.routes || []),
|
|
11
15
|
],
|
|
12
16
|
});
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFBd0Q7QUFFeEQsd0VBQTREO0FBQzVELDhFQUF3RTtBQUN4RSw2RUFBc0U7QUFFdEUsa0JBQWUsSUFBQSw2QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTixHQUFHLENBQUMsb0JBQXNCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN4QyxHQUFHLENBQUMsb0JBQTRCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxHQUFHLENBQUMsb0JBQTJCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztLQUM5QztDQUNGLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const http_1 = require("@medusajs/framework/http");
|
|
4
|
+
exports.default = (0, http_1.defineMiddlewares)({
|
|
5
|
+
routes: [
|
|
6
|
+
{
|
|
7
|
+
matcher: "/store/wallet-balance",
|
|
8
|
+
method: "GET",
|
|
9
|
+
middlewares: [],
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvcG9zL3dhbGxldC1iYWxhbmNlL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFFa0M7QUFFbEMsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTjtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsTUFBTSxFQUFFLEtBQUs7WUFDYixXQUFXLEVBQUUsRUFBRTtTQUNoQjtLQUNGO0NBQ0YsQ0FBQyxDQUFDIn0=
|