Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mruoppolo

Descontos sendo aplicados duas vezes

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.