diff --git a/.travis.yml b/.travis.yml index 5567970..db239f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,10 @@ language: php +dist: trusty + sudo: false php: - - 5.4 - - 5.5 - 5.6 - 7.0 - 7.1 @@ -15,8 +15,6 @@ env: matrix: fast_finish: true include: - - php: 5.3 - dist: precise - php: 7.2 env: WP_VERSION=latest WP_MULTISITE=0 RUN_PHPCS=1 diff --git a/src/include/class-wc-retailcrm-customers.php b/src/include/class-wc-retailcrm-customers.php index f1adb1c..a7a180b 100644 --- a/src/include/class-wc-retailcrm-customers.php +++ b/src/include/class-wc-retailcrm-customers.php @@ -172,8 +172,8 @@ if (!class_exists('WC_Retailcrm_Customers')) : */ public function searchCustomer($filter) { - if (isset($filter['id'])) { - $search = $this->retailcrm->customersGet($filter['id']); + if (isset($filter['externalId'])) { + $search = $this->retailcrm->customersGet($filter['externalId']); } elseif (isset($filter['email'])) { $search = $this->retailcrm->customersList(array('email' => $filter['email'])); } diff --git a/src/include/class-wc-retailcrm-orders.php b/src/include/class-wc-retailcrm-orders.php index 44f5daf..992a44d 100644 --- a/src/include/class-wc-retailcrm-orders.php +++ b/src/include/class-wc-retailcrm-orders.php @@ -125,38 +125,45 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) : return null; } - $order = wc_get_order($order_id); - $this->processOrder($order); - $customer = $order->get_user(); + $wcOrder = wc_get_order($order_id); + $this->processOrder($wcOrder); + $wpUser = $wcOrder->get_user(); - if ($customer != false) { - $search = $this->customers->searchCustomer(array('id' => $customer->get('ID'))); + if ($wpUser instanceof WP_User) { + $wpUserId = (int)$wpUser->get('ID'); + $foundCustomer = $this->customers->searchCustomer(array( + 'externalId' => $wpUserId + )); - if (!$search) { - $this->customers->createCustomer($customer); - } else { - $this->order['customer']['externalId'] = $search['externalId']; - } - } else { - $search = $this->customers->searchCustomer(array('email' => $order->get_billing_email())); + if (empty($foundCustomer)) { + $customerId = $this->customers->createCustomer($wpUserId); - if (!$search) { - $new_customer = $this->customers->buildCustomerFromOrderData($order); - $id = $this->customers->createCustomer($new_customer); - - if ($id !== null) { - $this->order['customer']['id'] = $id; + if (!empty($customerId)) { + $this->order['customer']['id'] = $customerId; } } else { - $this->order['customer']['externalId'] = $search['externalId']; + $this->order['customer']['externalId'] = $foundCustomer['externalId']; } + } else { + $foundCustomer = $this->customers->searchCustomer(array( + 'email' => $wcOrder->get_billing_email() + )); - unset($new_customer); + if (empty($foundCustomer)) { + $wcCustomer = $this->customers->buildCustomerFromOrderData($wcOrder); + $customerId = $this->customers->createCustomer($wcCustomer); + + if (!empty($customerId)) { + $this->order['customer']['id'] = $customerId; + } + } else { + $this->order['customer']['externalId'] = $foundCustomer['externalId']; + } } $this->retailcrm->ordersCreate($this->order); - return $order; + return $wcOrder; } /** diff --git a/src/include/order/class-wc-retailcrm-order-item.php b/src/include/order/class-wc-retailcrm-order-item.php index 96404e2..d5f6334 100644 --- a/src/include/order/class-wc-retailcrm-order-item.php +++ b/src/include/order/class-wc-retailcrm-order-item.php @@ -77,8 +77,13 @@ class WC_Retailcrm_Order_Item extends WC_Retailcrm_Abstracts_Data $uid = ($item['variation_id'] > 0) ? $item['variation_id'] : $item['product_id'] ; $offer = array('externalId' => $uid); - if (isset($this->settings['bind_by_sku']) && $this->settings['bind_by_sku'] == WC_Retailcrm_Base::YES) { - $offer['xmlId'] = $item->get_product()->get_sku(); + $product = $item->get_product(); + + if (!empty($product) && + isset($this->settings['bind_by_sku']) && + $this->settings['bind_by_sku'] == WC_Retailcrm_Base::YES + ) { + $offer['xmlId'] = $product->get_sku(); } $this->set_data_field('offer', $offer); diff --git a/tests/bin/install.sh b/tests/bin/install.sh index 8e9f602..d3ca88c 100755 --- a/tests/bin/install.sh +++ b/tests/bin/install.sh @@ -73,6 +73,8 @@ install_woocommerce() { git clone https://github.com/woocommerce/woocommerce.git cd woocommerce git checkout master + composer install + npm install cd - }