From 6c8ee9c6280f57feb1e0726babec6cbed8946626 Mon Sep 17 00:00:00 2001 From: Pedro Teixeira Date: Sun, 3 Aug 2014 22:17:07 +0200 Subject: [PATCH] =?UTF-8?q?#9=20Revisa=CC=83o=20dos=20co=CC=81digos=20de?= =?UTF-8?q?=20erros=20dos=20Correios,=20agora=20com=20soft=20erros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 16 +- LICENSE | 2 +- README.md | 139 +++++++++------ .../PedroTeixeira/Correios/Helper/Data.php | 13 +- .../Correios/Model/Carrier/CorreiosMethod.php | 167 +++++------------- .../Correios/Model/Source/PostMethods.php | 13 +- .../Correios/Model/Source/WeightType.php | 23 ++- .../PedroTeixeira/Correios/etc/config.xml | 23 +-- .../PedroTeixeira/Correios/etc/system.xml | 32 ++-- .../install-4.0.0.php | 13 +- .../upgrade-4.0.0-4.1.0.php | 13 +- .../upgrade-4.1.0-4.2.0.php | 29 +-- app/etc/modules/PedroTeixeira_Correios.xml | 10 +- 13 files changed, 225 insertions(+), 268 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99cf3ec..998b88e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ -# 4.2.0 +# v4.3.0 + +### Feature + +- [#1](https://github.com/pedro-teixeira/correios/pull/1) Revisão do code style +- [#1](https://github.com/pedro-teixeira/correios/pull/1) Documentação em markdown +- [#9](https://github.com/pedro-teixeira/correios/pull/9) Novos códigos de erros dos Correios + +# v4.2.0 ### Bugfix @@ -12,8 +20,7 @@ - Possibilidade de limitar as dimensões dos produtos - Retirando "ponto" do CEP - -# 4.1.0 +# v4.1.0 ### Bugfix @@ -33,8 +40,7 @@ - Realiza apenas uma consulta ao webservice para todos os serviços - Sedex a cobrar mostra o valor do frete na mensagem e deixa como gratuito - -# 4.0.0 +# v4.0.0 ### Bugfix diff --git a/LICENSE b/LICENSE index cb754e2..1c23901 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2010-2014 Pedro Teixeira +Copyright (c) 2010-2014 Pedro Teixeira Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 0565bb5..9468942 100644 --- a/README.md +++ b/README.md @@ -47,27 +47,27 @@ Para acessar a configuração do módulo: Na aba "Correios - Pedro Teixeira" você tem todos os campos de configuração do módulo, os mais importantes são: -- *Habilitar* - Para "ligar" ou "desligar" o módulo -- *Nome do Meio de Entrega* - Nome do serviço de entrega, será mostrado para seu cliente -- *Serviços* - Quais serviços você deseja habilitar, para selecionar mais de um, segure a tecla "Ctrl" e clique nos serviços -- *Serviço para Entrega Gratuita* - Quando houver um desconto de frete grátis, esse serviço terá o valor zero -- *Formato do Peso* - Qual unidade de peso está sendo utilizado no cadastro do produto -- *Validar Dimensões dos Produtos* - Valida todos os produtos na regra de dimensões dos Correios -- *Exibir Prazo de Entrega* - Se será ou não mostrado o prazo de entrega para seu cliente -- *Código Administrativo dos Correios (Serviços Com Contrato)* - Se você possui contrato com os Correios, preencha nesse campo o número do contrato -- *Senha Administrativa dos Correios (Serviços Com Contrato)* - Senha do seu contrato, por padrão são os 8 primeiros dígitos do CNPJ -- *Altura Padrão (cm)* - Se não definido a altura individualmente em cada produto, será utilizado esse valor -- *Comprimento Padrão (cm)* - Se não definido o comprimento individualmente em cada produto, será utilizado esse valor -- *Largura Padrão (cm)* - Se não definido a largura individualmente em cada produto, será utilizado esse valor -- *Taxa de Postagem* - Valor que será adicionado ao valor do frete -- *Adicionar ao Prazo* dos Correios (dias) - Quantidade de dias que será adicionado ao prazo dos Correios +- **Habilitar** - Para "ligar" ou "desligar" o módulo +- **Nome do Meio de Entrega** - Nome do serviço de entrega, será mostrado para seu cliente +- **Serviços** - Quais serviços você deseja habilitar, para selecionar mais de um, segure a tecla "Ctrl" e clique nos serviços +- **Serviço para Entrega Gratuita** - Quando houver um desconto de frete grátis, esse serviço terá o valor zero +- **Formato do Peso** - Qual unidade de peso está sendo utilizado no cadastro do produto +- **Validar Dimensões dos Produtos** - Valida todos os produtos na regra de dimensões dos Correios +- **Exibir Prazo de Entrega** - Se será ou não mostrado o prazo de entrega para seu cliente +- **Código Administrativo dos Correios (Serviços Com Contrato)** - Se você possui contrato com os Correios, preencha nesse campo o número do contrato +- **Senha Administrativa dos Correios (Serviços Com Contrato)** - Senha do seu contrato, por padrão são os 8 primeiros dígitos do CNPJ +- **Altura Padrão (cm)** - Se não definido a altura individualmente em cada produto, será utilizado esse valor +- **Comprimento Padrão (cm)** - Se não definido o comprimento individualmente em cada produto, será utilizado esse valor +- **Largura Padrão (cm)** - Se não definido a largura individualmente em cada produto, será utilizado esse valor +- **Taxa de Postagem** - Valor que será adicionado ao valor do frete +- **Adicionar ao Prazo** dos Correios (dias) - Quantidade de dias que será adicionado ao prazo dos Correios ## Suporte -Por favor utilize as [issues do GitHub](https://github.com/pedro-teixeira/correios/issues) para reportar problemas e requisitar features. Antes verifique as issues abertas e envie sua pull request! +Por favor utilize as [issues do GitHub](https://github.com/pedro-teixeira/correios/issues) para reportar problemas e requisitar features. Por favor verifique as issues já criadas e envie sua pull request! -Para entrar em contato direto com o criador, vá para [http://www.pteixeira.com.br/](http://www.pteixeira.com.br/). +Para entrar em contato com o criador, vá para [http://pedroteixeira.io/](http://pedroteixeira.io/). ## FAQ @@ -116,87 +116,110 @@ A partir de agora sua loja salvará os erros no arquivo `var/log/system.log`. Sempre que o webservice dos Correios retornam um erro, o módulo irá mostrar a frase "Houve um erro inesperado, por favor entre em contato." seguida da mensagem e o código do erro retornado pelos Correios. -`1` Código de serviço inválido +Abaixo a lista complete de código de retornos: -`2` CEP de origem inválido +`0` Processamento com sucesso -`3` CEP de destino inválido +`-1` Código de serviço inválido -`4` Peso excedido +`-2` CEP de origem inválido -`5` O Valor Declarado não deve exceder R$ 10.000,00 +`-3` CEP de destino inválido -`6` Serviço indisponível para o trecho informado +`-4` Peso excedido -`7` O Valor Declarado é obrigatório para este serviço +`-5` O Valor Declarado não deve exceder R$ 10.000,00 -`8` Este serviço não aceita Mão Própria +`-6` Serviço indisponível para o trecho informado -`9` Este serviço não aceita Aviso de Recebimento +`-7` O Valor Declarado é obrigatório para este serviço -`10` Precificação indisponível para o trecho informado +`-8` Este serviço não aceita Mão Própria -`11` Para definição do preço deverão ser informados, também, o comprimento, a largura e altura do objeto em centímetros (cm) +`-9` Este serviço não aceita Aviso de Recebimento -`12` Comprimento inválido +`-10` Precificação indisponível para o trecho informado -`13` Largura inválida +`-11` Para definição do preço deverão ser informados, também, o comprimento, a largura e altura do objeto em centímetros (cm) -`14` Altura inválida +`-12` Comprimento inválido. -`15` O comprimento não pode ser maior que 60 cm +`-13` Largura inválida. -`16` A largura não pode ser maior que 60 cm +`-14` Altura inválida. -`17` A altura não pode ser maior que 60 cm +`-15` O comprimento não pode ser maior que 105 cm. -`18` A altura não pode ser inferior a 2 cm +`-16` A largura não pode ser maior que 105 cm. -`19` A altura não pode ser maior que o comprimento +`-17` A altura não pode ser maior que 105 cm. -`20` A largura não pode ser inferior a 5 cm +`-18` A altura não pode ser inferior a 2 cm. -`21` A largura não pode ser menor que 11cm, quando o comprimento for menor que 25cm +`-20` A largura não pode ser inferior a 11 cm. -`22` O comprimento não pode ser inferior a 16 cm +`-22` O comprimento não pode ser inferior a 16 cm. -`23` A soma resultante do comprimento + largura + altura não deve superar a 150 cm +`-23` A soma resultante do comprimento + largura + altura não deve superar a 200 cm. -`24` Comprimento inválido +`-24` Comprimento inválido. -`25` Diâmetro inválido +`-25` Diâmetro inválido -`26` Informe o comprimento +`-26` Informe o comprimento. -`27` Informe o diâmetro +`-27` Informe o diâmetro. -`28` O comprimento não pode ser maior que 90 cm +`-28` O comprimento não pode ser maior que 105 cm. -`29` O diâmetro não pode ser maior que 90 cm +`-29` O diâmetro não pode ser maior que 91 cm. -`30` O comprimento não pode ser inferior a 18 cm +`-30` O comprimento não pode ser inferior a 18 cm. -`31` O diâmetro não pode ser inferior a 5 cm +`-31` O diâmetro não pode ser inferior a 5 cm. -`32` A soma resultante do comprimento + o dobro do diâmetro não deve superar a 104 cm +`-32` A soma resultante do comprimento + o dobro do diâmetro não deve superar a 200 cm. -`33` Sistema temporariamente fora do ar. Favor tentar mais tarde +`-33` Sistema temporariamente fora do ar. Favor tentar mais tarde. -`34` Código Administrativo ou Senha inválidos +`-34` Código Administrativo ou Senha inválidos. -`35` Senha incorreta +`-35` Senha incorreta. -`36` Cliente não possui contrato vigente com os Correios +`-36` Cliente não possui contrato vigente com os Correios. -`37` Cliente não possui serviço ativo em seu contrato +`-37` Cliente não possui serviço ativo em seu contrato. -`38` Serviço indisponível para este código administrativo +`-38` Serviço indisponível para este código administrativo. -`888` Erro ao calcular a tarifa +`-39` Peso excedido para o formato envelope -`7` Serviço indisponível, tente mais tarde +`-40` Para definicao do preco deverao ser informados, tambem, o comprimento e a largura e altura do objeto em centimetros (cm). + +`-41` O comprimento nao pode ser maior que 60 cm. + +`-42` O comprimento nao pode ser inferior a 16 cm. + +`-43` A soma resultante do comprimento + largura nao deve superar a 120 cm. + +`-44` A largura nao pode ser inferior a 11 cm. + +`-45` A largura nao pode ser maior que 60 cm. + +`-888` Erro ao calcular a tarifa -`99` Outros erros diversos do .Net +`006` Localidade de origem não abrange o serviço informado +`007` Localidade de destino não abrange o serviço informado + +`008` Serviço indisponível para o trecho informado + +`009` CEP inicial pertencente a Área de Risco. + +`010` CEP final pertencente a Área de Risco. A entrega será realizada, temporariamente, na agência mais próxima do endereço do destinatário. + +`011` CEP inicial e final pertencentes a Área de Risco + +`7` Serviço indisponível, tente mais tarde -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/pedro-teixeira/correios/trend.png)](https://bitdeli.com/free "Bitdeli Badge") \ No newline at end of file +`99` Outros erros diversos do .Net \ No newline at end of file diff --git a/app/code/community/PedroTeixeira/Correios/Helper/Data.php b/app/code/community/PedroTeixeira/Correios/Helper/Data.php index a02c81d..f028d41 100644 --- a/app/code/community/PedroTeixeira/Correios/Helper/Data.php +++ b/app/code/community/PedroTeixeira/Correios/Helper/Data.php @@ -1,14 +1,15 @@ - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ class PedroTeixeira_Correios_Helper_Data extends Mage_Core_Helper_Abstract { -} \ No newline at end of file +} diff --git a/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php b/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php index a678c72..f6628dc 100644 --- a/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php +++ b/app/code/community/PedroTeixeira/Correios/Model/Carrier/CorreiosMethod.php @@ -1,19 +1,19 @@ - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ class PedroTeixeira_Correios_Model_Carrier_CorreiosMethod extends Mage_Shipping_Model_Carrier_Abstract implements Mage_Shipping_Model_Carrier_Interface { - /** * _code property * @@ -70,56 +70,48 @@ public function collectRates(Mage_Shipping_Model_Rate_Request $request) } // Check package value - if ($this->_packageValue < $this->getConfigData( - 'min_order_value' - ) || $this->_packageValue > $this->getConfigData('max_order_value') + if ($this->_packageValue < $this->getConfigData('min_order_value') + || $this->_packageValue > $this->getConfigData('max_order_value') ) { - // Value limits $this->_throwError('valueerror', 'Value limits', __LINE__); return $this->_result; } // Check ZIP Code - if (!preg_match("/^([0-9]{8})$/", $this->_toZip)) { - // Invalid Zip Code + if (!preg_match('/^([0-9]{8})$/', $this->_toZip)) { $this->_throwError('zipcodeerror', 'Invalid Zip Code', __LINE__); return $this->_result; } // Fix weight $weightCompare = $this->getConfigData('maxweight'); - if ($this->getConfigData('weight_type') == 'gr') { + if ($this->getConfigData('weight_type') == PedroTeixeira_Correios_Model_Source_WeightType::WEIGHT_GR) { $this->_packageWeight = number_format($this->_packageWeight / 1000, 2, '.', ''); $weightCompare = number_format($weightCompare / 1000, 2, '.', ''); } // Check weght if ($this->_packageWeight > $weightCompare) { - //Weight exceeded limit $this->_throwError('maxweighterror', 'Weight exceeded limit', __LINE__); return $this->_result; } // Check weight zero if ($this->_packageWeight <= 0) { - // Weight zero $this->_throwError('weightzeroerror', 'Weight zero', __LINE__); return $this->_result; } // Generate Volume Weight if ($this->_generateVolumeWeight() === false) { - // Dimension error $this->_throwError('dimensionerror', 'Dimension error', __LINE__); return $this->_result; } - // Get post methods $this->_postMethods = $this->getConfigData('postmethods'); $this->_postMethodsFixed = $this->_postMethods; - $this->_postMethodsExplode = explode(",", $this->getConfigData('postmethods')); + $this->_postMethodsExplode = explode(',', $this->getConfigData('postmethods')); - // Get quotes if ($this->_getQuotes()->getError()) { return $this->_result; } @@ -127,7 +119,6 @@ public function collectRates(Mage_Shipping_Model_Rate_Request $request) // Use descont codes $this->_updateFreeMethodQuote($request); - // Return rates / errors return $this->_result; } @@ -138,60 +129,40 @@ public function collectRates(Mage_Shipping_Model_Rate_Request $request) */ protected function _getQuotes() { - - $dieErrors = explode(",", $this->getConfigData('die_errors')); - - // Call Correios + $softErrors = explode(',', $this->getConfigData('soft_errors')); $correiosReturn = $this->_getCorreiosReturn(); if ($correiosReturn !== false) { - // Check if exist return from Correios $existReturn = false; foreach ($correiosReturn as $servicos) { - // Get Correios error - $errorId = $this->_cleanCorreiosError((string) $servicos->Erro); - - if ($errorId != 0) { - // Error, throw error message - if (in_array($errorId, $dieErrors)) { - $this->_throwError( - 'correioserror', - 'Correios Error: ' . (string) $servicos->MsgErro . ' [Cod. ' . $errorId . '] [Serv. ' . (string) $servicos->Codigo . ']', - __LINE__, - (string) $servicos->MsgErro . ' (Cod. ' . $errorId . ')' - ); - return $this->_result; - } else { - continue; - } + $errorId = (string) $servicos->Erro; + + if ($errorId != '0' && !in_array($errorId, $softErrors)) { + continue; } - $shippingPrice = floatval(str_replace(",", ".", (string) $servicos->Valor)); + $shippingPrice = floatval(str_replace(',', '.', (string) $servicos->Valor)); $shippingDelivery = (int) $servicos->PrazoEntrega; if ($shippingPrice <= 0) { continue; } - // Apend shipping $this->_apendShippingReturn((string) $servicos->Codigo, $shippingPrice, $shippingDelivery); $existReturn = true; } - // All services are ignored if ($existReturn === false) { $this->_throwError('urlerror', 'URL Error, all services return with error', __LINE__); return $this->_result; } } else { - // Error on HTTP Correios return $this->_result; } - // Success if ($this->_freeMethodRequest === true) { return $this->_freeMethodRequestResult; } else { @@ -199,7 +170,6 @@ protected function _getQuotes() } } - /** * Make initial checks and iniciate module variables * @@ -211,47 +181,38 @@ protected function _inicialCheck(Mage_Shipping_Model_Rate_Request $request) { if (!$this->getConfigFlag('active')) { - //Disabled - Mage::log('PedroTeixeira_Correios: Disabled'); + // Disabled + Mage::log('pedroteixeira_correios: Disabled'); return false; } - $origCountry = Mage::getStoreConfig('shipping/origin/country_id', $this->getStore()); $destCountry = $request->getDestCountryId(); - if ($origCountry != "BR" || $destCountry != "BR") { - //Out of delivery area - Mage::log('PedroTeixeira_Correios: Out of delivery area'); + if ($origCountry != 'BR' || $destCountry != 'BR') { + // Out of delivery area + Mage::log('pedroteixeira_correios: Out of delivery area'); return false; } - // ZIP Code $this->_fromZip = Mage::getStoreConfig('shipping/origin/postcode', $this->getStore()); $this->_toZip = $request->getDestPostcode(); - //Fix Zip Code + // Fix ZIP code $this->_fromZip = str_replace(array('-', '.'), '', trim($this->_fromZip)); $this->_toZip = str_replace(array('-', '.'), '', trim($this->_toZip)); - if (!preg_match("/^([0-9]{8})$/", $this->_fromZip)) { - //From zip code error - Mage::log('PedroTeixeira_Correios: From ZIP Code Error'); + if (!preg_match('/^([0-9]{8})$/', $this->_fromZip)) { + Mage::log('pedroteixeira_correios: From ZIP Code Error'); return false; } - // Result model $this->_result = Mage::getModel('shipping/rate_result'); - - // Value $this->_packageValue = $request->getBaseCurrency()->convert( $request->getPackageValue(), $request->getPackageCurrency() ); - // Weight - $this->_packageWeight = number_format($request->getPackageWeight(), 2, '.', ''); - - // Free method weight + $this->_packageWeight = number_format($request->getPackageWeight(), 2, '.', ''); $this->_freeMethodWeight = number_format($request->getFreeMethodWeight(), 2, '.', ''); } @@ -262,9 +223,8 @@ protected function _inicialCheck(Mage_Shipping_Model_Rate_Request $request) */ protected function _getCorreiosReturn() { - $filename = $this->getConfigData('url_ws_correios'); - $contratoCodes = explode(",", $this->getConfigData('contrato_codes')); + $contratoCodes = explode(',', $this->getConfigData('contrato_codes')); try { $client = new Zend_Http_Client($filename); @@ -277,9 +237,8 @@ protected function _getCorreiosReturn() $client->setParameterGet('StrRetorno', 'xml'); $client->setParameterGet('nCdServico', $this->_postMethods); - if ($this->_volumeWeight > $this->getConfigData( - 'volume_weight_min' - ) && $this->_volumeWeight > $this->_packageWeight + if ($this->_volumeWeight > $this->getConfigData('volume_weight_min') + && $this->_volumeWeight > $this->_packageWeight ) { $client->setParameterGet('nVlPeso', $this->_volumeWeight); } else { @@ -305,10 +264,8 @@ protected function _getCorreiosReturn() $client->setParameterGet('sCdAvisoRecebimento', 'N'); } - if ($this->getConfigData('valor_declarado') || in_array( - $this->getConfigData('acobrar_code'), - $this->_postMethodsExplode - ) + if ($this->getConfigData('valor_declarado') + || in_array($this->getConfigData('acobrar_code'), $this->_postMethodsExplode) ) { $client->setParameterGet('nVlValorDeclarado', number_format($this->_packageValue, 2, ',', '.')); } else { @@ -324,7 +281,6 @@ protected function _getCorreiosReturn() if ($contrato) { if ($this->getConfigData('cod_admin') == '' || $this->getConfigData('senha_admin') == '') { - // Need correios admin data $this->_throwError('coderror', 'Need correios admin data', __LINE__); return false; } else { @@ -335,29 +291,27 @@ protected function _getCorreiosReturn() $content = $client->request()->getBody(); - if ($content == "") { - throw new Exception("No XML returned [" . __LINE__ . "]"); + if ($content == '') { + throw new Exception('No XML returned [' . __LINE__ . ']'); } libxml_use_internal_errors(true); $sxe = simplexml_load_string($content); if (!$sxe) { - throw new Exception("Bad XML [" . __LINE__ . "]"); + throw new Exception('Bad XML [' . __LINE__ . ']'); } - // Load XML $xml = new SimpleXMLElement($content); if (count($xml->cServico) <= 0) { - throw new Exception("No tag cServico in Correios XML [" . __LINE__ . "]"); + throw new Exception('No tag cServico in Correios XML [' . __LINE__ . ']'); } return $xml->cServico; } catch (Exception $e) { - //URL Error $this->_throwError('urlerror', 'URL Error - ' . $e->getMessage(), __LINE__); return false; - }; + } } /** @@ -387,9 +341,7 @@ protected function _apendShippingReturn($shipping_method, $shippingPrice = 0, $c $shippingPrice = 0; } - // Show delivery days if ($this->getConfigFlag('prazo_entrega')) { - // Delivery days from WS if ($correiosDelivery > 0) { $method->setMethodTitle( sprintf( @@ -431,48 +383,38 @@ protected function _apendShippingReturn($shipping_method, $shippingPrice = 0, $c */ protected function _throwError($message, $log = null, $line = 'NO LINE', $custom = null) { - $this->_result = null; $this->_result = Mage::getModel('shipping/rate_result'); - // Get error model $error = Mage::getModel('shipping/rate_result_error'); $error->setCarrier($this->_code); $error->setCarrierTitle($this->getConfigData('title')); if (is_null($custom) || $this->getConfigData($message) == '') { - //Log error Mage::log($this->_code . ' [' . $line . ']: ' . $log); $error->setErrorMessage($this->getConfigData($message)); } else { - //Log error Mage::log($this->_code . ' [' . $line . ']: ' . $log); $error->setErrorMessage(sprintf($this->getConfigData($message), $custom)); } - // Apend error $this->_result->append($error); } /** * Generate Volume weight * + * @see http://www.correios.com.br/para-sua-empresa/comercio-eletronico/como-calcular-precos-e-prazos-de-entrega-em-sua-loja-on-line + * * @return bool */ protected function _generateVolumeWeight() { - //Create volume weight $pesoCubicoTotal = 0; - // Get all visible itens from quote $items = Mage::getModel('checkout/cart')->getQuote()->getAllVisibleItems(); foreach ($items as $item) { - - $itemAltura = 0; - $itemLargura = 0; - $itemComprimento = 0; - $_product = $item->getProduct(); if ($_product->getData('volume_altura') == '' || (int) $_product->getData('volume_altura') == 0) { @@ -494,23 +436,19 @@ protected function _generateVolumeWeight() } if ($this->getConfigFlag('check_dimensions')) { - if ( - $itemAltura > $this->getConfigData('volume_validation/altura_max') + if ($itemAltura > $this->getConfigData('volume_validation/altura_max') || $itemAltura < $this->getConfigData('volume_validation/altura_min') || $itemLargura > $this->getConfigData('volume_validation/largura_max') || $itemLargura < $this->getConfigData('volume_validation/largura_min') || $itemComprimento > $this->getConfigData('volume_validation/comprimento_max') || $itemComprimento < $this->getConfigData('volume_validation/comprimento_min') - || ($itemAltura + $itemLargura + $itemComprimento) > $this->getConfigData( - 'volume_validation/sum_max' - ) + || ($itemAltura + $itemLargura + $itemComprimento) > $this->getConfigData('volume_validation/sum_max') ) { return false; } } - $pesoCubicoTotal += (($itemAltura * $itemLargura * $itemComprimento) * $item->getQty( - )) / $this->getConfigData('coeficiente_volume'); + $pesoCubicoTotal += (($itemAltura * $itemLargura * $itemComprimento) * $item->getQty()) / $this->getConfigData('coeficiente_volume'); } $this->_volumeWeight = number_format($pesoCubicoTotal, 2, '.', ''); @@ -527,15 +465,13 @@ protected function _generateVolumeWeight() */ protected function _setFreeMethodRequest($freeMethod) { - // Set request as free method request $this->_freeMethodRequest = true; $this->_freeMethodRequestResult = Mage::getModel('shipping/rate_result'); $this->_postMethods = $freeMethod; $this->_postMethodsExplode = array($freeMethod); - // Tranform free shipping weight - if ($this->getConfigData('weight_type') == 'gr') { + if ($this->getConfigData('weight_type') == PedroTeixeira_Correios_Model_Source_WeightType::WEIGHT_GR) { $this->_freeMethodWeight = number_format($this->_freeMethodWeight / 1000, 2, '.', ''); } @@ -543,21 +479,6 @@ protected function _setFreeMethodRequest($freeMethod) $this->_pacWeight = $this->_freeMethodWeight; } - /** - * Clean correios error code, usualy with "-" before the code - * - * @param string $error - * - * @return int - */ - protected function _cleanCorreiosError($error) - { - $error = str_replace('-', '', $error); - $error = (int) $error; - return $error; - } - - /** * Check if current carrier offer support to tracking * @@ -585,6 +506,7 @@ public function getTrackingInfo($tracking) } elseif (is_string($result) && !empty($result)) { return $result; } + return false; } @@ -601,6 +523,7 @@ public function getTracking($trackings) foreach ((array) $trackings as $code) { $this->_getTracking($code); } + return $this->_result; } @@ -727,4 +650,4 @@ public function isZipCodeRequired() { return true; } -} \ No newline at end of file +} diff --git a/app/code/community/PedroTeixeira/Correios/Model/Source/PostMethods.php b/app/code/community/PedroTeixeira/Correios/Model/Source/PostMethods.php index 3eb9107..2e88874 100644 --- a/app/code/community/PedroTeixeira/Correios/Model/Source/PostMethods.php +++ b/app/code/community/PedroTeixeira/Correios/Model/Source/PostMethods.php @@ -1,13 +1,14 @@ - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ class PedroTeixeira_Correios_Model_Source_PostMethods { @@ -27,4 +28,4 @@ public function toOptionArray() array('value' => 40045, 'label' => Mage::helper('adminhtml')->__('Sedex a Cobrar (40045)')), ); } -} \ No newline at end of file +} diff --git a/app/code/community/PedroTeixeira/Correios/Model/Source/WeightType.php b/app/code/community/PedroTeixeira/Correios/Model/Source/WeightType.php index 6f47a27..11f1ce0 100644 --- a/app/code/community/PedroTeixeira/Correios/Model/Source/WeightType.php +++ b/app/code/community/PedroTeixeira/Correios/Model/Source/WeightType.php @@ -1,24 +1,31 @@ - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ class PedroTeixeira_Correios_Model_Source_WeightType { + /** + * Constants for weight + */ + const WEIGHT_GR = 'gr'; + const WEIGHT_KG = 'kg'; + /** * @return array */ public function toOptionArray() { return array( - array('value' => 'gr', 'label' => Mage::helper('adminhtml')->__('Gramas')), - array('value' => 'kg', 'label' => Mage::helper('adminhtml')->__('Kilos')), + array('value' => self::WEIGHT_GR, 'label' => Mage::helper('adminhtml')->__('Gramas')), + array('value' => self::WEIGHT_KG, 'label' => Mage::helper('adminhtml')->__('Kilos')), ); } -} \ No newline at end of file +} diff --git a/app/code/community/PedroTeixeira/Correios/etc/config.xml b/app/code/community/PedroTeixeira/Correios/etc/config.xml index fc26ca7..1fa92ea 100644 --- a/app/code/community/PedroTeixeira/Correios/etc/config.xml +++ b/app/code/community/PedroTeixeira/Correios/etc/config.xml @@ -4,11 +4,11 @@ * This source file is subject to the MIT License. * It is also available through http://opensource.org/licenses/MIT * - * @category PedroTeixeira - * @package PedroTeixeira_Correios - * @copyright Copyright (c) 2014 Pedro Teixeira (http://www.pteixeira.com.br) - * @author Pedro Teixeira - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ --> @@ -71,7 +71,7 @@ PedroTeixeira_Correios_Model_Carrier_CorreiosMethod Correios 40010 - 1,2,3,4,5,33,34,35,36,37,38,888,7,99 + 009,010,011 0 1 0 @@ -113,15 +113,10 @@ %s - Em média %d dia(s) Houve um erro inesperado, por favor entre em contato. %s - Valor de compra fora do permitido pelos Correios. Por favor entre em contato conosco. - + Valor de compra fora do permitido pelos Correios. Por favor entre em contato conosco. Por favor, corrija o CEP digitado, ele não está correto. - Peso dos produtos acima do permitido pelos Correios. Por favor entre em contato - conosco. - - Lojista: O peso do produto deverá ser maior que zero. Se você está usando a media de - peso como gramas, o peso mínimo é de 10 gramas. - + Peso dos produtos acima do permitido pelos Correios. Por favor entre em contato conosco. + Lojista: O peso do produto deverá ser maior que zero. Se você está usando a media de peso como gramas, o peso mínimo é de 10 gramas. Lojista: Para calcular esse serviço você precisa ter contrato com os Correios. Esse método de envio está fora do ar. Por favor entre em contato conosco. Dimensões dos produtos fora do permitido pelos Correios. diff --git a/app/code/community/PedroTeixeira/Correios/etc/system.xml b/app/code/community/PedroTeixeira/Correios/etc/system.xml index 023bf08..c159788 100644 --- a/app/code/community/PedroTeixeira/Correios/etc/system.xml +++ b/app/code/community/PedroTeixeira/Correios/etc/system.xml @@ -4,11 +4,11 @@ * This source file is subject to the MIT License. * It is also available through http://opensource.org/licenses/MIT * - * @category PedroTeixeira - * @package PedroTeixeira_Correios - * @copyright Copyright (c) 2014 Pedro Teixeira (http://www.pteixeira.com.br) - * @author Pedro Teixeira - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ --> @@ -25,21 +25,15 @@ +

