@devx-commerce/plugin-gati 0.0.34-beta.50 → 0.0.34-beta.52

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 (48) hide show
  1. package/.medusa/server/src/api/erp/webhook/config.js +38 -28
  2. package/.medusa/server/src/jobs/process-erp-events.js +8 -50
  3. package/.medusa/server/src/modules/order-proceed-master/index.js +13 -0
  4. package/.medusa/server/src/modules/order-proceed-master/migrations/Migration20260327100226.js +31 -0
  5. package/.medusa/server/src/modules/order-proceed-master/models/order-proceed-master.js +38 -0
  6. package/.medusa/server/src/modules/order-proceed-master/service.js +11 -0
  7. package/.medusa/server/src/modules/receive-voucher-master/index.js +13 -0
  8. package/.medusa/server/src/modules/receive-voucher-master/migrations/Migration20260328053649.js +16 -0
  9. package/.medusa/server/src/modules/receive-voucher-master/models/receive-voucher-master.js +27 -0
  10. package/.medusa/server/src/modules/receive-voucher-master/service.js +10 -0
  11. package/.medusa/server/src/modules/sale-return-master/migrations/Migration20260327084135.js +14 -0
  12. package/.medusa/server/src/modules/sale-return-master/models/sale-return-master.js +3 -1
  13. package/.medusa/server/src/workflows/index.js +2 -1
  14. package/.medusa/server/src/workflows/inward-master/steps/index.js +1 -2
  15. package/.medusa/server/src/workflows/inward-master/workflows/index.js +1 -2
  16. package/.medusa/server/src/workflows/material-purchase-master/steps/create-material-purchase-master.js +41 -2
  17. package/.medusa/server/src/workflows/material-purchase-master/steps/delete-material-purchase-master.js +22 -1
  18. package/.medusa/server/src/workflows/material-purchase-master/steps/update-material-purchase-master.js +67 -19
  19. package/.medusa/server/src/workflows/order-master/steps/process-order-master-from-webhook.js +2 -2
  20. package/.medusa/server/src/workflows/order-proceed-master/index.js +6 -0
  21. package/.medusa/server/src/workflows/order-proceed-master/order-proceed-master-webhook.js +26 -0
  22. package/.medusa/server/src/workflows/order-proceed-master/steps/create-or-update-order-proceed-master.js +186 -0
  23. package/.medusa/server/src/workflows/order-proceed-master/steps/delete-order-proceed-master-by-erp-ids.js +28 -0
  24. package/.medusa/server/src/workflows/orders/steps/sync-old-gold-to-erp-step.js +2 -2
  25. package/.medusa/server/src/workflows/orders/steps/sync-order-to-erp.js +97 -40
  26. package/.medusa/server/src/workflows/orders/steps/sync-sale-return-to-erp-step.js +102 -2
  27. package/.medusa/server/src/workflows/orders/utils/order-helper.js +5 -5
  28. package/.medusa/server/src/workflows/party-style-master/steps/index.js +1 -2
  29. package/.medusa/server/src/workflows/party-style-master/workflows/index.js +1 -2
  30. package/.medusa/server/src/workflows/receive-voucher-master/index.js +24 -0
  31. package/.medusa/server/src/workflows/receive-voucher-master/steps/create-receive-voucher-master.js +125 -0
  32. package/.medusa/server/src/workflows/receive-voucher-master/steps/delete-receive-voucher-master.js +45 -0
  33. package/.medusa/server/src/workflows/receive-voucher-master/steps/fetch-receive-voucher-master.js +22 -0
  34. package/.medusa/server/src/workflows/receive-voucher-master/steps/update-receive-voucher-master.js +44 -0
  35. package/.medusa/server/src/workflows/sale-return-master/index.js +4 -22
  36. package/.medusa/server/src/workflows/sale-return-master/sale-return-master-webhook.js +28 -0
  37. package/.medusa/server/src/workflows/sale-return-master/steps/create-or-update-sale-return-master.js +109 -0
  38. package/.medusa/server/src/workflows/sale-return-master/steps/delete-sale-return-master-by-erp-ids.js +36 -0
  39. package/.medusa/server/src/workflows/sale-return-master/steps/process-sale-return-from-webhook.js +232 -0
  40. package/.medusa/server/src/workflows/style-master/steps/index.js +1 -2
  41. package/.medusa/server/src/workflows/style-master/workflows/index.js +1 -2
  42. package/package.json +1 -1
  43. package/.medusa/server/src/workflows/inward-master/steps/update-inward-price-only.js +0 -47
  44. package/.medusa/server/src/workflows/inward-master/workflows/update-inward-price-only.js +0 -99
  45. package/.medusa/server/src/workflows/party-style-master/steps/update-party-style-price-only.js +0 -111
  46. package/.medusa/server/src/workflows/party-style-master/workflows/create-or-update-party-style-master-price-only.js +0 -90
  47. package/.medusa/server/src/workflows/style-master/steps/update-style-price-only.js +0 -105
  48. package/.medusa/server/src/workflows/style-master/workflows/create-or-update-style-master-price-only.js +0 -104
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processSaleReturnFromWebhookStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const sale_return_master_1 = require("../../../modules/sale-return-master");
7
+ const framework_1 = require("@medusajs/framework");
8
+ /**
9
+ * Phase 5: Sale Return Webhook Step — Detection Logic
10
+ *
11
+ * Routes to different handlers based on whether the sale return is:
12
+ * - Sub-scenario B: Medusa-originated (has order_request_id reference)
13
+ * - Sub-scenario A: Pure ERP-originated (no Medusa order_request link)
14
+ */
15
+ exports.processSaleReturnFromWebhookStep = (0, workflows_sdk_1.createStep)("process-sale-return-from-webhook", async (input, { container }) => {
16
+ try {
17
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
18
+ const saleReturnService = container.resolve(sale_return_master_1.SALE_RETURN_MASTER_MODULE);
19
+ const erpService = container.resolve("erp");
20
+ const results = [];
21
+ for (const transId of input.jewel_trans_ids) {
22
+ const erpData = await erpService.getMasterData("sale_return", String(transId));
23
+ if (!erpData?.SaleReturn?.[0]) {
24
+ framework_1.logger.warn(`No sale return data received for JewelTransID ${transId}`);
25
+ continue;
26
+ }
27
+ const saleReturn = erpData.SaleReturn[0];
28
+ const erpTransIdStr = String(saleReturn.JewelTransId);
29
+ // ─── DETECTION: Which sub-scenario? ───────────────────────────────────
30
+ let orderRequestId = null;
31
+ // CHECK 1: Direct order_request_id in ERP response
32
+ if (saleReturn.OrderRequest?.OrderRequestId) {
33
+ orderRequestId = saleReturn.OrderRequest.OrderRequestId;
34
+ framework_1.logger.info(`[Webhook] Sale return ${erpTransIdStr} is Medusa-originated: ${orderRequestId}`);
35
+ }
36
+ // CHECK 2: Search order_request by metadata.external_id
37
+ if (!orderRequestId) {
38
+ try {
39
+ const { data: existingRequests } = await query.graph({
40
+ entity: "order_request",
41
+ fields: ["id"],
42
+ filters: {
43
+ // @ts-ignore - metadata filter for external_id
44
+ metadata: { external_id: erpTransIdStr },
45
+ },
46
+ });
47
+ if (existingRequests?.length > 0) {
48
+ orderRequestId = existingRequests[0].id;
49
+ framework_1.logger.info(`[Webhook] Found order_request ${orderRequestId} by metadata.external_id`);
50
+ }
51
+ }
52
+ catch (queryErr) {
53
+ framework_1.logger.warn(`[Webhook] order_request metadata lookup failed: ${queryErr?.message}`);
54
+ }
55
+ }
56
+ // ─── Route to correct sub-scenario handler ────────────────────────────
57
+ try {
58
+ if (orderRequestId) {
59
+ // Sub-scenario B: Medusa-originated return
60
+ await handleMedusaOriginatedReturn(orderRequestId, saleReturn, erpTransIdStr, saleReturnService, query, container);
61
+ }
62
+ else {
63
+ // Sub-scenario A: Pure ERP return
64
+ await handleErpOriginatedReturn(saleReturn, saleReturnService);
65
+ }
66
+ }
67
+ catch (handlerError) {
68
+ framework_1.logger.warn(`[Webhook] Sale return handler error for ERP sale return ${erpTransIdStr}: ${handlerError?.message}`);
69
+ }
70
+ results.push(saleReturn);
71
+ }
72
+ return new workflows_sdk_1.StepResponse(results);
73
+ }
74
+ catch (error) {
75
+ framework_1.logger.error(`Error in processSaleReturnFromWebhookStep: ${error?.message}`);
76
+ throw error;
77
+ }
78
+ });
79
+ /**
80
+ * Sub-scenario B: Medusa-originated return
81
+ * - Links created/updated sale_return_master to order_request
82
+ * - Updates order_request status
83
+ * - Triggers any downstream actions (e.g., update order status)
84
+ */
85
+ async function handleMedusaOriginatedReturn(orderRequestId, saleReturn, erpTransIdStr, saleReturnService, query, container) {
86
+ framework_1.logger.info(`[Webhook] Handling Medusa-originated return ${erpTransIdStr} → order_request ${orderRequestId}`);
87
+ // Fetch the order_request to understand context
88
+ try {
89
+ const { data: orderRequests } = await query.graph({
90
+ entity: "order_request",
91
+ fields: ["*", "order.*"],
92
+ filters: { id: orderRequestId },
93
+ });
94
+ if (!orderRequests?.length) {
95
+ framework_1.logger.warn(`[Webhook] order_request ${orderRequestId} not found, skipping update`);
96
+ return;
97
+ }
98
+ const orderRequest = orderRequests[0];
99
+ const order = orderRequest.order;
100
+ // Create/update sale_return_master with order_request_id field
101
+ const existing = await saleReturnService.listSaleReturnMasters({
102
+ sale_return_id: Number(saleReturn.JewelTransId),
103
+ });
104
+ // Build addless_detail from response (tax/discount breakdown)
105
+ const addlessDetail = saleReturn.AddlessDetail?.length
106
+ ? saleReturn.AddlessDetail.map((item) => ({
107
+ prompt: item.Prompt,
108
+ addless_per: item.AddLessPer || null,
109
+ addless_amount: item.AddLessAmount,
110
+ }))
111
+ : null;
112
+ const addlessDetailWithSummary = addlessDetail
113
+ ? {
114
+ items: addlessDetail,
115
+ gross_amount: saleReturn.GrossAmount,
116
+ total_addless_amount: saleReturn.TotalAddlessAmount,
117
+ final_amount: saleReturn.Amount,
118
+ }
119
+ : {
120
+ gross_amount: saleReturn.GrossAmount,
121
+ total_addless_amount: saleReturn.TotalAddlessAmount,
122
+ final_amount: saleReturn.Amount,
123
+ };
124
+ const saleReturnPayload = {
125
+ sale_return_id: saleReturn.JewelTransId,
126
+ return_no: saleReturn.JewelTransNo,
127
+ return_date: saleReturn.JewelTransDate,
128
+ party_no: saleReturn.PartyNo,
129
+ branch_no: saleReturn.BranchNo,
130
+ status: saleReturn.Status || null,
131
+ total_amount: saleReturn.Amount,
132
+ remarks: saleReturn.Remarks || null,
133
+ addless_detail: addlessDetailWithSummary,
134
+ order_request_id: orderRequestId,
135
+ metadata: {
136
+ erp_prefix: saleReturn.JewelTransPrefix,
137
+ erp_jewel_trans_id: saleReturn.JewelTransId,
138
+ sales_person: saleReturn.SalesPerson,
139
+ firm_name: saleReturn.FirmName,
140
+ },
141
+ };
142
+ if (existing?.length > 0) {
143
+ await saleReturnService.updateSaleReturnMasters({
144
+ id: existing[0].id,
145
+ ...saleReturnPayload,
146
+ });
147
+ framework_1.logger.info(`[Webhook] Updated sale_return_master ${existing[0].id} for Medusa-originated return`);
148
+ }
149
+ else {
150
+ await saleReturnService.createSaleReturnMasters(saleReturnPayload);
151
+ framework_1.logger.info(`[Webhook] Created sale_return_master for Medusa-originated return`);
152
+ }
153
+ // Update order_request status to completed/closed
154
+ const orderRequestService = container.resolve("order_request");
155
+ if (orderRequestService?.updateOrderRequest) {
156
+ try {
157
+ await orderRequestService.updateOrderRequest(orderRequestId, {
158
+ status: "completed",
159
+ });
160
+ framework_1.logger.info(`[Webhook] Updated order_request ${orderRequestId} status`);
161
+ }
162
+ catch (updateError) {
163
+ framework_1.logger.warn(`[Webhook] Could not update order_request status: ${updateError?.message}`);
164
+ }
165
+ }
166
+ }
167
+ catch (error) {
168
+ framework_1.logger.warn(`[Webhook] Error handling Medusa-originated return: ${error?.message}`);
169
+ throw error;
170
+ }
171
+ }
172
+ /**
173
+ * Sub-scenario A: Pure ERP-originated return
174
+ * - Creates sale_return_master without order_request link
175
+ * - Records the return for reference/reporting
176
+ */
177
+ async function handleErpOriginatedReturn(saleReturn, saleReturnService) {
178
+ framework_1.logger.info(`[Webhook] Handling ERP-originated return ${saleReturn.JewelTransId}`);
179
+ const existing = await saleReturnService.listSaleReturnMasters({
180
+ sale_return_id: Number(saleReturn.JewelTransId),
181
+ });
182
+ // Build addless_detail from response (tax/discount breakdown)
183
+ const addlessDetail = saleReturn.AddlessDetail?.length
184
+ ? saleReturn.AddlessDetail.map((item) => ({
185
+ prompt: item.Prompt,
186
+ addless_per: item.AddLessPer || null,
187
+ addless_amount: item.AddLessAmount,
188
+ }))
189
+ : null;
190
+ const addlessDetailWithSummary = addlessDetail
191
+ ? {
192
+ items: addlessDetail,
193
+ gross_amount: saleReturn.GrossAmount,
194
+ total_addless_amount: saleReturn.TotalAddlessAmount,
195
+ final_amount: saleReturn.Amount,
196
+ }
197
+ : {
198
+ gross_amount: saleReturn.GrossAmount,
199
+ total_addless_amount: saleReturn.TotalAddlessAmount,
200
+ final_amount: saleReturn.Amount,
201
+ };
202
+ const saleReturnPayload = {
203
+ sale_return_id: saleReturn.JewelTransId,
204
+ return_no: saleReturn.JewelTransNo,
205
+ return_date: saleReturn.JewelTransDate,
206
+ party_no: saleReturn.PartyNo,
207
+ branch_no: saleReturn.BranchNo,
208
+ status: saleReturn.Status || null,
209
+ total_amount: saleReturn.Amount,
210
+ remarks: saleReturn.Remarks || null,
211
+ addless_detail: addlessDetailWithSummary,
212
+ metadata: {
213
+ erp_prefix: saleReturn.JewelTransPrefix,
214
+ erp_jewel_trans_id: saleReturn.JewelTransId,
215
+ sales_person: saleReturn.SalesPerson,
216
+ firm_name: saleReturn.FirmName,
217
+ note: "ERP-originated return (no Medusa order link)",
218
+ },
219
+ };
220
+ if (existing?.length > 0) {
221
+ await saleReturnService.updateSaleReturnMasters({
222
+ id: existing[0].id,
223
+ ...saleReturnPayload,
224
+ });
225
+ framework_1.logger.info(`[Webhook] Updated sale_return_master ${existing[0].id} for ERP-originated return`);
226
+ }
227
+ else {
228
+ await saleReturnService.createSaleReturnMasters(saleReturnPayload);
229
+ framework_1.logger.info(`[Webhook] Created sale_return_master for ERP-originated return`);
230
+ }
231
+ }
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1zYWxlLXJldHVybi1mcm9tLXdlYmhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3NhbGUtcmV0dXJuLW1hc3Rlci9zdGVwcy9wcm9jZXNzLXNhbGUtcmV0dXJuLWZyb20td2ViaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0UscURBQXNFO0FBRXRFLDRFQUFnRjtBQUNoRixtREFBNkM7QUFPN0M7Ozs7OztHQU1HO0FBQ1UsUUFBQSxnQ0FBZ0MsR0FBRyxJQUFBLDBCQUFVLEVBQ3hELGtDQUFrQyxFQUNsQyxLQUFLLEVBQUUsS0FBd0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDaEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxNQUFNLGlCQUFpQixHQUE0QixTQUFTLENBQUMsT0FBTyxDQUNsRSw4Q0FBeUIsQ0FDMUIsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFxQixDQUFDO1FBRWhFLE1BQU0sT0FBTyxHQUFVLEVBQUUsQ0FBQztRQUUxQixLQUFLLE1BQU0sT0FBTyxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBUSxNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQ2pELGFBQWEsRUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLENBQ2hCLENBQUM7WUFFRixJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLGtCQUFNLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RSxTQUFTO1lBQ1gsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFH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
@@ -16,5 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./fetch-styles"), exports);
18
18
  __exportStar(require("./delete-style-master"), exports);
