pedro-teixeira / correios

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

Máximo de 1 código de serviço por consulta. #447

Open jefersonoj opened 5 years ago

jefersonoj commented 5 years ago

25-09-2019 13-06-24 Alguém com o mesmo problema?

guittavares commented 5 years ago

Acabei de abrir uma postagem com o mesmo problema.

Por enquanto estou deixando apenas 1 opção de frete.

jefersonoj commented 5 years ago

Também fiz isso por enquanto

rafaelpatro commented 5 years ago

Aqui ainda funcionando. Vc configurou o código de contrato no módulo? Pode mandar um print da tela de configurações?

image

jefersonoj commented 5 years ago

Não tenho configurado, qual é o campo?

image

rafaelpatro commented 5 years ago

Para o cálculo de frete são esses aqui... image

yurirn commented 5 years ago

O problema só esta acontecendo para quem não tem contrato...

rafaelpatro commented 5 years ago

Sacanagem isso! Só quem tem contrato agora pode consultar múltiplos serviços numa única chamada. É isso?!

yurirn commented 5 years ago

Calma, ja aconteceu isso outras vezes, provavelmente já deve voltar a funcionar, ou vai precisar atualizar o modulo

rafaelpatro commented 5 years ago

Segue sugestão... Aguardo feedback Substituir a linha a seguir, pelo trecho mais abaixo. https://github.com/pedro-teixeira/correios/blob/bbfa63a26b687b8ba4ccbd38189174c541a78ec2/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php#L181

Código para isolar o cálculo de frete por serviço.

        // Início: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
        $dataServices = array('<Servicos>');
        foreach ($this->_postMethodsExplode as $method) {
            $this->_postMethods = $method;
            $returnTemp = $this->_getCorreiosReturn();
            if (!empty($returnTemp) && $returnTemp instanceof SimpleXMLElement) {
                $dataServices[] = $returnTemp->asXML();
            }
        }
        $dataServices[] = '</Servicos>';
        $this->_postMethods = implode(',', $this->_postMethodsExplode);
        $xml = new SimpleXMLElement(implode('', $dataServices));
        $correiosReturn = isset($xml->cServico) ? $xml->cServico : false;
        // Fim: Isolamento das consultas de cálculo de frete, para lojas sem contrato.

p.s. Código não testado! Utilize por sua conta em risco. Essa é uma solução paliativa. Contate seu desenvolvedor, para uma customização mais aprimorada.

lGustavo206 commented 5 years ago

Por enquanto estou deixando apenas 1 opção de frete.

Isso funcionou pra mim, mais acho que já já volta ao normal, mais por hora deixei só com uma opção de frete mesmo

philsouza2016 commented 5 years ago

Até agora não voltou...

goncalocruz77 commented 5 years ago

Para quem utiliza o módulo para calculo e não tem contrato com os Correios, teremos alguma atualização no módulo aqui pelo Git? Será que volta a funcionar com o tempo, o problema seria em quanto tempo (Isso se depender dos correios atualizar mais algo na api deles)?

loja5combr commented 5 years ago

Ola bom dia, a todos, pelo que vi o sistema dos Correios não valida se o contrato é real ou não, para clientes sem o contrato aqui eu apenas cadastrei o cod administrativo e senha para: 99999999 e aparentemente funcionou normalmente, pelo que vi o sistema deles esta apenas verificando se os dados de contrato estão sendo informados ou não onde quando informei os dados fictícios deixou passar normal, lembrando que no caso ainda continuando os serviços sem contrato.

http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdServico=04510%2C04014&nCdEmpresa=999999999&sDsSenha=999999999&sCepDestino=22450000&sCepOrigem=22450000&nVlAltura=8%2C10&nVlLargura=16%2C00&nVlDiametro=0&nVlComprimento=16%2C00&nVlPeso=3%2C00&nCdFormato=1&sCdMaoPropria=N&nVlValorDeclarado=0&sCdAvisoRecebimento=N&StrRetorno=xml

goncalocruz77 commented 5 years ago

Ôpa! Loja 5 salvou. Já fiz o mesmo procedimento e funcionou corretamente.

Valeu.

filipenunes75 commented 5 years ago

Tenho no Magento 1.9.4 - o Correios do Pedro Teixeira - coloque 99999999 . - no usuario e senha do SRO - tanto no BakcEnd - no /admin - e tanto no config..xml - e não deu certo ! Alguma LUZ ?

