rafaelstz / Biblioteca-Codigos-Magento

Códigos prontos para implementação e otimização do tempo nos projetos.
20 stars 16 forks source link

Módulo parcelamento dinômico produtos configuráveis e simples com variações - Newer 7 #7

Open LuizSantos22 opened 1 year ago

LuizSantos22 commented 1 year ago

Olá, tudo bem? Peço desculpas por abrir essa issue por aqui, mas estou com um módulo que após algumas modificações, está praticamente finalizado e gostaria de disponibilizar para a comunidade, pois ele apresenta os valores parcelados dinamicamente para produtos configuráveis e produtos simples com variações. Em resume, àqueles produtos em que você pode adicionar acessórios ou itens que alteram seu valor.

Na maioria dos módulos de parcelamento (inclusive nos de M2), o valor do parcelamento não altera, já que tanto M1 e M2 não fazem o refresh da página mesmo com alteração de valores.

Pois bem, a Newer7 fez um módulo lá atrás, que altera o valor das parcelas, fiz alguns ajustes, inclusive na chamada dele no frontend, já que no tutorial original deles não funciona. Porém, ele tem um pequeno problema, ele não capta "special price" corretamente (valores promocionais), ele segue captando o valor inicial (old price). E assim, quando um item está em special price, ele não consegue captar os valores e as parcelas ficam zeradas. Até consegui fazê-lo captar o valor do special price alterando o código

"$preco = $_product->getPrice();" para "$preco = $_product->getFinalPrice();" mas as parcelas seguem erradas.

Como está atualmente:

Para preços normais, ao selecionar uma opção, ele capta a alteração e as parcelas mudam Para special price, ele originalmente não consegue captar o preço especial e não muda as parcelas ou elas ficam zeradas.

Alterações feitas por mim:

O que falta para funcionar corretamente:

Acredito que esse problema se dá nos arquivos "valores.phtml" e "IndexController.php" mencionados abaixo:

Segue os códigos:

valores.phtml:

`<?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 1.2049/$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
R$ '.number_format($preco_avista,2,',','.').' à vista com '.$desconto.'% de desconto
'; ?>

` Sim, eu cheguei a alterar o `$preco = $_product->getPrice();` para `$preco = $_product->getFinalPrice();` ele passa a capturar o valor final no início do parcelamento, mas os demais valores ficam zerados, devido a uma configuração errônea, já que ele foi concebido para fazer a captura do preço inicial. O outro arquivo é um controller, é o "IndexController.php" possui o seguinte código: `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
R$ '.number_format($preco_avista,2,',','.').' à vista com '.$desconto.'% de desconto'; } } ?>` Veja ele em ação no seguinte site de testes: Com special price: https://ultraele1234.tk/O3Ti/index.php/teste.html Com preço normal: https://ultraele1234.tk/O3Ti/index.php/teste2.html Tutorial original do módulo: https://www.newer7.com.br/blog/magento/criar-modulo-para-magento-parcelas-produto-configuravel/ Acredito que mesmo antigo, este módulo tem muito potencial para resolver este problema que sempre foi uma lacuna nas lojas Magento no Brasil, e se adaptado para M2, poderia ser um diferencial também. Mais uma vez peço desculpas por abrir uma issue fora do tópico, se quiserem ter acesso ao módulo com as alterações que eu já fiz, posso subir aqui sem problemas.
rafaelstz commented 1 year ago

Olá @LuizSantos22, obrigado pela sugestão, parece ser algo legal para colocar na Biblioteca de Código, você poderia criar um arquivo via pull-request com esses trechos de código e a referência do tutorial do módulo como comentário no arquivo?

LuizSantos22 commented 1 year ago

@rafaelstz Desculpe pela demora, é que estou ainda desenvolvendo um site e fazendo milhões de testes e tentando adaptador o tema Ultimo ao OpenMage (penúltima versão) e corrigindo erros de alguns módulos em PHP 8.2

Eu nunca subi projetos inteiros no Github, vou ver algum tutorial e já retorno.

Com algumas modificações, já consegui fazer o módulo capturar o preço promocional (special price), mas ainda estou com problemas no "select element", ou seja, ao selecionar alguma opção que muda o preço, as parcelas e o valor com desconto que inicialmente foram corrigidos, ficam com valores equivocados. Até apliquei uma multiplicação meio maluca de 10.5952 ou algo assim ao valor das parcelas para tentar contornar o problema (elas ficam com os valores quase 11 vezes menor do que deveria), mas quando tentei aplicar essa regra, seu ruim e nada apareceu....

Vou tentar criar outro site de testes fora do meu servidor, mas vou subir o projeto inteiro, já com algumas moficiações que eu fiz, e te passar o link.

Acho que seria legal ter essa solução, e acredito que quem entende de criação de módulos pra Magento 2, também poderia adaptar essa solução.

Juro que tentarei subir isso dentro dessa semana :D