greguly / cielo-woocommerce

Adiciona a Cielo como opção de recebimento no WooCommerce
GNU General Public License v2.0
31 stars 21 forks source link

Fix #61 #64

Closed lcssanches closed 4 years ago

lcssanches commented 7 years ago

Verifica se existe quantidade de parcelas antes de chamar a função get_installment_text, onde o erro acontece.

claudiosanches commented 7 years ago

Qual erro acontece? No caso ainda é importante mostrar com que cartão foi utilizado. Além que se tem erro por causa da quantidade de parcelas, aquele lance que estava fazendo sobre apenas mostrar se foi pago, não resolve muito.

lcssanches commented 7 years ago

Division by zero.

Fiz um teste aqui e percebi que uma alteração no meu tema estava causando isso.

Mas deixa eu te explicar...

Veja essa imagem: image Esse pedido foi pago parcelado, mas na página do pedido não mostra os detalhes para o cliente. Então para formatar a forma de pagamento eu escrevi este trecho no functions.php (esse mesmo filtro filtro também tem no plugin, mas é adicionado no construtor da classe):

function adjust_totals_display( $totals, $order ) {
    /*
        Verifica se o método de pagamento já está formatado. Caso não esteja chama o método do próprio cielo-woocommerce para formatar.
    */
    $_payment_method = get_post_meta( $order->id, "_payment_method" , true );

    if($_payment_method == 'cielo_credit'){
        $payment_method = $totals['payment_method'];

        $payment_method = $payment_method['value'];
        if (strpos($payment_method, '<small>') === false) {
            $totals = wc_get_payment_gateway_by_order($order)->order_items_payment_details($totals, $order );
        }
    }

    //Remove o campo SUBTOTAL.
    unset($totals['cart_subtotal']);

    return $totals;
}
add_filter( 'woocommerce_get_order_item_totals',  'adjust_totals_display' , 90, 2 );

Por isso estava gerava o erro. Eu formatava o método de pagamento para todos os pedidos sem verificar.

Mas outra dúvida. O plugin não deveria formatar isso na página do pedido?

claudiosanches commented 7 years ago

Deve formatar em todas sa páginas, para o cliente poder consultar e ver com o que pagou. Mas da para alterar e mostrar apenas o cartão se não tiver parcelas.

lcssanches commented 7 years ago

OK, mas porque neste caso não formatou na página do pedido?

claudiosanches commented 7 years ago

@lcssanches preciso ver, mas tem que aparecer em todas as páginas isso pro cliente.

lcssanches commented 7 years ago

Bom o que eu percebi até agora é que o filtro que existe no plugin só funciona (ou só é adicionado) no construtor da classe de pagamento e na página de pagamento o plugin não é instanciado.

Vou tentar entender melhor isso.