tracking)); if ($response !== false && $response !== null) { if ((string)$response->message !== $detail_suivi->status) { $detail_suivi->status = (string)$response->message; if ($response->date) { $detail_suivi->date = date('Y-m-d', DateTime::createFromFormat('d/m/Y', (string)$response->date)->getTimestamp()); if (in_array((string)$response->status, array('LIVRE', 'DISTRIBUE'))) { $detail_suivi->delivered = true; $order = new Order($detail_suivi->id_order); if ($update_states && $order->current_state !== _PS_OS_DELIVERED_) { $order->setCurrentState(_PS_OS_DELIVERED_); } $order = null; unset($order); } } else { $detail_suivi->date = date('Y-m-d'); } $detail_suivi->update(); } } $detail_suivi = null; unset($detail_suivi); } } public static function updateCsuiviCarriers() { $id_list = Db::getInstance()->executeS(' SELECT c.`id_carrier` FROM `'._DB_PREFIX_.'carrier` c WHERE c.`id_reference` IN ('.implode(', ', array_map('intval', Tools::unSerialize(Configuration::get('CSUIVITRACKING_MAPPING')))).')' ); Configuration::updateValue('CSUIVITRACKING_CARRIERS', serialize($id_list)); } public static function fillOrdersData() { $date = new DateTime(); $date->sub(new DateInterval('P1M')); $id_list = Db::getInstance()->executeS(' SELECT o.`id_order` FROM `'._DB_PREFIX_.'orders` o WHERE o.`date_add` > \''.$date->format('Y-m-d H:i:s').'\' AND o.`current_state` != '._PS_OS_DELIVERED_.' AND o.`id_carrier` IN ('.implode(', ', array_map('intval', self::getAllCarriersId())).') AND o.`id_order` NOT IN (SELECT id_order FROM `'._DB_PREFIX_.'csuivi_tracking`)' ); foreach ($id_list as $id_order) { $order = new Order((int)$id_order['id_order']); if (Tools::version_compare(_PS_VERSION_, '1.5.5.0', '>=')) { $order_carrier = new OrderCarrier($order->getIdOrderCarrier()); } else { $order_carrier = new OrderCarrier( Db::getInstance()->getValue(' SELECT `id_order_carrier` FROM `'._DB_PREFIX_.'order_carrier` WHERE `id_order` = '.$id_order ) ); } if (Validate::isLoadedObject($order_carrier)) { $tracking = trim($order_carrier->tracking_number); if (!CsuiviTrackingModel::getIdByOrderId($order->id) && (!empty($tracking)) && Tools::strlen($tracking) == 13 && self::isCsuiviCarrier($order->id_carrier)) { $detail_suivi = new CsuiviTrackingModel(); $detail_suivi->id_order = $order->id; $detail_suivi->tracking = $tracking; $detail_suivi->add(); } } } } /** * @param int $id_order_carrier * @return bool */ public static function isCsuiviCarrier($id_order_carrier) { $carriers = Tools::unSerialize(Configuration::get('CSUIVITRACKING_CARRIERS')); foreach ($carriers as $id_carrier) { if ((int)$id_carrier['id_carrier'] == $id_order_carrier) { return true; } } return false; } public static function getAllCarriersId() { $csuiviCarriers = Tools::unSerialize(Configuration::get('CSUIVITRACKING_CARRIERS')); $carrierReturn = array(); foreach ($csuiviCarriers as $id_carrier) { $carrierReturn[] = (int)$id_carrier['id_carrier']; } return $carrierReturn; } }