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