Calcular tabela Price em PHP (PGTO no Excel)

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:


// 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

28 comments

  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. Sidney, Eu fiz baseado em uma consulta com o pessoal de uma financeira, desses créditos consignados. Mas deixa ae pra consulta, é valido tambem! :)

  4. Gilmar, qual o problema em rodar? pode me dizer o erro por ai?

  5. 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.

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

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

  8. Eduardo, este foi o juros, so limitar as casas decimais.

  9. 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!

  10. 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.

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

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

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

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

  14. 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

  15. 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.

  16. 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

  17. Implementei sua função e nos testes tive o seguinte resultado:

    Numa simulação onde o total inicial era de R$ 30.000,00 com uma taxa de juros de 1,5 am e num prazo de 12 meses a função retornou o total de juros no valor de R$ 2.500,00;

    Na segunda simulação onde o total inicial era de R$ 30.000,00 com uma taxa de juros de 1,5 am e num prazo de 12 meses, ou seja EXATAMENTE igual ao primeiro cenário, a função retornou o total de juros no valor de R$ 10.000,00;

    =D

  18. Bom, se quiser, me envie para eu dar uma olhada. Acho que você ta passando valores errados. Ja testei varias vezes esta função. Mas enfim, qq coisa, estou a disposição.

  19. Parabens, estava a procura exatamente deste calculo e encontrei no seu blog.
    Bom trabalho!

Deixe um comentário

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.