Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v1.x.
#8731
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.
#8736
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.
#8738
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 ;)
Editado pela última vez por Renato Frota em 04 Set 2011, 02:02, em um total de 1 vez.
#8762
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
#8763
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.
#8771
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...).
#10928
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.