Página 1 de 3

Somar valor das opções de produto

Enviado: 03 Set 2011, 16:49
por julio.trindade
ola para todos,

meus produtos sao cadastrados com opcoes de tamanho, mas acho que fica ruim pro usuario
bater o olho e ver:
Preco: 100,00
tamanho pequeno: + 0,00
tamanho medio: +10,00
tamanho grande: +30,00

preciso que ja traga somado o valor (no caso):
tamanho pequeno: 100,00
tamanho medio: 110,00
tamanho grande: 130,00


gostaria de saber se existe algum modulo ou
se alguem sabe como posso fazer isso.

Abracos a todos.

Re: Somar valor das opções de produto

Enviado: 03 Set 2011, 17:45
por Renato Frota
O segredo está nas linhas 72, 90 e 108 de catalog/view/theme/default/template/product/product.tpl

Estou estudando a melhor forma de fazer o calculo entre a "opção" e o preço original do produto.

Re: Somar valor das opções de produto

Enviado: 03 Set 2011, 21:25
por Renato Frota
CONSEGUI

Arquivo catalog/controller/product/product.php

Procurar linha 259:
Código: Selecionar todos
								'price'                   => (float)$option_value['price'] ? $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) : false,
Incluir nova linha (observação, eu disse INCLUIR):
Código: Selecionar todos
								'price_unformatted'                   => (float)$option_value['price'] ? $option_value['price'] : false,
Arquivo catalog/view/theme/default/template/product/product.tpl (ou arquivo correspondente do seu tema)

Procurar (deve estar na linha 72):
Código: Selecionar todos
            (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
Substituir por:
Código: Selecionar todos
            <?php if (!$special) { ?>
            <?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['price'] - $option_value['price_unformatted'] : $product_info['price'] + $option_value['price_unformatted']; ?><?php echo '- '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            <?php } else { ?>
            <?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['price'] - $option_value['price_unformatted'] : $product_info['price'] + $option_value['price_unformatted']; ?><?php echo '- de '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            <?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['special'] - $option_value['price_unformatted'] : $product_info['special'] + $option_value['price_unformatted']; ?><?php echo '&nbsp; &nbsp;por '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            <?php } ?>
Obs: as linhas 77 e 78 ficarão iguais, mesmo!

Procure por (deve estar na linha 95):
Código: Selecionar todos
            (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
Substituir por:
Código: Selecionar todos
            <?php if (!$special) { ?>
            <?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['price'] - $option_value['price_unformatted'] : $product_info['price'] + $option_value['price_unformatted']; ?><?php echo '- '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            <?php } else { ?>
            <span class="price-old">
            <?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['price'] - $option_value['price_unformatted'] : $product_info['price'] + $option_value['price_unformatted']; ?><?php echo '- de '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            </span>
            <span class="price-new">
			<?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['special'] - $option_value['price_unformatted'] : $product_info['special'] + $option_value['price_unformatted']; ?><?php echo '&nbsp; &nbsp;por '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            </span>
            <?php } ?>
Agora, as linhas 104 e 105 serão idênticas, também.

Espero ter ajudado ;)

Re: Somar valor das opções de produto

Enviado: 04 Set 2011, 01:35
por julio.trindade
Renato muito obrigado mesmo. Exatamente o que eu precisava.

Acrescentei um if, else no codigo para que se o produto estiver na promocao mostre aquele De: x Por:y..
dai em cada uma das linhas que voce citou fica assim:
Código: Selecionar todos
<?php if ($option_value['price']) { ?>
              <!--se nao esta em promocao-->
              <?php if (!$special) { ?>
              <?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['price'] - $option_value['price_unformatted'] : $product_info['price'] + $option_value['price_unformatted']; ?><?php echo ' '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            <?php } else { ?>
             <!--se está na promocao-->
            <span class="price-old">
            <?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['price'] - $option_value['price_unformatted'] : $product_info['price'] + $option_value['price_unformatted']; ?><?php echo 'De: '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            </span> <!--preco normal-->
            <span class="price-new">&nbsp;&nbsp;&nbsp;<?php $option_price = ($option_value['price_prefix'] == '-') ? $product_info['special'] - $option_value['price_unformatted'] : $product_info['special'] + $option_value['price_unformatted']; ?><?php echo 'Por: '.$this->currency->format($this->tax->calculate($option_price, $product_info['tax_class_id'], $this->config->get('config_tax'))); ?>
            </span> <!--preco novo-->
            <?php } ?>
Abracao e obrigado pela ajuda

Re: Somar valor das opções de produto

Enviado: 04 Set 2011, 02:06
por Renato Frota
julio.trindade escreveu:Renato muito obrigado mesmo. Exatamente o que eu precisava.

Acrescentei um if, else no codigo para que se o produto estiver na promocao mostre aquele De: x Por:y..

Abracao e obrigado pela ajuda
Obrigado, julio, pela sua contribuição.

Já modifiquei meu post acima. Observe que os códigos para selectbox e radio ficaram diferentes, pois o selectbox não pode conter tags <span> no texto interno.

O código para checkboxes (linha 108) eu havia indicado substituição, mas não fica utilizável, os preços ficam sem sentido.

Ex:

Produto R$ 100
Opcionais
[ ] verniz frente +R$ 10,00
[ ] verniz verso +R$ 10,00

Ficou assim:

Produto R$ 100
Opcionais
[ ] verniz frente - R$ 110,00
[ ] verniz verso - R$ 110,00

(marcando as duas opções não fica claro que totalizará R$ 120,00, então é melhor o método original)

Se você editou, volte para o original.

Re: Somar valor das opções de produto

Enviado: 04 Set 2011, 14:51
por m.lirangi
Fiquei confusa... rsrs..
Afinal, qual modificação tenho que fazer??
Isso é muito útil pra todos!!

Re: Somar valor das opções de produto

Enviado: 04 Set 2011, 15:12
por Renato Frota
m.lirangi escreveu:Fiquei confusa... rsrs..
Afinal, qual modificação tenho que fazer??
Isso é muito útil pra todos!!
As que estão no meu post, Marcia. :mrgreen:

Desculpem a confusão. Eu havia indicado um único código (de 1 linha), para ser repetido nas linhas 72 (selectbox), 90 (radio) e 108 (checkboxes). O nosso amigo, Julio, lembrou dos preços "special" (promoção) e modificou o código, fazendo uma verificação se há promoção ou não. Eu fiz uma nova modificação, e adaptei para o selectbox (linha 72) e para o radio (que passa da linha 90 para a 95, depois de adaptar a linha 72). Os checkboxes (originalmente linha 108) não devem ser editados (ficam sem sentido...).

Re: Somar valor das opções de produto

Enviado: 04 Set 2011, 15:17
por m.lirangi
vlw Renato!!
Vou tentar colocar em prática e digo aqui depois!

Re: Somar valor das opções de produto

Enviado: 29 Set 2011, 15:50
por andrelf
pessoal preciso fazer algo nesse sentido mais preciso que altere tmbm o valor acima

no caso seria como nesse site

http://www.perfumagi.com/br/212-masculino.html

Como faço? para que alterando entre os radio butons altere tmbm o valor ?

Abraço

Re: Somar valor das opções de produto

Enviado: 26 Out 2011, 11:17
por Renato Frota
Abdrelf,

nesse caso, precisa de uma função javascript que identifique a alteração da seleção no Radio.

Posso desenvolver comercialmente. Se tiver interesse, me mande uma MP.