@devx-commerce/plugin-gati 0.0.34-beta.56 → 0.0.34-beta.57

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.
@@ -2,102 +2,104 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.config = void 0;
4
4
  exports.default = syncCustomerAdvancePaymentErp;
5
- const utils_1 = require("@medusajs/framework/utils");
6
- const sync_advanve_payment_to_erp_1 = require("../workflows/orders/workflows/sync-advanve-payment-to-erp");
7
5
  const BATCH_SIZE = 50;
8
- async function syncCustomerAdvancePaymentErp(container) {
9
- const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
10
- const erpService = container.resolve("erp");
11
- const healthy = await erpService.checkServiceHealth();
12
- if (!healthy) {
13
- logger.warn("[sync-customer-advance-payment-erp] ERP service unavailable, skipping sync");
14
- return;
15
- }
16
- const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
17
- let skip = 0;
18
- let totalSynced = 0;
19
- // Track IDs attempted this run to avoid re-processing orders whose advance_payment_synced
20
- // flag was just set (they remain in the DB query result until the next read reflects the update).
21
- const attemptedIds = new Set();
22
- while (true) {
23
- // Query orders where order was synced to ERP but advance payment was not yet synced.
24
- // The DB filter is stable (status doesn't change here), so we use normal skip pagination.
25
- const { data: batch } = await query.graph({
26
- entity: "order",
27
- fields: [
28
- "id",
29
- "metadata",
30
- "payment_collections.*",
31
- "payment_collections.payments.*",
32
- "order_master.*",
33
- ],
34
- filters: { status: ["pending", "completed"] },
35
- pagination: { skip, take: BATCH_SIZE },
36
- });
37
- if (!batch?.length)
38
- break;
39
- // Only retry orders that:
40
- // 1. Have a captured payment collection
41
- // 2. Were synced to ERP (metadata.sync_erp === true)
42
- // 3. Advance payment was not yet marked synced (metadata.advance_payment_synced !== true)
43
- // 4. Not already attempted this run
44
- const toSync = batch.filter((order) => {
45
- const paymentCaptured = order.payment_collections?.[0]?.status === "completed";
46
- const orderSynced = order.metadata?.sync_erp === true;
47
- const advancePaymentNotSynced = order.metadata?.advance_payment_synced !== true;
48
- return paymentCaptured && orderSynced && advancePaymentNotSynced && !attemptedIds.has(order.id);
49
- });
50
- logger.info(`[sync-customer-advance-payment-erp] Batch at skip=${skip}: ${toSync.length} orders pending advance payment sync`);
51
- for (const order of toSync) {
52
- attemptedIds.add(order.id);
53
- const paymentCollection = order.payment_collections?.[0];
54
- if (!paymentCollection?.payments?.length)
55
- continue;
56
- let allSucceeded = true;
57
- for (const payment of paymentCollection.payments) {
58
- try {
59
- await (0, sync_advanve_payment_to_erp_1.syncAdvancePaymentToERPWorkflow)(container).run({
60
- input: {
61
- order_id: order.id,
62
- payment_collection_id: paymentCollection.id,
63
- payment_id: payment.id,
64
- },
65
- });
66
- totalSynced++;
67
- logger.info(`[sync-customer-advance-payment-erp] Synced advance payment ${payment.id} for order ${order.id}`);
68
- }
69
- catch (err) {
70
- allSucceeded = false;
71
- logger.error(`[sync-customer-advance-payment-erp] Failed for order ${order.id}, payment ${payment.id}: ${err?.message}`);
72
- }
73
- }
74
- // Only mark as synced if ALL payments in the collection succeeded
75
- if (allSucceeded) {
76
- try {
77
- const orderService = container.resolve("order");
78
- await orderService.updateOrders({
79
- selector: { id: order.id },
80
- data: {
81
- metadata: {
82
- ...(order.metadata ?? {}),
83
- advance_payment_synced: true,
84
- },
85
- },
86
- });
87
- }
88
- catch (err) {
89
- logger.warn(`[sync-customer-advance-payment-erp] Could not mark advance_payment_synced for order ${order.id}: ${err?.message}`);
90
- }
91
- }
92
- }
93
- if (batch.length < BATCH_SIZE)
94
- break;
95
- skip += BATCH_SIZE;
96
- }
97
- logger.info(`[sync-customer-advance-payment-erp] Done. Total synced: ${totalSynced}`);
98
- }
6
+ // export default async function syncCustomerAdvancePaymentErp(container: MedusaContainer) {
7
+ // const logger = container.resolve(ContainerRegistrationKeys.LOGGER);
8
+ // const erpService: ErpService = container.resolve("erp");
9
+ // const healthy = await erpService.checkServiceHealth();
10
+ // if (!healthy) {
11
+ // logger.warn("[sync-customer-advance-payment-erp] ERP service unavailable, skipping sync");
12
+ // return;
13
+ // }
14
+ // const query = container.resolve(ContainerRegistrationKeys.QUERY);
15
+ // let skip = 0;
16
+ // let totalSynced = 0;
17
+ // // Track IDs attempted this run to avoid re-processing orders whose advance_payment_synced
18
+ // // flag was just set (they remain in the DB query result until the next read reflects the update).
19
+ // const attemptedIds = new Set<string>();
20
+ // while (true) {
21
+ // // Query orders where order was synced to ERP but advance payment was not yet synced.
22
+ // // The DB filter is stable (status doesn't change here), so we use normal skip pagination.
23
+ // const { data: batch } = await query.graph({
24
+ // entity: "order",
25
+ // fields: [
26
+ // "id",
27
+ // "metadata",
28
+ // "payment_collections.*",
29
+ // "payment_collections.payments.*",
30
+ // "order_master.*",
31
+ // ],
32
+ // filters: { status: ["pending", "completed"] },
33
+ // pagination: { skip, take: BATCH_SIZE },
34
+ // });
35
+ // if (!batch?.length) break;
36
+ // // Only retry orders that:
37
+ // // 1. Have a captured payment collection
38
+ // // 2. Were synced to ERP (metadata.sync_erp === true)
39
+ // // 3. Advance payment was not yet marked synced (metadata.advance_payment_synced !== true)
40
+ // // 4. Not already attempted this run
41
+ // const toSync = batch.filter((order: any) => {
42
+ // const paymentCaptured = order.payment_collections?.[0]?.status === "completed";
43
+ // const orderSynced = order.metadata?.sync_erp === true;
44
+ // const advancePaymentNotSynced = order.metadata?.advance_payment_synced !== true;
45
+ // return paymentCaptured && orderSynced && advancePaymentNotSynced && !attemptedIds.has(order.id);
46
+ // });
47
+ // logger.info(
48
+ // `[sync-customer-advance-payment-erp] Batch at skip=${skip}: ${toSync.length} orders pending advance payment sync`
49
+ // );
50
+ // for (const order of toSync) {
51
+ // attemptedIds.add(order.id);
52
+ // const paymentCollection = order.payment_collections?.[0];
53
+ // if (!paymentCollection?.payments?.length) continue;
54
+ // let allSucceeded = true;
55
+ // for (const payment of paymentCollection.payments) {
56
+ // try {
57
+ // await syncAdvancePaymentToERPWorkflow(container).run({
58
+ // input: {
59
+ // order_id: order.id,
60
+ // payment_collection_id: paymentCollection.id,
61
+ // payment_id: payment.id,
62
+ // },
63
+ // });
64
+ // totalSynced++;
65
+ // logger.info(
66
+ // `[sync-customer-advance-payment-erp] Synced advance payment ${payment.id} for order ${order.id}`
67
+ // );
68
+ // } catch (err: any) {
69
+ // allSucceeded = false;
70
+ // logger.error(
71
+ // `[sync-customer-advance-payment-erp] Failed for order ${order.id}, payment ${payment.id}: ${err?.message}`
72
+ // );
73
+ // }
74
+ // }
75
+ // // Only mark as synced if ALL payments in the collection succeeded
76
+ // if (allSucceeded) {
77
+ // try {
78
+ // const orderService = container.resolve("order") as any;
79
+ // await orderService.updateOrders({
80
+ // selector: { id: order.id },
81
+ // data: {
82
+ // metadata: {
83
+ // ...(order.metadata ?? {}),
84
+ // advance_payment_synced: true,
85
+ // },
86
+ // },
87
+ // });
88
+ // } catch (err: any) {
89
+ // logger.warn(
90
+ // `[sync-customer-advance-payment-erp] Could not mark advance_payment_synced for order ${order.id}: ${err?.message}`
91
+ // );
92
+ // }
93
+ // }
94
+ // }
95
+ // if (batch.length < BATCH_SIZE) break;
96
+ // skip += BATCH_SIZE;
97
+ // }
98
+ // logger.info(`[sync-customer-advance-payment-erp] Done. Total synced: ${totalSynced}`);
99
+ // }
100
+ async function syncCustomerAdvancePaymentErp(container) { }
99
101
  exports.config = {
100
102
  name: "sync-customer-advance-payment-erp",
101
103
  schedule: "*/10 * * * *", // Every 10 minutes
102
104
  };
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jdXN0b21lci1hZHZhbmNlLXBheW1lbnQtZXJwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvc3luYy1jdXN0b21lci1hZHZhbmNlLXBheW1lbnQtZXJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLGdEQTBHQztBQWhIRCxxREFBc0U7QUFFdEUsMkdBQTRHO0FBRTVHLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUVQLEtBQUssVUFBVSw2QkFBNkIsQ0FBQyxTQUEwQjtJQUNwRixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sVUFBVSxHQUFlLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN0RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLDRFQUE0RSxDQUFDLENBQUM7UUFDMUYsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQiwwRkFBMEY7SUFDMUYsa0dBQWtHO0lBQ2xHLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFdkMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLHFGQUFxRjtRQUNyRiwwRkFBMEY7UUFDMUYsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDeEMsTUFBTSxFQUFFLE9BQU87WUFDZixNQUFNLEVBQUU7Z0JBQ04s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
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jdXN0b21lci1hZHZhbmNlLXBheW1lbnQtZXJwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvc3luYy1jdXN0b21lci1hZHZhbmNlLXBheW1lbnQtZXJwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1IQSxnREFFSTtBQWhISixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFFdEIsNEZBQTRGO0FBQzVGLHdFQUF3RTtBQUN4RSw2REFBNkQ7QUFFN0QsMkRBQTJEO0FBQzNELG9CQUFvQjtBQUNwQixpR0FBaUc7QUFDakcsY0FBYztBQUNkLE1BQU07QUFFTixzRUFBc0U7QUFFdEUsa0JBQWtCO0FBQ2xCLHlCQUF5QjtBQUN6QiwrRkFBK0Y7QUFDL0YsdUdBQXVHO0FBQ3ZHLDRDQUE0QztBQUU1QyxtQkFBbUI7QUFDbkIsNEZBQTRGO0FBQzVGLGlHQUFpRztBQUNqRyxrREFBa0Q7QUFDbEQseUJBQXlCO0FBQ3pCLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsc0JBQXNCO0FBQ3RCLG1DQUFtQztBQUNuQyw0Q0FBNEM7QUFDNUMsNEJBQTRCO0FBQzVCLFdBQVc7QUFDWCx1REFBdUQ7QUFDdkQsZ0RBQWdEO0FBQ2hELFVBQVU7QUFFVixpQ0FBaUM7QUFFakMsaUNBQWlDO0FBQ2pDLCtDQUErQztBQUMvQyw0REFBNEQ7QUFDNUQsaUdBQWlHO0FBQ2pHLDJDQUEyQztBQUMzQyxvREFBb0Q7QUFDcEQsd0ZBQXdGO0FBQ3hGLCtEQUErRDtBQUMvRCx5RkFBeUY7QUFDekYseUdBQXlHO0FBQ3pHLFVBQVU7QUFFVixtQkFBbUI7QUFDbkIsMEhBQTBIO0FBQzFILFNBQVM7QUFFVCxvQ0FBb0M7QUFDcEMsb0NBQW9DO0FBQ3BDLGtFQUFrRTtBQUNsRSw0REFBNEQ7QUFFNUQsaUNBQWlDO0FBRWpDLDREQUE0RDtBQUM1RCxnQkFBZ0I7QUFDaEIsbUVBQW1FO0FBQ25FLHVCQUF1QjtBQUN2QixvQ0FBb0M7QUFDcEMsNkRBQTZEO0FBQzdELHdDQUF3QztBQUN4QyxpQkFBaUI7QUFDakIsZ0JBQWdCO0FBQ2hCLDJCQUEyQjtBQUMzQix5QkFBeUI7QUFDekIsK0dBQStHO0FBQy9HLGVBQWU7QUFDZiwrQkFBK0I7QUFDL0Isa0NBQWtDO0FBQ2xDLDBCQUEwQjtBQUMxQix5SEFBeUg7QUFDekgsZUFBZTtBQUNmLFlBQVk7QUFDWixVQUFVO0FBRVYsMkVBQTJFO0FBQzNFLDRCQUE0QjtBQUM1QixnQkFBZ0I7QUFDaEIsb0VBQW9FO0FBQ3BFLDhDQUE4QztBQUM5QywwQ0FBMEM7QUFDMUMsc0JBQXNCO0FBQ3RCLDRCQUE0QjtBQUM1Qiw2Q0FBNkM7QUFDN0MsZ0RBQWdEO0FBQ2hELG1CQUFtQjtBQUNuQixpQkFBaUI7QUFDakIsZ0JBQWdCO0FBQ2hCLCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsaUlBQWlJO0FBQ2pJLGVBQWU7QUFDZixZQUFZO0FBQ1osVUFBVTtBQUNWLFFBQVE7QUFFUiw0Q0FBNEM7QUFDNUMsMEJBQTBCO0FBQzFCLE1BQU07QUFFTiwyRkFBMkY7QUFDM0YsSUFBSTtBQUVXLEtBQUssVUFBVSw2QkFBNkIsQ0FDekQsU0FBMEIsSUFDekIsQ0FBQztBQUVTLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLElBQUksRUFBRSxtQ0FBbUM7SUFDekMsUUFBUSxFQUFFLGNBQWMsRUFBRSxtQkFBbUI7Q0FDOUMsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devx-commerce/plugin-gati",
3
- "version": "0.0.34-beta.56",
3
+ "version": "0.0.34-beta.57",
4
4
  "description": "Gati ERP integration for Medusa",
5
5
  "author": "devx commerce",
6
6
  "license": "MIT",