elisei / moip-transparente-magento

33 stars 29 forks source link

Erro em $amount no arquivo Fee.php #77

Closed willsco closed 5 years ago

willsco commented 5 years ago

Olá! Vi saídas no system.log relacionadas ao arquivo Fee.php https://github.com/elisei/moip-transparente-magento/blob/master/app/code/local/MOIP/Transparente/Model/Sales/Quote/Address/Total/Fee.php `2019-03-18T19:04:08+00:00 ERR (3): Notice: Undefined variable: amount in public_html/app/code/local/MOIP/Transparente/Model/Sales/Quote/Address/Total/Fee.php on line 45

2019-03-18T19:04:08+00:00 ERR (3): Notice: Undefined variable: amount in public_html/app/code/local/MOIP/Transparente/Model/Sales/Quote/Address/Total/Fee.php on line 45

2019-03-18T19:04:19+00:00 ERR (3): Notice: Undefined variable: amount in public_html/app/code/local/MOIP/Transparente/Model/Sales/Quote/Address/Total/Fee.php on line 45

2019-03-18T19:04:19+00:00 ERR (3): Notice: Undefined variable: amount in public_html/app/code/local/MOIP/Transparente/Model/Sales/Quote/Address/Total/Fee.php on line 45`

Fui olhar o trecho de código, na linha 45, e fiquei curioso.

    public function fetch(Mage_Sales_Model_Quote_Address $address)
    {
        $amt = $address->getFeeMoip();
        $baseamt = $address->getBaseFeeMoip();
        if ($amt > 0) {
            $address->addTotal(array(
                    'code'=>$this->getCode(),
                    'title'=>$this->getLabel(),
                    'value'=> $amt
            ));
        } elseif($amount< 0) {
             $address->addTotal(array(
                    'code'=>$this->getCode(),
                    'title'=>$this->getLabelDiscount(),
                    'value'=> $amt
            ));
        }
        return $this;
    }

Desculpe a ignorância, mas no "elseif()", a variável não seria "$amt" ou "$baseamt" por conta da $amount não estar declarada na função? É correto alterar a variável na linha 45, de $amount para $amt ou $baseamt?

claudiobiato commented 5 years ago

Olá Gambozo, Estava com este mesmo problema, centenas de saídas em meu log, troquei este arquivo por um modelo antigo deste módulo, por hora resolveu. Ainda estou testando para ver se prejudicou outras funções, eu estou com problema com este módulo, muito lento, não está puxando o valor do frete com rapidez e os meios de pagamento estão ora são disponibilizados, ora não são. Eu creio que a última atualização do módulo não foi feliz.

Eu não tenho conhecimento técnico para analisar os arquivos,

Veja a integra do arquivo Fee.php

`<?php class MOIP_Transparente_Model_Sales_Quote_Address_Total_Fee extends Mage_Sales_Model_Quote_Address_Total_Abstract{

public function __construct()
{
    $this->setCode('fee_moip');
}
public function getLabel()
{
    return Mage::helper('transparente')->__('Juros de parcelamento');
}
public function collect(Mage_Sales_Model_Quote_Address $address)
{
    parent::collect($address);
    $items = $this->_getAddressItems($address);
    if (!count($items)) {
        return $this;
    }

    $amount = 'fee_moip';

    if ($amount) {
        $this->_addAmount($amount);
        $this->_addBaseAmount($amount);
    }

    return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
    $amt = $address->getFeeMoip();
    $baseamt = $address->getBaseFeeMoip();
    if($amt != 0){
        $address->addTotal(array(
                'code'=>$this->getCode(),
                'title'=>$this->getLabel(),
                'value'=> $amt
        ));
    } 
    return $this;
}

}`

willsco commented 5 years ago

@claudiobiato Meu conhecimento técnico é mínimo também. Só não restauro o arquivo para uma versão anterior por saber que o arquivo foi alterado para atender "Novo recurso desconto no pagamento à vista em cartão". Como não uso esse recurso em nenhuma loja, mudei a variável $amount na linha 45 para $amt, porém não sei se é a variável correta - considerei o "if" inicial. Dessa forma até resolve. Até remover o "elseif{}" inteiro resolve, mas não é o correto. Preciso dar uma olhada nessas funções:

$amt = $address->getFeeMoip();
$baseamt = $address->getBaseFeeMoip();

Só assim pra saber qual a variável certa usar. Vou dar uma olhada hoje de noite.

elisei commented 5 years ago

@Gambozo

Arquivo corrigido por favor verifique.