Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v3.x.
#74561
Boa tarde pessoal!
Seguinte, estou desempregado há um tempo e estou montando uma loja online para um pequeno negócio de camisas que eu estou começando, porém queria oferecer frete grátis para a minha cidade e a cidade vizinha (São Vicente e Santos), pois posso entregar a mercadoria de bicicleta.

Pelas regiões geográficas só dá pra configurar por estados. Sei que existem módulos pagos para realizar o serviço e que nem são tão caros (coisa de U$ 20,00) mas no momento estou impossibilitado de adquiri-los.

Gostaria de saber se existe alguma possibilidade de configurar essa parte das regiões geográficas, mesmo que seja um pouco complicada.

Tenho pouco conhecimento de mySql e php, mas posso ir fuçando caso alguém possa me dar uma direção. Até mesmo se for o caso de tentar fazer pegar um módulo de versões anteriores com alguns tweaks por causa da compatibilidade.

Minha versão do OpenCart é a 3.0.2. (Só depois de montar a loja toda eu percebi que provavelmente existiam módulos que faziam esse serviço em versões anteriores... rsrsrs :lol: ).

Obrigado!
#74566
Não é o mais recomendado, mas...

Você habilitar o módulo de frete grátis e trabalhar o código abaixo no arquivo catalog/model/extension/shipping/free.php
Código: Selecionar todos
$cep = preg_replace("/[^\d]/", "", $address['postcode']);

if (
    ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
    || ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
) {
    $status = true;
}
veteranodf, Platiplus gostou disso
#74572
Apenas um complemento no código do @valdeir2000;

O código abaixo deve ficar antes de $method_data = array();
Código: Selecionar todos
$cep = preg_replace("/[^\d]/", "", $address['postcode']);

if (
    ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
    || ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
) {
    $status = true;
}
else{
    $status = false;
}
valdeir2000, Platiplus gostou disso
#74627
Platiplus escreveu: 03 Ago 2017, 19:32 Alterei o arquivo conforme instruído mas mesmo assim não funcionou... A modalidade de frete grátis aparece inclusive para CEPs de outras cidades.

Seguem imagens.

http://imgur.com/WG9WUHA
http://imgur.com/4M25Ils
http://imgur.com/R1DiwH4

Tentei inserir o CEP com e sem o hífen. Em ambos os casos ainda dá errado.
Adicione o código que o @veteranodf corrigiu e adicione sem o hífen.
Código: Selecionar todos
$cep = preg_replace("/[^\d]/", "", $address['postcode']);

if (
    ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
    || ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
) {
    $status = true;
} else{
    $status = false;
}
Platiplus, filipeangelo gostou disso
#74635
Muito Obrigado!!! Agora está funcionando!

Só uma dúvida, as duas cidades que receberão frete grátis são SANTOS e SÃO VICENTE, porém, as faixas de cep inicial e final entre essas duas cidades também incluem todos os ceps de Bertioga.

Existe alguma tratativa que possa ser feita nesse caso? com os Ifs e Elses?

CEP 11000-000 ao 11230-000:
Faixa de CEP's da Cidade Santos

CEP 11250-000 ao 11250-000:
Faixa de CEP's da Cidade Bertioga

CEP 11300-000 ao 11399-999:
Faixa de CEP's da Cidade Sao Vicente
#74637
Platiplus escreveu: 04 Ago 2017, 15:40 Muito Obrigado!!! Agora está funcionando!

Só uma dúvida, as duas cidades que receberão frete grátis são SANTOS e SÃO VICENTE, porém, as faixas de cep inicial e final entre essas duas cidades também incluem todos os ceps de Bertioga.

Existe alguma tratativa que possa ser feita nesse caso? com os Ifs e Elses?

CEP 11000-000 ao 11230-000:
Faixa de CEP's da Cidade Santos

CEP 11250-000 ao 11250-000:
Faixa de CEP's da Cidade Bertioga

CEP 11300-000 ao 11399-999:
Faixa de CEP's da Cidade Sao Vicente
É possível sim.
Código: Selecionar todos
$cep = preg_replace("/[^\d]/", "", $address['postcode']);

if (
    ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
    || ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") 
    || ( $cep >= "CEP-INICIAL" && $cep <= "CEP-FINAL") // Caso queira adicionar mais CEPS, basta duplicar essa linha.
) {
    $status = true;
} else{
    $status = false;
}
Platiplus, filipeangelo gostou disso