• Resolved viniciusac

    (@viniciusac)


    Ao realizar uma compra, estou recebendo o seguinte warning nos emails de “novo peido” e na tela de confirma??o da compra:

    Warning: Division by zero in /home/autoescolavetor/public_html/wp-content/plugins/cielo-woocommerce/includes/class-wc-cielo-helper.php on line 392

    O trecho de código na linha citada é:

    		if ( 'client' == $this->installment_type && $quantity >= $this->interest ) {
    			$interest_rate        = $this->get_valid_value( $this->interest_rate ) / 100;
    
    			$interest_total       = $order_total * ( $interest_rate / ( 1 - ( 1 / pow( 1 + $interest_rate, $quantity ) ) ) );
    			$interest_order_total = $interest_total * $quantity;
    
    			if ( $credit_total < $interest_total ) {
    				$credit_total    = $interest_total;
    				$credit_interest = sprintf( __( 'with interest of %s%% a.m. Total: %s', 'cielo-woocommerce' ), $this->get_valid_value( $this->interest_rate ), sanitize_text_field( woocommerce_price( $interest_order_total ) ) );
    			}
    		}
Viewing 10 replies - 1 through 10 (of 10 total)
  • Thread Starter viniciusac

    (@viniciusac)

    O problema parece estar relacionado ao fato da loja em quest?o trabalhar “Taxa de juros (%)” igual a ZERO.
    O dono da loja divide em até 12 vezes sem juros, via CIELO, ent?o, n?o pude usar a op??o
    “Cobrar juros a partir de 12x”, porque com isso o plugin inclui juros na 12a parcela.
    Como o número máximo de parcela é 12, ent?o coloquei taxa de juros igual a zero.

    Thread Starter viniciusac

    (@viniciusac)

    Foi preciso fazer uma verifica??o se a taxa de juros está como zero.
    Para isso, alterei a linha 392 em “cielo-woocommerce/includes/class-wc-cielo-helper.php” mostrada abaixo:
    De
    $interest_total = $order_total * ( $interest_rate / ( 1 - ( 1 / pow( 1 + $interest_rate, $quantity ) ) ) );
    Para

    if ($interest_rate == 0){
    				$interest_total   = $order_total;
    			}
    			else {
    				$interest_total   = $order_total * ( $interest_rate / ( 1 - ( 1 / pow( 1 + $interest_rate, $quantity ) ) ) );
    			}

    e o Warning sumiu.

    Thread Starter viniciusac

    (@viniciusac)

    N?o sei se a altera??o que fiz gera algum efeito colateral, ou se precisaria alterar em algum outro ponto do plugin.
    Se alguém souber, por favor, avise aqui.

    Thread Starter viniciusac

    (@viniciusac)

    Tem um efeito colateral grave. As parcelas ficam no valor total do produto. De volta ao código.

    Thread Starter viniciusac

    (@viniciusac)

    A coisa é um pouco mais específica. Para o problema ocorrer, além da taxa de juros ser ZERO, é preciso que
    a quantidade de parcelas escolhidas pelo comprador ($quantity) >= ($this->interest) ao valor configurado em “Cobrar juros a partir de”.

    Ajuste no código anterior:

    if ($interest_rate == 0){
    				$interest_total = 0; 
    			}
    			else {
    				$interest_total = $order_total * ( $interest_rate / ( 1 - ( 1 / pow( 1 + $interest_rate, $quantity ) ) ) );
    			}
    Thread Starter viniciusac

    (@viniciusac)

    Além da fun??o get_installment_text,
    é necessário fazer a mesma altera??o na fun??o get_installments_html

    Tem uma pequena diferen?a ($i) em rela??o ao código anterior.

    if ($interest_rate == 0){
    	$interest_total = 0; 
    }
    else {
    	$interest_total = $order_total * ( $interest_rate / ( 1 - ( 1 / pow( 1 + $interest_rate, $i ) ) ) );}

    possivelmente, tem que fazer também na fun??o validate_installments

    Todas estas est?o no arquivo cielo-woocommerce/includes/class-wc-cielo-helper.php

    Thread Starter viniciusac

    (@viniciusac)

    N?o sei se estes códigos geram bugs colaterais. Se alguém souber, por favor, avise aqui.

    Plugin Author Claudio Sanches

    (@claudiosanches)

    Me mostra como est?o configuradas as op??es das parcelas.
    Assim tento simular aqui e ver o que da para fazer para prevenir esse erro sem causar nenhum outro problema.

    Thread Starter viniciusac

    (@viniciusac)

    Ficou muito confuso os comentários que fiz no início. Se pudesse, apagaria.
    Vou fazer um resumo aqui:

    Quando o CIELO é configurado para trabalhar com “Taxa de juros (%)” igual a ZERO dá esse problema.

    No meu caso, ocorreu com a configura??o de parcelas em até 12 vezes sem juros, via CIELO. N?o pude usar a op??o “Cobrar juros a partir de 12x”, porque com isso o plugin inclui juros na 12a parcela.
    Como o número máximo de parcela é 12, ent?o coloquei taxa de juros igual a zero.

    Ao realizar uma compra, dá o seguinte warning nos emails de “novo peido” e na tela de confirma??o da compra:
    Warning: Division by zero in /wp-content/plugins/cielo-woocommerce/includes/class-wc-cielo-helper.php on line 392

    Para o problema ocorrer, além da taxa de juros ser ZERO, é preciso que a quantidade de parcelas escolhidas pelo comprador ($quantity) seja maior ou igual ao valor configurado em “Cobrar juros a partir de” ($this->interest).

    Configura??es parcelamento Woocommerce cielo division by zero warning

    Plugin Author Claudio Sanches

    (@claudiosanches)

    Na verdade pelas configura??es você esta utilizando uma vers?o desatualizada do plugin.
    Isso já foi corrigido faz mais do que 2 meses já em 2016/11/07 na vers?o 4.0.12.
    Acabei de lan?ar vers?o 4.0.13 que torna as configura??es mais claras para isso, como você n?o vai vai cobrar juros dos clientes, ent?o quer dizer que a loja esta assumindo o juros, entretanto atualizando vai ficar mais simples de configurar.

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘Division by zero in class-wc-cielo-helper.php’ is closed to new replies.