Example #1
0
 /**
  * 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;
     }
 }