Tuesday, March 19, 2019

How to calculate Age in Dynamic 365 CRM




One of the most common requirements in Dynamic CRM is to view the age of the customer/contact or individuals. It seems to be pretty straight forward but it is a bit challenging.

First, I tried calculating Age from Business User favorites which is – Business Rules in Dynamic CRM.





Business Rule was giving me a hard time and then I moved myself to the Developers favorites – JavaScript.

Below JavaScript code is pretty straight forward and we just need to register event on change of a Birthdate of any other date field. I created a new firld new_age of type Whole Number.


function onChange_birthdate()
{
    var birthday = Xrm.Page.getAttribute("birthdate").getValue();
    if (birthday != null)
    {
        var age = calculate_age(birthday.getMonth(), birthday.getDate(),                                  birthday.getFullYear());

        Xrm.Page.getAttribute("new_age").setValue(age);
        Xrm.Page.getAttribute("new_age").setSubmitMode('always');
    }
}

function calculate_age(birth_month, birth_day, birth_year)
{
    today_date = new Date();
    today_year = today_date.getFullYear();
    today_month = today_date.getMonth();
    today_day = today_date.getDate();
    age = today_year - birth_year;

    if (today_month < (birth_month))
    {
        age--;
    }
    if (((birth_month) == today_month) && (today_day < birth_day))
    {
        age--;
    }
    return age;

}

Hope this is help!

Thanks.
Vipin Jaiswal

1 comment:

Anonymous said...

this could land us in a problem after a year,
the age field will be 1 year less than actual value.

Again you need to write C# batchjob to update the records.
We cant wait for users to open each record and update the value using js