Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

'Planned start date' check

Thomas G
Tera Guru

Hi,

I have created a custom choice type column on the change_request table called 'u_lead_time_duration'. On that I have defined three choices:
1_day_lead
3_days_lead
5_days_lead

The plan now is that if 1_day_lead is selected, it should not be possible to set a 'Planned start date' (start_date) less than 1 day (or 24 hours) ahead in time. 3_days_lead means not possible to select a 'Planned start date' less than 3 days ahead in time and so forth.

I have then created an onChange Client Script also on the change_request table looking at the field name 'Planned start date'. The script is this:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}

var startDate = g_form.getValue('start_date');
var leadTimeDuration = g_form.getValue('u_lead_time_duration');

if (startDate && leadTimeDuration) {
var minDate = new Date();
minDate.setHours(0, 0, 0, 0); // Set time to midnight

switch (leadTimeDuration) {
case '1_day_lead':
minDate.setDate(minDate.getDate() + 1);
break;
case '3_days_lead':
minDate.setDate(minDate.getDate() + 3);
break;
case '5_days_lead':
minDate.setDate(minDate.getDate() + 5);
break;
}

var selectedDate = new Date(startDate);

if (selectedDate < minDate) {
g_form.addErrorMessage("Start date cannot precede the specified lead time of " + leadTimeDuration + ".");
g_form.clearValue('start_date');
}
}
}

For some reason it does not work. I can still select a 'Planned start date' on, say, today, even if 5_days_lead is selected. 

Can you help me make this script work?

Best regards
Thomas
1 ACCEPTED SOLUTION

Hi @Thomas G 

Yes it would be easier. Before that can you please try this client script?

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var format = g_user_date_time_format;
    var startDate = g_form.getValue('start_date');
    var leadTimeDuration = g_form.getValue('u_lead_time_duration');

    if (startDate && leadTimeDuration) {
        var minDate = new Date();
        minDate.setHours(0, 0, 0, 0); // Set time to midnight

        switch (leadTimeDuration) {
            case '1_day_lead':
                minDate.setDate(minDate.getDate() + 1);
                break;
            case '3_days_lead':
                minDate.setDate(minDate.getDate() + 3);
                break;
            case '5_days_lead':
                minDate.setDate(minDate.getDate() + 5);
                break;
        }
        // get date strings into a number of milliseconds since 1970-01-01
        var startDateMs = getDateFromFormat(startDate, format);
        var leadDateMS = minDate.getTime();

        if (startDateMs < leadDateMS) {
            g_form.addErrorMessage("Start date cannot precede the specified lead time of " + leadTimeDuration + ".");
            g_form.clearValue('start_date');
        }
    }
}
Thanks,
Anvesh

View solution in original post

18 REPLIES 18

@Thomas G These modifications looks great, I'll save this  code snippet for future reference. 😀

Thanks,
Anvesh

In a change_request form, if model is 'Normal' and creation of change request is today, then in this case 'Planned Start Date' should be after 3 business days (weekends must be excluded). If user tries to select time less than 3 days, error should be visible to set any date after 3 days. 

Kindly help in achieving this, if you will provide proper script that will be highly appreciated.

Thomas G
Tera Guru

Hi Anvesh and thanks for your reply,

With your code I get a message saying: 'Invalid date' no matter what start date I choose if a 'Lead time duration' is set, and when I click on OK to that, I get another message saying: 'Tue Sep 26 2023 00:00:00 GMT+0200 (Centraleuropæisk sommertid)'

@Thomas G check the choice values once, whether they are matching with the code. And add another alert just before the switch block like the one below.

 

alert(minDate);

 

see what the first alert is showing.

 

AnveshKumarM_0-1695643481976.png

 

Thanks,
Anvesh

palanikumar
Giga Sage
Giga Sage

Hi,

Ensure the below values are set as Value on choice options. If values are different then update the script to use those values: 

1_day_lead
3_days_lead
5_days_lead

Thank you,
Palani