jefersonoj commented 5 years ago

Segue sugestão... Aguardo feedback Substituir a linha a seguir, pelo trecho mais abaixo. https://github.com/pedro-teixeira/correios/blob/bbfa63a26b687b8ba4ccbd38189174c541a78ec2/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php#L181

Código para isolar o cálculo de frete por serviço.

        // Início: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
        $dataServices = array('<Servicos>');
        foreach ($this->_postMethodsExplode as $method) {
            $this->_postMethods = $method;
            $returnTemp = $this->_getCorreiosReturn();
            if (!empty($returnTemp) && $returnTemp instanceof SimpleXMLElement) {
                $dataServices[] = $returnTemp->asXML();
            }
        }
        $dataServices[] = '</Servicos>';
        $this->_postMethods = implode(',', $this->_postMethodsExplode);
        $xml = new SimpleXMLElement(implode('', $dataServices));
        $correiosReturn = isset($xml->cServico) ? $xml->cServico : false;
        // Fim: Isolamento das consultas de cálculo de frete, para lojas sem contrato.

p.s. Código não testado! Utilize por sua conta em risco. Essa é uma solução paliativa. Contate seu desenvolvedor, para uma customização mais aprimorada.

Tento fazer essa alteração acima? Funcionou pra mim!

filipenunes75 commented 5 years ago

@jefersonoj DEU CERTO !

muito obrigado tche!

Parabéns ai por ajudar a galera !!

Segue sugestão... Aguardo feedback Substituir a linha a seguir, pelo trecho mais abaixo. https://github.com/pedro-teixeira/correios/blob/bbfa63a26b687b8ba4ccbd38189174c541a78ec2/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php#L181

Código para isolar o cálculo de frete por serviço.

        // Início: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
        $dataServices = array('<Servicos>');
        foreach ($this->_postMethodsExplode as $method) {
            $this->_postMethods = $method;
            $returnTemp = $this->_getCorreiosReturn();
            if (!empty($returnTemp) && $returnTemp instanceof SimpleXMLElement) {
                $dataServices[] = $returnTemp->asXML();
            }
        }
        $dataServices[] = '</Servicos>';
        $this->_postMethods = implode(',', $this->_postMethodsExplode);
        $xml = new SimpleXMLElement(implode('', $dataServices));
        $correiosReturn = isset($xml->cServico) ? $xml->cServico : false;
        // Fim: Isolamento das consultas de cálculo de frete, para lojas sem contrato.

p.s. Código não testado! Utilize por sua conta em risco. Essa é uma solução paliativa. Contate seu desenvolvedor, para uma customização mais aprimorada.

Tento fazer essa alteração acima? Funcionou pra mim!

rafatriolo commented 5 years ago

@jefersonoj mto obrigado! salvou minha vida. Precisando só chamar!

scorninpc commented 5 years ago

Com certeza, qualquer código de contrato passa, nem precisa de senha

http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=999999&sDsSenha=&sCepOrigem=86430000&sCepDestino=16901011&nVlPeso=0.189&nCdFormato=1&nVlComprimento=24&nVlAltura=30&nVlLargura=11&sCdMaoPropria=n&nVlValorDeclarado=115,00&sCdAvisoRecebimento=n&nCdServico=04014,04510,40215&nVlDiametro=0&StrRetorno=xml

MagnoAlves commented 5 years ago

Como o amigo Loja5combr disse, basta colocar "99999999" nos campos conforme a figura abaixo que funciona.

Para quem estava perdido como eu, segue o caminho: MENU DO MAGENTO >SISTEMA>CONFIGURAÇÃO>FORMAS DE ENTREGA>CORREIOS - PEDRO TEIXEIRA. Nos campos "Código Administrativo dos Correios (Serviços Com Contrato)" e também "Senha Administrativa dos Correios (Serviços Com Contrato)" conforme figura abaixo basta colocar a sequencia de 9999999 e salvar.

Obrigado Loja5combr

image

loja5combr commented 5 years ago

Hehe foi bom o tempo que durou mas os Correios já esta validando o cod. administrativo, agora não passa mais com os dados fictícios.

rangelleithold commented 5 years ago

Aqui não funcionou mais o "99999999", e nem o trecho de código, ambos exibem a mesma mensagem, alguém com mais alguma solução?

rafaelpatro commented 5 years ago

@rangelleithold, postei essa solução há uma semana. Dá uma olhada... https://github.com/pedro-teixeira/correios/issues/447#issuecomment-535134963

