mruoppolo 14 Denunciar post Postado Junho 9, 2015 Olá, tudo bem?? Eu tenho aqui um sistema de descontos especiais para alguns produtos, porém o desconto esta sendo aplicado 2 vezes, por exemplo, quando ele tem que descontar R$50,00 reais ele desconta R$100, fui olhar o código e vi que ele faz os cálculo com este código aqui: $this->load->model('module/special_promotions'); $sp_hints = $this->model_module_special_promotions->getHints($result['product_id']); if ($sp_hints) { foreach ($sp_hints as $sp_hint) { if ($sp_hint['show_as_special']) { if ($special) { $price = $special; if ($sp_hint['discount_method'] == '1') { $special = $this->currency->format($this->tax->calculate(max(0, $result['special'] - $sp_hint['discount_amount']), $result['tax_class_id'], $this->config->get('config_tax'))); if (!empty($tax)) { $tax = $this->currency->format((float)max(0, $result['special'] - $sp_hint['discount_amount'])); } } elseif ($sp_hint['discount_method'] == '2') { $special = $this->currency->format($this->tax->calculate(max(0, $sp_hint['discount_amount']), $result['tax_class_id'], $this->config->get('config_tax'))); if (!empty($tax)) { $tax = $this->currency->format((float)max(0, $sp_hint['discount_amount'])); } } else { $special = $this->currency->format($this->tax->calculate(max(0, $result['special'] - $result['special'] / 100 * $sp_hint['discount_amount']), $result['tax_class_id'], $this->config->get('config_tax'))); if (!empty($tax)) { $tax = $this->currency->format((float)max(0, $result['special'] - $result['special'] / 100 * $sp_hint['discount_amount'])); } } } elseif ($price) { if ($sp_hint['discount_method'] == '1') { $special = $this->currency->format($this->tax->calculate(max(0, $result['price'] - $sp_hint['discount_amount']), $result['tax_class_id'], $this->config->get('config_tax'))); if (!empty($tax)) { $tax = $this->currency->format((float)max(0, $result['price'] - $sp_hint['discount_amount'])); } } elseif ($sp_hint['discount_method'] == '2') { $special = $this->currency->format($this->tax->calculate(max(0, $sp_hint['discount_amount']), $result['tax_class_id'], $this->config->get('config_tax'))); if (!empty($tax)) { $tax = $this->currency->format((float)max(0, $sp_hint['discount_amount'])); } } else { $special = $this->currency->format($this->tax->calculate(max(0, $result['price'] - $result['price'] / 100 * $sp_hint['discount_amount']), $result['tax_class_id'], $this->config->get('config_tax'))); if (!empty($tax)) { $tax = $this->currency->format((float)max(0, $result['price'] - $result['price'] / 100 * $sp_hint['discount_amount'])); } } } break; } } } Tem alguma coisa errada nele?? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Ruan Djiovani Zuchara 1 Denunciar post Postado Junho 10, 2015 Verifique a origem de dados, ao meu ver, você esta percorrendo os produtos retornados nesta linha de código:$this->model_module_special_promotions->getHints($result['product_id']); e aplicando os descontos distintamente para cada produto, desta forma, acho que o desconto somente seria aplicado duas vezes para um produto X se o mesmo retornasse duplicado de sua origem de dados.Att, Ruan Compartilhar este post Link para o post Compartilhar em outros sites