pedro-teixeira / correios

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

Monitoramente automático #170

Closed marcosnolasco closed 8 years ago

marcosnolasco commented 8 years ago

Tenho acompanhado as versões que estão sendo lançadas, e parece que já tem o monitoramente automático do status do correio, e caso o produto seja entregue é modificaficado o status de pedido em transporte para completo. Agora, como executo essa configuração na v4.7.2??

obs: parabéns pelo módulo, o melhor!

rafaelpatro commented 8 years ago

Boa tarde Marcos Para o monitoramento funcionar:

  1. Precisa estar com a versão mais recente instalada;
  2. Ativar o cron do Magento;
  3. Inserir um código de rastreio na Entrega;
  4. Atualizar a situação do pedido para Pedido em transporte;
  5. Habilitar o monitoramento nas configurações da extensão.

image

marcosnolasco commented 8 years ago

Eu atualizei para a versão v4.7.2 utilizando o magento conect, e ainda assim essa opção não aparece. Depois que instalei pelo conect, limpei cache também fiz logout e não aparece a opção. A intalação pelo conect não funciona?

marcosnolasco commented 8 years ago

Amigo, na ultima versão lançada no arquivo de system.xml, não tem as novas configurações.

<sro_tracking_job translate="label">
 +                            <label>Ativar Monitoramento das Encomendas</label>
 +                            <frontend_type>select</frontend_type>
 +                            <source_model>adminhtml/system_config_source_yesno</source_model>
 +                            <sort_order>270</sort_order>
 +                            <show_in_default>1</show_in_default>
 +                            <show_in_website>1</show_in_website>
 +                            <show_in_store>1</show_in_store>
 +                            <comment>Ao ativar o monitoramento, os pedidos na situação Pedido em Transporte são rastreados regularmente. Toda movimentação fica registrada nos comentários da entrega. Pedidos em situações adversas são classificados como Dificuldade de Entrega, mas continuam sendo monitorados. Pedidos entregues são classificados como Transação Concluída, e deixam de ser monitorados. O cliente é notificado via e-mail, em eventos que necessitam sua atenção, como "Saiu para entrega", "Aguardando retirada", entre outros. Somente pedidos com código de rastreamento podem ser monitorados. Somente um rastreador (o primeiro da lista) é monitorado em cada entrega.</comment>
 +                        </sro_tracking_job>
pedro-teixeira commented 8 years ago

Realmente acho que o pacote que gerei pro Magento Connect não está com essa configuração, que estranho.

Vou regerar o pacote e conferir se está tudo lá e publicar uma nova versão.

pedro-teixeira commented 8 years ago

Na verdade essa alteração ainda não está no Magento Connect, ela está programada para a próxima versão: https://github.com/pedro-teixeira/correios/pull/164

pedro-teixeira commented 8 years ago

@marcosnolasco o monitoramento deveria funcionar de qualquer forma, certo @rafaelpatro?

marcosnolasco commented 8 years ago

Então, eu peguei agora o código que está aqui no git, e instalei manualmente, as configurações de monitoramento apareceram, tenho 13 produtos que ainda não foram entregues pelo correio. Todos os status estão como Pedido em Transporte, vou acompanhar hoje durante o dia e lhes atualizo. Fiz as configurações conforme o @rafaelpatro orientou.

Desde de já, muito obrigado por esse módulo sensacional. Obrigado mesmo.

rafaelpatro commented 8 years ago

Sim, deve funcionar mesmo sem a mudança em system.xml. Talvez os rastreadores estivessem parados nos Correios. Por isso não aconteceu nada.

marcosnolasco commented 8 years ago

Estou acompanhando os pedidos, e hoje houve atualização do pedido, e conforme a issue #101, seria comentado, não necessariamente notificar o cliente. Mas teria como obervar essa transação nos comentarios. E hoje as 10:53 ou uma atualização. O cron está configurado para rodar de 15 em 15 minutos. Mas infelizmente não houve modificações.

Segue um print, demonstrativo. Houve outra modificação no correio. Objeto saiu para entrega. rastreamento

rafaelpatro commented 8 years ago

Só pra esclarecer que é nos comentários da Entrega, não do Pedido.

marcosnolasco commented 8 years ago

Desculpa @rafaelpatro e obrigado pelo esclarecimento. Olhei aqui na entrega também, e não foi comentado. entrega

rafaelpatro commented 8 years ago

Algum erro no log? Dá uma conferida tb no config.xml, vê se a tag cronjobs tá igual ao repositório. Em 08/07/2016 15:48, "marcosnolasco" notifications@github.com escreveu:

