/**
  * Set order NetEven
  * @param $param
  */
 public function setOrderNetEven($params)
 {
     if (!self::$send_order_state_to_neteven) {
         return;
     }
     if ($res = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'orders_gateway` WHERE `id_order` = ' . (int) $params['id_order'])) {
         $status = '';
         $track = '';
         $date_now = date('Y-m-d H:i:s');
         if ($params['newOrderStatus']->id == (int) Configuration::get('PS_OS_PREPARATION')) {
             $status = 'Confirmed';
         }
         if ($params['newOrderStatus']->id == (int) Configuration::get('PS_OS_CANCELED')) {
             $status = 'Canceled';
         }
         if ($params['newOrderStatus']->id == (int) Configuration::get('PS_OS_DELIVERED')) {
             $res_order = Db::getInstance()->getRow('SELECT `shipping_number` FROM `' . _DB_PREFIX_ . 'orders` WHERE `id_order` = ' . (int) $params['id_order']);
             $status = 'Shipped';
             $track = $res_order['shipping_number'];
         }
         if ($params['newOrderStatus']->id == (int) Configuration::get('PS_OS_REFUND')) {
             $status = 'Refunded';
         }
         if ($status != '') {
             $order1 = array('OrderID' => $res['id_order_neteven'], 'Status' => $status);
             if (!empty($track)) {
                 $order1['TrackingNumber'] = $track;
             }
             $params_web = array('orders' => array($order1));
             try {
                 $response = $this->_client->PostOrders($params_web);
                 $order_status = $response->PostOrdersResult->MarketPlaceOrderStatusResponse;
             } catch (Exception $e) {
                 Toolbox::manageError($e, 'Update order statu in neteven');
                 $order_status = NULL;
             }
             if ($this->getValue('send_request_to_mail')) {
                 $this->sendDebugMail($this->getValue('mail_list_alert'), self::getL('Debug - Control request') . ' setOrderNetEven', $this->_client->__getLastRequest(), true);
             }
             if (!isset($order_status->StatusResponse) || isset($order_status->StatusResponse) && $order_status->StatusResponse != 'Updated' || is_null($order_status)) {
                 $complement = !is_array($order_status->StatusResponse) ? $order_status->StatusResponse : '';
                 $complement .= is_array($order_status->StatusResponse) ? '<pre>' . print_r($order_status->StatusResponse, true) . '</pre>' : '';
                 if ($this->getValue('send_request_to_mail')) {
                     $this->sendDebugMail($this->getValue('mail_list_alert'), self::getL('Fail for update order state'), self::getL('Order Id') . ' (' . (int) $params['id_order'] . '). ' . self::getL('NetEven response') . ' : ' . $complement);
                 }
             }
             if (!empty($order_status) && !is_null($order_status)) {
                 Toolbox::addLogLine(self::getL('Update order state') . ' ' . $status . ' ' . self::getL('NetEven Order Id') . ' ' . $res['id_order_neteven'] . ' ' . self::getL('Order Id') . ' ' . $res['id_order'] . ' - ' . $order_status->StatusResponse . '');
             }
             if (!Db::getInstance()->Execute('INSERT INTO `' . _DB_PREFIX_ . 'orders_gateway_order_state` (`id_order`, `id_order_state`, `date_add`, `date_upd`) VALUES (' . (int) $res['id_order'] . ', ' . (int) $params['newOrderStatus']->id . ', "' . pSQL($date_now) . '", "' . pSQL($date_now) . '")')) {
                 Toolbox::addLogLine(self::getL('Failed for save export NetEven order state Id') . ' ' . (int) $res['id_order']);
             } else {
                 Toolbox::addLogLine(self::getL('Save export of NetEven order state Id') . ' ' . (int) $res['id_order']);
             }
         }
     }
     Toolbox::writeLog();
 }
 /**
  * Envoie des produits a NetEven.
  * @param $t_retour
  * @return mixed
  */
 private function addProductInNetEven($neteven_products)
 {
     if (count($neteven_products) == 0) {
         if ($this->getValue('debug')) {
             Toolbox::displayDebugMessage(self::getL('No product to send !'));
         }
         return;
     }
     try {
         Toolbox::addLogLine(self::getL('Number of product send to NetEven') . ' ' . count($neteven_products));
         $params = array('items' => $neteven_products);
         $response = $this->_client->PostItems($params);
         $itemsStatus = $response->PostItemsResult->InventoryItemStatusResponse;
         if ($this->getValue('debug')) {
             Toolbox::displayDebugMessage(self::getL('Sends data to NetEven'));
         }
     } catch (Exception $e) {
         if ($this->getValue('debug')) {
             Toolbox::displayDebugMessage(self::getL('Failed to send data to Neteven'));
         }
         $erreur = '<pre>Last request:\\n' . $this->_client->__getLastRequest() . '</pre>\\n';
         Toolbox::manageError($e, 'add product nombre => ' . count($neteven_products) . ' ' . $erreur);
         $response = '';
         $itemsStatus = '';
     }
     if ($this->getValue('send_request_to_mail')) {
         $this->sendDebugMail($this->getValue('mail_list_alert'), self::getL('Debug - Control request') . ' addProductInNetEven', $this->_client->__getLastRequest(), true);
     }
     if ($response != '' && $itemsStatus != '') {
         if (is_array($response->PostItemsResult->InventoryItemStatusResponse)) {
             foreach ($response->PostItemsResult->InventoryItemStatusResponse as $rep) {
                 Toolbox::addLogLine($rep->ItemCode . ' ' . $rep->StatusResponse);
                 if ($this->getValue('debug')) {
                     Toolbox::displayDebugMessage(self::getL('Add product') . ' : ' . $rep->ItemCode . ' ' . $rep->StatusResponse);
                 }
             }
         } else {
             Toolbox::addLogLine($response->PostItemsResult->InventoryItemStatusResponse->ItemCode . ' ' . $response->PostItemsResult->InventoryItemStatusResponse->StatusResponse);
             if ($this->getValue('debug')) {
                 Toolbox::displayDebugMessage(self::getL('Add product') . ' : ' . $response->PostItemsResult->InventoryItemStatusResponse->ItemCode . ' ' . $response->PostItemsResult->InventoryItemStatusResponse->StatusResponse);
             }
         }
     }
     Toolbox::writeLog();
     Configuration::updateValue('neteven_date_export_product', date('Y-m-d H:i:s'));
 }
 public static function manageError($e, $type_error)
 {
     Toolbox::writeLog(true, $type_error . " => " . $e);
 }