Informações Importantes

+

Para reportar bugs ou sugerir melhorias, por favor use o GitHub.

+

Lembre-se de configurar as "Definições de Envio" no menu ao lado esquerdo.

+

Para serviços que tenham em seu nome "Com Contrato", é necessário configurar o "Código Administrativo dos Correios" e "Senha Administrativa dos Correios".

+

Para utilizar as regras de desconto de frete, você deve configurar o "Serviço para entrega gratuita", lembre-se de habilitar o serviço.

+

Pedro Teixeira [pedroteixeira.io ]

+
+

- Informações Importantes

- Você pode tirar dúvidas ou sugerir melhorias do módulo através do site - www.pteixeira.com.br.

- Na versão 4.2.0 o módulo de cálculo de frete foi atualizado para utilizar a nova - lógica de cálculo de peso volumétrico para todos os serviços, teve sua licença - alterada para New BSD, - possibilidade de utilizar limites de dimensões dos Correios, retirada da URL de cálculo da - Locaweb além de outras correções e melhorias.

- Lembre-se de configurar as "Definições de Envio" no menu ao lado esquerdo.

- Para serviços que tenham em seu nome "Com Contrato", é necessário configurar o "Código - Administrativo dos Correios" e "Senha Administrativa dos Correios".

- Para utilizar as regras de desconto de frete, você deve configurar o "Serviço para entrega gratuita", - lembre-se de habilitar o serviço.

