pedro-teixeira / correios

Módulo de frete para Magento com tracking
https://pedroteixeira.io
MIT License
110 stars 72 forks source link

Link rastreamento enviado pelo email #249

Open kinfoxxx opened 7 years ago

kinfoxxx commented 7 years ago

Boa tarde, o link que esta sendo enviado no e-mail para o cliente já não funciona mais, existe alguma outra forma de colocar outro link , no email esta sendo enviado o link http://websro.correios.com.br/sro_bin/txect01%24.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=PNXXXXXXXXBR

magnored commented 7 years ago

Tbm estou com esse problema.

reinaldomendes commented 7 years ago

Baseado neste documento fiz uma alteração: http://correios.com.br/para-voce/correios-de-a-a-z/pdf/rastreamento-de-objetos/manual_rastreamentoobjetosws.pdf

Solução temporária: copie o arquivo app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php para app/code/local/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php

Encontre o método protected function _getTracking($code) e substitua pelo código que segue abaixo.


/**
     * Protected Get Tracking, opens the request to Correios
     *
     * @param string $code
     * @return boolean
     */
    protected function _getTracking($code)
    {
        $error = Mage::getModel('shipping/tracking_result_error');
        $error->setTracking($code);
        $error->setCarrier($this->_code);
        $error->setCarrierTitle($this->getConfigData('title'));
        $error->setErrorMessage($this->getConfigData('urlerror'));

        $wsdlUrl = 'http://webservice.correios.com.br/service/rastro/Rastro.wsdl';

        $result = array();
        try {
            $webService = new Zend_Soap_Client($wsdlUrl,
                    array('soap_version' => SOAP_1_1));

            $result = $webService->__call('buscaEventos',
                    array(array(
                    'objetos' => $code,
                    'tipo' => 'L',
                    'resultado' => 'T',
                    'lingua' => '101',
            )));
        } catch (Exception $e) {
            $this->_result->append($error);
            return false;
        }
        $progress = array();
        $fnLocation = function($event){
            if(!$event){
                return null;
            }
            $bairro = $event->bairro ? ucwords(strtolower($event->bairro)) . " - " : null;
            $cidade = ucwords(strtolower($event->cidade));

            return htmlentities("{$event->local} ({$bairro}{$cidade} /{$event->uf})");
        };

        $events = is_array($result->return->objeto->evento) ? $result->return->objeto->evento : array($result->return->objeto->evento);
        foreach($events as $event ){                 
                $locale = new Zend_Locale('pt_BR');
                $date = '';
                $date = new Zend_Date($event->data, 'dd/MM/YYYY', $locale);
                $track = array(
                    'deliverydate' => $date->toString('YYYY-MM-dd'),
                    'deliverytime' => $event->hora . ':00',
                    'deliverylocation' => $fnLocation($event),
                    'status' => "{$event->descricao}",
                    'activity' => htmlentities($event->descricao)
                );

                if (isset($event->destino)) {
                    $track['activity'] .= " {$fnLocation($event->destino)}";
                }
                $progress[] = $track;
        }        

        if (!empty($progress)) {
            $track = $progress[0];
            $track['progressdetail'] = $progress;

            $tracking = Mage::getModel('shipping/tracking_result_status');
            $tracking->setTracking($code);
            $tracking->setCarrier('correios');
            $tracking->setCarrierTitle($this->getConfigData('title'));
            $tracking->addData($track);

            $this->_result->append($tracking);
            return true;
        } else {
            $this->_result->append($error);
            return false;
        }
    }