/** * Retrieve array of tracking info * * * @return Mage_Shipping_Model_Tracking_Result */ public function getTrackingInfo() { //Declara Variaveis ----------------------------------------------------------------------------------------- $url = 'http://www.jadlog.com.br:8080/JadlogEdiWs/services/TrackingBean?wsdl'; $codCliente = '13585367000166'; $password = '******'; $aux = explode(',/', $_SERVER['REQUEST_URI']); $order_id = $aux[1]; //Instancia Objetos ----------------------------------------------------------------------------------------- $_order = Mage::getModel('sales/order')->load($order_id); $this->_result = Mage::getModel('shipping/tracking_result'); $shipmentCollection = Mage::getResourceModel('sales/order_shipment_collection')->setOrderFilter($_order)->load(); //Pega o numero do rastreio --------------------------------------------------------------------------------- foreach ($shipmentCollection as $shipment) { foreach ($shipment->getAllTracks() as $tracknum) { $tracknums[] = $tracknum->getNumber(); } } $track_number = $tracknums[0]; //Soap Jadlog ------------------------------------------------------------------------------------------------ $client = new SoapClient($url); $metodo = $client->consultar(array('CodCliente' => $codCliente, 'Password' => $password, 'NDs' => $track_number)); $metodo = simplexml_load_string($metodo->consultarReturn); $json = json_encode($metodo, true); $array = json_decode($json, true); //Verifica se array do Soap for vazio (Retorna Erro) --------------------------------------------------------- if ($array['Jadlog_Tracking_Consultar']['ND'] == '') { $error = Mage::getModel('shipping/tracking_result_error'); $error->setTracking($track_number); $error->setCarrier('jadlog'); $error->setCarrierTitle($this->getConfigData('title')); $error->setErrorMessage($this->getConfigData('urlerror')); $this->_result->append($error); return $error; //Se tem retorno no array Pega as informações do Soap ------------------------------------------------------- } else { foreach ($array['Jadlog_Tracking_Consultar']['ND']['Evento'] as $unico) { $tracking = Mage::getModel('shipping/tracking_result_status'); $aux = explode(' ', $unico['DataHoraEvento']); $delivery_date = $aux[0]; $delivery_h = $aux[1]; $locale = new Zend_Locale('pt_BR'); $date = ''; $date = new Zend_Date($delivery_date, 'dd/MM/YYYY', $locale); $relatos = ''; $relatos['deliverydate'] = $date->toString('YYYY-MM-dd'); $relatos['deliverytime'] = $delivery_h; $relatos['deliverylocation'] = $unico['Observacao']; $relatos['activity'] = $unico['Descricao']; $progress[] = $relatos; } //Retorna informações para serem montadas no Cliente ----------------------------------------------------- $track['progressdetail'] = $progress; $tracking->setTracking($track_number); $tracking->setCarrier('jadlog'); $tracking->setCarrierTitle($this->getConfigData('title')); $tracking->addData($track); $this->_result->append($tracking); return $tracking; } }