JSFiddle - React, Tailwind, and code Playground

HTML

<label for="input_loan_amount">Loan amount:</label>
 <input type="text" id="input_loan_amount" name="input_loan_amount" value="250000">
 <br>
 
 <label for="input_loan_amount">Fixed price:</label>
 <input type="text" id="input_installment" name="input_installment" value="3499">
 <br>
 
 <label for="input_loan_amount">Monthly interest (%):</label>
 <input type="text" id="input_monthly_interest" name="input_monthly_interest" value="0.41">
 <br>
 
 <label for="input_loan_amount">Initial fee:</label>
 <input type="text" id="input_initial_fee" name="input_initial_fee" value="3499">
 <br>
 
 <label for="input_monthly_fee">Monthly fee:</label>
 <input type="text" id="input_monthly_fee" name="input_monthly_fee" value="99">
 <br>
 <br>
 
 
 

<b>Duration:</b><i id="Duration"></i><br>
<b>Saldo Primo:</b><i id="SaldoPrimo"></i><br>
<b>Saldo Ultimo:</b><i id="SaldoUltimo"></i><br>
<b>RunningAdm:</b><i id="RunningAdm"></i><br>
<b>RunningInterest:</b><i id="RunningInterest"></i><br>
<b>TotalCost:</b><i id="TotalCost"></i><br>
<b>Totalpay:</b><i id="Totalpay"></i><br>
<b>FixedPrice:</b><i id="FixedPrice"></i><br>
<b>ExtraOrdinaryInstallment:</b><i id="ExtraOrdinaryInstallment"></i><br>
<br>
<button type="button" onclick="calculate()">Calculate</button>

JavaScript

function calculate()
{
    let Duration=0;
    let SaldoPrimo=0;
    let SaldoUltimo=0;
    let MonthInterestAmount = 0;
    let RunningAdm = 0;
    let RunningInterest = 0;
    let ExtraOrdinaryInstallment = 0;

    LoanAmount=parseFloat($('#input_loan_amount').val());
    FixedPrice=parseFloat($('#input_installment').val());
    // User inputs interest rate in percent (e.g. 0.41), so we need to divide by 100
    MonthInterest = (1/100) * parseFloat($('#input_monthly_interest').val());
    OpeningFee=parseFloat($('#input_initial_fee').val());
    MonthFee=parseFloat($('#input_monthly_fee').val());
    SaldoPrimo=LoanAmount+OpeningFee;
    console.log({ LoanAmount, FixedPrice, MonthInterest, OpeningFee, MonthFee, SaldoPrimo })
    do
     {
         Duration++;
         MonthInterestAmount=SaldoPrimo*MonthInterest;
         SaldoUltimo=SaldoPrimo+MonthFee+MonthInterestAmount-FixedPrice;
         console.log( { Duration, SaldoPrimo, MonthFee, MonthInterestAmount, FixedPrice, SaldoUltimo })
         RunningAdm=RunningAdm+MonthFee;
         RunningInterest=RunningInterest+MonthInterestAmount;
         SaldoPrimo=SaldoUltimo;
         if (Duration>400)
         {
             break;
         }
         SaldoTest=SaldoUltimo+(SaldoPrimo*MonthInterest)+MonthFee;
         console.log( { Duration, SaldoTest, SaldoUltimo })
    }
    while (!(SaldoTest < FixedPrice));

    if (SaldoUltimo>0)
     {
         MonthInterestAmount=SaldoPrimo*MonthInterest;
         Duration++;
         RunningAdm=RunningAdm+MonthFee;
         RunningInterest=RunningInterest+MonthInterestAmount;
         ExtraOrdinaryInstallment=MonthInterestAmount+MonthFee+SaldoUltimo;
         $('#result').html((MonthInterestAmount+MonthFee+SaldoUltimo));
     }
    SaldoPrimo=0;
    SaldoUltimo=0;
    let TotalCost=RunningAdm+RunningInterest+OpeningFee;
    let Totalpay=LoanAmount+TotalCost;
    $('#Duration').html(Duration);
    $('#SaldoPrimo').html(SaldoPrimo);
    $('#SaldoUltimo').html(SaldoUltimo);
  ...