Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Descontos sendo aplicados duas vezes

$
0
0

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


Viewing all articles
Browse latest Browse all 14190

Trending Articles