Business Rule: Add 6 months to date, but if result is before today, then add 12 months until result is after today

Desmo
Mega Guru

Hello, community.

I have a business rule:

  1. Query parent record from child
  2. Get closed date field value
  3. Add 6 months to closed date (closed date + 6 months)
  4. Update child due date field value with closed date + 6 months

Looking for script to modify the script: Add 6 months to date, but if result is before today, then add 12 months until result is after today.

var gr= new GlideRecord('u_table_1');

gr.addQuery('sys_id',current.u_parent); //query record number
gr.query();
if(gr.next())

	var closed = gr.getValue('u_closed_at');	
	var gdt = new GlideDateTime(closed);
	gdt.addMonthsLocalTime(6);
	
{

current.u_due_date = gdt;
gr.update();

}

})(current, previous);

 

Thank you.

1 ACCEPTED SOLUTION

Simon Christens
Kilo Sage

Try this

var gr= new GlideRecord('u_table_1');

gr.addQuery('sys_id',current.u_parent); //query record number
gr.query();
if(gr.next())

	var closed = gr.getValue('u_closed_at');	
	var gdt = new GlideDateTime(closed);
	gdt.addMonthsLocalTime(6);
	
{

var now = new GlideDateTime(); //now

while(gdt.before(now)){

//As long as gdt is before now then we add 12 months and check again
gdt.addMonthsLocalTime(12)
}

current.u_due_date = gdt;
gr.update();

}

})(current, previous);

View solution in original post

1 REPLY 1

Simon Christens
Kilo Sage

Try this

var gr= new GlideRecord('u_table_1');

gr.addQuery('sys_id',current.u_parent); //query record number
gr.query();
if(gr.next())

	var closed = gr.getValue('u_closed_at');	
	var gdt = new GlideDateTime(closed);
	gdt.addMonthsLocalTime(6);
	
{

var now = new GlideDateTime(); //now

while(gdt.before(now)){

//As long as gdt is before now then we add 12 months and check again
gdt.addMonthsLocalTime(12)
}

current.u_due_date = gdt;
gr.update();

}

})(current, previous);