- 21 Dez 2012, 14:39
#32616
++ UPDATE
Havia um pequeno erro no fechamento de um dos comentários que impossibilitava a funcionalidade correta do módulo. O código abaixo já está corrigido.
==
Fala pessoal
Em resposta ao tópico (https://forum.opencartbrasil.com.br/ ... f=39&t=472), estou disponibilizando a minha correção. Nesta mudança, caso vc tenha configurado o módulo "Frete Grátis" para valores acima de R$ XXX,XX e o total do carrinho for igual ou superior ao valor, a opção Frete Gratis não irá aparecer e a palavra "Grátis" aparecerá no lugar do valor do PAC.
O prazo de entrega é o mesmo calculado pelo PAC e as demais formas de pagamento irão aparecer normalmente, junto com seus valores.
Exemplo:
OBS.:
* É necessário ter o módulo "Frete Gratis" habilitado e configurado. (dã!)
* É necessário ter o módulo Correios instalado e configurado (https://forum.opencartbrasil.com.br/ ... f=39&t=379)
* O frete grátis está configurado apenas para opção de "PAC - sem contrato", caso queira em outra forma de envio terá que alterar o código.
* As mudanças afetam a simulação de frete feita no carrinho e checkout final do pedido.
Como eu não tenho acesso a fazer upload do arquivo aqui no forúm, segue o código (tá comentado =D) do vqmod:
Havia um pequeno erro no fechamento de um dos comentários que impossibilitava a funcionalidade correta do módulo. O código abaixo já está corrigido.
==
Fala pessoal
Em resposta ao tópico (https://forum.opencartbrasil.com.br/ ... f=39&t=472), estou disponibilizando a minha correção. Nesta mudança, caso vc tenha configurado o módulo "Frete Grátis" para valores acima de R$ XXX,XX e o total do carrinho for igual ou superior ao valor, a opção Frete Gratis não irá aparecer e a palavra "Grátis" aparecerá no lugar do valor do PAC.
O prazo de entrega é o mesmo calculado pelo PAC e as demais formas de pagamento irão aparecer normalmente, junto com seus valores.
Exemplo:
OBS.:
* É necessário ter o módulo "Frete Gratis" habilitado e configurado. (dã!)
* É necessário ter o módulo Correios instalado e configurado (https://forum.opencartbrasil.com.br/ ... f=39&t=379)
* O frete grátis está configurado apenas para opção de "PAC - sem contrato", caso queira em outra forma de envio terá que alterar o código.
* As mudanças afetam a simulação de frete feita no carrinho e checkout final do pedido.
Como eu não tenho acesso a fazer upload do arquivo aqui no forúm, segue o código (tá comentado =D) do vqmod:
Código: Selecionar todos
Abraços!!!<modification>
<id>Frete Gratis via PAC</id>
<version>1.0.0</version>
<vqmver>2.1.5 </vqmver>
<author> Leandro Caetano - leandrocaetano.info - leandrojcaetano@gmail.com </author>
<!-- Alteração no checkout, na hora de finalizar o pedido-->
<file name="catalog/view/theme/*/template/checkout/shipping_method.tpl">
<operation error="skip">
<search position="replace" offset="22"><![CDATA[
<table class="radio">
]]></search>
<add><![CDATA[
<table class="radio">
<!-- Removido os titulos das formas de envio. Ex.: Frete Gratis, Correios, Retirada na Loja...-->
<!-- Definindo variaveis que irão receber os valores, caso haja frete gratis-->
<?php $gratis = null;
$gratis_valor = null;?>
<!-- Busca todos os métodos de envio -->
<?php foreach ($shipping_methods as $shipping_method) { ?>
<!-- Busca todos as formas de envio dentro dos métodos -->
<?php foreach ($shipping_method['quote'] as $quote) { ?>
<!-- Se houver frete gratis, configurado no módulo Frete Gratis -->
<?php if ($quote['code'] == "free.free") { ?>
<!-- Atribui à variavel o texto que aparecerá no lugar do valor do PAC -->
<?php $gratis = "Grátis"; ?>
<!-- Atribui à variavel o valor correspondente ao frete gratis (zero) -->
<?php $gratis_valor = $quote['code']; ?>
<!-- Verifica se é PAC (correios.41106), utilizando a codificação configurado no módulo "Correios" -->
<?php } else if ($quote['code'] == "correios.41106") { ?>
<tr class="highlight">
<!-- Se a variável "gratis_valor" for diferente de null, é pq ela foi alterada dentro da condição do frete gratis.
Logo, atribui-se o código de frete gratis (free.free), ao PAC. -->
<?php if ($gratis_valor != null) $quote['code'] = $gratis_valor; ?>
<!-- Verifica o código da forma de envio e printa o radiobutton na tela-->
<td> <?php if ($quote['code'] == $code || !$code) { ?>
<?php $code = $quote['code']; ?>
<input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" id="<?php echo $quote['code']; ?>" checked="checked" />
<?php } else { ?>
<input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" id="<?php echo $quote['code']; ?>" />
<?php } ?></td>
<td> <label for="<?php echo $quote['code']; ?>"><?php echo $quote['title']; ?></label></td>
<!-- Se a variável "gratis" for diferente de null, é pq ela foi alterada dentro da condição do frete gratis. Logo, atribui-se o texto do frete gratis (Grátis), ao PAC. -->
<?php if ($gratis != null) $quote['text'] = $gratis; ?>
<td style="text-align: right;"><label for="<?php echo $quote['code']; ?>"><?php echo $quote['text']; ?></label></td>
</tr>
<!-- Fim da condição PAC e segue para as demais formas de envio. -->
<?php } else { ?>
<tr class="highlight">
<!-- Verifica o código da forma de envio e printa o radiobutton na tela-->
<td> <?php if ($quote['code'] == $code || !$code) { ?>
<?php $code = $quote['code']; ?>
<input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" id="<?php echo $quote['code']; ?>" checked="checked" />
<?php } else { ?>
<input type="radio" name="shipping_method" value="<?php echo $quote['code']; ?>" id="<?php echo $quote['code']; ?>" />
<?php } ?></td>
<td> <label for="<?php echo $quote['code']; ?>"><?php echo $quote['title']; ?></label></td>
<td style="text-align: right;"><label for="<?php echo $quote['code']; ?>"><?php echo $quote['text']; ?></label></td>
</tr>
<?php } ?>
<?php } ?>
]]></add>
</operation>
</file>
<!-- Alteração no carrinho, na simulação do frete -->
<file name="catalog/view/theme/*/template/checkout/cart.tpl">
<operation error="skip">
<search position="replace" offset="26"><![CDATA[
html += ' <table class="radio">';
]]></search>
<add><![CDATA[
html += ' <table class="radio">';
<!-- Removido os titulos das formas de envio. Ex.: Frete Gratis, Correios, Retirada na Loja...-->
<!-- Definindo variaveis que irão receber os valores, caso haja frete gratis-->
var gratis = null;
var gratis_valor = null;
<!-- Busca todos os métodos de envio -->
for (i in json['shipping_method']) {
<!-- Busca todos as formas de envio dentro dos métodos-->
for (j in json['shipping_method'][i]['quote']) {
<!-- Se houver frete gratis, configurado no módulo Frete Gratis -->
if (json['shipping_method'][i]['quote'][j]['code'] == "free.free") {
<!-- Atribui à variavel o texto que aparecerá no lugar do valor do PAC -->
gratis = "Grátis";
<!-- Atribui à variavel o valor correspondente ao frete gratis (zero) -->
gratis_valor = json['shipping_method'][i]['quote'][j]['code'];
<!-- Verifica se é PAC, utilizando a codificação configurado no módulo "Correios" -->
} else if (json['shipping_method'][i]['quote'][j]['code'] == "correios.41106") {
<!-- Se a variável "gratis_valor" for diferente de null, é pq ela foi alterada dentro da condição do frete gratis. Logo, atribui-se o código de frete gratis (free.free), ao PAC. -->
if (gratis_valor != null) json['shipping_method'][i]['quote'][j]['code'] = gratis_valor;
html += '<tr class="highlight">';
<!-- Verifica o código da forma de envio e printa o radiobutton na tela-->
if (json['shipping_method'][i]['quote'][j]['code'] == '<?php echo $shipping_method; ?>') {
html += '<td><input type="radio" name="shipping_method" value="' + json['shipping_method'][i]['quote'][j]['code'] + '" id="' + json['shipping_method'][i]['quote'][j]['code'] + '" checked="checked" /></td>';
} else {
html += '<td><input type="radio" name="shipping_method" value="' + json['shipping_method'][i]['quote'][j]['code'] + '" id="' + json['shipping_method'][i]['quote'][j]['code'] + '" /></td>';
}
html += ' <td><label for="' + json['shipping_method'][i]['quote'][j]['code'] + '">' + json['shipping_method'][i]['quote'][j]['title'] + '</label></td>';
<!-- Se a variável "gratis" for diferente de null, é pq ela foi alterada dentro da condição do frete gratis. Logo, atribui-se o texto do frete gratis (Grátis), ao PAC. -->
if (gratis != null) json['shipping_method'][i]['quote'][j]['text'] = gratis;
html += ' <td style="text-align: right;"><label for="' + json['shipping_method'][i]['quote'][j]['code'] + '">' + json['shipping_method'][i]['quote'][j]['text'] + '</label></td>';
html += '</tr>';
<!-- Fim da condição PAC e segue para as demais formas de envio. -->
} else {
html += '<tr class="highlight">';
<!-- Verifica o código da forma de envio e printa o radiobutton na tela-->
if (json['shipping_method'][i]['quote'][j]['code'] == '<?php echo $shipping_method; ?>') {
html += '<td><input type="radio" name="shipping_method" value="' + json['shipping_method'][i]['quote'][j]['code'] + '" id="' + json['shipping_method'][i]['quote'][j]['code'] + '" checked="checked" /></td>';
} else {
html += '<td><input type="radio" name="shipping_method" value="' + json['shipping_method'][i]['quote'][j]['code'] + '" id="' + json['shipping_method'][i]['quote'][j]['code'] + '" /></td>';
}
html += ' <td><label for="' + json['shipping_method'][i]['quote'][j]['code'] + '">' + json['shipping_method'][i]['quote'][j]['title'] + '</label></td>';
html += ' <td style="text-align: right;"><label for="' + json['shipping_method'][i]['quote'][j]['code'] + '">' + json['shipping_method'][i]['quote'][j]['text'] + '</label></td>';
html += '</tr>';
}
}
}
]]></add>
</operation>
</file>
</modification>
Editado pela última vez por leandro.caetano em 02 Fev 2013, 10:49, em um total de 1 vez.
Leandro Caetano