Calcular tabela Price em PHP (PGTO no Excel)

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Um cliente me solicitou um sistema para simulação de emprestimos, até ae tudo bem. Me enviou uma planilha na qual estava  uma simulação utilizando a famosa tabela price, para isso usava uma função no EXCEL que é denominada PGTO. Esta função basicamente faz todos os calculos necessários para determinar o valor da parcela mensal a ser paga.

Mas como em PHP não existe esta função PGTO, mãos a massa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Funcao para Calcular valor da Parcela - Tabela Price

function Price($Valor, $Parcelas, $Juros) {

$Juros = bcdiv($Juros,100,15);
$E=1.0;
$cont=1.0;

for($k=1;$k<=$Parcelas;$k++)
{
$cont= bcmul($cont,bcadd($Juros,1,15),15);
$E=bcadd($E,$cont,15);
}
$E=bcsub($E,$cont,15);

$Valor = bcmul($Valor,$cont,15);
return bcdiv($Valor,$E,15);
}

// Exemplo de utilização
echo Price($Valor, $Parcelas, $Juros);

Encontrei a solução na iMasters Fóruns (em um post bem antigo por sinal), que por sua vez estava escrita em C++, apenas tive o trabalho de converter para PHP. Usei sempre os operadores matemáticos BC do PHP, para arbitrariamente utilizar até 15 casas decimais nos cálculos.

Para quem quiser conferir ou apenas conhecer por curiosidade o calculo, segue abaixo:

x=C*((1+i)^n)/ somatoria de (1+i)^k para k=0 ate k = n-1

Sendo: C = Valor, n = Parcelas, i = Juros

Agradecimento aos meus colaboradores Magno e Daniel da Brainatwork, que ficaram pentelhando e dando palpites durante a conversão da função

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

24 comentários sobre “Calcular tabela Price em PHP (PGTO no Excel)

  1. Muito obrigado por compartilhar Diogo!
    Precisava exatamente desta função, apesar de ainda não ter testado sua implementação.

    Obrigado e um abraço.

  2. Cara, aqui deu diferença! :/

    Talvez eu tenha entendido errado tua ideia.
    De qualquer forma, encontrei a fórmula que está dando exatamente o mesmo valor da fórmula pgto() do excel.
    Se quiser analisar, é a seguinte:

    $valor1 = $taxa * pow((1 + $taxa), $quantParcelas);
    $valor2 = pow((1 + $taxa), $quantParcelas) – 1;
    $pgto = $valor * ($valor1 / $valor2);
    return $pgto;

    Essa funcionou perfect aqui.

    Abraço.

  3. Olá amigo, vi sua função da tabela price e estou precisando muito implementar aqui na empresa um sistema que eu entre com o valor financiado a quantidade de parcelas e os juros e o php monta a estrutura. Baixei seu script preenchi ele assim:

    echo Price(10000.00, 20, 1);

    O retorno foi esse: 554.153148905511600 não entendi nada.

  4. Perfeito!
    Parabéns e muito obrigado!
    Agora, vc sabe como fazer isso em JavaScript?!
    rs.
    vlw

  5. Mr. Goose, facil demais em JS, so usar o mesmo calculo. Alguma dificuldade?

  6. Boa tarde Diogo estou com um pouco de problemas em encontrar a formula taxa do excel para php ou js tem algo ai?

    Essa função funcionou perfeitamente!

  7. Igor, não tem mistério, so adaptar o calculo. Mas antes de mais nada, voce precisa saber examente como é feito o calculo, para so depois montar.

  8. Podemos conversar? Preciso de uma aplicação web com esse script… Entre em contato por e-mail. Abraço

  9. Show de bola, Diogo!
    Funcionou perfeitamente.
    Muito obrigado.

    Sem querer abusar, mas já abusando: você tem o cálculo pela tabela SAC?
    Valeu!

  10. Silvio, não tenho. Mas faria mediante orçamento. Se precisar, estou a disposição.

  11. Pessoal, eu consegui encontrar o valor da parcela, igual a função PGTO do Excel
    agora preciso de uma aplicação em PHP que me mostre a amortização, já fiz varias buscas na internet e não consegui encontrar nada. Alguém já tentou fazer algo parecido?

    Sistema Price
    n Juros Amortização Pagamento Saldo devedor
    0 0 0 0 300.000,00
    1 12.000,00 55.388,13 67.388,13 244.611,87
    2 9.784,47 57.603,66 67.388,13 187.008,21
    3 7.480,32 59.907,81 67.388,13 127.100,40
    4 5.084,01 62.304,12 67.388,13 64.796,28
    5 2.591,85 64.796,28 67.388,13 0

  12. bom dia, eu sou completamente leigo, como faço para colocar esse codigo pra funcionar no site de uma cliente que precisa simular emprestimos, ficaria muito agradecido.

  13. Recomendo vc contratar alguem que saiba fazer. Qualquer coisa, me envia um e-mail com o site e o que vc quer fazer, que faço um orçamento para voce: diogo@dourado.net

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Prove que você não é um robo *