From 34a78760908654d69bf88704b2230009f75d6f8d Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:22:19 +0530 Subject: [PATCH 1/3] Create README.md Updating readme with the script information --- .../Close Related HR cases & HR tasks/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Client-Side Components/UI Actions/Close Related HR cases & HR tasks/README.md diff --git a/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/README.md b/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/README.md new file mode 100644 index 0000000000..0e2ccec060 --- /dev/null +++ b/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/README.md @@ -0,0 +1,14 @@ +Scenario:- + +Table: HR Case + +Create a form button named "Check related item and Close Complete" feature and list down the related child HR cases and HR tasks +in the pop-up message. +Upon confirmation, it will close the current case and other listed items. + +This will help in reducing the manual effort of closing items manually. + +Scripts: +Client UI script to handle the confirmation popup and state of current case. + +GlideAJAX enabled script include to fetch the data and close the related items. From 7f4e3c9b05020f6e25d2fa01616cee9054ad2549 Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:25:16 +0530 Subject: [PATCH 2/3] Create UI Action script.js UI action script --- .../UI Action script.js | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Client-Side Components/UI Actions/Close Related HR cases & HR tasks/UI Action script.js diff --git a/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/UI Action script.js b/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/UI Action script.js new file mode 100644 index 0000000000..3d7b06fc37 --- /dev/null +++ b/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/UI Action script.js @@ -0,0 +1,28 @@ +// Demo- OnClick function to execute +function demo() { + var ga = new GlideAjax('sn_hr_core.close_items'); + ga.addParam('sysparm_name', 'getRelatedItems'); + ga.addParam('sysparm_case_id', g_form.getUniqueValue()); + ga.getXMLAnswer(function(response) { + // If there exist related items + var items = JSON.parse(response); + if (items.length > 0) { + var msg = "This case has related items:\n"; + items.forEach(function(item) { + msg += "- " + item.type + ": " + item.number + "\n"; + }); + msg += "\nDo you want to close them as well?"; + if (confirm(msg)) { + // close current HR case + g_form.setValue('state', '3'); + g_form.save(); + } + } else { + // If no related item is associated + if (confirm("No related items found. Close this case?")) { + g_form.setValue('state', '3'); + g_form.save(); + } + } + }); +} From 4d00aecd2cf80f405a4c6dc246cf9e83ab1df769 Mon Sep 17 00:00:00 2001 From: chaitanyalal18 <42643661+chaitanyalal18@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:27:03 +0530 Subject: [PATCH 3/3] Script Include.js client callable script include --- .../Script Include.js | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Client-Side Components/UI Actions/Close Related HR cases & HR tasks/Script Include.js diff --git a/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/Script Include.js b/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/Script Include.js new file mode 100644 index 0000000000..c61e9c1ea0 --- /dev/null +++ b/Client-Side Components/UI Actions/Close Related HR cases & HR tasks/Script Include.js @@ -0,0 +1,50 @@ +var close_item = Class.create(); +close_item.prototype = Object.extendsObject(global.AbstractAjaxProcessor, { + getRelatedItems: function() { + var caseId = this.getParameter('sysparm_case_id'); + var results = []; + + // Get child HR cases + var childCases = new GlideRecord('sn_hr_core_case'); + childCases.addQuery('parent', caseId); + childCases.query(); + while (childCases.next()) { + results.push({ type: 'HR Case', number: childCases.getValue('number') }); + } + + // Get tasks + var tasks = new GlideRecord('sn_hr_core_task'); + tasks.addQuery('hr_case', caseId); + tasks.query(); + while (tasks.next()) { + results.push({ type: 'HR Task', number: tasks.getValue('number') }); + } + + return JSON.stringify(results); + }, + closeRelatedItems: function() { + var caseId = this.getParameter('sysparm_case_id'); + + // Close child cases + var childCases = new GlideRecord('sn_hr_core_case'); + childCases.addQuery('parent', caseId); + childCases.query(); + while (childCases.next()) { + childCases.setValue('state', '3'); + childCases.update(); + } + + // Close tasks + var tasks = new GlideRecord('sn_hr_core_task'); + tasks.addQuery('hr_case', caseId); + tasks.query(); + while (tasks.next()) { + tasks.setValue('state', '3'); + tasks.update(); + } + + return "done"; + + }, + type: 'close_task' +});