-


]]>
diff --git a/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/install-4.0.0.php b/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/install-4.0.0.php index 6fbdca7..d65d960 100644 --- a/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/install-4.0.0.php +++ b/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/install-4.0.0.php @@ -1,13 +1,14 @@ - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ /** @var $installer Mage_Core_Model_Resource_Setup */ @@ -59,4 +60,4 @@ $setup->addAttribute('catalog_product', $codigo, $config); -$installer->endSetup(); \ No newline at end of file +$installer->endSetup(); diff --git a/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.0.0-4.1.0.php b/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.0.0-4.1.0.php index dbfaa7c..748c430 100644 --- a/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.0.0-4.1.0.php +++ b/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.0.0-4.1.0.php @@ -1,13 +1,14 @@ - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ /** @var $installer Mage_Core_Model_Resource_Setup */ @@ -21,4 +22,4 @@ $installer->deleteConfigData('carriers/pedroteixeira_correios/valueerror'); $installer->deleteConfigData('carriers/pedroteixeira_correios/showmethod'); -$installer->endSetup(); \ No newline at end of file +$installer->endSetup(); diff --git a/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.1.0-4.2.0.php b/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.1.0-4.2.0.php index 33f9cd9..0f00491 100644 --- a/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.1.0-4.2.0.php +++ b/app/code/community/PedroTeixeira/Correios/sql/pedroteixeira_correios_setup/upgrade-4.1.0-4.2.0.php @@ -1,13 +1,14 @@ - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ /** @var $installer Mage_Core_Model_Resource_Setup */ @@ -17,40 +18,44 @@ $installer->deleteConfigData('carriers/pedroteixeira_correios/urlmethod'); -$sql = "select value from " . $installer->getTable( - 'core/config_data' - ) . " where path='carriers/pedroteixeira_correios/postmethods'"; +$sql = 'select value from ' . $installer->getTable('core/config_data') . ' where path="carriers/pedroteixeira_correios/postmethods"'; + $methods = explode(',', $connection->fetchOne($sql)); + foreach ($methods as $key => $method) { if ($method == '41025') { unset($methods[$key]); } } + if (count($methods) <= 0) { $methods[] = '41106'; } + $installer->setConfigData('carriers/pedroteixeira_correios/postmethods', implode(',', $methods)); -$sql = "select value from " . $installer->getTable( - 'core/config_data' - ) . " where path='carriers/pedroteixeira_correios/free_method'"; +$sql = 'select value from ' . $installer->getTable('core/config_data') . ' where path="carriers/pedroteixeira_correios/free_method"'; + if ($connection->fetchOne($sql) == '41025') { $installer->setConfigData('carriers/pedroteixeira_correios/free_method', '41106'); } $setup = new Mage_Eav_Model_Entity_Setup('core_setup'); + $setup->updateAttribute( 'catalog_product', 'volume_comprimento', 'note', 'Comprimento da embalagem do produto (Para cálculo dos Correios)' ); + $setup->updateAttribute( 'catalog_product', 'volume_altura', 'note', 'Altura da embalagem do produto (Para cálculo dos Correios)' ); + $setup->updateAttribute( 'catalog_product', 'volume_largura', @@ -58,4 +63,4 @@ 'Largura da embalagem do produto (Para cálculo dos Correios)' ); -$installer->endSetup(); \ No newline at end of file +$installer->endSetup(); diff --git a/app/etc/modules/PedroTeixeira_Correios.xml b/app/etc/modules/PedroTeixeira_Correios.xml index 53fe531..9149401 100644 --- a/app/etc/modules/PedroTeixeira_Correios.xml +++ b/app/etc/modules/PedroTeixeira_Correios.xml @@ -4,11 +4,11 @@ * This source file is subject to the MIT License. * It is also available through http://opensource.org/licenses/MIT * - * @category PedroTeixeira - * @package PedroTeixeira_Correios - * @copyright Copyright (c) 2014 Pedro Teixeira (http://www.pteixeira.com.br) - * @author Pedro Teixeira - * @license http://opensource.org/licenses/MIT + * @category PedroTeixeira + * @package PedroTeixeira_Correios + * @copyright Copyright (c) 2014 Pedro Teixeira (http://pedroteixeira.io) + * @author Pedro Teixeira + * @license http://opensource.org/licenses/MIT */ -->