flyingluscas / correios-php

Uma maneira fácil de interagir com as principais funcionalidades dos Correios.
MIT License
140 stars 46 forks source link

CEPs em áreas de risco #41

Open brasofilo opened 3 years ago

brasofilo commented 3 years ago

Pelo que testei, não dá pra saber se um CEP é de área de risco ou não... Então, esta issue seria uma Feature Request

Este aqui, p.ex., é um desses CEPs: 21862250
A gente pode consultar as áreas de risco aqui: http://www2.correios.com.br/sistemas/precosPrazos/restricaoentrega/resultado.cfm

Isso já é um problema antigo. 2014: https://extra.globo.com/economia/correios-omite-restricao-de-entrega-em-areas-de-risco-13750185.html 2018: https://www.ecommercebrasil.com.br/noticias/quase-metade-ceps-rio-de-janeiro-restricao-entrega/

Encontrei um plugin pra Magento que consegue reconhecer esses CEPs: https://github.com/pedro-teixeira/correios/issues/29

E pelo que localizei no plugin, os soft_errors são os códigos de erro que indicam isso.

Config.xml

<postmethods>40010</postmethods>
<hard_errors>-3,-6,-10,-33,-888,7,99</hard_errors>
<soft_errors>009,010,011</soft_errors>

CorreiosMethod.php

    protected function _getSoftErrorMsg($error)
    {
        $msg = "";
        if ($this->getConfigFlag('show_soft_errors')) {
            $softErrorList = explode(',', $this->getConfigData('soft_errors'));
            $isSoftError = in_array($error, $softErrorList);
            if ($isSoftError) {
                $msg.= " / Área de Risco";
            }
        }
        return $msg;
    }

[edit] Acabo de inspecionar a resposta da consulta SIGEP no seu código e não vejo nenhuma mensagem de "soft error"...

zhiru commented 2 years ago

As mensagens são informados pelo próprio correios, no codigo deles no arquivo app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php linha 189 ele recebe o id (soft error) e a mensagem de erro, logo abaixo ele verificar se esse id está nessa lista de soft errors e pula esse endereço!