@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.
Files changed (68) hide show
  1. package/.medusa/server/src/api/pos/customer-ledger/middleware.js +13 -0
  2. package/.medusa/server/src/api/pos/customer-ledger/route.js +50 -0
  3. package/.medusa/server/src/api/pos/generate-invoice/route.js +427 -0
  4. package/.medusa/server/src/api/pos/middleware.js +5 -1
  5. package/.medusa/server/src/api/pos/wallet-balance/middleware.js +13 -0
  6. package/.medusa/server/src/api/pos/wallet-balance/route.js +68 -0
  7. package/.medusa/server/src/jobs/sync-book-list-and-applicable-policy.js +77 -0
  8. package/.medusa/server/src/jobs/sync-report-master.js +40 -0
  9. package/.medusa/server/src/jobs/sync-sale-return-policy-master.js +29 -0
  10. package/.medusa/server/src/modules/applicable-sale-return-policy/index.js +13 -0
  11. package/.medusa/server/src/modules/applicable-sale-return-policy/migrations/Migration20260123083526.js +15 -0
  12. package/.medusa/server/src/modules/applicable-sale-return-policy/models/applicable-sale-return-policy.js +23 -0
  13. package/.medusa/server/src/modules/applicable-sale-return-policy/service.js +10 -0
  14. package/.medusa/server/src/modules/book-list/index.js +13 -0
  15. package/.medusa/server/src/modules/book-list/migrations/Migration20260123083525.js +15 -0
  16. package/.medusa/server/src/modules/book-list/models/book-list.js +12 -0
  17. package/.medusa/server/src/modules/book-list/service.js +10 -0
  18. package/.medusa/server/src/modules/customer-receive-voucher/index.js +13 -0
  19. package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20250115000000.js +51 -0
  20. package/.medusa/server/src/modules/customer-receive-voucher/migrations/Migration20260106050934.js +18 -0
  21. package/.medusa/server/src/modules/customer-receive-voucher/models/customer-receive-voucher.js +35 -0
  22. package/.medusa/server/src/modules/customer-receive-voucher/service.js +10 -0
  23. package/.medusa/server/src/modules/erp/service.js +299 -5
  24. package/.medusa/server/src/modules/report-master/index.js +13 -0
  25. package/.medusa/server/src/modules/report-master/migrations/Migration20260121060955.js +15 -0
  26. package/.medusa/server/src/modules/report-master/migrations/Migration20260121112624.js +15 -0
  27. package/.medusa/server/src/modules/report-master/models/report-master.js +12 -0
  28. package/.medusa/server/src/modules/report-master/service.js +10 -0
  29. package/.medusa/server/src/modules/sale-return-policy-master/index.js +13 -0
  30. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260105061449.js +21 -0
  31. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129084920.js +14 -0
  32. package/.medusa/server/src/modules/sale-return-policy-master/migrations/Migration20260129085620.js +20 -0
  33. package/.medusa/server/src/modules/sale-return-policy-master/models/sale-return-policy-master.js +37 -0
  34. package/.medusa/server/src/modules/sale-return-policy-master/service.js +12 -0
  35. package/.medusa/server/src/subscribers/cutomer-updated.js +2 -1
  36. package/.medusa/server/src/subscribers/party-master.js +35 -34
  37. package/.medusa/server/src/subscribers/shipping-info-master.js +3 -3
  38. package/.medusa/server/src/utils/state-helper.js +3 -2
  39. package/.medusa/server/src/workflows/applicable-sale-return-policy/index.js +11 -0
  40. package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/create-or-update-applicable-sale-return-policy.js +74 -0
  41. package/.medusa/server/src/workflows/applicable-sale-return-policy/steps/fetch-applicable-sale-return-policy.js +64 -0
  42. package/.medusa/server/src/workflows/book-list/index.js +11 -0
  43. package/.medusa/server/src/workflows/book-list/steps/create-or-update-book-list.js +55 -0
  44. package/.medusa/server/src/workflows/book-list/steps/fetch-book-list.js +64 -0
  45. package/.medusa/server/src/workflows/customer-advance-payment/index.js +18 -0
  46. package/.medusa/server/src/workflows/customer-advance-payment/steps/create-receive-voucher.js +71 -0
  47. package/.medusa/server/src/workflows/customer-advance-payment/steps/index.js +18 -0
  48. package/.medusa/server/src/workflows/customer-advance-payment/workflows/create-receive-voucher-workflow.js +11 -0
  49. package/.medusa/server/src/workflows/customer-advance-payment/workflows/index.js +18 -0
  50. package/.medusa/server/src/workflows/index.js +2 -1
  51. package/.medusa/server/src/workflows/orders/steps/find-nearest-pincodes-step.js +336 -0
  52. package/.medusa/server/src/workflows/orders/steps/index.js +11 -1
  53. package/.medusa/server/src/workflows/orders/steps/sync-advance-payment-to-erp-step.js +16 -2
  54. package/.medusa/server/src/workflows/orders/steps/sync-buyback-to-erp-step.js +99 -0
  55. package/.medusa/server/src/workflows/orders/steps/sync-cancel-to-erp-step.js +90 -0
  56. package/.medusa/server/src/workflows/orders/steps/sync-exchange-to-erp-step.js +101 -0
  57. package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +642 -12
  58. package/.medusa/server/src/workflows/orders/steps/sync-sale-return-to-erp-step.js +98 -0
  59. package/.medusa/server/src/workflows/orders/utils/order-helper.js +6 -2
  60. package/.medusa/server/src/workflows/orders/utils/order-request-helper.js +184 -0
  61. package/.medusa/server/src/workflows/party-master/steps/create-customer-erp.js +7 -1
  62. package/.medusa/server/src/workflows/report-master/index.js +11 -0
  63. package/.medusa/server/src/workflows/report-master/steps/create-or-update-report-master.js +53 -0
  64. package/.medusa/server/src/workflows/report-master/steps/fetch-report.js +71 -0
  65. package/.medusa/server/src/workflows/sale-return-policy-master/index.js +11 -0
  66. package/.medusa/server/src/workflows/sale-return-policy-master/steps/create-or-update-sale-return-policy-master.js +91 -0
  67. package/.medusa/server/src/workflows/sale-return-policy-master/steps/fetch-sale-return-policy.js +31 -0
  68. package/package.json +1 -1
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncBuybackToErpStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const order_request_helper_1 = require("../utils/order-request-helper");
7
+ /**
8
+ * Step to sync buyback data to GATI ERP
9
+ * Buyback is treated similarly to sale return in ERP
10
+ */
11
+ exports.syncBuybackToErpStep = (0, workflows_sdk_1.createStep)("sync-buyback-to-erp", async (input, { container }) => {
12
+ const { order_id, request_id, request_items, customer_note } = input;
13
+ try {
14
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
15
+ // Fetch order details with customer and extended data
16
+ const { data: orderData } = await query.graph({
17
+ entity: "order",
18
+ fields: [
19
+ "*",
20
+ "customer.*",
21
+ "customer.extended_customer.*",
22
+ "items.*",
23
+ "items.variant.*",
24
+ "items.variant.extended_variant.*",
25
+ "shipping_address.*",
26
+ "shipping_address.metadata.*",
27
+ "metadata",
28
+ ],
29
+ filters: { id: order_id },
30
+ });
31
+ const order = orderData?.[0];
32
+ if (!order) {
33
+ throw new Error(`Order not found: ${order_id}`);
34
+ }
35
+ const customer = order.customer;
36
+ // Fetch party master data from ERP module if available
37
+ let partyMaster = null;
38
+ try {
39
+ const { data: partyData } = await query.graph({
40
+ entity: "party_master",
41
+ fields: ["*"],
42
+ filters: {
43
+ party_no: customer?.extended_customer?.external_id,
44
+ },
45
+ });
46
+ partyMaster = partyData?.[0];
47
+ }
48
+ catch {
49
+ console.log("[syncBuybackToErpStep] Party master not found, using customer data");
50
+ }
51
+ // Enrich request items with line item data
52
+ const enrichedItems = request_items.map((item) => {
53
+ const lineItem = order.items?.find((oi) => oi.id === item.line_item_id);
54
+ return {
55
+ ...item,
56
+ line_item: lineItem,
57
+ };
58
+ });
59
+ // Build the buyback data
60
+ const buybackData = await (0, order_request_helper_1.buildBuybackData)(order, customer, partyMaster, enrichedItems, customer_note || "", container);
61
+ console.log("[syncBuybackToErpStep] Buyback data:", JSON.stringify(buybackData, null, 2));
62
+ // Get ERP service and create sale return (buyback is processed as sale return in ERP)
63
+ let erpResponse = null;
64
+ try {
65
+ const erpService = container.resolve("erp");
66
+ const inputFrom = order?.metadata?.cart_order_type === "pos" ? "POS" : "WEBSITE";
67
+ // For buyback, we use createSaleReturn with buyback remarks
68
+ erpResponse = await erpService.createSaleReturn(buybackData, inputFrom);
69
+ console.log("[syncBuybackToErpStep] ERP Response:", JSON.stringify(erpResponse, null, 2));
70
+ }
71
+ catch (erpError) {
72
+ console.error("[syncBuybackToErpStep] ERP sync failed:", erpError.message);
73
+ erpResponse = {
74
+ status: false,
75
+ message: `ERP sync failed: ${erpError.message}`,
76
+ data: null,
77
+ };
78
+ }
79
+ return new workflows_sdk_1.StepResponse({
80
+ request_id,
81
+ order_id,
82
+ erp_response: erpResponse,
83
+ buyback_data: buybackData,
84
+ synced: erpResponse?.status === true,
85
+ });
86
+ }
87
+ catch (error) {
88
+ console.error("[syncBuybackToErpStep] Error:", error);
89
+ return new workflows_sdk_1.StepResponse({
90
+ request_id,
91
+ order_id,
92
+ erp_response: null,
93
+ buyback_data: null,
94
+ synced: false,
95
+ error: error.message,
96
+ });
97
+ }
98
+ });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1idXliYWNrLXRvLWVycC1zdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9vcmRlcnMvc3RlcHMvc3luYy1idXliYWNrLXRvLWVycC1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUM3RSxxREFBc0U7QUFDdEUsd0VBQWlGO0FBbUJqRjs7O0dBR0c7QUFDVSxRQUFBLG9CQUFvQixHQUFHLElBQUEsMEJBQVUsRUFDNUMscUJBQXFCLEVBQ3JCLEtBQUssRUFBRSxLQUE0QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQWlELEVBQUU7SUFDbkcsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVyRSxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpFLHNEQUFzRDtRQUN0RCxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUM1QyxNQUFNLEVBQUUsT0FBTztZQUNmLE1BQU0sRUFBRTtnQkFDTixHQUFHO2dCQUNILFlBQVk7Z0JBQ1osOEJBQThCO2dCQUM5QixTQUFTO2dCQUNULGlCQUFpQjtnQkFDakIsa0NBQWtDO2dCQUNsQyxvQkFBb0I7Z0JBQ3BCLDZCQUE2QjtnQkFDN0IsVUFBVTthQUNYO1lBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRTtTQUMxQixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRWhDLHVEQUF1RDtRQUN2RCxJQUFJLFdBQVcsR0FBUSxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzVDLE1BQU0sRUFBRSxjQUFjO2dCQUN0QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2IsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsV0FBVztpQkFDbkQ7YUFDRixDQUFDLENBQUM7WUFDSCxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNwRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0UsT0FBTztnQkFDTCxHQUFHLElBQUk7Z0JBQ1AsU0FBUyxFQUFFLFFBQVE7YUFDcEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgseUJBQXlCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSx1Q0FBZ0IsRUFDeEMsS0FBSyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsYUFBYSxFQUNiLGFBQWEsSUFBSSxFQUFFLEVBQ25CLFNBQVMsQ0FDVixDQUFDO1FBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRixzRkFBc0Y7UUFDdEYsSUFBSSxXQUFXLEdBQVEsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFlLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVqRiw0REFBNEQ7WUFDNUQsV0FBVyxHQUFHLE1BQU0sVUFBVSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4RSxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFBQyxPQUFPLFFBQWEsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNFLFdBQVcsR0FBRztnQkFDWixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9DLElBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksNEJBQVksQ0FBeUI7WUFDOUMsVUFBVTtZQUNWLFFBQVE7WUFDUixZQUFZLEVBQUUsV0FBVztZQUN6QixZQUFZLEVBQUUsV0FBVztZQUN6QixNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxJQUFJO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsT0FBTyxJQUFJLDRCQUFZLENBQXlCO1lBQzlDLFVBQVU7WUFDVixRQUFRO1lBQ1IsWUFBWSxFQUFFLElBQUk7WUFDbEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFDIn0=
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncCancelToErpStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ /**
7
+ * Step to sync order cancellation to GATI ERP
8
+ */
9
+ exports.syncCancelToErpStep = (0, workflows_sdk_1.createStep)("sync-cancel-to-erp", async (input, { container }) => {
10
+ const { order_id, request_id, customer_note } = input;
11
+ try {
12
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
13
+ // Fetch order details with customer and extended data
14
+ const { data: orderData } = await query.graph({
15
+ entity: "order",
16
+ fields: [
17
+ "*",
18
+ "customer.*",
19
+ "customer.extended_customer.*",
20
+ "extended_order.*",
21
+ "metadata",
22
+ ],
23
+ filters: { id: order_id },
24
+ });
25
+ const order = orderData?.[0];
26
+ if (!order) {
27
+ throw new Error(`Order not found: ${order_id}`);
28
+ }
29
+ const customer = order.customer;
30
+ const extendedOrder = order.extended_order;
31
+ // Build cancel data for ERP
32
+ const cancelData = {
33
+ OrderId: extendedOrder?.erp_order_id || 0,
34
+ OrderPrefix: extendedOrder?.erp_order_prefix || "",
35
+ OrderNo: extendedOrder?.erp_order_no || "",
36
+ PartyNo: customer?.extended_customer?.external_id || "",
37
+ CancelReason: customer_note || "Order Cancellation",
38
+ CancelDate: new Date().toISOString(),
39
+ };
40
+ console.log("[syncCancelToErpStep] Cancel data:", JSON.stringify(cancelData, null, 2));
41
+ // Note: The GATI ERP may not have a direct cancel order endpoint
42
+ // This step logs the cancellation for reference
43
+ // If GATI has a cancel endpoint, it would be called here
44
+ let erpResponse = null;
45
+ try {
46
+ // Try to call ERP cancel if available
47
+ // For now, we just log the cancellation
48
+ console.log("[syncCancelToErpStep] Order cancellation logged for ERP reference");
49
+ erpResponse = {
50
+ status: true,
51
+ message: "Order cancellation logged",
52
+ data: cancelData,
53
+ };
54
+ // If ERP has delete/cancel sale functionality, uncomment below:
55
+ // const erpService = container.resolve("erp");
56
+ // if (extendedOrder?.erp_sale_trans_id) {
57
+ // erpResponse = await erpService.deleteSaleReturn({
58
+ // JewelTransId: extendedOrder.erp_sale_trans_id
59
+ // });
60
+ // }
61
+ }
62
+ catch (erpError) {
63
+ console.error("[syncCancelToErpStep] ERP sync failed:", erpError.message);
64
+ erpResponse = {
65
+ status: false,
66
+ message: `ERP sync failed: ${erpError.message}`,
67
+ data: null,
68
+ };
69
+ }
70
+ return new workflows_sdk_1.StepResponse({
71
+ request_id,
72
+ order_id,
73
+ erp_response: erpResponse,
74
+ cancel_data: cancelData,
75
+ synced: erpResponse?.status === true,
76
+ });
77
+ }
78
+ catch (error) {
79
+ console.error("[syncCancelToErpStep] Error:", error);
80
+ return new workflows_sdk_1.StepResponse({
81
+ request_id,
82
+ order_id,
83
+ erp_response: null,
84
+ cancel_data: null,
85
+ synced: false,
86
+ error: error.message,
87
+ });
88
+ }
89
+ });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jYW5jZWwtdG8tZXJwLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL29yZGVycy9zdGVwcy9zeW5jLWNhbmNlbC10by1lcnAtc3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0UscURBQXNFO0FBMEJ0RTs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsSUFBQSwwQkFBVSxFQUMzQyxvQkFBb0IsRUFDcEIsS0FBSyxFQUFFLEtBQTJCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBZ0QsRUFBRTtJQUNqRyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFdEQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxzREFBc0Q7UUFDdEQsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDNUMsTUFBTSxFQUFFLE9BQU87WUFDZixNQUFNLEVBQUU7Z0JBQ04sR0FBRztnQkFDSCxZQUFZO2dCQUNaLDhCQUE4QjtnQkFDOUIsa0JBQWtCO2dCQUNsQixVQUFVO2FBQ1g7WUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFO1NBQzFCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDaEMsTUFBTSxhQUFhLEdBQUksS0FBYSxDQUFDLGNBQWMsQ0FBQztRQUVwRCw0QkFBNEI7UUFDNUIsTUFBTSxVQUFVLEdBQUc7WUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLElBQUksQ0FBQztZQUN6QyxXQUFXLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixJQUFJLEVBQUU7WUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLElBQUksRUFBRTtZQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsSUFBSSxFQUFFO1lBQ3ZELFlBQVksRUFBRSxhQUFhLElBQUksb0JBQW9CO1lBQ25ELFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtTQUNyQyxDQUFDO1FBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RixpRUFBaUU7UUFDakUsZ0RBQWdEO1FBQ2hELHlEQUF5RDtRQUV6RCxJQUFJLFdBQVcsR0FBUSxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsc0NBQXNDO1lBQ3RDLHdDQUF3QztZQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7WUFFakYsV0FBVyxHQUFHO2dCQUNaLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE9BQU8sRUFBRSwyQkFBMkI7Z0JBQ3BDLElBQUksRUFBRSxVQUFVO2FBQ2pCLENBQUM7WUFFRixnRUFBZ0U7WUFDaEUsK0NBQStDO1lBQy9DLDBDQUEwQztZQUMxQyxzREFBc0Q7WUFDdEQsb0RBQW9EO1lBQ3BELFFBQVE7WUFDUixJQUFJO1FBQ04sQ0FBQztRQUFDLE9BQU8sUUFBYSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUUsV0FBVyxHQUFHO2dCQUNaLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxvQkFBb0IsUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDL0MsSUFBSSxFQUFFLElBQUk7YUFDWCxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSw0QkFBWSxDQUF3QjtZQUM3QyxVQUFVO1lBQ1YsUUFBUTtZQUNSLFlBQVksRUFBRSxXQUFXO1lBQ3pCLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxLQUFLLElBQUk7U0FDckMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksNEJBQVksQ0FBd0I7WUFDN0MsVUFBVTtZQUNWLFFBQVE7WUFDUixZQUFZLEVBQUUsSUFBSTtZQUNsQixXQUFXLEVBQUUsSUFBSTtZQUNqQixNQUFNLEVBQUUsS0FBSztZQUNiLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncExchangeToErpStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const order_request_helper_1 = require("../utils/order-request-helper");
7
+ /**
8
+ * Step to sync exchange data to GATI ERP
9
+ * Exchange is treated as a sale return with additional outbound info
10
+ */
11
+ exports.syncExchangeToErpStep = (0, workflows_sdk_1.createStep)("sync-exchange-to-erp", async (input, { container }) => {
12
+ const { order_id, request_id, request_items, outbound_items = [], customer_note } = input;
13
+ try {
14
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
15
+ // Fetch order details with customer and extended data
16
+ const { data: orderData } = await query.graph({
17
+ entity: "order",
18
+ fields: [
19
+ "*",
20
+ "customer.*",
21
+ "customer.extended_customer.*",
22
+ "items.*",
23
+ "items.variant.*",
24
+ "items.variant.extended_variant.*",
25
+ "shipping_address.*",
26
+ "shipping_address.metadata.*",
27
+ "metadata",
28
+ ],
29
+ filters: { id: order_id },
30
+ });
31
+ const order = orderData?.[0];
32
+ if (!order) {
33
+ throw new Error(`Order not found: ${order_id}`);
34
+ }
35
+ const customer = order.customer;
36
+ // Fetch party master data from ERP module if available
37
+ let partyMaster = null;
38
+ try {
39
+ const { data: partyData } = await query.graph({
40
+ entity: "party_master",
41
+ fields: ["*"],
42
+ filters: {
43
+ party_no: customer?.extended_customer?.external_id,
44
+ },
45
+ });
46
+ partyMaster = partyData?.[0];
47
+ }
48
+ catch {
49
+ console.log("[syncExchangeToErpStep] Party master not found, using customer data");
50
+ }
51
+ // Enrich request items with line item data
52
+ const enrichedItems = request_items.map((item) => {
53
+ const lineItem = order.items?.find((oi) => oi.id === item.line_item_id);
54
+ return {
55
+ ...item,
56
+ line_item: lineItem,
57
+ };
58
+ });
59
+ // Build the exchange data (returns sale return data + exchange remarks)
60
+ const { returnData, exchangeRemarks } = await (0, order_request_helper_1.buildExchangeData)(order, customer, partyMaster, enrichedItems, outbound_items, customer_note || "", container);
61
+ console.log("[syncExchangeToErpStep] Exchange data:", JSON.stringify(returnData, null, 2));
62
+ console.log("[syncExchangeToErpStep] Exchange remarks:", exchangeRemarks);
63
+ // Get ERP service and create sale return (exchange is processed as sale return in ERP)
64
+ let erpResponse = null;
65
+ try {
66
+ const erpService = container.resolve("erp");
67
+ const inputFrom = order?.metadata?.cart_order_type === "pos" ? "POS" : "WEBSITE";
68
+ // Add exchange remarks to the sale return data
69
+ returnData.Remarks = `${returnData.Remarks} | ${exchangeRemarks}`;
70
+ erpResponse = await erpService.createSaleReturn(returnData, inputFrom);
71
+ console.log("[syncExchangeToErpStep] ERP Response:", JSON.stringify(erpResponse, null, 2));
72
+ }
73
+ catch (erpError) {
74
+ console.error("[syncExchangeToErpStep] ERP sync failed:", erpError.message);
75
+ erpResponse = {
76
+ status: false,
77
+ message: `ERP sync failed: ${erpError.message}`,
78
+ data: null,
79
+ };
80
+ }
81
+ return new workflows_sdk_1.StepResponse({
82
+ request_id,
83
+ order_id,
84
+ erp_response: erpResponse,
85
+ exchange_data: returnData,
86
+ synced: erpResponse?.status === true,
87
+ });
88
+ }
89
+ catch (error) {
90
+ console.error("[syncExchangeToErpStep] Error:", error);
91
+ return new workflows_sdk_1.StepResponse({
92
+ request_id,
93
+ order_id,
94
+ erp_response: null,
95
+ exchange_data: null,
96
+ synced: false,
97
+ error: error.message,
98
+ });
99
+ }
100
+ });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1leGNoYW5nZS10by1lcnAtc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvb3JkZXJzL3N0ZXBzL3N5bmMtZXhjaGFuZ2UtdG8tZXJwLXN0ZXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQTZFO0FBQzdFLHFEQUFzRTtBQUN0RSx3RUFBa0Y7QUFvQmxGOzs7R0FHRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsSUFBQSwwQkFBVSxFQUM3QyxzQkFBc0IsRUFDdEIsS0FBSyxFQUFFLEtBQTZCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBa0QsRUFBRTtJQUNyRyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFMUYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxzREFBc0Q7UUFDdEQsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDNUMsTUFBTSxFQUFFLE9BQU87WUFDZixNQUFNLEVBQUU7Z0JBQ04sR0FBRztnQkFDSCxZQUFZO2dCQUNaLDhCQUE4QjtnQkFDOUIsU0FBUztnQkFDVCxpQkFBaUI7Z0JBQ2pCLGtDQUFrQztnQkFDbEMsb0JBQW9CO2dCQUNwQiw2QkFBNkI7Z0JBQzdCLFVBQVU7YUFDWDtZQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUU7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUVoQyx1REFBdUQ7UUFDdkQsSUFBSSxXQUFXLEdBQVEsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUM1QyxNQUFNLEVBQUUsY0FBYztnQkFDdEIsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDO2dCQUNiLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFdBQVc7aUJBQ25EO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDcEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdFLE9BQU87Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLFNBQVMsRUFBRSxRQUFRO2FBQ3BCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILHdFQUF3RTtRQUN4RSxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sSUFBQSx3Q0FBaUIsRUFDN0QsS0FBSyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLElBQUksRUFBRSxFQUNuQixTQUFTLENBQ1YsQ0FBQztRQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0YsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUUxRSx1RkFBdUY7UUFDdkYsSUFBSSxXQUFXLEdBQVEsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFlLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVqRiwrQ0FBK0M7WUFDL0MsVUFBVSxDQUFDLE9BQU8sR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLE1BQU0sZUFBZSxFQUFFLENBQUM7WUFFbEUsV0FBVyxHQUFHLE1BQU0sVUFBVSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RSxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFBQyxPQUFPLFFBQWEsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMENBQTBDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVFLFdBQVcsR0FBRztnQkFDWixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPLEVBQUUsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9DLElBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksNEJBQVksQ0FBMEI7WUFDL0MsVUFBVTtZQUNWLFFBQVE7WUFDUixZQUFZLEVBQUUsV0FBVztZQUN6QixhQUFhLEVBQUUsVUFBVTtZQUN6QixNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxJQUFJO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLDRCQUFZLENBQTBCO1lBQy9DLFVBQVU7WUFDVixRQUFRO1lBQ1IsWUFBWSxFQUFFLElBQUk7WUFDbEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFDIn0=