Frete Grátis por Faixa de CEP - Módulo Correios v4.3
Enviado: 16 Fev 2016, 11:29
Primeiramente gostaria de falar que esta nova opção de adicionar valor para frete grátis no módulo dos Correios ficou muito boa, muito clientes meus já ficaram confusos com a opção de frete grátis junto com os Correios. No entanto surgiu uma pequena necessidade para mim:
Na minha loja a partir de R$199 eu ofereço Sedex grátis apenas para o estado de São Paulo e PAC para os demais estados, pra isso fiz uma pequena modificação no código do módulo (versão 4.3). Pra quem interessar:
Modificações no arquivo catalog\model\shipping\correios.php
Onde era:
Se não for Sedex, segue normalmente (else).
Acredito que seja possível adaptar este exemplo para diversas situações.
Na minha loja a partir de R$199 eu ofereço Sedex grátis apenas para o estado de São Paulo e PAC para os demais estados, pra isso fiz uma pequena modificação no código do módulo (versão 4.3). Pra quem interessar:
Modificações no arquivo catalog\model\shipping\correios.php
Onde era:
Código: Selecionar todos
Ficou:// frete grátis
if(trim($this->config->get('correios_total_' . $codigo)) != "" && $total_compra >= $this->config->get('correios_total_' . $codigo)) {
// zera o valor
$this->quote_data[$codigo]['cost'] = 0;
// novo texto
$this->quote_data[$codigo]['text'] = $this->language->get('text_free');
}Código: Selecionar todos
Se for Sedex, o código verifica se o cep está dentro da faixa de SP (de 01000-000 a 19999-999), se estiver troca para grátis, se estiver fora da faixa aplica o preço normal para o Sedex, habilitando grátis apenas para o PAC.// frete grátis
if(trim($this->config->get('correios_total_' . $codigo)) != "" && $total_compra >= $this->config->get('correios_total_' . $codigo)) {
if($codigo == $this->correios['SEDEX']){
$cep_destino_eu_uso = preg_replace ("/[^0-9]/", '', $address['postcode']);
if(($cep_destino_eu_uso>=01000000)&&($cep_destino_eu_uso<=19999999)){
// zera o valor
$this->quote_data[$codigo]['cost'] = 0;
// novo texto
$this->quote_data[$codigo]['text'] = $this->language->get('text_free');
}
}
else{
// zera o valor
$this->quote_data[$codigo]['cost'] = 0;
// novo texto
$this->quote_data[$codigo]['text'] = $this->language->get('text_free');
}
}Se não for Sedex, segue normalmente (else).
Acredito que seja possível adaptar este exemplo para diversas situações.