Fórum OpenCart Brasil

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

#59977
Olá, tudo bem?

Eu comprei um módulo para descontos chamado Special Promotions, porém ele não estava aplicando os descontos, ai fui atras de descobrir o motivo, mas também não consegui, ai um amigo meu programador fez uma alteração no módulo que ele começou a funcionar, porém, quando aplicava o desconto, ele estava aplicando duplicadamente, por exemplo, se fosse pra ele descontar R$50,00 ele descontava R$100,00 e eu não estou sabendo onde encontrar este erro.

Eu vi que existem 3 lugares onde este módulo faz contas, um deles é a página do produto. Onde esta sendo inserido o seguinte código:
Código: Selecionar todos
$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;
        }
    }
}
Você tem ideia se existe algum erro ai?

Obrigado

Ola @felipesujf Se você extrai os arquiv[…]

extensção -> Módulos

Voltou ao normal sozinho

Olá Uso o OpenCart 2 e tenho algumas d&uac[…]

Night games. One night, no worries Real Women P[…]