diff --git a/Client-Side Components/UI Actions/CloseChildCases/CloseChildCases.js b/Client-Side Components/UI Actions/CloseChildCases/CloseChildCases.js new file mode 100644 index 0000000000..458278ddbd --- /dev/null +++ b/Client-Side Components/UI Actions/CloseChildCases/CloseChildCases.js @@ -0,0 +1,23 @@ +(function executeAction() { + var grCase = new GlideRecord('sn_customerservice_case'); + grCase.addQuery('parent', current.sys_id); + grCase.query(); + + var counter = 0; + while (grCase.next()) { + if (grCase.state != 3) { // 3 = Closed + grCase.resolution_code = '16'; + grCase.close_notes = 'This case was auto closed from the parent case.'; + grCase.state = 3; + grCase.update(); + counter++; + } + } + + // Show info message only if any cases were closed + if (counter > 0) { + gs.addInfoMessage(counter + ' child case(s) have been closed.'); + } + + action.setRedirectURL(current); +})(); diff --git a/Client-Side Components/UI Actions/CloseChildCases/README.md b/Client-Side Components/UI Actions/CloseChildCases/README.md new file mode 100644 index 0000000000..61f910aae0 --- /dev/null +++ b/Client-Side Components/UI Actions/CloseChildCases/README.md @@ -0,0 +1,6 @@ +Name: Close all Child Case +Table:sn_customerservice_case +Condition: (gs.hasRole('sn_customerservice_agent') || gs.hasRole('admin') ) && (new GlideRecord('sn_customerservice_case').addQuery('parent', current.sys_id).query().hasNext()) + +Use Case: +Provide UI action button to close all the associated child cases from the parent Case.