rangelleithold commented 5 years ago

@rafaelpatro Acho que tinha feito algo errado antes, agora funcionou, obrigado pessoal!

castilio1 commented 5 years ago

Aqui nem substituindo conforme mencionado acima está dando certo :/

filipenunes75 commented 5 years ago

Bom dia ! Aqui , estava funcionando ! agora não está mais !! algum dica ?!?!?

davicassis commented 5 years ago

Aqui tbm parou de funcionar... pelo que vi desde ontem, pois não entrou nenhuma venda de ontem para hj

davicassis commented 5 years ago

Só esta funcionando para uma opção de serviço, igual a semana passada quando começou o erro

goncalocruz77 commented 5 years ago

Pessoal retirei os códigos dos campos na administração e fiz a alteração citada pelo @rafaelpatro https://github.com/pedro-teixeira/correios/issues/447#issuecomment-535134963

Está funcionando normalmente com PAC e SEDEX.

alexandresoaresramos commented 5 years ago

através deste post também resolvi meu beó

https://github.com/pedro-teixeira/correios/issues/447#issuecomment-535134963

rdvetromilla commented 5 years ago

@rafaelpatro seu código resolveu perfeitamente, obrigado.. Sugiro um pull-merge pois muitas lojas ainda utilizam os serviços sem contrato.

gilano commented 5 years ago

Eu fiz um If para só isolar quando nenhum contrato estiver definido.

Segue:

$nCdEmpresa = $this->getConfigData('cod_admin');
$sDsSenha = $this->getConfigData('senha_admin');
if (!empty($nCdEmpresa) && !empty($sDsSenha)) {
    $correiosReturn = $this->_getCorreiosReturn();
} else {
    // Início: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
    $dataServices = array('<Servicos>');
    foreach ($this->_postMethodsExplode as $method) {
        $this->_postMethods = $method;
        $returnTemp = $this->_getCorreiosReturn();
        if (!empty($returnTemp) && $returnTemp instanceof SimpleXMLElement) {
            $dataServices[] = $returnTemp->asXML();
        }
    }
    $dataServices[] = '</Servicos>';
    $this->_postMethods = implode(',', $this->_postMethodsExplode);
    $xml = new SimpleXMLElement(implode('', $dataServices));
    $correiosReturn = isset($xml->cServico) ? $xml->cServico : false;
    // Fim: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
}
lettitech commented 5 years ago

@rafaelpatro A rotina funciona muito bem, coloquei em 6 lojas que não tem contrato! Abraços

rafaelpatro commented 5 years ago

Obrigado pelo feedback! Parece que foi positivo. Se alguém se animar de fazer uma PR, será muito bem vinda. Estou meio sem tempo. Seria interessante colocar uma condição, como fez o @gilano aqui. Abraço! Até a próxima cagada dos Correios kkkk

rdvetromilla commented 5 years ago

Já fizeram um #449 mas está dando erro interno no Travis

emersonc commented 5 years ago

Segue sugestão... Aguardo feedback Substituir a linha a seguir, pelo trecho mais abaixo. https://github.com/pedro-teixeira/correios/blob/bbfa63a26b687b8ba4ccbd38189174c541a78ec2/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php#L181

Código para isolar o cálculo de frete por serviço.

        // Início: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
        $dataServices = array('<Servicos>');
        foreach ($this->_postMethodsExplode as $method) {
            $this->_postMethods = $method;
            $returnTemp = $this->_getCorreiosReturn();
            if (!empty($returnTemp) && $returnTemp instanceof SimpleXMLElement) {
                $dataServices[] = $returnTemp->asXML();
            }
        }
        $dataServices[] = '</Servicos>';
        $this->_postMethods = implode(',', $this->_postMethodsExplode);
        $xml = new SimpleXMLElement(implode('', $dataServices));
        $correiosReturn = isset($xml->cServico) ? $xml->cServico : false;
        // Fim: Isolamento das consultas de cálculo de frete, para lojas sem contrato.

p.s. Código não testado! Utilize por sua conta em risco. Essa é uma solução paliativa. Contate seu desenvolvedor, para uma customização mais aprimorada.

Solução deu certo aqui! Muito Obrigado....

leojavadev commented 5 years ago

Obrigado a todos, em especial a @rafaelpatro e @gilano Tá funcionando 100% pra mim também.

leoamf commented 5 years ago

