Changeset 3366263
- Timestamp:
- 09/23/2025 07:28:37 AM (6 months ago)
- Location:
- posti-warehouse
- Files:
-
- 10 edited
- 1 copied
-
tags/3.5.0 (copied) (copied from posti-warehouse/trunk)
-
tags/3.5.0/README.md (modified) (1 diff)
-
tags/3.5.0/classes/class-api.php (modified) (3 diffs)
-
tags/3.5.0/classes/class-order.php (modified) (6 diffs)
-
tags/3.5.0/posti-warehouse.php (modified) (1 diff)
-
tags/3.5.0/readme.txt (modified) (1 diff)
-
trunk/README.md (modified) (1 diff)
-
trunk/classes/class-api.php (modified) (3 diffs)
-
trunk/classes/class-order.php (modified) (6 diffs)
-
trunk/posti-warehouse.php (modified) (1 diff)
-
trunk/readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
posti-warehouse/tags/3.5.0/README.md
r3359034 r3366263 98 98 99 99 ## Version history 100 - 3.5.0: 101 - Changed ordering to use SKU only instead of SKU + EAN. 102 - Changed ordering to ensure setting order failed status on unexpected error. 100 103 - 3.4.0: 101 104 - Added HS tariff number, Country of origin fields to Posti tab in Product data. -
posti-warehouse/tags/3.5.0/classes/class-api.php
r3359034 r3366263 12 12 private $test = false; 13 13 private $logger; 14 private $last_status = false;15 14 private $token_option = 'posti_wh_api_auth'; 16 private $user_agent = 'woo-wh-client/3. 4.0';15 private $user_agent = 'woo-wh-client/3.5.0'; 17 16 18 17 public function __construct(Posti_Warehouse_Logger $logger, array &$options) { … … 40 39 public function getUserAgent() { 41 40 return $this->user_agent; 42 }43 44 public function getLastStatus() {45 return $this->last_status;46 41 } 47 42 … … 97 92 $response_body = wp_remote_retrieve_body($response); 98 93 $http_status = wp_remote_retrieve_response_code($response); 99 $this->last_status = $http_status;100 94 101 95 $env = $this->test ? 'TEST ': ''; -
posti-warehouse/tags/3.5.0/classes/class-order.php
r3239423 r3366263 101 101 public function getOrder( $order) { 102 102 $posti_order_id = $this->get_order_external_id_field($order); 103 $this->logger->log('info', print_r($order, true));104 103 if ($posti_order_id) { 105 104 return $this->api->getOrder($posti_order_id); … … 128 127 } 129 128 130 $ order_number = (string) $order->get_order_number();129 $added_order_id = ''; 131 130 $existing_order_id = $this->get_order_external_id_field($order); 132 if (!empty($existing_order_id)) {133 $existing_order = $this->api->getOrder($existing_order_id);134 if ($existing_order) {135 $status = isset($existing_order['status']) && isset($existing_order['status']['value']) ? $existing_order['status']['value'] : '';136 if ('Cancelled' !== $status && 'Delivered' !== $status) {137 return [ 'error' => 'ERROR: Already ordered.' ];138 }139 }140 }141 142 $external_id = empty($existing_order_id) ? $order_number : $existing_order_id;143 $data = null;144 131 try { 132 $order_number = (string) $order->get_order_number(); 133 if (!empty($existing_order_id)) { 134 $existing_order = $this->api->getOrder($existing_order_id); 135 if ($existing_order) { 136 $status = isset($existing_order['status']) && isset($existing_order['status']['value']) ? $existing_order['status']['value'] : ''; 137 if ('Cancelled' !== $status && 'Delivered' !== $status) { 138 return [ 'error' => 'ERROR: Already ordered.' ]; 139 } 140 } 141 } 142 143 $external_id = empty($existing_order_id) ? $order_number : $existing_order_id; 144 $data = null; 145 145 146 $preferences = ['autoSubmit' => ($order_status !== 'on-hold')]; 146 147 $data = $this->prepare_posti_order($external_id, $order, $order_services, $preferences); 147 148 149 if (empty($existing_order_id)) { 150 $result = $this->api->addOrder($data); 151 } 152 else { 153 $result = $this->api->reopenOrder($existing_order_id, $data); 154 } 155 156 if (false === $result) { 157 for ($i = 0; $i < 3; $i++) { 158 sleep(1); 159 $result = $this->api->addOrder($data); 160 if (false === $result) { 161 break; 162 } 163 } 164 } 165 166 $added_order_id = isset($result['externalId']) ? $result['externalId'] : ''; 167 148 168 } catch (\Exception $e) { 149 169 $this->logger->log('error', $e->getMessage()); 170 $order->update_status('failed', Posti_Warehouse_Text::order_failed(), true); 150 171 return [ 'error' => $e->getMessage() ]; 151 172 } 152 173 153 if (empty($existing_order_id)) { 154 $result = $this->api->addOrder($data); 155 } 156 else { 157 $result = $this->api->reopenOrder($existing_order_id, $data); 158 } 159 160 $status = $this->api->getLastStatus(); 161 if (502 == $status || 503 == $status) { 162 for ($i = 0; $i < 3; $i++) { 163 sleep(1); 164 $result = $this->api->addOrder($data); 165 $status = $this->api->getLastStatus(); 166 if (200 == $status) { 167 break; 168 } 169 } 170 } 171 172 if ($status >= 200 && $status < 300) { 173 $order->update_meta_data('_posti_id', $order_number); 174 } else { 174 if (empty($added_order_id)) { 175 175 $order->update_status('failed', Posti_Warehouse_Text::order_failed(), true); 176 } 176 return [ 'error' => Posti_Warehouse_Text::error_order_not_placed() ]; 177 } 178 179 $order->update_meta_data('_posti_id', $order_number); 177 180 $order->save(); 178 179 if (false === $result) {180 return [ 'error' => Posti_Warehouse_Text::error_order_not_placed() ];181 }182 183 181 $this->trigger_sync_order($order->get_id(), $existing_order_id); 184 182 … … 569 567 570 568 $external_id = $_product->get_meta('_posti_id', true); 571 $ean = $_product->get_meta('_ean', true);572 569 $order_items[] = [ 573 570 'externalId' => (string) $item_counter, 574 571 'externalProductId' => $external_id, 575 'productEANCode' => $ean,576 572 'productUnitOfMeasure' => 'KPL', 577 573 'productDescription' => $item['name'], … … 634 630 635 631 if (isset($pickup_point) && $pickup_point) { 636 $order['pickupPoint'] = $this->getPickupPoint($pickup_point);632 $order['pickupPoint'] = $this->getPickupPoint($pickup_point); 637 633 } 638 634 … … 716 712 private static function getDeliveryAddress($order, $phone, $email) { 717 713 return array( 718 'name' => $order->get_shipping_first_name() . ' ' . $order->get_shipping_last_name(),714 'name' => $order->get_shipping_first_name() . ' ' . $order->get_shipping_last_name(), 719 715 'streetAddress' => $order->get_shipping_address_1(), 720 716 'postalCode' => $order->get_shipping_postcode(), … … 727 723 728 724 private static function getPickupPoint($pickup_point) { 729 return array(730 'externalId' => isset($pickup_point['externalId']) ? $pickup_point['externalId'] : null,731 'name' => isset($pickup_point['name']) ? $pickup_point['name'] : null,732 'streetAddress' => isset($pickup_point['streetAddress']) ? $pickup_point['streetAddress'] : null,733 'postalCode' => isset($pickup_point['postalCode']) ? $pickup_point['postalCode'] : null,734 'postOffice' => isset($pickup_point['postOffice']) ? $pickup_point['postOffice'] : null,735 'country' => isset($pickup_point['country']) ? $pickup_point['country'] : null736 );725 return array( 726 'externalId' => isset($pickup_point['externalId']) ? $pickup_point['externalId'] : null, 727 'name' => isset($pickup_point['name']) ? $pickup_point['name'] : null, 728 'streetAddress' => isset($pickup_point['streetAddress']) ? $pickup_point['streetAddress'] : null, 729 'postalCode' => isset($pickup_point['postalCode']) ? $pickup_point['postalCode'] : null, 730 'postOffice' => isset($pickup_point['postOffice']) ? $pickup_point['postOffice'] : null, 731 'country' => isset($pickup_point['country']) ? $pickup_point['country'] : null 732 ); 737 733 } 738 734 -
posti-warehouse/tags/3.5.0/posti-warehouse.php
r3359034 r3366263 3 3 /** 4 4 * Plugin Name: Posti Warehouse 5 * Version: 3. 4.05 * Version: 3.5.0 6 6 * Description: Provides integration to Posti warehouse and dropshipping services. 7 7 * Author: Posti -
posti-warehouse/tags/3.5.0/readme.txt
r3359034 r3366263 3 3 Tags: woocommerce, warehouse, posti 4 4 Requires at least: 5.0 5 Tested up to: 6. 75 Tested up to: 6.8 6 6 Requires PHP: 7.1 7 Stable tag: 3. 4.07 Stable tag: 3.5.0 8 8 License: GPLv3 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-3.0.html -
posti-warehouse/trunk/README.md
r3359034 r3366263 98 98 99 99 ## Version history 100 - 3.5.0: 101 - Changed ordering to use SKU only instead of SKU + EAN. 102 - Changed ordering to ensure setting order failed status on unexpected error. 100 103 - 3.4.0: 101 104 - Added HS tariff number, Country of origin fields to Posti tab in Product data. -
posti-warehouse/trunk/classes/class-api.php
r3359034 r3366263 12 12 private $test = false; 13 13 private $logger; 14 private $last_status = false;15 14 private $token_option = 'posti_wh_api_auth'; 16 private $user_agent = 'woo-wh-client/3. 4.0';15 private $user_agent = 'woo-wh-client/3.5.0'; 17 16 18 17 public function __construct(Posti_Warehouse_Logger $logger, array &$options) { … … 40 39 public function getUserAgent() { 41 40 return $this->user_agent; 42 }43 44 public function getLastStatus() {45 return $this->last_status;46 41 } 47 42 … … 97 92 $response_body = wp_remote_retrieve_body($response); 98 93 $http_status = wp_remote_retrieve_response_code($response); 99 $this->last_status = $http_status;100 94 101 95 $env = $this->test ? 'TEST ': ''; -
posti-warehouse/trunk/classes/class-order.php
r3239423 r3366263 101 101 public function getOrder( $order) { 102 102 $posti_order_id = $this->get_order_external_id_field($order); 103 $this->logger->log('info', print_r($order, true));104 103 if ($posti_order_id) { 105 104 return $this->api->getOrder($posti_order_id); … … 128 127 } 129 128 130 $ order_number = (string) $order->get_order_number();129 $added_order_id = ''; 131 130 $existing_order_id = $this->get_order_external_id_field($order); 132 if (!empty($existing_order_id)) {133 $existing_order = $this->api->getOrder($existing_order_id);134 if ($existing_order) {135 $status = isset($existing_order['status']) && isset($existing_order['status']['value']) ? $existing_order['status']['value'] : '';136 if ('Cancelled' !== $status && 'Delivered' !== $status) {137 return [ 'error' => 'ERROR: Already ordered.' ];138 }139 }140 }141 142 $external_id = empty($existing_order_id) ? $order_number : $existing_order_id;143 $data = null;144 131 try { 132 $order_number = (string) $order->get_order_number(); 133 if (!empty($existing_order_id)) { 134 $existing_order = $this->api->getOrder($existing_order_id); 135 if ($existing_order) { 136 $status = isset($existing_order['status']) && isset($existing_order['status']['value']) ? $existing_order['status']['value'] : ''; 137 if ('Cancelled' !== $status && 'Delivered' !== $status) { 138 return [ 'error' => 'ERROR: Already ordered.' ]; 139 } 140 } 141 } 142 143 $external_id = empty($existing_order_id) ? $order_number : $existing_order_id; 144 $data = null; 145 145 146 $preferences = ['autoSubmit' => ($order_status !== 'on-hold')]; 146 147 $data = $this->prepare_posti_order($external_id, $order, $order_services, $preferences); 147 148 149 if (empty($existing_order_id)) { 150 $result = $this->api->addOrder($data); 151 } 152 else { 153 $result = $this->api->reopenOrder($existing_order_id, $data); 154 } 155 156 if (false === $result) { 157 for ($i = 0; $i < 3; $i++) { 158 sleep(1); 159 $result = $this->api->addOrder($data); 160 if (false === $result) { 161 break; 162 } 163 } 164 } 165 166 $added_order_id = isset($result['externalId']) ? $result['externalId'] : ''; 167 148 168 } catch (\Exception $e) { 149 169 $this->logger->log('error', $e->getMessage()); 170 $order->update_status('failed', Posti_Warehouse_Text::order_failed(), true); 150 171 return [ 'error' => $e->getMessage() ]; 151 172 } 152 173 153 if (empty($existing_order_id)) { 154 $result = $this->api->addOrder($data); 155 } 156 else { 157 $result = $this->api->reopenOrder($existing_order_id, $data); 158 } 159 160 $status = $this->api->getLastStatus(); 161 if (502 == $status || 503 == $status) { 162 for ($i = 0; $i < 3; $i++) { 163 sleep(1); 164 $result = $this->api->addOrder($data); 165 $status = $this->api->getLastStatus(); 166 if (200 == $status) { 167 break; 168 } 169 } 170 } 171 172 if ($status >= 200 && $status < 300) { 173 $order->update_meta_data('_posti_id', $order_number); 174 } else { 174 if (empty($added_order_id)) { 175 175 $order->update_status('failed', Posti_Warehouse_Text::order_failed(), true); 176 } 176 return [ 'error' => Posti_Warehouse_Text::error_order_not_placed() ]; 177 } 178 179 $order->update_meta_data('_posti_id', $order_number); 177 180 $order->save(); 178 179 if (false === $result) {180 return [ 'error' => Posti_Warehouse_Text::error_order_not_placed() ];181 }182 183 181 $this->trigger_sync_order($order->get_id(), $existing_order_id); 184 182 … … 569 567 570 568 $external_id = $_product->get_meta('_posti_id', true); 571 $ean = $_product->get_meta('_ean', true);572 569 $order_items[] = [ 573 570 'externalId' => (string) $item_counter, 574 571 'externalProductId' => $external_id, 575 'productEANCode' => $ean,576 572 'productUnitOfMeasure' => 'KPL', 577 573 'productDescription' => $item['name'], … … 634 630 635 631 if (isset($pickup_point) && $pickup_point) { 636 $order['pickupPoint'] = $this->getPickupPoint($pickup_point);632 $order['pickupPoint'] = $this->getPickupPoint($pickup_point); 637 633 } 638 634 … … 716 712 private static function getDeliveryAddress($order, $phone, $email) { 717 713 return array( 718 'name' => $order->get_shipping_first_name() . ' ' . $order->get_shipping_last_name(),714 'name' => $order->get_shipping_first_name() . ' ' . $order->get_shipping_last_name(), 719 715 'streetAddress' => $order->get_shipping_address_1(), 720 716 'postalCode' => $order->get_shipping_postcode(), … … 727 723 728 724 private static function getPickupPoint($pickup_point) { 729 return array(730 'externalId' => isset($pickup_point['externalId']) ? $pickup_point['externalId'] : null,731 'name' => isset($pickup_point['name']) ? $pickup_point['name'] : null,732 'streetAddress' => isset($pickup_point['streetAddress']) ? $pickup_point['streetAddress'] : null,733 'postalCode' => isset($pickup_point['postalCode']) ? $pickup_point['postalCode'] : null,734 'postOffice' => isset($pickup_point['postOffice']) ? $pickup_point['postOffice'] : null,735 'country' => isset($pickup_point['country']) ? $pickup_point['country'] : null736 );725 return array( 726 'externalId' => isset($pickup_point['externalId']) ? $pickup_point['externalId'] : null, 727 'name' => isset($pickup_point['name']) ? $pickup_point['name'] : null, 728 'streetAddress' => isset($pickup_point['streetAddress']) ? $pickup_point['streetAddress'] : null, 729 'postalCode' => isset($pickup_point['postalCode']) ? $pickup_point['postalCode'] : null, 730 'postOffice' => isset($pickup_point['postOffice']) ? $pickup_point['postOffice'] : null, 731 'country' => isset($pickup_point['country']) ? $pickup_point['country'] : null 732 ); 737 733 } 738 734 -
posti-warehouse/trunk/posti-warehouse.php
r3359034 r3366263 3 3 /** 4 4 * Plugin Name: Posti Warehouse 5 * Version: 3. 4.05 * Version: 3.5.0 6 6 * Description: Provides integration to Posti warehouse and dropshipping services. 7 7 * Author: Posti -
posti-warehouse/trunk/readme.txt
r3359034 r3366263 3 3 Tags: woocommerce, warehouse, posti 4 4 Requires at least: 5.0 5 Tested up to: 6. 75 Tested up to: 6.8 6 6 Requires PHP: 7.1 7 Stable tag: 3. 4.07 Stable tag: 3.5.0 8 8 License: GPLv3 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-3.0.html
Note: See TracChangeset
for help on using the changeset viewer.