Desculpa @rafaelpatro https://github.com/rafaelpatro e obrigado pelo esclarecimento. Olhei aqui na entrega também, e não foi comentado. [image: entrega] https://cloud.githubusercontent.com/assets/19480499/16698165/543a099a-4523-11e6-920c-4678d82361ac.jpg

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pedro-teixeira/correios/issues/170#issuecomment-231441878, or mute the thread https://github.com/notifications/unsubscribe/ANLIzJ7yzkDQ9ZdVNwTCbR39A-lzZIbtks5qTptlgaJpZM4JHO-Y .

marcosnolasco commented 8 years ago

As unicas informações do log são:

`2016-07-08T22:24:44+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=40010x41106_02_16_66075513
2016-07-08T22:24:44+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=40010x41106_02_16_66075513
2016-07-08T22:25:01+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=40010x41106_02_16_66075513
2016-07-08T22:25:04+00:00 DEBUG (7): pedroteixeira_correios [cache]: mode=0 status=write key=40010x41106_02_16_66075513

E a o xml aparentemente está correto, mas existe a tag crontab, não cronjobs, e está de 15 em 15 minutos, é para existir cronjobs?

Mais uma vez obrigado pela ajuda

<crontab>
        <jobs>
            <correios_status_check>
                <schedule>
                    <cron_expr>*/15 * * * *</cron_expr>
                </schedule>
                <run>
                    <model>pedroteixeira_correios/observer::sroTrackingJob</model>
                </run>
            </correios_status_check>
        </jobs>
    </crontab>
rafaelpatro commented 8 years ago

O correto é crontab mesmo. E parece que está tudo Ok. Desculpa perguntar de novo, mas tem certeza de que o cron do Magento tá ativo? De quanto em quanto tempo ele executa?

Sugiro instalar essa ferramenta de log do cron, AOE_Scheduler do Fabrizio Branca. https://github.com/AOEpeople/Aoe_Scheduler image

Assim dá pra ver o resultado das tarefas: image

Caso ocorra qualquer erro fica registrado, e talvez possamos entender oq está acontecendo.

marcosnolasco commented 8 years ago

Rafael muito obrigado pela ajuda até agora, suporte e paciência.

Vou fazer o que você sugeriu e posto aqui o resultado.

marcosnolasco commented 8 years ago

Realmente estou com problemas no Cron. Estou ajustando e assim que terminar, verificarei novamente o monitoramente. Desculpa pelo trabalho, e obrigado pela ajuda. Terminando posto o resultado.

marcosnolasco commented 8 years ago

Rafael eu estou com problemas para configurar o cron do magento, eu consigo chamar a sua tarefa de execução pelo crontab do servidor?

marcosnolasco commented 8 years ago

Pessoal deu certo, sensacional este módulo. Espetacular parabéns!!! Consegui, realmente era o Cron, obrigado pelo Apoio.

willgoulding commented 8 years ago

Olá a todos, fiz a atualização do modulo para a ultima versão e ativei a opção monitoramento automático mas estou recebendo um Log de erro do Cron. Alguém pode me ajudar com isso?

Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 164 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 166 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 164 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 166

rafaelpatro commented 8 years ago

Olá willgolding

Aparentemente o webservice não retornou informação suficiente. É possível que algum dos seus rastreios não tenha sido registrado/postado nos Correios? Sugiro verificar manualmente. Posta aqui se vir algo estranho.

Apesar de não caracterizar um erro PHP, seria interessante tratar esse caso. Não parece ser muito grave, só exibe alguns Notices, sem travar ou encerrar.

Essa semana será impossível, mas assim que puder eu coloco um tratamento.

Em 01/08/2016 21:36, "willgoulding" notifications@github.com escreveu:

Olá a todos, fiz a atualização do modulo para a ultima versão e ativei a opção monitoramento automático mas estou recebendo um Log de erro do Cron. Alguém pode me ajudar com isso?

Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 183 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 184 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 185 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 164 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 166 Notice: Undefined property: stdClass::$evento in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 164 Notice: Trying to get property of non-object in /home/pood8607/public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 166

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pedro-teixeira/correios/issues/170#issuecomment-236754113, or mute the thread https://github.com/notifications/unsubscribe-auth/ANLIzLrg6r0fhL8xzB3TlMu_6eVbvZ1Aks5qbpDzgaJpZM4JHO-Y .

thiagoromera commented 6 years ago

Pessoal, poderiam me dar uma ajuda com essa questão? Eu habilitei essa opção no meu módulo e fiquei com uma dúvida: Todos os meus pedidos quando gerado a entrega vão para o state complete, status Enviado. Li no outro tópico que preciso colocar como Pedido em Transporte. É isso? Daí, quando for entregue de fato ao cliente ele troca para o Enviado e para de fazer as consultas. Eu só não entendi onde eu preciso mapear esses status para que isso ocorra.

Outra coisa, mais sério, eu habilitei e como teste coloquei 5 pedidos como Pedido em transporte para ver se atualiza. Não atualiza. Na verdade, segundo o Cron Monitor minhas tarefas ficam em execução constante, chegando uma sobreescrever o tempo da outra. E não termina. Olhei no logo do servidor e só da esse erro aqui:

n98-magerun

sys:cron:run correios_status_check It's not recommended to run n98-magerun as root user Run PedroTeixeira_Correios_Model_Observer::sroTrackingJob PHP Fatal error: Call to a member function getDescription() on a non-object in /public_html/app/code/community/PedroTeixeira/Correios/Model/Sro.php on line 272

rafaelpatro commented 6 years ago

Isso parece ser problema de caractere inválido no rastreio de algum dos seus pedidos. Eventualmente ao copiar e colar vc pode acabar trazendo um espaço, tabulação, quebra de linha, etc. Enfim caracteres invisíveis no início ou final do código de rastreamento. Seria interessante realizar um tratamento disso no futuro. Seria uma boa contribuição.

thiagoromera commented 6 years ago

Pode ser. No título aparece PAC: valor em até 3 dias úteis. Vou tratar isso. E sobre os status, podem me confirmar? Para monitorar mudo para Pedido em Transporte? E para parar, Enviado (complete)??

thiagoromera commented 6 years ago

Então Rafael, eu fiz alguns testes, mas não deve ser a questão do caractere pq ele deu erro na getDescription, dizendo que não é um objeto. Ou seja, ele sequer conseguiu pegar a informação, não poderia ter dado o erro com caracter, concorda?

rafaelpatro commented 6 years ago

Realmente é pouco provável q seja um erro de caractere inválido. Mas deixa eu explicar como funciona... talvez no fim eu consiga diagnosticar melhor o problema.

Antes de enviar aos Correios, o método init é chamado para armazenar todos os objetos de rastreio, em um arrayzão. O código de rastreio é a própria chave do array.

    public function init()
    {
        $collection = $this->getShippedTracks();
        foreach ($collection as $track) {
            if ($this->validateTrackNumber($track->getNumber())) {
                $this->_trackList[$track->getNumber()] = $track;
                continue;
            }
            Mage::log("{$track->getNumber()}: invalid tracking code");
        }
        return $this;
    }

Após enviar a requisição, os Correios retornam um XMLzão, com os mesmos códigos. Então o método getTrack lê cada um dos códigos devolvidos, e usa-os como índice, para carregar os objetos armazenados no método init.

    public function getTrack($obj)
    {
        $track = $this->_trackList[$obj->numero];
        if (!($desc = $track->getDescription())) {
            Mage::log("{$obj->numero}: tracking instance missed. Trying to reload");
            try {
                $track = Mage::getModel('sales/order_shipment_track')->load($obj->numero, 'track_number');
            } catch (Exception $e) {
                Mage::log("{$obj->numero}: {$e->getMessage()}");
            }
        }
        return $track;
    }

Eventualmente pode ocorrer do Correios não devolver um objeto por algum problema no código rastreador. Ou pior, retornar um código de erro, diferente do que foi enviado, no mesmo nível hierárquico dos rastreamentos.

Resumindo, se o objeto não voltar na resposta dos Correios, o pedido não será atualizado. Se houver um código diferente na resposta, haverá erro exatamente na linha que vc descreveu. E código diferente pode significar acesso bloqueado.

  1. Envie uma requisição de teste via WSDL para verificar se sua conta está liberada para realizar consultas.
  2. Poste aqui a resposta WSDL para análise.
thiagoromera commented 6 years ago

Muito obrigado pela ajuda. Eu testei as requisições e vi que os dados de acesso não funcionavam. Entrei em contato com a agência e me confirmara, mas ainda não dava certo. Testei com o da minha loja e funcionou. Pedi para eles analisarem. Muito obrigado mesmo.

Mas ainda tenho uma dúvida, eu rodei o cron e ele atualizou 25 pedidos. Sendo que 3 deles eram os pedidos que eu tinha colocado como teste no Status complete_shipped (Pedido em Transporte). Depois que foi entregue ao destinatário ele trocou para complete.

Essa é mecânica? Quando eu gerar uma entrega coloco o status como Pedido em Transporte (complete_shipped) para que ele faça as varreduras e depois troca para complete quando for entregue?

Aguardo e mais uma vez obrigado.

rafaelpatro commented 6 years ago

Exatamente. O processo requer apenas q vc coloque Pedido em Transporte. O restante ele faz sozinho.