Segue sugestão... Aguardo feedback Substituir a linha a seguir, pelo trecho mais abaixo. https://github.com/pedro-teixeira/correios/blob/bbfa63a26b687b8ba4ccbd38189174c541a78ec2/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php#L181

Código para isolar o cálculo de frete por serviço.

        // Início: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
        $dataServices = array('<Servicos>');
        foreach ($this->_postMethodsExplode as $method) {
            $this->_postMethods = $method;
            $returnTemp = $this->_getCorreiosReturn();
            if (!empty($returnTemp) && $returnTemp instanceof SimpleXMLElement) {
                $dataServices[] = $returnTemp->asXML();
            }
        }
        $dataServices[] = '</Servicos>';
        $this->_postMethods = implode(',', $this->_postMethodsExplode);
        $xml = new SimpleXMLElement(implode('', $dataServices));
        $correiosReturn = isset($xml->cServico) ? $xml->cServico : false;
        // Fim: Isolamento das consultas de cálculo de frete, para lojas sem contrato.

p.s. Código não testado! Utilize por sua conta em risco. Essa é uma solução paliativa. Contate seu desenvolvedor, para uma customização mais aprimorada.

Após compilar, isso resolveu o problema.

Moi250 commented 5 years ago

@jefersonoj Fiz aqui no meu e deu certo inclusive deixei um BKP na raiz caso volte a dar pau de novo

cacs200281 commented 5 years ago

Segue sugestão... Aguardo feedback Substituir a linha a seguir, pelo trecho mais abaixo. https://github.com/pedro-teixeira/correios/blob/bbfa63a26b687b8ba4ccbd38189174c541a78ec2/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php#L181

Código para isolar o cálculo de frete por serviço.

        // Início: Isolamento das consultas de cálculo de frete, para lojas sem contrato.
        $dataServices = array('<Servicos>');
        foreach ($this->_postMethodsExplode as $method) {
            $this->_postMethods = $method;
            $returnTemp = $this->_getCorreiosReturn();
            if (!empty($returnTemp) && $returnTemp instanceof SimpleXMLElement) {
                $dataServices[] = $returnTemp->asXML();
            }
        }
        $dataServices[] = '</Servicos>';
        $this->_postMethods = implode(',', $this->_postMethodsExplode);
        $xml = new SimpleXMLElement(implode('', $dataServices));
        $correiosReturn = isset($xml->cServico) ? $xml->cServico : false;
        // Fim: Isolamento das consultas de cálculo de frete, para lojas sem contrato.

p.s. Código não testado! Utilize por sua conta em risco. Essa é uma solução paliativa. Contate seu desenvolvedor, para uma customização mais aprimorada.

Aqui funcionou de boa, mto obg pela ajuda!

ehammo commented 5 years ago

Eu estou com esse mesmo problema no aplicativo dos correios.

ehammo commented 5 years ago

Screenshot_20191111-181428

pablodonagraca commented 4 years ago

Testei a solução do @rafaelpatro, substituindo a linha: $correiosReturn = $this->_getCorreiosReturn(); pelo código disponibilizado.

Porém não obtive sucesso, continuo com a mesma mensagem de "Máximo de 1 código de serviço por consulta". A loja não possui contrato com os Correios. Alguma luz?

rdvetromilla commented 4 years ago

@pablodonagraca Pode ser cache na sua loja. O código continua funcionando.

pablodonagraca commented 4 years ago

@rdvetromilla O cache da loja está desativado, eu testei em uma aba de navegação privada também.

rafaelpatro commented 4 years ago

@rdvetromilla, certifique que a compilação esteja desligada. E que aplicou a alteração no diretório Magento correto. Editado: Desculpe @jefersonoj, confundi e coloquei seu nome.

pablodonagraca commented 4 years ago

@rafaelpatro Após desligar a compilação a solução funcionou. Muito obrigado!

ThomasYasuhide commented 4 years ago

Galera, como informado pelo valdeir2000 no link https://forum.opencartbrasil.com.br/viewtopic.php?t=21171

parece que na documentação é necessário utilizar esse código e senha do contrato dos correios

Contrato com os Correios Código: 08082650 Senha: 564321

quando forem inserir o código, utilizar os campos informado pelo nosso amigo rafaelpatro.

Obrigado pela ajuda de todos!

MarcioGimenez commented 4 years ago

@ThomasYasuhide deu certo com esse código e senha. muito obrigado!