Criar módulo para Magento – Parcelas no produto configurável
Basicamente um módulo para Magento é constituído por um conjunto de arquivos com o propósito de estender ou sobrescrever o comportamento padrão do sistema. Vale lembrar que grande parte do sistema para criar loja virtual denominado Magento E-Commerce, é formado por módulos nativos que estão localizados dentro de: app/code/core/Mage.
Um produto configurável permite que suas variações específicas sejam selecionadas pelos consumidores e que cada variação tenha seu próprio preço adicional (exemplo: sabores, cores, tamanhos, modelos e afins).
O Magento altera o preço dos produtos configuráveis sem recarregar a página, sendo assim, o módulo para parcelamento dos produtos configuráveis seguirá o mesmo padrão para que funcione corretamente.
Definindo os diretórios do módulo magento
A partir deste ponto é muito importante que você preste atenção na diferença entre letras maiúsculas e minúsculas. Caso alguma ocorrência seja alterada por engano, o módulo não vai funcionar.
Acesse o diretório app/code/local (se local não existir em seu sistema você deverá criá-lo), pois, é uma das áreas que vamos criar novos diretórios e inserir arquivos no decorrer deste artigo.
Utilizaremos Newer7 como Namespace e o nome do módulo será Parcelamento. Consequentemente você deverá criar a seguinte estrutura de diretórios:
app/code/local/Newer7/Parcelamento/controllers
app/code/local/Newer7/Parcelamento/etc
app/code/local/Newer7/Parcelamento/Helper
1) Após a criação dos diretórios crie um arquivo chamado config.xml e coloque no diretório etc (app/code/local/Newer7/Parcelamento/etc/config.xml). O arquivo deverá ser composto pelo seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Newer7_Parcelamento>
<version>0.1.0</version>
</Newer7_Parcelamento>
</modules>
<frontend>
<routers>
<parcelamento>
<use>standard</use>
<args>
<module>Newer7_Parcelamento</module>
<frontName>parcelamento</frontName>
</args>
</parcelamento>
</routers>
<layout>
<updates>
<parcelamento>
<file>newer7_parcelamento.xml</file>
</parcelamento>
</updates>
</layout>
</frontend>
<global>
<helpers>
<parcelamento>
<class>Newer7_Parcelamento_Helper</class>
</parcelamento>
</helpers>
</global>
<adminhtml>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<parcelamento>
<title>Newer7 Parcelamento</title>
<sort_order>70</sort_order>
</parcelamento>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
<default>
<parcelamento>
<parcelamento_general>
<enabled>0</enabled>
<parcelamento_jquery>1</parcelamento_jquery>
<parcelamento_xparcelas>0</parcelamento_xparcelas>
<parcelamento_desconto>0</parcelamento_desconto>
</parcelamento_general>
</parcelamento>
</default>
</config>
Linha 5: <version>0.1.0</version> Versão do módulo.
Linha 8: <frontend> Refere-se a área frontal da loja virtual. A parte em que os clientes tem acesso.
Linha 9: <routers> Inclui informações de configuração sobre roteadores e sobre os objetos do roteador que são responsáveis pelo encaminhamento.
Linha 11: <use>standard</use> Dizemos ao sistema que essa rota virá pelo frontend.
Linha 13: <module>Newer7_Parcelamento</module> É o nome completo do módulo incluindo seu package/namespace. Isso será usado pelo sistema para localizar os arquivos do controlador.
Linha 14: <frontName>parcelamento</frontName> Valor que definimos para informar ao Magento sobre a rota que será usada na URL.
Linha 21: <file>newer7_parcelamento.xml</file> Definimos o arquivo de atualização de layout do módulo (em breve vamos criar e inserir no sistema).
Linha 34: <acl> Define a entrada ACL (Access Control List).
Linha 43: <title>Newer7 Parcelamento</title> Título exibido na área permissões de usuários (lista de recursos ACL) dentro do painel administrativo do Magento.
Linha 57: <parcelamento_general> Nome do grupo.
Linhas 58, 59, 60 e 61: São campos que serão criados no arquivo system.xml, recebendo seus valores iniciais através do arquivo config.xml (em nosso caso os valores são 0, 1, 0 e 0).
2) Crie um arquivo chamado system.xml e coloque no diretório etc (app/code/local/Newer7/Parcelamento/etc/system.xml). O arquivo deverá ser composto pelo seguinte conteúdo:
<?xml version="1.0"?>
<config>
<tabs>
<parcelamento translate="label" module="parcelamento">
<label>Newer7</label>
<sort_order>110</sort_order>
</parcelamento>
</tabs>
<sections>
<parcelamento translate="label" module="parcelamento">
<class>separator-top</class>
<label>Parcelamento</label>
<tab>parcelamento</tab>
<sort_order>100</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<parcelamento_general translate="label">
<label>Configurações</label>
<frontend_type>text</frontend_type>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<enabled translate="label">
<label>Ativar</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>1</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Selecione para ativar/desativar o módulo.</comment>
</enabled>
<parcelamento_jquery translate="label">
<label>Habilitar jQuery</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_enabledisable</source_model>
<sort_order>2</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Desabilite se estiver sendo carregado por outro módulo.</comment>
</parcelamento_jquery>
<parcelamento_xparcelas translate="label">
<label>Quantidade de parcelas</label>
<frontend_type>text</frontend_type>
<sort_order>3</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Digite a quantidade máxima de parcelas.</comment>
</parcelamento_xparcelas>
<parcelamento_desconto translate="label">
<label>Desconto à vista</label>
<frontend_type>text</frontend_type>
<sort_order>4</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Digite o valor para o desconto à vista.</comment>
</parcelamento_desconto>
</fields>
</parcelamento_general>
</groups>
</parcelamento>
</sections>
</config>
Linha 5: <label>Newer7</label> Rótulo que será utilizado para exibição na guia do menu lateral.
Linha 6: <sort_order>110</sort_order> Indica o posicionamento em relação as outras guias.
Linha 12: <label>Parcelamento</label> Rótulo da seção exibido na guia do menu lateral e no lado direito como título da página.
Linha 13: <tab>parcelamento</tab> Nome da posição na lista de seções.
Linha 14: <sort_order>100</sort_order> Indica o posicionamento em relação as outras seções.
Linhas 23, 24 e 25: <show_in_default>, <show_in_website>, <show_in_store> Valores 1 ou 0 (exibir ou ocultar), destina-se aos diferentes escopos selecionáveis no painel administrativo do Magento. Se for omitido receberá o valor padrão 0 (ocultar).
Linha 57: <label>Desconto à vista</label> Nome do campo.
Linha 58: <frontend_type>text</frontend_type> Determina o tipo de campo que será usado para coletar o valor da configuração. Neste caso “text”.
Linha 59: <sort_order>4</sort_order> Indica o posicionamento em relação aos outros campos.
Linha 63: <comment>Digite o valor para o desconto à vista.</comment> Comentário referente ao campo.
3) Chegou a hora de avisar ao Magento que o nosso módulo existe e está ativo, para isso crie um arquivo chamado Newer7_Parcelamento.xml e coloque dentro do diretório de módulos do sistema app/etc/modules. O arquivo deverá ser composto pelo seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Newer7_Parcelamento>
<active>true</active>
<codePool>local</codePool>
</Newer7_Parcelamento>
</modules>
</config>
Linha 5: <active>true</active> Informamos que o módulo está ativo.
Linha 6: <codePool>local</codePool> Informamos o diretório que o módulo se encontra.
4) Crie um arquivo chamado Data.php e coloque no diretório Helper (app/code/local/Newer7/Parcelamento/Helper/Data.php). O arquivo deverá ser composto pelo seguinte conteúdo:
<?php
class Newer7_Parcelamento_Helper_Data extends Mage_Core_Helper_Abstract
{
}
5) Crie um arquivo chamado IndexController.php e coloque no diretório controllers (app/code/local/Newer7/Parcelamento/controllers/IndexController.php). O arquivo deverá ser composto pelo seguinte conteúdo:
<?php
class Newer7_Parcelamento_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$preco_inicial = $this->getRequest()->get('preco');
$preco = str_replace('R$', '', $preco_inicial);
$preco = str_replace('.', '', $preco);
$preco = str_replace(',', '.', $preco);
$quantidade_parcelas = Mage::getStoreConfig('parcelamento/parcelamento_general/parcelamento_xparcelas');
$desconto = Mage::getStoreConfig('parcelamento/parcelamento_general/parcelamento_desconto');
$valor_parcela = number_format($preco/$quantidade_parcelas,2,',','.');
$preco_avista = ($preco/100)*(100-$desconto);
echo 'R$ '.number_format($preco,2,',','.').' em até '.$quantidade_parcelas.'x de R$ '.$valor_parcela.' no cartão <br/>R$ '.number_format($preco_avista,2,',','.').' à vista com '.$desconto.'% de desconto';
}
}
?>
Esse arquivo é responsável por receber, tratar e devolver os valores para a página do produto configurável (enviado via post quando uma opção do select for selecionada). Basicamente o que ele faz é receber o preço, resgatar os valores dos campos Quantidade de parcelas e Desconto à vista, efetuar os cálculos necessários, formatar os valores e devolver para a página do produto configurável.
Aviso: Os campos Quantidade de parcelas e Desconto à vista devem ser preenchidos na área administrativa do módulo.
6) Acesse app/design/frontend/base/default/template/ e crie um diretório chamado newer7_parcelamento. Crie também um arquivo chamado valores.phtml e coloque dentro do diretório newer7_parcelamento (app/design/frontend/base/default/template/newer7_parcelamento/valores.phtml). O arquivo valores.phtml deverá ser composto pelo seguinte conteúdo:
<?php
$_product = $this->getProduct();
$preco = $_product->getPrice();
$quantidade_parcelas = Mage::getStoreConfig('parcelamento/parcelamento_general/parcelamento_xparcelas');
$desconto = Mage::getStoreConfig('parcelamento/parcelamento_general/parcelamento_desconto');
$valor_parcela = number_format($preco/$quantidade_parcelas,2,',','.');
$preco_avista = ($preco/100)*(100-$desconto);
echo '<div id="parcelamento">R$ '.number_format($preco,2,',','.').' em até '.$quantidade_parcelas.'x de R$ '.$valor_parcela.' no cartão <br/>R$ '.number_format($preco_avista,2,',','.').' à vista com '.$desconto.'% de desconto</div>';
?>
<script type="text/javascript">
//<![CDATA[
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j(".input-box select").change(function(){
$j('#parcelamento').html('<img src="<?php echo $this->getSkinUrl('images/newer7_parcelamento/ajax-loader.gif'); ?>"> Carregando');
$j.ajax({
url: '<?php echo $this->getUrl("parcelamento")?>',
type:"POST",
data:({"preco": $j('.price-box span span.price').html()}),
success: function(data) {
$j('#parcelamento').html(data);
}
})
})
})
//]]>
</script>
Se você está acompanhando este artigo desde o início já deve ter percebido que a biblioteca jQuery será necessária para o funcionamento do módulo, e por isso vamos inseri-la.
Acesse: js e crie um diretório chamado newer7_parcelamento. Após efetuar o download, renomeie o arquivo para jquery-newer7.js e coloque dentro do diretório newer7_parcelamento.
Lembre-se de inserir jQuery.noConflict(); no final de sua biblioteca.
Aviso: Se você fizer exatamente como foi explicado não precisará se preocupar com conflitos entre Prototype / jQuery e, caso seu tema ou módulo(s) já estiverem utilizando jQuery, lembre-se que em system.xml criamos um campo exclusivo para habilitar ou desabilitar a biblioteca do módulo.
Sobre o arquivo valores.phtml…
Será chamado na página de visão do produto e é responsável pelas seguintes tarefas.
- Calcular e exibir o parcelamento quando a página for carregada.
- Iniciar a requisição AJAX quando alguma das opções do select for selecionada.
- Exibir uma imagem giratória juntamente com a mensagem Carregando (esse efeito ocorrerá entre o início e o fim da requisição AJAX).
- Assim que houver sucesso na requisição, o valor do produto, a quantidade de parcelas, o valor da parcela e o desconto à vista serão atualizados.
A imagem abaixo ilustra o funcionamento das tarefas mencionadas, no entanto, para fazer o módulo funcionar ainda precisamos criar o arquivo de layout e chamar nosso bloco valores.phtml no template (faremos isso nos próximos passos deste artigo).
Para finalizar este passo vamos inserir a imagem animada.
Após efetuar o download da imagem acesse: skin/frontend/base/default/images e crie um diretório chamado newer7_parcelamento. Coloque a imagem ajax-loader.gif dentro do diretório newer7_parcelamento (skin/frontend/base/default/images/newer7_parcelamento/ajax-loader.gif).
7) Crie um arquivo chamado newer7_parcelamento.xml e coloque em app/design/frontend/base/default/layout. (app/design/frontend/base/default/layout/newer7_parcelamento.xml). Segue abaixo o conteúdo para o arquivo newer7_parcelamento.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addItem" ifconfig="parcelamento/parcelamento_general/parcelamento_jquery"><type>js</type><name>newer7_parcelamento/jquery-newer7.js</name></action>
</reference>
</default>
<catalog_product_view>
<reference name="product.info">
<block type="catalog/product_view" name="valores" as="valores" template="newer7_parcelamento/valores.phtml" />
</reference>
</catalog_product_view>
</layout>
Este é o arquivo de layout do módulo que estamos criando. Observe que na linha 5 existe um método que nos permite adicionar um arquivo js adicional para a seção head, e neste caso, o arquivo que está sendo adicionado é jquery-newer7.js. O ifconfig (também na linha 5) verifica se o campo Habilitar jQuery está habilitado no admin antes de adicionar o arquivo.
Na linha 10 acrescentamos o bloco valores.phtml para ser exibido na página de visualização do produto.
8) Esta é a parte onde vamos chamar o bloco responsável pela exibição do parcelamento em nosso template. O local para inserção do código ficará a critério de cada um, eu apenas vou dar um exemplo de como fazer com o tema padrão do magento, pois, devido a diversidade de temas disponíveis no mercado seria impossível dizer um local exato. Sem falar que cada usuário tem seu próprio gosto, ou seja, enquanto um usuário prefere inserir o parcelamento abaixo da imagem do produto, outros poderiam inserir acima da breve descrição, enfim, as opções são muitas.
Abra o arquivo view.phtml do seu tema (app/design/frontend/default/seu-tema/template/catalog/product/view.phtml).
Próximo a linha 100 insira o código abaixo:
<style type="text/css">
#parcelamento{clear:both;padding-top:8px;}
</style>
<?php if($_product->getTypeId() == 'configurable' && Mage::getStoreConfig('parcelamento/parcelamento_general/enabled')): ?>
<?php echo $this->getChildHtml("valores"); ?>
<?php endif; ?>
Na linha 2 foi inserido um pequeno trecho de código para posicionar corretamente a div com id “parcelamento” no tema padrão do Magento. É recomendável que vocês apliquem seus próprios estilos de acordo com o local de inserção. Se possível, coloque em uma folha externa.
A linha 5 verifica se o produto é do tipo configurável e se o módulo está ativado na administração. Se as duas condições forem satisfeitas a linha 6 irá inserir o bloco na pagina.
Dica: Antes de acessar as configurações do módulo no painel administrativo do magento, limpe o cache, faça log out / log in.
E assim chegamos ao final deste artigo. Se alguma dúvida surgir, utilize os comentários.
Profissional com mais de 12 anos de experiência em desenvolvimento de sistemas, apis, aplicativos, lojas virtuais, blogs, web design, marketing digital, módulos e-commerce, seo otimização de sites, links patrocinados, templates, plataformas e cms, crm, marketplace, suporte e manutenção, interface responsiva, mídias digitais e integrações diversas, consultoria online, hospedagem de sites, lojas virtuais e sistemas diversificados.
Localização: Brasil
Primeiramente gostaria de agradecer ao material publicado que me serviu de grande ajuda.
Criei o módulo conforme o tutorial e tudo ocorreu de maneira esperada.
Mas para produtos em com preço promocional o valor de parcelas não é retornado, ou seja a variavel que deveria pegar o valor esta retornando vazia.
Poderia me ajudar com esse problema? Obrigado
Olá Germano, seja bem-vindo!
Quando você escreveu “preço promocional” estava se referindo as opções de “Regras de Preços do Catálogo” (admin / Menu Promoções ), ou simplesmente ao campo Preço Especial?
Ola Piero, estou com o mesmo problema do Germando, quando insiro um valor no preço promociona no produto ele não calcula o desconto e não exibe as parcelas.
Fala Alexandre
blz!
Você precisa criar uma condição para o preço especial. O módulo não está tratando este detalhe.
Este módulo funciona para produtos empacotados?
Olá Marcus!
O módulo funciona em produtos empacotados, no entanto, tais produtos possuem um “input”(quantidade), para cada item disponibilizado.
Para que os valores sejam atualizados quando o cliente alterar a quantidade de cada input, você precisará implementar o seguinte trecho no arquivo valores.phtml:
Linha 27, abra uma nova linha acima de: //]]>
e coloque:
$j(document).ready(function(){
$j(“input”).keyup(function(){
$j(‘#parcelamento’).html(‘<img src=”<?php echo $this->getSkinUrl(‘images/newer7_parcelamento/ajax-loader.gif’); ?>”> Carregando’);
$j.ajax({
url: ‘<?php echo $this->getUrl(“parcelamento”)?>’,
type:”POST”,
data:({“preco”: $j(‘.price-box span span.price’).html()}),
success: function(data) {
$j(‘#parcelamento’).html(data);
}
})
})
})
Abraços.
Piero, fizemos a devida implantação, porem, meus produtos empacotados são “checkbox” e fiz conforme voce sugeriu acima porem, ele não atualiza o valor quando seleciono a opção. Verifica o link do produto: http://shopmodulados.com.br/quarto-de-solteiro-modulado-exclusive-estilo-moderno-branco-acetinado-carvalho-henn.html
Olá Ricardo!
Os exemplos mencionados acima funcionam com “select”, mas podem ser adaptados para qualquer tipo de input.
No seu caso você precisará verificar o checkbox que foi selecionado, resgatar o preço e enviar para o arquivo IndexController.php
Não seria apenas alterar a linha $j(“input”).keyup(function(){
para algo do tipo
$j(“checkbox”).keyup(function(){ ?
Podeira me auxiliar?, ja tentei de tudo aqui e não consigo fazer atualizar o valor. Link de verificação onde o módulo esta instalado, mas não funciona: http://shopmodulados.com.br/quarto-de-solteiro-modulado-exclusive-estilo-moderno-branco-acetinado-carvalho-henn.html
Desde ja agradeço sua atenção
Piero, parabens! realmente fantastico seu módulo e é de grande ajuda para quem trabalha com magento.
Estou tentando implantar em minha loja, porem, eu uso opções de produtos em produtos simples (http://www.vipracingshopping.com.br/kit-ar-8-valvulas-completo.html) olha só o conteudo do java do meu arquivo valores.phtml:
//<![CDATA[
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j(".input-box input").change(function(){
$j('#parcelamento').html('<img src="getSkinUrl(‘images/newer7_parcelamento/ajax-loader.gif’); ?>”> Carregando’);
$j.ajax({
url: ‘getUrl(“parcelamento”)?>’,
type:”POST”,
data:({“preco”: $j(‘.price-box span span.price’).html()}),
success: function(data) {
$j(‘#parcelamento’).html(data);
}
})
})
})
//]]>
Ele esta processando, porem, ele me retorna o valor errado do parcelamento. O que esta acontecendo é que ele esta pegando sempre um valor anterior ao da seleção.
Poderia me ajudar por favor?
Experimente alterar a linha 15 do arquivo valores.phtml
$j(“.input-box select”).change(function(){
altere para:
$j(“.input-box input[type=’radio’]”).click(function () {
Piero! deu certo!!! muito obrigado pela sua atenção amigo! Suas dicas no blog sempre me ajudam. Mais uma vez, meus parabens pelo módulo.
Olá Pedro!
Fico feliz em poder ajudar.
Abraços.
Oi Pietro Luiz, tudo bem?
Desculpe incomodá-lo, estou basicamente com o mesmo problema do Pedro no meu site, vi que no dele o problema está resolvido, só que tenho um módulo de parcelamento já funcionando, apenas preciso adaptá-lo para produtos configuráveis (na verdade são produtos simples com opções), queria adaptar o meu, já que o módulo do blog não aplica juros na parcela e eu preciso que os juros já estejam aplicados.
Então minha pergunta é, qual chamada php você fez em “view.phtml” para que o bloco de parcelamento fosse chamado abaixo do preço?
No meu eu uso
getChildHtml(‘parcela’);?>
No produto simples, basta chamar logo abaixo de:
getChildHtml(‘addtocart’) ?>
Mas no configurável não estou conseguindo, acredito que deve ser algum código “if product configurable” em php,
ou algo semelhante, certo?
Outra pergunta, o módulo do blog dá para já aplicar os juros na parcela, como no meu site?
Olha o link:
http://www.ultraeletronicos.com/blackberry-z10-4.html
Dá pra ver que o parcelamento aparece normal nele. Já no produto com opções,
não aparece nada: http://www.ultraeletronicos.com/adidas-springblade-3.html
Eu até consegui tentei editar o view phml para conseguir inserir na página do produto configurável,
porém o bloco nunca aparece abaixo do botão “addtocart” (comprar).
Desde já, obrigado!
Olá Luiz Santos, blz!
Confira o passo 8 deste artigo e veja como inserir o bloco.
Sobre juros:
Você pode implementar direto no código ou criar um campo exclusivo para poder administrar pelo painel do magento.
Boa sorte.
Oi Pietro,
Infelizmente não sou desenvolvedor, li o seu tutorial inteiro e ainda assim não compreendi.
Para instalar no produto simples, eu segui esse tutorial:
https://gabrielscarvalho.files.wordpress.com/2010/07/modulo-parcelas-ajax1.pdf
Porém, como é para Magento 1.4.1 há uns passos que não deu para entender, como por exemplo
como fica a estrutura do config.xml dele.
Para adaptar ao meu site, ou seja, com as parcelas já com juros, eu fui na base do tentativa erro,
peguei o código base do link acima e adaptei da seguinte forma:
getProduct();
$capital = $_product->getFinalPrice();
$_max_parcelas = 12;// Máximo de parcelas no cartão
$cartao =number_format($capital * 1.1341 /$_max_parcelas,2,’,’,’.’);
$boleto = $capital * 0.95;//Desconto à vista por Depósito Bancário
echo ‘Em até
‘.$_max_parcelas.’x de R$
‘.$cartao.’ nos cartões
ou apenas R$’.number_format($boleto,2,’,’,’.’).’ à vista com
5% de desconto por Depósito Bancário.’;
?>*Parcela Mínima – R$5,00*Simulação Juros – 1.99% a.m
Nos produtos configuráveis, ele chama o módulo dele via jquery assim:
No final de “view.phtml” coloca:
//<![CDATA[
jQuery(document).ready(function(){
jQuery("select").change(function(){
jQuery.ajax({
url: 'getUrl(“Parcelamento/Parcela/index”)?>’,
type:”POST”,
data:({“valor”: jQuery(‘.price’).html()}),
success: function(data) {
jQuery(‘#parcelado’).html(data);
}
});
})
})
//]]>
Infelizmente não consegui seguir o tutorial dele, ele “quebrou” demais a explicação da estrutura do “config.xml” explicando a estrutura em partes, e não colocou a estrutura completa. O que acaba complicando para quem não entendo muito como eu 🙁
Há também um outro módulo, este tem inclusive a opção de se incluir os juros das parcelas no admin, conforme você mencionou. O problema dele é que apenas mostra uma tabela com as parcelas e ela é bem “fraquinha” e fica um pouco esquisita na página do produto:
https://www.magentocommerce.com/magento-connect/preco-parcelado.html
A ideia é excelente, pois ele conseguiu deixar a configuração do módulo praticamente todo feito via admin, pena
que o modo de exibição das parcelas não ficou agradável.
Dei uma olhada nos arquivos phtml dele e infelizmente me parece complicado de se adaptar…
Uma ideia legal seria você remover tudo que inseriu na sua loja e efetuar todo o procedimento de criação listado neste artigo.
Dica: No passo 8 (linhas 5, 6 e 7), substitua por:
<?php if(Mage::getStoreConfig(‘parcelamento/parcelamento_general/enabled’)): ?>
<?php if($_product->getTypeId() == ‘configurable’ or $_product->getTypeId() == ‘simple’): ?>
<?php echo $this->getChildHtml(“valores”); ?>
<?php endif; ?>
<?php endif; ?>
Assim você consegue inserir o bloco nos produtos do tipo configurável e simples.
Abraço.
Só para informar que já consegui no produto simples com opções personalizadas.
Acredito que não estava parecendo porque uso o CloudFlare e mesmo limpando o cache, ele deve demorar um pouco para entregar a versão mais atual do site.
Agora tentarei seguir o tutorial que mencionei e fazer com que a página (ou pelo menos o bloco “price”) atualize todas as vezes que as cores ou valores são modificados.
Segue o link com um produto simples configurável, como podem ver, o preço muda mas as parcelas continuam as mesmas, vou ver se consigo resolver isso e depois digo o que eu fiz.
http://www.ultraeletronicos.com/apple-iphone-5s.html
Com relação ao módulo já pronto, ele é fantástico, pena que a tabela dele é bem fraquinha mesmo e dá pouquíssima margem para personalização. Mas a ideia dele é fantástica, vamos ver se evolui
Olá novamente, Piero Luiz
Cara, obrigado pelas dicas, só que meu problema com o seu módulo não é nem inseri-lo no site,
chequei novamente o tutorial e comparando com o tutorial que eu fiz para inserir o outro módulo no meu
site, me parece bem mais simples e organizado.
Meu problema é que seu módulo não há uma regra de cálculo de juros, pra mim só falta isso.
Este módulo tem, mas não sei mexer na estrutura para adaptar essa parte ao seu:
https://www.magentocommerce.com/magento-connect/preco-parcelado.html
O ideal seria o seu módulo, com a regra de juros do módulo acima, aí ficaria PERFEITO!
Mas enfim, sigo investigando…
Olá Luiz Santos!
Em breve estarei atualizando o artigo e inserindo novas opções.
Estou pensando em disponibilizar para download a versão completa (funcional para todos os tipos de produtos) direto no connect.
Te agradeço pelas sugestões.
Abç
Olá Piero Luiz, poxa, espero que consiga um tempinho e consiga fazer as modificações 😀
Olha, caso queira ter uma ideia para se “inspirar”, eis o módulo do Bruno:
http://brunowebdeveloper.com.br/parcelamento-magento.html
Também está bem completo, ele faz as funções via atributos, só não sei se tem como “forçar” esse módulo
em todos os produtos, porque se for de um a um, aí é roubada, só que tenho mais de 600 produtos já cadastrados…
Mas como vc pode ver, ele separou tudo, inclusive dando a opção no admin…
Só que como sempre, esbarra no problema do produto configurável, ou seja, não atualiza quando o preço muda…
Vou seguir monitorando o seu blog. Uma vez mais, obrigado pelas dicas 🙂
Oi Pietro, tudo joia?
Olha, até consegui inserir os juros no seu módulo, e quando entro na página do produto, ele
pega o preço e parcela corretamente com os juros que eu defini.
No entanto, não sei se é por isso, mas não consigo inserir o código nem com o passo 8 do tutorial (não diz em que parte da linha 100 tenho que inserir, então quando coloco lá, dá erro) e nem com o código alternativo que você deu nos comentários.
Mas enfim, consegui inserí-lo, onde eu chamava o parcelamento que tenho instalado agora. Valor a chamada com: “getChildHtml(‘valores’)”
Até aí tudo bem, ele mostra tanto em produtos simples como em configuráveis (faço duas chamadas pelo “getChildHtml(‘valores’)”
O problema é que quando estou com os produtos configuráveis, um erro desconhecido ocorre (acredito que seja o controller.php) e ao clicar
em alguma opção, mesmo que seja cor sem modificar o valor do item, o ajax atualiza, mas aparece um preço que não tem nada a ver
com o preço do item.
Há como corrigir isso? Pois é só esse problema que está me impedindo de utilizá-lo no site.
Caso consiga resolver, te passo por e-mail o “view.phtml” já com o código aplicado e o “valores.phtml” já com a solução dos juros na parcela.
Att
Luiz Santos
Link 1, parcelamento correto:
Olá excelente post, segui a risco o tutorial porém o valor parcelado não esta sendo exibido na página de detalhe do produto.
adicionei o código no arquivo view.phtml mas não aparece nada.
abraço.
Olá sou eu de novo, refiz a operação e agora esta funcionando. Obrigado pelo tutorial.
Abraço.
SHOW!!!!!!!!
Havia criado um módulo de pagamento porém não conseguia implementar a parte do frontend, agora com esse seu tutorial já esclarece minhas dúvidas de como implementar o frontend xD
Obg.
amigo, perfeito.
parabéns.
uma dúvida, como inserir o parcelamento na listagem?
tentei colocar o código no arquivo list.phtml e não foi mostrado.
alguma dica?
boa tarde.
obrigado, ainda não testei, vou testar agora de tarde.
ta tendo um problema.
no produto configurável quando contem o preço “DE” e “POR” o parcelamento aparece zerado quando se muda a variação!
produto 1
DE 100
POR 200
e dentro dele tem 3 variações.
50ML, 100ML e 200ML, quando se muda aparece zerado.
tbm tem que mudar o arquivos valores.phtml a chamada getPrice para getFinalPrice, só assim ele pega o valor certo.
estou usando o magento 1.9.1
obrigado pela ajuda aos usuários magento.
Fabricio poderia me ajudara criar esses atributos de 50ML, 100ML e 200ML por gentileza.
Fabricio pode me ajudar a criar esses atributos 50ML, 100ML e 200ML por gentileza.
Ola , como consigo fazer o parcelamento aparecer na pagina de finalizaçao do pedido ? sendo ele escolhido pelo cliente na conclusao do pagamento selecionando as parcelas o recebendo no adim a quantidade solicitada pelo cliente?
abraços
Primeiramente parabéns pelo blog, fiz passo a passo porém o modulo aparece habilitado em Sistema>Configuração>Avançado, mas não aparece no menu da configuração, sabe o que poderia ser ?
Olá Robson!
Por gentileza, repita o procedimento mencionado acima (passo a passo)
abç
Boa tarde Piero Luiz.
Estava procurando um modulo que atualizasse os valores do parcelamento para os produtos configuráveis, agrupados e com campos personalizados e achei o seu tutorial.
Esse modulo serve para a versão 1.9.1 do magento?
Obrigado
hector
Sim Hector
funciona com a versão 1.9.1 do magento
abç
Olá Piero, como vai?
Primeiramente, gostaria de agrade-lo por seu tempo e por sua contribuição.
Seu tutorial é extremamente útil e sua didática incrível. Não tive nenhum problema para implementa-lo.
Identifiquei um único problema, pelo menos no meu tema (utilizo o Ultimo). Quando acesso a página do produto pela primeira vez, sem escolher nenhuma das opções disponíveis para o produto, os valores do módulo aparecem corretamente. Quando seleciono qualquer uma das opções e o valor default muda, os centavos não aparecem. Um produto de R$ 19,90 por exemplo, aparece no módulo como R$ 19,00 em 3x de R$ 6,33. Você imagina o quê pode estar acontecendo?
Tem um link aqui: http://letrasmdf.com.br/loja/linha-cru/simbolos-mdf-cru/caveira-cru.html
Muito obrigado e parabéns!
Saudações Ricardo Albrecht.
Não tive tempo pra responder anteriormente (correria total por aqui).
Acredito que você já tenha resolvido a questão por si só, correto ?
Segue resolução – Seja p/ você ou p/ outras pessoas que venham a ter a mesma dúvida:
“Sugestões são de grande valia. Se puder se expressar em tais termos serei extremamente grato”.
Altere o arquivo IndexController.php, linha 8:
$preco = str_replace(array(‘R’,’$’,’.’), ”, $preco_inicial);
Modifique para:
$preco = str_replace(‘R$’, ”, $preco_inicial);
$preco = str_replace(‘.’, ”, $preco);
$preco = str_replace(‘,’, ‘.’, $preco);
Se houver alguma dificuldade é só digitar por aqui.
Excelente final de ano a todos.
Estava tendo esse mesmo problema e com essa alteração no IndexController.php funcionou. Parabéns Piero!
Ola Piero, Como vai?
Primeiramente quero agradecer pelo por disponibilizar este modulo.
mas eu estou com o mesmo problema do colega Robson, fiz passo a passo porém o modulo aparece habilitado em Sistema>Configuração>Avançado, mas não aparece no menu da configuração. Ja fiz varias vezes o processo e ate mudei a versao do magento, mas nao aparece no lado esquerdo no admin, voce saber disser o porque?
Experimente repetir todo o procedimento mencionado acima (passo a passo).
Limpe a cache (logout / login).
Olá Piero! No meu site uso o módulo SCP para atualização dinâmica do preço utilizando o preço do produto simples em configurável. E verifiquei que ele sobrescreve o bloco onde é chamado o bloco do seu módulo. Como consigo contornar isso para que os dois funcionem juntos?
Att.
E ai Hallan, blz!
Deve ter uns 3 anos que usei o SCP (sinceramente não me lembro da estrutura).
Poderia debugar e me retornar com a rota do arquivo que está montando a área central da página?
Ae Piero, é possivel adicionarmos juros variáveis para cada parcela com esse seu módulo?
imaginando
2parcelas = 1.051024
3parcelas = 1.068408
4 parcelas = 1.085976
etc…
Obrigado
Sim Pedro (para isso é necessário a criação de novos campos para inserção de juros). Tais campos devem ser verificados e resgatados.
Sorprendente post. Gracias por compartirlo…Espero màs…
Saludos
Olá Piero, muito bom seu tutorial, mas estou com o seguinte problema:
Já repeti diversas vezes o passo a passo porém o modulo aparece habilitado em Sistema>Configuração>Avançado, mas não aparece no menu à esquerda da configuração. Estou utilizando o Magento 1.9.2.4
Saberia me dizer o por que?
Atenciosamente,
Confira o arquivo system.xml (verifique se o mesmo foi criado corretamente)
Boa noite
Fiz conforme os passos do módulo, porém quando seleciono o tamanho do produto com preço alterado ele fica carregando e não trás a atualização do preço.
O que pode ser?
Olá James.
Neste caso eu teria que analisar p/ lhe fornecer uma posição mais sólida.
Boa noite,
Parabéns pelo módulo!
Estou tendo o mesmo problema. Quando seleciono uma opção personalizada do produto a parcela não atualiza.
Link da loja: http://paraisodospuffs.com.br/loja-teste/index.php/puff-quadrado.html
Muito Obrigado! 😉
Siga o seguinte caminho: Verifique o passo 6 deste artigo (linha 15) e altere a classe css q está sendo usada. O ideal seria criar uma condição (if – else) para funcionar com tipos de produtos distintos.
para por no product view , pois quero que apareça somente em até 5x sem juros. só que a parcela minima é de R$50,00 reais , quando tenho algum produto abaixo desse valor ele não aparece em até 1x e sim continua aparecendo em ate 5x vezes desobedecendo a parcela minima.
Eu tenho uma versão que inclui os seguintes itens:
– Valor mínimo da parcela;
– A partir de x vezes sem juros;
– Exibição de parcelamento no frontend (com e sem juros);
– Inserção de taxa de juros;
– Totalmente gerenciável pelo painel admin;
– Desenvolvido na versão 1.9 do Magento.
Se houver interesse, entre em contato
Fala Piero, muito bom seu módulo!
Ele funciona perfeitamente com produtos configuráveis mas como faríamos ele funcionar no caso de produtos simples com “opções adicionais” ?
Olá, obrigado pelas dicas, só que meu problema com o seu módulo não é nem inseri-lo no site,
chequei novamente o tutorial e comparando com o tutorial que eu fiz para inserir o outro módulo no meu
site, me parece bem mais simples e organizado.
Meu problema é que seu módulo não há uma regra de cálculo de juros, pra mim só falta isso.
Este módulo tem, mas não sei mexer na estrutura para adaptar essa parte ao seu:
https://www.magentocommerce.com/magento-connect/preco-parcelado.html
O ideal seria o seu módulo, com a regra de juros do módulo acima, aí ficaria PERFEITO!
Mas enfim, sigo atentamente…
Olá!
Muito bom, usei bastante para meus clientes no Magento 1.9. Agora estou migrando para O Magento 2.3.5. Já foi atualizado a nova versão?
Olá Jorge.
Para Magento 2 vc pode solicitar um orçamento em nossa página de contato. Att.