Criar Módulo para Magento – Parcelas no Produto Configurável

Estrutura de Módulos no Magento: Fundamentos e Organização
Basicamente, um módulo para Magento é constituído por um conjunto de arquivos cujo propósito é estender, modificar ou sobrescrever o comportamento padrão do sistema. Essa arquitetura modular é um dos atributos que tornam o Magento uma das principais plataformas de e-commerce no Brasil e no mundo. Por meio dos módulos, desenvolvedores conseguem implementar funcionalidades personalizadas, integrar sistemas externos e adaptar o funcionamento da loja virtual às necessidades específicas de cada operação de ecommerce.
Vale lembrar que grande parte do sistema de vendas online denominado Magento E-commerce é formado por módulos nativos, que já vêm integrados à instalação padrão do sistema. Esses módulos estão localizados (organizados) dentro do diretório app/code/core/Mage, onde cada pasta representa uma funcionalidade específica. Essa estrutura facilita a manutenção e a evolução do sistema, permitindo que novas funcionalidades sejam adicionadas sem comprometer o núcleo da aplicação.
Na criação de lojas virtuais premium, o uso estratégico de módulos é essencial para garantir uma experiência diferenciada ao usuário final. Seja por meio de melhorias na performance, personalizações no layout, ou integrações com sistemas de pagamento e logística, os módulos desempenham um papel central na construção de soluções de alto nível. Além disso, o Magento permite a criação de módulos personalizados, que podem ser desenvolvidos sob medida para atender demandas específicas de cada projeto.
A modularidade do Magento também contribui para a escalabilidade da plataforma. À medida que o negócio cresce, novos módulos podem ser adicionados para suportar funcionalidades avançadas, como programas de fidelidade, marketplaces, vendas omnichannel e muito mais. Essa capacidade de expansão é um dos motivos pelos quais o Magento é amplamente adotado por empresas que buscam plataformas de e-commerce robustas e preparadas para operações consideráveis.
Em resumo, entender a estrutura e o funcionamento dos módulos no Magento é fundamental para qualquer desenvolvedor ou empresa que deseje explorar todo o potencial da plataforma. Seja para pequenas customizações ou para projetos complexos de criação de lojas virtuais premium, os módulos são a chave para transformar ideias em soluções digitais eficientes e escaláveis.
Produtos Configuráveis: Dinamismo e Compatibilidade com Módulos Personalizados
No Magento, os produtos configuráveis representam uma solução versátil para oferecer variações específicas de um item, permitindo que o consumidor selecione atributos como sabores, cores, tamanhos, modelos e outras opções relevantes. Cada variação pode possuir um preço adicional, refletindo com precisão o valor de cada escolha feita durante a navegação.
Como uma das “principais plataformas para criar loja virtual“, o Magento realiza a atualização do preço dos produtos configuráveis de forma dinâmica, sem a necessidade de recarregar a página. Essa funcionalidade é essencial para garantir uma experiência de compra moderna e fluida, especialmente em projetos voltados para a “criação de lojas virtuais premium”, onde a performance e a interatividade são prioridades.
Dessa forma, ao desenvolver um módulo de parcelamento compatível com produtos configuráveis, é fundamental seguir esse mesmo padrão de atualização dinâmica. Isso assegura que o cálculo das parcelas reflita corretamente o valor da variação selecionada, mantendo a consistência da interface e a confiabilidade das informações exibidas ao cliente.
Definindo os Diretórios do Módulo Magento
A partir deste ponto, é fundamental que você preste atenção à diferenciação entre letras maiúsculas e minúsculas. O Magento é sensível a essa distinção, e qualquer alteração incorreta pode impedir o funcionamento do módulo.
Acesse o diretório app/code/local, caso a pasta local não exista em seu sistema, será necessário criá-la, pois é nessa área que vamos estruturar os novos diretórios e inserir os arquivos ao longo deste artigo.
Utilizaremos Newer7 como Namespace e o nome do módulo será Parcelamento. Com isso, a estrutura de diretórios que você deverá criar será a seguinte:
app/code/local/Newer7/Parcelamento/controllers
app/code/local/Newer7/Parcelamento/etc
app/code/local/Newer7/Parcelamento/Helper1) Após a criação dos diretórios, crie um arquivo chamado config.xml e coloque-o no diretório etc (app/code/local/Newer7/Parcelamento/etc/config.xml). Esse arquivo deverá conter o 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 à área frontal da loja virtual — a parte acessível aos clientes.
Linha 9: <routers> Inclui informações de configuração sobre os roteadores e os objetos responsáveis pelo encaminhamento das requisições.
Linha 11: <use>standard</use> Indica ao sistema que essa rota será utilizada no frontend.
Linha 13: <module>Newer7_Parcelamento</module> Nome completo do módulo, incluindo seu package/namespace. O Magento utiliza esse valor para localizar os arquivos do controlador.
Linha 14: <frontName>parcelamento</frontName> Valor definido para informar ao Magento qual rota será usada na URL.
Linha 21: <file>newer7_parcelamento.xml</file> Define o arquivo de atualização de layout do módulo (que será criado e inserido no sistema em breve).
Linha 34: <acl> Define a entrada ACL (Access Control List).
Linha 43: <title>Newer7 Parcelamento</title> Título exibido na seção de permissões de usuários (lista de recursos ACL) dentro do painel administrativo do Magento.
Linha 57: <parcelamento_general> Nome do grupo de configurações.
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. Neste caso, os valores definidos 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á conter o 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:
<?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.

Full Stack & Performance Expert
+13 anos transformando café e lógica em ecossistemas digitais de alta performance. Especialista em “domar o caos” no desenvolvimento de sites, apps e sistemas complexos, Piero une a precisão da engenharia de software com estratégias de SEO e marketing digital que colocam marcas no topo. Entre um riff de guitarra e uma linha de código, ele constrói arquiteturas robustas e interfaces que convertem.
Sistemas & Aplicativos: APIs, ERP/CRM, softwares e integrações sob medida.
E-commerce & CMS: Lojas virtuais, blogs e módulos de alta conversão.
Growth & UX: SEO de precisão e design focado na experiência do usuário.
Infra: Suporte, manutenção e hospedagem web de alta disponibilidade.
Localização: Brasil | Atendimento Global.
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.
No momento, a versão que tenho 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?
P/ M2, solicite orçamento em: https://www.newer7.com.br/contato/