19
- __exportStar(require("./update-style-price-only"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0eWxlLW1hc3Rlci9zdGVwcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLHdEQUFzQztBQUN0Qyw0REFBMEMifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0eWxlLW1hc3Rlci9zdGVwcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLHdEQUFzQyJ9
@@ -15,6 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./create-or-update-style-master"), exports);
18
- __exportStar(require("./create-or-update-style-master-price-only"), exports);
19
18
  __exportStar(require("./delete-style-master"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0eWxlLW1hc3Rlci93b3JrZmxvd3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtFQUFnRDtBQUNoRCw2RUFBMkQ7QUFDM0Qsd0RBQXNDIn0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0eWxlLW1hc3Rlci93b3JrZmxvd3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtFQUFnRDtBQUNoRCx3REFBc0MifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devx-commerce/plugin-gati",
3
- "version": "0.0.34-beta.50",
3
+ "version": "0.0.34-beta.52",
4
4
  "description": "Gati ERP integration for Medusa",
5
5
  "author": "devx commerce",
6
6
  "license": "MIT",
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateInwardPriceOnly = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const extended_variant_1 = require("../../../modules/extended-variant");
6
- /**
7
- * Step to update inward master price fields only
8
- * Does not touch explorations, outlet_ids, or OpenSearch sync
9
- * Only updates:
10
- * - Inward master price/cost/margin/discount/amount fields
11
- * - All formula fields for cost and sale calculations
12
- *
13
- * @param input - Array of inward update payloads (id + price-only update fields)
14
- * @param container - Dependency injection container
15
- */
16
- exports.updateInwardPriceOnly = (0, workflows_sdk_1.createStep)("update-inward-price-only", async (input, { container }) => {
17
- const extendedVariantService = container.resolve(extended_variant_1.EXTENDED_VARIANT_MODULE);
18
- const logger = container.resolve("logger");
19
- if (!input.inwards || input.inwards.length === 0) {
20
- logger.info("No inward price-only updates to process");
21
- return new workflows_sdk_1.StepResponse({ success: true, updatedCount: 0 });
22
- }
23
- let updatedCount = 0;
24
- for (const updatePayload of input.inwards) {
25
- try {
26
- // Update inward with price fields only
27
- await extendedVariantService.updateInwardMasters({
28
- id: updatePayload.id,
29
- ...updatePayload.priceData,
30
- });
31
- updatedCount++;
32
- logger.info(`✅ Price-only update completed for inward ${updatePayload.id}`);
33
- }
34
- catch (error) {
35
- logger.error(`❌ Failed to update price-only for inward ${updatePayload.id}:`, error);
36
- throw error;
37
- }
38
- }
39
- return new workflows_sdk_1.StepResponse({
40
- success: true,
41
- updatedCount,
42
- });
43
- }, async (result, { container }) => {
44
- const logger = container.resolve("logger");
45
- logger.error("Compensation: Failed to update inward price-only data");
46
- });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWlud2FyZC1wcmljZS1vbmx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9pbndhcmQtbWFzdGVyL3N0ZXBzL3VwZGF0ZS1pbndhcmQtcHJpY2Utb25seS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFHN0Usd0VBQTRFO0FBRTVFOzs7Ozs7Ozs7R0FTRztBQUNVLFFBQUEscUJBQXFCLEdBQUcsSUFBQSwwQkFBVSxFQUM3QywwQkFBMEIsRUFDMUIsS0FBSyxFQUNILEtBS0MsRUFDRCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLHNCQUFzQixHQUMxQixTQUFTLENBQUMsT0FBTyxDQUFDLDBDQUF1QixDQUFDLENBQUM7SUFDN0MsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFckIsS0FBSyxNQUFNLGFBQWEsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDO1lBQ0gsdUNBQXVDO1lBQ3ZDLE1BQU0sc0JBQXNCLENBQUMsbUJBQW1CLENBQUM7Z0JBQy9DLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDcEIsR0FBRyxhQUFhLENBQUMsU0FBUzthQUMzQixDQUFDLENBQUM7WUFFSCxZQUFZLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxJQUFJLENBQ1QsNENBQTRDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FDL0QsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLEtBQUssQ0FDViw0Q0FBNEMsYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUMvRCxLQUFLLENBQ04sQ0FBQztZQUNGLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQztRQUN0QixPQUFPLEVBQUUsSUFBSTtRQUNiLFlBQVk7S0FDYixDQUFDLENBQUM7QUFDTCxDQUFDLEVBQ0QsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDOUIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7QUFDeEUsQ0FBQyxDQUNGLENBQUMifQ==
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateInwardPriceOnlyWorkflow = exports.updateInwardPriceOnlyWorkflowId = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const core_flows_1 = require("@medusajs/medusa/core-flows");
6
- const helper_1 = require("../helper");
7
- const steps_1 = require("../steps");
8
- const create_inward_detail_lines_1 = require("../steps/create-inward-detail-lines");
9
- const create_inward_extra_charges_lines_1 = require("../steps/create-inward-extra-charges-lines");
10
- const delete_inward_detail_lines_1 = require("../steps/delete-inward-detail-lines");
11
- const delete_inward_extra_charges_lines_1 = require("../steps/delete-inward-extra-charges-lines");
12
- const update_inward_price_only_1 = require("../steps/update-inward-price-only");
13
- const helper_2 = require("../helper");
14
- exports.updateInwardPriceOnlyWorkflowId = "update-inward-price-only";
15
- /**
16
- * Price-only workflow for Inward updates when DailyRate is detected
17
- * This workflow:
18
- * 1. Fetches inward data from ERP
19
- * 2. Updates only price fields in inward master (cost, mrp, margin, discount, formulas)
20
- * 3. Recreates inward detail lines and extra charges (all price-related)
21
- * 4. Does NOT update inward explorations, outlet_ids, or sync to OpenSearch
22
- *
23
- * @param input - Contains operation type, data IDs, and priceOnly flag
24
- */
25
- exports.updateInwardPriceOnlyWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.updateInwardPriceOnlyWorkflowId, (input) => {
26
- const inwardData = (0, steps_1.fetchInwardMaster)(input);
27
- const transformedInwardMaster = (0, workflows_sdk_1.transform)({ inwardData }, ({ inwardData }) => inwardData.map((item) => (0, helper_2.transformInwardMaster)(item)));
28
- const jewelIds = (0, workflows_sdk_1.transform)({ transformedInwardMaster }, ({ transformedInwardMaster }) => transformedInwardMaster.map((item) => item.jewel_id));
29
- const { data: inwards } = (0, core_flows_1.useQueryGraphStep)({
30
- entity: "inward_master",
31
- fields: [
32
- "id",
33
- "jewel_id",
34
- "inward_details.*",
35
- "inward_extra_charges.*",
36
- ],
37
- filters: {
38
- jewel_id: jewelIds,
39
- },
40
- });
41
- (0, workflows_sdk_1.when)({ inwards }, (data) => data.inwards.length > 0).then(() => {
42
- // Delete existing detail and extra charge lines (these are all price-related)
43
- const allInwardDetails = (0, workflows_sdk_1.transform)({ inwards }, ({ inwards }) => inwards.flatMap((inward) => inward.inward_details?.map((i) => i.id)));
44
- (0, delete_inward_detail_lines_1.deleteInwardDetailLinesStep)(allInwardDetails);
45
- const allInwardExtraCharges = (0, workflows_sdk_1.transform)({ inwards }, ({ inwards }) => inwards.flatMap((inward) => inward.inward_extra_charges?.map((i) => i.id)));
46
- (0, delete_inward_extra_charges_lines_1.deleteInwardExtraChargesLinesStep)(allInwardExtraCharges);
47
- });
48
- // Build update payloads by pairing existing inwards with transformed data via jewel_id
49
- const inwardsToUpdate = (0, workflows_sdk_1.transform)({ inwards, transformedInwardMaster }, ({ inwards, transformedInwardMaster }) => {
50
- const byJewelId = new Map(transformedInwardMaster.map((t) => [t.jewel_id, t]));
51
- return inwards
52
- .map((existing) => {
53
- const updated = byJewelId.get(existing.jewel_id);
54
- if (!updated) {
55
- return null;
56
- }
57
- return {
58
- id: existing.id,
59
- priceData: updated,
60
- };
61
- })
62
- .filter((x) => x !== null);
63
- });
64
- const updateResult = (0, update_inward_price_only_1.updateInwardPriceOnly)({
65
- inwards: inwardsToUpdate,
66
- });
67
- // Extract inward IDs and jewel IDs for linking to detail lines
68
- const updatedInwardsMeta = (0, workflows_sdk_1.transform)({ inwards, inwardsToUpdate }, ({ inwards, inwardsToUpdate }) => {
69
- const updatedIds = new Set(inwardsToUpdate.map((item) => item.id));
70
- return inwards
71
- .filter((inward) => updatedIds.has(inward.id))
72
- .map((inward) => ({
73
- id: inward.id,
74
- jewel_id: inward.jewel_id,
75
- }));
76
- });
77
- // Recreate detail lines after update (price-only)
78
- (0, workflows_sdk_1.when)({ updateResult, inwardData }, ({ updateResult, inwardData }) => {
79
- return updateResult.updatedCount > 0 && inwardData.length > 0;
80
- }).then(() => {
81
- const allInwardDetails = (0, workflows_sdk_1.transform)({ inwardData, createdInwards: updatedInwardsMeta }, (data) => (0, helper_1.extractLines)(data));
82
- if (allInwardDetails.length === 0) {
83
- return;
84
- }
85
- (0, create_inward_detail_lines_1.createInwardDetailLinesStep)(allInwardDetails);
86
- });
87
- // Recreate extra charges after update (price-only)
88
- (0, workflows_sdk_1.when)({ updateResult, inwardData }, ({ updateResult, inwardData }) => {
89
- return updateResult.updatedCount > 0 && inwardData.length > 0;
90
- }).then(() => {
91
- const allInwardExtraCharges = (0, workflows_sdk_1.transform)({ inwardData, createdInwards: updatedInwardsMeta }, (data) => (0, helper_1.extractExtraChargesLines)(data));
92
- if (allInwardExtraCharges.length === 0) {
93
- return;
94
- }
95
- (0, create_inward_extra_charges_lines_1.createInwardExtraChargesLinesStep)(allInwardExtraCharges);
96
- });
97
- return new workflows_sdk_1.WorkflowResponse({ success: true, updatedCount: updateResult.updatedCount });
98
- });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWlud2FyZC1wcmljZS1vbmx5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9pbndhcmQtbWFzdGVyL3dvcmtmbG93cy91cGRhdGUtaW53YXJkLXByaWNlLW9ubHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzJDO0FBQzNDLDREQUFnRTtBQUdoRSxzQ0FHbUI7QUFDbkIsb0NBQTZDO0FBQzdDLG9GQUFrRjtBQUNsRixrR0FBK0Y7QUFDL0Ysb0ZBQWtGO0FBQ2xGLGtHQUErRjtBQUMvRixnRkFBMEU7QUFDMUUsc0NBQWtEO0FBRXJDLFFBQUEsK0JBQStCLEdBQUcsMEJBQTBCLENBQUM7QUFFMUU7Ozs7Ozs7OztHQVNHO0FBQ1UsUUFBQSw2QkFBNkIsR0FBRyxJQUFBLDhCQUFjLEVBQ3pELHVDQUErQixFQUMvQixDQUFDLEtBQWtCLEVBQUUsRUFBRTtJQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFBLHlCQUFpQixFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLE1BQU0sdUJBQXVCLEdBQUcsSUFBQSx5QkFBUyxFQUN2QyxFQUFFLFVBQVUsRUFBRSxFQUNkLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBQSw4QkFBcUIsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUMxRSxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBQSx5QkFBUyxFQUN4QixFQUFFLHVCQUF1QixFQUFFLEVBQzNCLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsQ0FDOUIsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3ZELENBQUM7SUFFRixNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLElB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
@@ -1,111 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updatePartyStylePriceOnly = void 0;
4
- const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
- const extended_variant_1 = require("../../../modules/extended-variant");
6
- /**
7
- * Step to update extended variant price fields only
8
- * Does not touch Medusa variant (title, SKU, options) or explorations
9
- * Only updates:
10
- * - Extended variant price/cost/margin/discount/amount fields
11
- * - Party style detail lines with updated price calculations
12
- *
13
- * @param input - Array of price-only updates
14
- * @param container - Dependency injection container
15
- */
16
- exports.updatePartyStylePriceOnly = (0, workflows_sdk_1.createStep)("update-party-style-price-only", async (input, { container }) => {
17
- const extendedVariantService = container.resolve(extended_variant_1.EXTENDED_VARIANT_MODULE);
18
- const logger = container.resolve("logger");
19
- if (!input.updates || input.updates.length === 0) {
20
- logger.info("No party style price-only updates to process");
21
- return new workflows_sdk_1.StepResponse({ success: true, updatedCount: 0 });
22
- }
23
- let updatedCount = 0;
24
- for (const update of input.updates) {
25
- try {
26
- // Update extended variant with price fields only
27
- await extendedVariantService.updateExtendedVariants({
28
- id: update.extendedVariantId,
29
- // Price and cost fields
30
- cost: update.extendedVariantData.cost,
31
- actual_cost: update.extendedVariantData.actual_cost,
32
- mrp: update.extendedVariantData.mrp,
33
- actual_mrp: update.extendedVariantData.actual_mrp,
34
- // Cost calculations
35
- metal_total_cost: update.extendedVariantData.metal_total_cost,
36
- diamond_total_cost: update.extendedVariantData.diamond_total_cost,
37
- stone_total_cost: update.extendedVariantData.stone_total_cost,
38
- cpf_total_cost: update.extendedVariantData.cpf_total_cost,
39
- // Amount calculations
40
- metal_total_amount: update.extendedVariantData.metal_total_amount,
41
- diamond_total_amount: update.extendedVariantData.diamond_total_amount,
42
- stone_total_amount: update.extendedVariantData.stone_total_amount,
43
- cpf_total_amount: update.extendedVariantData.cpf_total_amount,
44
- // Actual amounts
45
- actual_metal_total_amount: update.extendedVariantData.actual_metal_total_amount,
46
- actual_diamond_total_amount: update.extendedVariantData.actual_diamond_total_amount,
47
- actual_stone_total_amount: update.extendedVariantData.actual_stone_total_amount,
48
- actual_cpf_total_amount: update.extendedVariantData.actual_cpf_total_amount,
49
- actual_total_amount: update.extendedVariantData.actual_total_amount,
50
- // Rate chart and discount markup
51
- rate_chart: update.extendedVariantData.rate_chart,
52
- discount_markup: update.extendedVariantData.discount_markup,
53
- discount_markup_cost: update.extendedVariantData.discount_markup_cost,
54
- // Making and metal calculation formulas
55
- making_cost_on: update.extendedVariantData.making_cost_on,
56
- metal_calculation_cost_on: update.extendedVariantData.metal_calculation_cost_on,
57
- gold_loss_cost_formula: update.extendedVariantData.gold_loss_cost_formula,
58
- labour_cost_formula: update.extendedVariantData.labour_cost_formula,
59
- // Margin and discount cost fields
60
- cost_margin_per: update.extendedVariantData.cost_margin_per,
61
- cost_margin_is_fix: update.extendedVariantData.cost_margin_is_fix,
62
- actual_cost_margin_amt: update.extendedVariantData.actual_cost_margin_amt,
63
- cost_margin_amt: update.extendedVariantData.cost_margin_amt,
64
- cost_discount_per: update.extendedVariantData.cost_discount_per,
65
- cost_discount_is_fix: update.extendedVariantData.cost_discount_is_fix,
66
- actual_cost_discount_amt: update.extendedVariantData.actual_cost_discount_amt,
67
- cost_discount_amt: update.extendedVariantData.cost_discount_amt,
68
- // Making and metal calculation formulas (sale)
69
- making_on: update.extendedVariantData.making_on,
70
- metal_calculation_on: update.extendedVariantData.metal_calculation_on,
71
- gold_loss_formula: update.extendedVariantData.gold_loss_formula,
72
- labour_formula: update.extendedVariantData.labour_formula,
73
- // Margin and discount sale fields
74
- margin_per: update.extendedVariantData.margin_per,
75
- margin_is_fix: update.extendedVariantData.margin_is_fix,
76
- actual_margin_amt: update.extendedVariantData.actual_margin_amt,
77
- margin_amt: update.extendedVariantData.margin_amt,
78
- discount_per: update.extendedVariantData.discount_per,
79
- discount_is_fix: update.extendedVariantData.discount_is_fix,
80
- actual_discount_amt: update.extendedVariantData.actual_discount_amt,
81
- discount_amt: update.extendedVariantData.discount_amt,
82
- });
83
- // Delete and recreate party style detail lines with updated prices
84
- if (update.styleDetails && update.styleDetails.length > 0) {
85
- // Get existing detail line IDs to delete
86
- const existingDetails = await extendedVariantService.listPartyStyleDetailsLines({
87
- party_style_id: update.extendedVariantData.party_style_id,
88
- });
89
- if (existingDetails.length > 0) {
90
- await extendedVariantService.deletePartyStyleDetailsLines(existingDetails.map((d) => d.id));
91
- }
92
- // Create new party style details with updated prices
93
- await extendedVariantService.createPartyStyleDetailsLines(update.styleDetails);
94
- }
95
- updatedCount++;
96
- logger.info(`✅ Price-only update completed for variant ${update.extendedVariantId}`);
97
- }
98
- catch (error) {
99
- logger.error(`❌ Failed to update price-only for variant ${update.extendedVariantId}:`, error);
100
- throw error;
101
- }
102
- }
103
- return new workflows_sdk_1.StepResponse({
104
- success: true,
105
- updatedCount,
106
- });
107
- }, async (result, { container }) => {
108
- const logger = container.resolve("logger");
109
- logger.error("Compensation: Failed to update party style price-only data");
110
- });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXBhcnR5LXN0eWxlLXByaWNlLW9ubHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BhcnR5LXN0eWxlLW1hc3Rlci9zdGVwcy91cGRhdGUtcGFydHktc3R5bGUtcHJpY2Utb25seS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFHN0Usd0VBQTRFO0FBUTVFOzs7Ozs7Ozs7R0FTRztBQUNVLFFBQUEseUJBQXlCLEdBQUcsSUFBQSwwQkFBVSxFQUNqRCwrQkFBK0IsRUFDL0IsS0FBSyxFQUNILEtBQStDLEVBQy9DLEVBQUUsU0FBUyxFQUFFLEVBQ2IsRUFBRTtJQUNGLE1BQU0sc0JBQXNCLEdBQTJCLFNBQVMsQ0FBQyxPQUFPLENBQ3RFLDBDQUF1QixDQUN4QixDQUFDO0lBQ0YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDNUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDO1lBQ0gsaURBQWlEO1lBQ2pELE1BQU0sc0JBQXNCLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2xELEVBQUUsRUFBRSxNQUFNLENBQUMsaUJBQWlCO2dCQUM1Qix3QkFBd0I7Z0JBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsbUJB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