From a06a7d5fba5228c2466a0e3300503ee7c7e193b8 Mon Sep 17 00:00:00 2001 From: Akolzin Dmitry Date: Thu, 14 Dec 2017 11:32:53 +0200 Subject: [PATCH] Update version (#37) Dimensions in imcl, button genarate icml, advanced search for delivery methods Dimensions in imcl, button genarate icml, advanced search for delivery methods --- .../include/api/class-wc-retailcrm-proxy.php | 34 ++-- .../include/class-wc-retailcrm-base.php | 77 ++++++-- .../include/class-wc-retailcrm-customers.php | 7 +- .../include/class-wc-retailcrm-history.php | 172 +++++++++++------- .../include/class-wc-retailcrm-icml.php | 78 +++++--- .../include/class-wc-retailcrm-orders.php | 14 +- woo-retailcrm/include/functions.php | 44 +++++ woo-retailcrm/retailcrm.php | 23 ++- woo-retailcrm/uninstall.php | 2 +- 9 files changed, 307 insertions(+), 144 deletions(-) create mode 100644 woo-retailcrm/include/functions.php diff --git a/woo-retailcrm/include/api/class-wc-retailcrm-proxy.php b/woo-retailcrm/include/api/class-wc-retailcrm-proxy.php index f4e4d15..48ec0e9 100644 --- a/woo-retailcrm/include/api/class-wc-retailcrm-proxy.php +++ b/woo-retailcrm/include/api/class-wc-retailcrm-proxy.php @@ -33,33 +33,27 @@ if ( ! class_exists( 'WC_Retailcrm_Proxy' ) ) : include_once( __DIR__ . '/class-wc-retailcrm-client-v5.php' ); } - if ($api_url && $api_key) { - switch ($api_vers) { - case 'v3': - $this->retailcrm = new WC_Retailcrm_Client_V3($api_url, $api_key, $api_vers); - break; - case 'v4': - $this->retailcrm = new WC_Retailcrm_Client_V4($api_url, $api_key, $api_vers); - break; - case 'v5': - $this->retailcrm = new WC_Retailcrm_Client_V5($api_url, $api_key, $api_vers); - break; - case null: - $this->retailcrm = new WC_Retailcrm_Client_V3($api_url, $api_key, $api_vers); - break; - } + switch ($api_vers) { + case 'v3': + $this->retailcrm = new WC_Retailcrm_Client_V3($api_url, $api_key, $api_vers); + break; + case 'v4': + $this->retailcrm = new WC_Retailcrm_Client_V4($api_url, $api_key, $api_vers); + break; + case 'v5': + $this->retailcrm = new WC_Retailcrm_Client_V5($api_url, $api_key, $api_vers); + break; + case null: + $this->retailcrm = new WC_Retailcrm_Client_V3($api_url, $api_key, $api_vers); + break; } } public function __call($method, $arguments) { - if (!$this->retailcrm) { - return; - } - try { $response = call_user_func_array(array($this->retailcrm, $method), $arguments); - + if ($response->isSuccessful()) { $result = ' Ok'; } else { diff --git a/woo-retailcrm/include/class-wc-retailcrm-base.php b/woo-retailcrm/include/class-wc-retailcrm-base.php index 6450ea7..91f951f 100644 --- a/woo-retailcrm/include/class-wc-retailcrm-base.php +++ b/woo-retailcrm/include/class-wc-retailcrm-base.php @@ -120,8 +120,7 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : $shipping_option_list[$retailcrm_shipping_type['code']] = $retailcrm_shipping_type['name']; } - $wc_shipping = new WC_Shipping(); - $wc_shipping_list = $wc_shipping->get_shipping_methods(); + $wc_shipping_list = get_wc_shipping_methods(); $this->form_fields[] = array( 'title' => __( 'Способы доставки', 'woocommerce' ), @@ -130,13 +129,11 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : 'id' => 'shipping_options' ); - foreach ( $wc_shipping_list as $shipping ) { - if ( isset( $shipping->enabled ) && $shipping->enabled == 'yes' ) { - $key = $shipping->id; - $name = $key; - $this->form_fields[$name] = array( - 'title' => __( $shipping->method_title, 'textdomain' ), - 'description' => __( $shipping->method_description, 'textdomain' ), + foreach ( $wc_shipping_list as $shipping_code => $shipping ) { + if ( isset( $shipping['enabled'] ) && $shipping['enabled'] == 'yes' ) { + $this->form_fields[$shipping_code] = array( + 'title' => __( $shipping['title'], 'textdomain' ), + 'description' => __( $shipping['description'], 'textdomain' ), 'css' => 'min-width:350px;', 'class' => 'select', 'type' => 'select', @@ -221,7 +218,7 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : * Inventories options */ $this->form_fields[] = array( - 'title' => __( 'Настройки остатков', 'woocommerce' ), + 'title' => __( 'Настройки выгрузки остатков', 'woocommerce' ), 'type' => 'title', 'description' => '', 'id' => 'invent_options' @@ -229,7 +226,7 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : $this->form_fields['sync'] = array( 'label' => __( 'Выгружать остатки из CRM', 'textdomain' ), - 'title' => 'Inventories', + 'title' => 'Остатки', 'class' => 'checkbox', 'type' => 'checkbox', 'description' => 'Отметьте данный пункт, если хотите выгружать остатки товаров из CRM в магазин.' @@ -257,6 +254,25 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : 'id' => 'uploads-retailcrm' ); } + + /* + * Generate icml file + */ + $this->form_fields[] = array( + 'title' => __( 'Генерация каталога товаров', 'woocommerce' ), + 'type' => 'title', + 'description' => '', + 'id' => 'icml_options' + ); + + $this->form_fields[] = array( + 'label' => 'Сгенерировать', + 'title' => __( 'Генерация icml', 'woocommerce-integration-retailcrm' ), + 'type' => 'button', + 'description' => __( 'Данный функционал позволяет сгенерировать каталог товаров для выгрузки в CRM.', 'woocommerce-integration-retailcrm' ), + 'desc_tip' => true, + 'id' => 'icml-retailcrm' + ); } } } @@ -294,6 +310,7 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : } public function validate_api_version_field( $key, $value ) { + $post = $this->get_post_data(); $versionMap = array( 'v3' => '3.0', 'v4' => '4.0', @@ -301,8 +318,8 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : ); $api = new WC_Retailcrm_Proxy( - $_POST['woocommerce_integration-retailcrm_api_url'], - $_POST['woocommerce_integration-retailcrm_api_key'] + $post[$this->plugin_id . $this->id . '_api_url'], + $post[$this->plugin_id . $this->id . '_api_key'] ); $response = $api->apiVersions(); @@ -310,25 +327,49 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) : if ($response && $response->isSuccessful()) { if (!in_array($versionMap[$value], $response['versions'])) { WC_Admin_Settings::add_error( esc_html__( '"Выбранная версия API недоступна"', 'woocommerce-integration-retailcrm' ) ); - } else { - return $value; + $value = ''; } + + return $value; } } public function validate_api_url_field( $key, $value ) { + $post = $this->get_post_data(); $api = new WC_Retailcrm_Proxy( $value, - $_POST['woocommerce_integration-retailcrm_api_key'] + $post[$this->plugin_id . $this->id . '_api_key'] ); $response = $api->apiVersions(); if ($response == NULL) { WC_Admin_Settings::add_error( esc_html__( '"Введите корректный адрес CRM"', 'woocommerce-integration-retailcrm' ) ); - } else { - return $value; + $value = ''; } + + return $value; + } + + public function validate_api_key_field( $key, $value ) { + $post = $this->get_post_data(); + $api = new WC_Retailcrm_Proxy( + $post[$this->plugin_id . $this->id . '_api_url'], + $value + ); + + $response = $api->apiVersions(); + + if (!is_object($response)) { + $value = ''; + } + + if (!$response->isSuccessful()) { + WC_Admin_Settings::add_error( esc_html__( '"Введитe правильный API ключ"', 'woocommerce-integration-retailcrm' ) ); + $value = ''; + } + + return $value; } } diff --git a/woo-retailcrm/include/class-wc-retailcrm-customers.php b/woo-retailcrm/include/class-wc-retailcrm-customers.php index bd4bbbf..fbd689e 100644 --- a/woo-retailcrm/include/class-wc-retailcrm-customers.php +++ b/woo-retailcrm/include/class-wc-retailcrm-customers.php @@ -38,11 +38,11 @@ if ( ! class_exists( 'WC_Retailcrm_Customers' ) ) : if ($user->roles[0] != 'customer') continue; $customer = new WC_Customer($user->ID); - + $firstName = $customer->get_first_name(); $data_customer = array( 'createdAt' => $user->data->user_registered, 'externalId' => $user->ID, - 'firstName' => !empty($customer->get_first_name()) ? $customer->get_first_name() : $customer->get_username(), + 'firstName' => $firstName ? $firstName : $customer->get_username(), 'lastName' => $customer->get_last_name(), 'email' => $user->data->user_email, 'phones' => array( @@ -96,10 +96,11 @@ if ( ! class_exists( 'WC_Retailcrm_Customers' ) ) : protected function processCustomer($customer) { $createdAt = $customer->get_date_created(); + $firstName = $customer->get_first_name(); $data_customer = array( 'createdAt' => $createdAt->date('Y-m-d H:i:s '), 'externalId' => $customer_id, - 'firstName' => !empty($customer->get_first_name()) ? $customer->get_first_name() : $customer->get_username(), + 'firstName' => $firstName ? $firstName : $customer->get_username(), 'lastName' => $customer->get_last_name(), 'email' => $customer->get_email(), 'phones' => array( diff --git a/woo-retailcrm/include/class-wc-retailcrm-history.php b/woo-retailcrm/include/class-wc-retailcrm-history.php index a7818ea..16cf747 100644 --- a/woo-retailcrm/include/class-wc-retailcrm-history.php +++ b/woo-retailcrm/include/class-wc-retailcrm-history.php @@ -38,7 +38,7 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : } public function getHistory() - { + { if (isset($this->retailcrm_settings['history_orders'])) { $this->startDateOrders = new DateTime($this->retailcrm_settings['history_orders']); } @@ -50,7 +50,6 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : $this->ordersHistory($this->startDateOrders->format('Y-m-d H:i:s')); $this->customersHistory($this->startDateCustomers->format('Y-m-d H:i:s')); - } protected function customersHistory($date) @@ -64,7 +63,7 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : if ($record['source'] == 'api' && $record['apiKey']['current'] == true) { continue; } - + $this->removeFuncsHook(); if ($record['field'] == 'first_name' && $record['customer']['externalId']) { @@ -117,7 +116,6 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : $this->addFuncsHook(); } - } if (empty($response)) { @@ -131,18 +129,17 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : protected function ordersHistory($date) { $options = array_flip(array_filter($this->retailcrm_settings)); - + $response = $this->retailcrm->ordersHistory(array('startDate' => $date)); if ($response->isSuccessful()) { - $generatedAt = $response->generatedAt; foreach ($response['history'] as $record) { if ($record['source'] == 'api' && $record['apiKey']['current'] == true) { continue; } - + $this->removeFuncsHook(); if ($record['field'] == 'status' && !empty($record['newValue']) && !empty($record['oldValue'])) { @@ -160,13 +157,13 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : $this->update_total($order); } - + elseif($record['field'] == 'order_product.quantity' && $record['newValue']) { $order = new WC_Order($record['order']['externalId']); $product = wc_get_product($record['item']['offer']['externalId']); $items = $order->get_items(); - + foreach ($items as $order_item_id => $item) { if ($item['variation_id'] != 0 ) { $offer_id = $item['variation_id']; @@ -180,11 +177,11 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : } } } - + elseif ($record['field'] == 'order_product' && !$record['newValue']) { $order = new WC_Order($record['order']['externalId']); $items = $order->get_items(); - + foreach ($items as $order_item_id => $item) { if ($item['variation_id'] != 0 ) { $offer_id = $item['variation_id']; @@ -200,26 +197,43 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : elseif ($record['field'] == 'delivery_type') { $newValue = $record['newValue']['code']; - if (!empty($options[$newValue]) && !empty($record['order']['externalId'])) { - $order = new WC_Order($record['order']['externalId']); - $items = $order->get_items('shipping'); - $wc_shipping = new WC_Shipping(); - $wc_shipping_list = $wc_shipping->get_shipping_methods(); - foreach ($wc_shipping_list as $method) { - if ($method->id == $options[$newValue]) { - $deliveryCost = $method->cost; + if (!empty($options[$newValue]) && !empty($record['order']['externalId'])) { + if (isset($options[$newValue])) { + $order = new WC_Order($record['order']['externalId']); + $items = $order->get_items('shipping'); + $item_id = $this->getShippingItemId($items); + $crmOrder = $this->retailcrm->ordersGet($record['order']['externalId']); + $shipping_methods = get_wc_shipping_methods(true); + + if (isset($shipping_methods[$options[$newValue]])) { + $method_id = $options[$newValue]; + } else { + $method_id = explode(':', $options[$newValue]); + $method_id = $method_id[0]; + $shipping_method = $shipping_methods[$method_id]['shipping_methods'][$options[$newValue]]; } + + if ( is_object($crmOrder)) { + if ($crmOrder->isSuccessful()) { + $deliveryCost = isset($crmOrder['order']['delivery']['cost']) ? $crmOrder['order']['delivery']['cost'] : 0; + } + } + + $args = array( + 'method_id' => $options[$newValue], + 'method_title' => isset($shipping_method) ? $shipping_method['title'] : $shipping_methods[$options[$newValue]]['name'], + 'total' => $deliveryCost + ); + + $item = $order->get_item((int)$item_id); + $item->set_order_id((int)$order->get_id()); + $item->set_props($args); + $item->save(); } - $item_id = $this->getShippingItemId($items); - $args = array( - 'method_id' => $options[$newValue], - 'cost' => $deliveryCost ? $deliveryCost : 0 - ); - $order->update_shipping( $item_id, $args ); - - $this->update_total($order); + $updateOrder = new WC_Order((int)$order->get_id()); + $this->update_total($updateOrder); } } @@ -242,7 +256,7 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : $order = new WC_Order($record['order']['externalId']); $order->set_shipping_address_2($record['newValue']); } - + elseif ($record['field'] == 'payment_type') { $order = new WC_Order($record['order']['externalId']); $newValue = $record['newValue']['code']; @@ -305,27 +319,27 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : $address_shipping = array( 'first_name' => $order_record['firstName'], - 'last_name' => $order_record['lastName'], + 'last_name' => isset($order_record['lastName']) ? $order_record['lastName'] : '', 'company' => '', - 'email' => $order_record['email'], - 'phone' => $order_record['phone'], - 'address_1' => $order_record['delivery']['address']['text'], + 'email' => isset($order_record['email']) ? $order_record['email'] : '', + 'phone' => isset($order_record['phone']) ? $order_record['phone'] : '', + 'address_1' => isset($order_record['delivery']['address']['text']) ? $order_record['delivery']['address']['text'] : '', 'address_2' => '', - 'city' => $order_record['delivery']['address']['city'], - 'state' => $order_record['delivery']['address']['region'], + 'city' => isset($order_record['delivery']['address']['city']) ? $order_record['delivery']['address']['city'] : '', + 'state' => isset($order_record['delivery']['address']['region']) ? $order_record['delivery']['address']['region'] : '', 'postcode' => isset($order_record['delivery']['address']['postcode']) ? $order_record['delivery']['address']['postcode'] : '', 'country' => $order_record['delivery']['address']['countryIso'] ); $address_billing = array( 'first_name' => $order_record['customer']['firstName'], - 'last_name' => $order_record['customer']['lastName'], + 'last_name' => isset($order_record['customer']['lastName']) ? $order_record['customer']['lastName'] : '', 'company' => '', - 'email' => $order_record['customer']['email'], - 'phone' => $order_record['customer'][0]['number'], - 'address_1' => $order_record['customer']['address']['text'], + 'email' => isset($order_record['customer']['email']) ? $order_record['customer']['email'] : '', + 'phone' => isset($order_record['customer'][0]['number']) ? $order_record['customer'][0]['number'] : '', + 'address_1' => isset($order_record['customer']['address']['text']) ? $order_record['customer']['address']['text'] : '', 'address_2' => '', - 'city' => $order_record['customer']['address']['city'], - 'state' => $order_record['customer']['address']['region'], + 'city' => isset($order_record['customer']['address']['city']) ? $order_record['customer']['address']['city'] : '', + 'state' => isset($order_record['customer']['address']['region']) ? $order_record['customer']['address']['region'] : '', 'postcode' => isset($order_record['customer']['address']['postcode']) ? $order_record['customer']['address']['postcode'] : '', 'country' => $order_record['customer']['address']['countryIso'] ); @@ -355,50 +369,70 @@ if ( ! class_exists( 'WC_Retailcrm_History' ) ) : $order->set_address($address_billing, 'billing'); $order->set_address($address_shipping, 'shipping'); - $product_data = $order_record['items']; + $product_data = isset($order_record['items']) ? $order_record['items'] : array(); - foreach ($product_data as $product) { - $order->add_product(wc_get_product($product['offer']['externalId']), $product['quantity']); - } - - $wc_shipping = new WC_Shipping(); - $wc_shipping_types = $wc_shipping->get_shipping_methods(); - - foreach ($wc_shipping_types as $shipping_type) { - if ($shipping_type->id == $options[$order_record['delivery']['code']]) { - $shipping_method_id = $shipping_type->id; - $shipping_method_title = $shipping_type->title; - $shipping_total = $shipping_type->cost; + if ($product_data) { + foreach ($product_data as $product) { + $order->add_product(wc_get_product($product['offer']['externalId']), $product['quantity']); } } - if (version_compare(get_option('woocommerce_db_version'), '3.0', '<' )) { - $shipping_rate = new WC_Shipping_Rate($shipping_method_id, isset($shipping_method_title) ? $shipping_method_title : '', isset($shipping_total) ? floatval($shipping_total) : 0, array(), $shipping_method_id); - $order->add_shipping($shipping_rate); - } else { - $shipping = new WC_Order_Item_Shipping(); - $shipping->set_props( array( - 'method_title' => $shipping_method_title, - 'method_id' => $shipping_method_id, - 'total' => wc_format_decimal($shipping_total), - 'order_id' => $order->id - ) ); - $shipping->save(); - $order->add_item( $shipping ); + if (array_key_exists('delivery', $order_record)) { + $deliveryCode = isset($order_record['delivery']['code']) ? $order_record['delivery']['code'] : false; + + if ($deliveryCode && isset($options[$deliveryCode])) { + $delivery = explode(':', $options[$deliveryCode]); + + if (isset($delivery[1])) { + $instance_id = $delivery[1]; + } + } + + if (isset($instance_id)) { + $wc_shipping = WC_Shipping_Zones::get_shipping_method($instance_id); + $shipping_method_title = $wc_shipping->method_title; + $shipping_method_id = $options[$deliveryCode]; + $shipping_total = $order_record['delivery']['cost']; + } else { + $wc_shipping = new WC_Shipping(); + $wc_shipping_types = $wc_shipping->get_shipping_methods(); + + foreach ($wc_shipping_types as $shipping_type) { + if ($shipping_type->id == $options[$deliveryCode]) { + $shipping_method_id = $shipping_type->id; + $shipping_method_title = $shipping_type->method_title; + $shipping_total = $order_record['delivery']['cost']; + } + } + } + + if (version_compare(get_option('woocommerce_db_version'), '3.0', '<' )) { + $shipping_rate = new WC_Shipping_Rate($shipping_method_id, isset($shipping_method_title) ? $shipping_method_title : '', isset($shipping_total) ? floatval($shipping_total) : 0, array(), $shipping_method_id); + $order->add_shipping($shipping_rate); + } else { + $shipping = new WC_Order_Item_Shipping(); + $shipping->set_props( array( + 'method_title' => $shipping_method_title, + 'method_id' => $shipping_method_id, + 'total' => wc_format_decimal($shipping_total), + 'order_id' => $order->id + ) ); + $shipping->save(); + $order->add_item( $shipping ); + } } - + $this->update_total($order); $ids[] = array( 'id' => (int)$order_record['id'], 'externalId' => (int)$order_data->id ); - + $this->retailcrm->ordersFixExternalIds($ids); } $this->addFuncsHook(); } - } if (empty($response)) { diff --git a/woo-retailcrm/include/class-wc-retailcrm-icml.php b/woo-retailcrm/include/class-wc-retailcrm-icml.php index 7d78bd0..92dbeee 100644 --- a/woo-retailcrm/include/class-wc-retailcrm-icml.php +++ b/woo-retailcrm/include/class-wc-retailcrm-icml.php @@ -240,6 +240,10 @@ if ( ! class_exists( 'WC_Retailcrm_Icml' ) ) : array_walk($offer['params'], array($this, 'setOffersParams'), $e); } + if ($offer['dimension']) { + $e->addChild('dimension', $offer['dimension']); + } + unset($offers[$key]); } } @@ -316,6 +320,14 @@ if ( ! class_exists( 'WC_Retailcrm_Icml' ) ) : $status_args = array('publish'); } + $attribute_taxonomies = wc_get_attribute_taxonomies(); + $product_attributes = array(); + + foreach ($attribute_taxonomies as $product_attribute) { + $attribute_id = wc_attribute_taxonomy_name_by_id($product_attribute->attribute_id); + $product_attributes[$attribute_id] = $product_attribute->attribute_label; + } + $full_product_list = array(); $offset = 0; $limit = 100; @@ -373,25 +385,16 @@ if ( ! class_exists( 'WC_Retailcrm_Icml' ) ) : $attributes = (isset($attributes[0])) ? $attributes[0] : $attributes; - $params = array(); - - $weight = $product->get_weight(); - - if (!empty($weight)) { - $params[] = array('code' => 'weight', 'name' => 'Weight', 'value' => $weight); - } - $attrName = ''; + $params = array(); if (!empty($attributes)) { foreach ($attributes as $attribute_name => $attribute) { - $id_product = $product->get_id(); - $arrAttributeValue = get_post_meta($id_product, 'attribute_'.$attribute_name); - $attributeValue = end($arrAttributeValue); - if ($attribute['is_visible'] == 1 && !empty($attribute['value'])) { + $attributeValue = $product->get_attribute($attribute_name); + if ($attribute['is_visible'] == 1 && !empty($attributeValue)) { $params[] = array( - 'code' => $attribute_name, - 'name' => $attribute['name'], + 'code' => $attribute_name, + 'name' => $product_attributes[$attribute_name], 'value' => $attributeValue ); $attrName .= (!empty($attributeValue)) ? ' - ' . $attributeValue : ''; @@ -399,25 +402,44 @@ if ( ! class_exists( 'WC_Retailcrm_Icml' ) ) : } } - if ($product->get_sku() != '') { - $params[] = array('code' => 'article', 'name' => 'Артикул', 'value' => $product->get_sku()); - } - $name = ($post->post_title == $product->get_title()) ? $post->post_title . $attrName : $post->post_title; + if ($product->get_weight() != '') { + $params[] = array('code' => 'weight', 'name' => 'Вес', 'value' => $product->get_weight()); + } + + if ($product->get_sku() != '') { + $params[] = array('code' => 'article', 'name' => 'Артикул', 'value' => $product->get_sku()); + } + + $dimension = ''; + + if ($product->get_length() != '') { + $dimension = $product->get_length(); + } + + if ($product->get_width() != '') { + $dimension .= '/' . $product->get_width(); + } + + if ($product->get_height() != '') { + $dimension .= '/' . $product->get_height(); + } + $product_data = array( - 'id' => $product->get_id(), - 'productId' => ($this->get_parent_product($product) > 0) ? $parent->get_id() : $product->get_id(), - 'name' => $name, - 'productName' => ($this->get_parent_product($product) > 0) ? $parent->get_title() : $product->get_title(), - 'price' => $this->get_price_with_tax($product), - 'picture' => $image[0], - 'url' => ($this->get_parent_product($product) > 0) ? $parent->get_permalink() : $product->get_permalink(), - 'quantity' => is_null($product->get_stock_quantity()) ? 0 : $product->get_stock_quantity(), - 'categoryId' => $term_list - ); + 'id' => $product->get_id(), + 'productId' => ($this->get_parent_product($product) > 0) ? $parent->get_id() : $product->get_id(), + 'name' => $name, + 'productName' => ($this->get_parent_product($product) > 0) ? $parent->get_title() : $product->get_title(), + 'price' => $this->get_price_with_tax($product), + 'picture' => $image[0], + 'url' => ($this->get_parent_product($product) > 0) ? $parent->get_permalink() : $product->get_permalink(), + 'quantity' => is_null($product->get_stock_quantity()) ? 0 : $product->get_stock_quantity(), + 'categoryId' => $term_list, + 'dimension' => $dimension + ); if (!empty($params)) { $product_data['params'] = $params; diff --git a/woo-retailcrm/include/class-wc-retailcrm-orders.php b/woo-retailcrm/include/class-wc-retailcrm-orders.php index 2911908..a5b2347 100644 --- a/woo-retailcrm/include/class-wc-retailcrm-orders.php +++ b/woo-retailcrm/include/class-wc-retailcrm-orders.php @@ -289,7 +289,7 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : $order_data['externalId'] = $order_data_info['id']; $order_data['number'] = $order->get_order_number(); - $order_data['createdAt'] = $order_data_info['date']; + $order_data['createdAt'] = trim($order_data_info['date']); $order_data['customerComment'] = $order_data_info['customer_comment']; if ( $order_data_info['discount_total'] ) { @@ -309,7 +309,13 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : if ($order->get_items( 'shipping' )) { $shipping = end($order->get_items( 'shipping' )); $shipping_code = explode(':', $shipping['method_id']); - $shipping_method = $shipping_code[0]; + + if (isset($this->retailcrm_settings[$shipping])) { + $shipping_method = $shipping; + } else { + $shipping_method = $shipping_code[0]; + } + $shipping_cost = $shipping['cost']; if (!empty($shipping_method) && !empty($this->retailcrm_settings[$shipping_method])) { @@ -418,7 +424,7 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : if ($order->get_date_paid()) { $pay_date = $order->get_date_paid(); - $payment['paidAt'] = $pay_date->date('Y-m-d H:i:s'); + $payment['paidAt'] = trim($pay_date->date('Y-m-d H:i:s')); } $order_data['payments'][] = $payment; @@ -448,7 +454,7 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : if ($order->get_date_paid()) { $pay_date = $order->get_date_paid(); - $payment['paidAt'] = $pay_date->date('Y-m-d H:i:s'); + $payment['paidAt'] = trim($pay_date->date('Y-m-d H:i:s')); } $this->retailcrm->ordersPaymentCreate($payment); diff --git a/woo-retailcrm/include/functions.php b/woo-retailcrm/include/functions.php new file mode 100644 index 0000000..a62e9c8 --- /dev/null +++ b/woo-retailcrm/include/functions.php @@ -0,0 +1,44 @@ +get_zones(); + + foreach ($shippingZones as $code => $shippingZone) { + foreach ($shippingZone['shipping_methods'] as $key => $shipping_method) { + $shipping_methods = array( + 'id' => $shipping_method->id, + 'instance_id' => $shipping_method->instance_id, + 'title' => $shipping_method->title + ); + + if ($enhanced) { + $shipping_code = $shipping_method->id; + } else { + $shipping_code = $shipping_method->id . ':' . $shipping_method->instance_id; + } + + if (!isset($result[$shipping_code])) { + $result[$shipping_code] = array( + 'name' => $shipping_method->method_title, + 'enabled' => $shipping_method->enabled, + 'description' => $shipping_method->method_description, + 'title' => $shipping_method->title + ); + } + + if ($enhanced) { + $result[$shipping_method->id]['shipping_methods'][$shipping_method->id . ':' . $shipping_method->instance_id] = $shipping_methods; + unset($shipping_methods); + } + } + } + + return $result; +} diff --git a/woo-retailcrm/retailcrm.php b/woo-retailcrm/retailcrm.php index 5deb751..bbfa994 100644 --- a/woo-retailcrm/retailcrm.php +++ b/woo-retailcrm/retailcrm.php @@ -1,6 +1,6 @@ + +