PluginProbe
Route ‑ Shipping Protection / 2.4.14
Route ‑ Shipping Protection v2.4.14
2.4.19 2.4.18 2.4.17 2.4.16 2.4.15 2.4.14 2.4.13 2.4.12 2.4.11 2.4.10 2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.2.4 2.2.5 2.2.6 2.2.8 2.2.9 2.3.0 2.3.1 All 153 releases
routeapp / public / js / routeapp-order-sync.js

routeapp-order-sync.js in Route ‑ Shipping Protection 2.4.14, at public/js/routeapp-order-sync.js

115 lines 4.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function ($) {
2 "use strict";
3 jQuery(function ($) {
4
5 let totalOrders = 0;
6 let batchSize = 0;
7 let offset = 0;
8 let recoverFrom = '';
9 let recoverTo = '';
10 let waitTime = 10;
11 let processedCount = 0;
12 // Captured once when Sync Orders starts; batches reuse these values.
13 let reconcileBackend = 0;
14 let syncTracking = 0;
15
16
17 $('.route-datepicker').datepicker({
18 dateFormat : 'yy-mm-dd'
19 });
20
21 $('.woocommerce-save-button').html('Sync Orders');
22
23 let spinner = new jQuerySpinner({
24 parentId: 'wpwrap'
25 });
26
27 // Function to process a batch of orders
28 function processBatch() {
29 $.ajax({
30 url: routeapp_ajax.ajaxurl,
31 type: 'POST',
32 data: {
33 action: 'routeapp_process_orders_batch',
34 routeapp_order_recover_from: recoverFrom,
35 routeapp_order_recover_to: recoverTo,
36 routeapp_order_recover_reconcile_backend: reconcileBackend,
37 routeapp_order_recover_sync_tracking: syncTracking,
38 batchSize: batchSize,
39 offset: offset,
40 nonce: routeapp_ajax.nonce
41 },
42 success: function (response) {
43 if (response.success) {
44 processedCount += response.data.processed;
45 offset += batchSize;
46 if (response.data.tracking_warning && window.console && console.warn) {
47 console.warn('[Route Orders Sync]', response.data.tracking_warning);
48 }
49 $('#message').html('<p> Orders processed: ' + totalOrders + '/' + processedCount + '</p>');
50
51 if (processedCount < totalOrders) {
52 setTimeout(processBatch, waitTime * 1000); // Delay before the next batch
53 } else {
54 $('#message').html('<p> All orders have been processed. ' + totalOrders + '/' + processedCount + '</p>');
55 spinner.hide();
56 }
57 } else {
58 $('#message').html('<p> ' + response.data.message + '</p>');
59 spinner.hide();
60 }
61 },
62 error: function (error) {
63 $('#message').html('<p> An error occurred while processing the orders. </p>');
64 spinner.hide();
65 }
66 });
67 }
68
69 $('.woocommerce-save-button').click(function (e) {
70 e.preventDefault();
71 spinner.show();
72
73 reconcileBackend = $('#routeapp_order_recover_reconcile_backend').is(':checked') ? 1 : 0;
74 syncTracking = $('#routeapp_order_recover_sync_tracking').is(':checked') ? 1 : 0;
75
76 $.ajax({
77 url: routeapp_ajax.ajaxurl,
78 type: 'POST',
79 data: {
80 action: 'routeapp_save_orders',
81 routeapp_order_recover_from: $('#routeapp_order_recover_from').val(),
82 routeapp_order_recover_to: $('#routeapp_order_recover_to').val(),
83 routeapp_order_recover_reconcile_backend: reconcileBackend,
84 routeapp_order_recover_sync_tracking: syncTracking,
85 nonce: routeapp_ajax.nonce
86 },
87 success: function (response) {
88 if (response.success) {
89 totalOrders = response.data.orderCount;
90 batchSize = response.data.batchSize;
91 recoverFrom = response.data.recoverFrom;
92 recoverTo = response.data.recoverTo;
93 waitTime = response.data.waitTime;
94 processedCount = 0;
95 offset = 0;
96
97 $('#message').html('<p> Orders processed: ' + totalOrders + '/' + processedCount + '</p>');
98
99 processBatch();
100 } else {
101 $('#message').html('<p> Failed to initialize order processing.</p>');
102 spinner.hide();
103 }
104 },
105 error: function (error) {
106 $('#message').html('<p> An error occurred while initiating order processing.</p>');
107 spinner.hide();
108 }
109 });
110 });
111
112
113 });
114 })(jQuery);
115