Support » Plugin: Woo PagSeguro Parceled » Erro no calculo das parcelas e atualizando com produto variável

  • Estava usando o plugin, e ele é ótimo e me ajudeou até certo ponto, vi que algumas pessoas estavam passando pelos mesmos problemas que eu, então resolvi arrumar (gambiarra), mas por hora resolveu, vou compartilhar as alterações que fiz para ajudar a comunidade, como disse fiz na pressa, e quem quiser ajudar a melhorar o código ficaria grato, já estou vendo para futuramente pegar os fatores de calculo automaticamente com a conta configurada no pagseguro, por hora ainda fiz estático mas atualizei os valores.

    Na linha: 225 – woo-pagseguro-parceled.php
    atualizei para:
    $fator = array(
    1,
    0.5226666666666667,
    0.34333,
    0.26133,
    0.21200,
    0.17933,
    0.15600,
    0.13838,
    0.12488,
    0.11400,
    );

    isso corrigiu os valores das parcelas para mim.
    Outra coisa muito importante para mim era atualizar os valores das parcelas quando escolhe uma variação, para isso criei um js.

    JS criado:
    jQuery(function($) {
    document.querySelectorAll(‘.tawcvs-swatches span.swatch’).forEach(function(element, index, array){
    element.addEventListener(‘click’, function(event){
    setTimeout(function(){
    var pegapreco = document.querySelector(‘.single_variation_wrap ins span.woocommerce-Price-amount.amount’);
    if (pegapreco == null){
    pegapreco = document.querySelector(‘.single_variation_wrap span.woocommerce-Price-amount.amount’);
    }
    pegapreco = pegapreco.innerText.replace(‘R$’, ”).replace(‘,’, ‘.’);
    var parcelas = document.querySelector(‘.p-woo-pagseguro-installment .amount’);
    if (parcelas != null){
    var html = parcelas.innerHTML.split(‘</span>’);
    html[1] = pegapreco / document.querySelector(‘.vezes’).innerText;
    html[1] = html[1].toFixed(2).toString().replace(‘.’,’,’);
    parcelas.innerHTML = html[0] + ‘</span>’ + html[1];
    document.querySelectorAll(‘span.span-woo-pagseguro-installments’).forEach(function(element, index, array){
    var juros = element.querySelector(‘.juros’);
    if (juros == null){
    juros = 1;
    } else {
    juros = juros.innerText;
    }
    parcelas = element.querySelector(‘.amount’);
    var html = parcelas.innerHTML.split(‘</span>’);
    html[1] = pegapreco * juros;
    html[1] = html[1].toFixed(2).toString().replace(‘.’,’,’);
    parcelas.innerHTML = html[0] + ‘</span>’ + html[1];
    })
    }
    },100);
    })
    });
    });

    Na linha: 238 – woo-pagseguro-parceled.php
    if ($installment > 0 ) {
    $j = 0;
    for ($i = 0; $i <= 11; $i++ ) {
    if ($start == ‘left’) {
    // left
    if (($price / ($i + 1)) >= 5 && ($i % 2) == 0 ) {
    $j++;
    if ($i + 1 > $installment) { $installments = “com juros”; } else { $installments = “*sem juros“; }
    if (($j + 1) % 2 ) { $class = “”; } else { $class = “color”; }
    if (($i + 1) <= $installment ) {
    echo ‘<span class=”span-woo-pagseguro-installments ‘.$class.'”>’.($i+1).’x de ‘.woocommerce_price($price / ($i+1)).’ ‘.$installments.'<div class=”juros” style=”display:none !important;”>’ . (1 / ($i+1)) . ‘</div></span>’;
    }else{
    echo ‘<span class=”span-woo-pagseguro-installments ‘.$class.'”>’.($i+1).’x de ‘.woocommerce_price($price * $fator[$i]).’ ‘.$installments.'<div class=”juros” style=”display:none !important;”>’ . $fator[$i] . ‘</div></span>’;
    }
    }
    //
    } else if ($start == ‘right’) {
    // right
    if (($price / ($i + 1)) >= 5 && ($i % 2) != 0 ) {
    $j++;
    if ($i + 1 > $installment) { $installments = “com juros”; } else { $installments = “*sem juros“; }
    if (($j + 1) % 2 ) { $class = “”; } else { $class = “color”; }
    if (($i + 1) <= $installment ) {
    echo ‘<span class=”span-woo-pagseguro-installments ‘.$class.'”>’.($i+1).’x de ‘.woocommerce_price($price / ($i+1)).’ ‘.$installments.'<div class=”juros” style=”display:none !important;”>’ . (1 / ($i+1)) . ‘</div></span>’;
    }else{
    echo ‘<span class=”span-woo-pagseguro-installments ‘.$class.'”>’.($i+1).’x de ‘.woocommerce_price($price * $fator[$i]).’ ‘.$installments.'<div class=”juros” style=”display:none !important;”>’ . $fator[$i] . ‘</div></span>’;
    }
    }
    //
    }

    }
    }else{
    echo ‘<span class=”span-woo-pagseguro-installments ‘.$class.'”>1x de ‘.woocommerce_price($price).’ *sem juros</span>’;
    }

    Na linha: 307 – woo-pagseguro-parceled.php
    printf(__(‘<div class=”vezes” style=”display:none !important”>%s</div>até <span> %sx </span> de <span> %s </span><div class=”precoparcelado” style=”display:none !important”>%s</div>’, ‘woo-pagseguro-parceled’ ), $woo_product_parceled_installment, $woo_product_parceled_installment, $this->woo_product_parceled(), $this->woo_product_parceled() ); ?>

    Como disse, fiz na correria, porem está resolvendo para mim, ainda farei melhorias, quem quiser ajudar a melhorar o plugin será de grande ajuda para a comunidade e o criador do plugin.

Viewing 2 replies - 1 through 2 (of 2 total)
  • Esqueci de mencionar, como uso um plugin para modificar as variações, os famosos “swatches”, meu seletor ficou:
    document.querySelectorAll(‘.tawcvs-swatches span.swatch’).forEach(function(element, index, array)…

    Aqui basta alterar as classes para se adequar ao seu tema e plugins:
    document.querySelectorAll(‘classes aqui’).forEach(function(element, index, array)

    Plugin Author carlosramosweb

    (@carlosramosweb)

    Olá, @driftweb
    Mande seu plugin alterado em zip para o email carlosramosweb@hotmail.com para passar por testes, se estiver tudo ok posso colocar no ar com suas alteração e com menção ao seu nome do plugin.

    Email: carlosramosweb@hotmail.com

Viewing 2 replies - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.