PluginProbe ʕ •ᴥ•ʔ
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). / 2.3.14
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). v2.3.14
3.0.3 3.0.2 3.0.1 trunk 2.2.14 2.2.15 2.2.16 2.2.17 2.2.18 2.2.19 2.3.0 2.3.1 2.3.10 2.3.11 2.3.12 2.3.13 2.3.14 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.91 2.7.92 2.7.93 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0
commercebird / includes / classes / apis / class-api-for-shipping-status.php
commercebird / includes / classes / apis Last commit date
class-api-for-cmbird.php 1 year ago class-api-for-exact-webhooks.php 1 year ago class-api-for-product-webhook.php 1 year ago class-api-for-shipping-status.php 1 year ago class-api-for-woo-order.php 1 year ago class-api-for-zoho-inventory.php 1 year ago class-commercebird-list-items-api-controller.php 1 year ago class-commercebird-media-api-controller.php 1 year ago class-commercebird-metadata-controller.php 1 year ago index.php 1 year ago trait-api-permission.php 11 months ago
class-api-for-shipping-status.php
133 lines
1 <?php
2
3 namespace CommerceBird\API;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 use CMBIRD_API_Handler_Zoho;
10 use WP_REST_Response;
11 use WP_REST_Server;
12
13 class ShippingWebhook {
14 use Api;
15
16 private static string $endpoint = 'zoho-shipping-status';
17
18
19 public function __construct() {
20 register_rest_route(
21 self::$namespace,
22 self::$endpoint,
23 array(
24 'methods' => WP_REST_Server::CREATABLE,
25 'callback' => array( $this, 'handle' ),
26 'permission_callback' => array( $this, 'permission_check' ),
27 )
28 );
29 }
30
31
32 private function process( array $order_data ): WP_REST_Response {
33 $response = new WP_REST_Response();
34 $response->set_data( $this->empty_response );
35 $response->set_status( 400 );
36 if ( ! empty( $order_data['salesorder'] ) ) {
37 $salesorder = $order_data['salesorder'];
38 /* Getting Salesorder id */
39
40 $salesorder_id = $salesorder['salesorder_id'];
41 $formatted_status = trim( $salesorder['shipped_status_formatted'] );
42 $ship_status = strtolower( $formatted_status );
43 $packages = $salesorder['packages'];
44
45 /* Customer Query to get Order Id */
46 $order_statuses = wc_get_order_statuses();
47 // Find orders with the specific meta key and value
48 $orders = wc_get_orders(
49 array(
50 'meta_key' => 'zi_salesorder_id',
51 'meta_value' => $salesorder_id,
52 'numberposts' => -1,
53 )
54 );
55 // Loop through the found orders
56 foreach ( $orders as $order ) {
57 $post_id = $order->get_id();
58 }
59 // Get Order Object
60 $order = wc_get_order( $post_id );
61 // process cancelled zoho orders
62 if ( 'void' === trim( $salesorder['status'] ) ) {
63 $order->update_status( 'cancelled' );
64 $order->save();
65 $response->set_data( 'Cancelled Order processed' );
66 $response->set_status( 200 );
67
68 return $response;
69 }
70
71 /* Getting Packages if empty in response */
72 if ( empty( $packages ) && ! empty( $post_id ) ) {
73 $zoho_inventory_oid = get_option( 'cmbird_zoho_inventory_oid' );
74 $zoho_inventory_url = get_option( 'cmbird_zoho_inventory_url' );
75 $package_url = $zoho_inventory_url . 'inventory/v1/packages?organization_id=' . $zoho_inventory_oid;
76 $execute_curl_call_handle = new CMBIRD_API_Handler_Zoho();
77 $json = $execute_curl_call_handle->execute_curl_call_get( $package_url );
78 if ( 0 === (int) $json->code ) {
79 $all_packages = $json->packages;
80 foreach ( $all_packages as $packs ) {
81 $order_id = $packs->salesorder_id;
82 if ( trim( $order_id ) === trim( $salesorder_id ) ) {
83 $tracking_number = $packs->tracking_number;
84 if ( empty( $ship_status ) ) {
85 $ship_status = trim( $packs->status );
86 }
87 $order->update_meta_data( 'zi_tracking_number', $tracking_number );
88 }
89 }
90 }
91 } elseif ( ! empty( $packages ) && ! empty( $post_id ) ) {
92 foreach ( $packages as $package ) {
93 /* getting all ship and trace data from package */
94 $tracking_number = $package['tracking_number'];
95 $carrier = $package['carrier'];
96 $status = $package['status'];
97 if ( empty( $ship_status ) ) {
98 $ship_status = trim( $status );
99 }
100 $order->update_meta_data( 'zi_tracking_number', $tracking_number );
101 $order->update_meta_data( 'zi_shipping_carrier', $carrier );
102 }
103 } else {
104 $error = 'Post id not available for this ' . $salesorder_id . ' sales order';
105 $response->set_data( $error );
106 $response->set_status( 400 );
107
108 return $response;
109
110 }
111
112 // process shipped status
113 if ( ! empty( $ship_status ) && $post_id ) {
114 $order_statuses = array_map( 'strtolower', $order_statuses );
115 if ( in_array( $ship_status, $order_statuses ) ) {
116 $ship_status = remove_accents( $ship_status );
117 $order->update_meta_data( 'zi_shipping_status', $ship_status );
118 $order->update_status( $ship_status );
119 } else {
120 $order->update_meta_data( 'zi_shipping_status', $ship_status );
121 }
122 }
123 $order->save();
124 $response->set_data( 'Success add tracking id and update shipped status' );
125 $response->set_status( 200 );
126
127 return $response;
128 }
129
130 return $response;
131 }
132 }
133