Javascript to calculate a monthly loan payment

Tap Forms – Organizer Database App for Mac, iPhone, and iPad Forums Script Talk Javascript to calculate a monthly loan payment

Viewing 0 reply threads
  • Author
    Posts
  • September 9, 2020 at 10:29 PM #41901

    Michael Tucker
    Participant

    I found this javascript example & tried to adapt it but seems I did not get it right.

    I am trying to calculate a monthly payment into the field that is this script (shown below).

    The number of years of the loan, the principal balance of the loan & the annual percentage rate are already inputted manually in the same form. The script references those data points & does math to find the monthly payment.

    Perhaps it could be done without javascript with a calculation field but the calculation is not simple, and this existing javascript example (meant for a web form) seemed like it should be workable if only it were formatted for tapforms. A few parts included in the original example (commented out) I am not trying to get to work at this time, just the part that concerns the loan payment amount.

    function calculatePayment() {

    // Source: https://www.oreilly.com/library/view/javascript-the-definitive/0596000480/ch01s08.html
    // Get the user’s input from the form. Assume it is all valid.
    // Convert interest from a percentage to a decimal, and convert from
    // an annual rate to a monthly rate. Convert payment period in years
    // to the number of monthly payments.

    // var principal = document.loandata.principal.value;
    // var interest = document.loandata.interest.value / 100 / 12;
    // var payments = document.loandata.years.value * 12;

    var principal = record.getFieldValue(‘fld-a37b001914c9476e85ff6e72dc5f7e41’);
    var interest = record.getFieldValue(‘fld-ad2e6a56376f462fa750fee0eca40902’) / 100 / 12;
    var payments = record.getFieldValue(‘fld-3aaee77c789642dbb64633cac5b9b210’) * 12;

    // Now compute the monthly payment figure, using esoteric math.

    var x = Math.pow(1 + interest, payments);
    var monthly = (principal*x*interest)/(x-1);

    // Check that the result is a finite number. If so, display the results.

    if (!isNaN(monthly) &&
    (monthly != Number.POSITIVE_INFINITY) &&
    (monthly != Number.NEGATIVE_INFINITY)) {

    x = round(monthly);
    // document.loandata.total.value = round(monthly * payments);
    // document.loandata.totalinterest.value = round((monthly * payments) – principal);
    }
    // Otherwise, the user’s input was probably invalid, so don’t
    // display anything.

    else {
    x = “”;
    // document.loandata.total.value = “”;
    // document.loandata.totalinterest.value = “”;
    }
    }

    // This simple method rounds a number to two decimal places.

    function round(x) {
    return Math.round(x*100)/100;
    record.setFieldValue(scr_TP_MortgagePayment,round(x));
    form.saveAllChanges();
    }

    calculatePayment();

Viewing 0 reply threads

You must be logged in to reply to this topic.