From 380eac6fd6e944d10ce6a48ac2f6f88d694a7d0c Mon Sep 17 00:00:00 2001 From: Maheshkh9738 Date: Wed, 29 Oct 2025 19:13:52 +0530 Subject: [PATCH 1/4] Create Readme.md --- .../Catalog Client Script/Schedule Request/Readme.JS | 1 + 1 file changed, 1 insertion(+) create mode 100644 Client-Side Components/Catalog Client Script/Schedule Request/Readme.JS diff --git a/Client-Side Components/Catalog Client Script/Schedule Request/Readme.JS b/Client-Side Components/Catalog Client Script/Schedule Request/Readme.JS new file mode 100644 index 0000000000..6d5fe42ac6 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Schedule Request/Readme.JS @@ -0,0 +1 @@ +This project allows users to schedule a Service Catalog request for a future date and time. Instead of submitting immediately, the request is stored and automatically submitted later using a Scheduled Job From 2043ba38648f7059974c806b767a845399c90a1a Mon Sep 17 00:00:00 2001 From: Maheshkh9738 Date: Wed, 29 Oct 2025 19:14:40 +0530 Subject: [PATCH 2/4] Create scheduled scriptinclude.JS --- .../Schedule Request/scheduled scriptinclude.JS | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Client-Side Components/Catalog Client Script/Schedule Request/scheduled scriptinclude.JS diff --git a/Client-Side Components/Catalog Client Script/Schedule Request/scheduled scriptinclude.JS b/Client-Side Components/Catalog Client Script/Schedule Request/scheduled scriptinclude.JS new file mode 100644 index 0000000000..15411e4561 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Schedule Request/scheduled scriptinclude.JS @@ -0,0 +1,15 @@ +var ScheduledRequestHelper = Class.create(); +ScheduledRequestHelper.prototype = Object.extendsObject(AbstractAjaxProcessor, { + storeScheduledRequest: function() { + var itemID = this.getParameter('sysparm_item'); + var scheduledTime = this.getParameter('sysparm_time'); + + var record = new GlideRecord('x_snc_scheduled_requests'); // Custom table + record.initialize(); + record.catalog_item = itemID; + record.scheduled_time = scheduledTime; + record.insert(); + + return 'Scheduled successfully'; + } +}); From 132109b6df990476fdf98fcd64ba8c964e6b5d3a Mon Sep 17 00:00:00 2001 From: Maheshkh9738 Date: Wed, 29 Oct 2025 19:17:54 +0530 Subject: [PATCH 3/4] Create scheduled client script.js --- .../Schedule Request/scheduled client script.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Client-Side Components/Catalog Client Script/Schedule Request/scheduled client script.js diff --git a/Client-Side Components/Catalog Client Script/Schedule Request/scheduled client script.js b/Client-Side Components/Catalog Client Script/Schedule Request/scheduled client script.js new file mode 100644 index 0000000000..eaa13fa462 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Schedule Request/scheduled client script.js @@ -0,0 +1,17 @@ +function onSubmit() { + var scheduledTime = g_form.getValue('scheduled_time'); + var currentTime = new Date().toISOString(); + + if (scheduledTime > currentTime) { + var ga = new GlideAjax('ScheduledRequestHelper'); + ga.addParam('sysparm_name', 'storeScheduledRequest'); + ga.addParam('sysparm_item', g_form.getUniqueValue()); + ga.addParam('sysparm_time', scheduledTime); + ga.getXMLAnswer(function(response) { + alert('Your request has been scheduled for: ' + scheduledTime); + }); + return false; // Prevent immediate submission + } + + return true; // Submit immediately if time is now or past +} From 9376798cebc1b0c000caedb3c2747239484d34f6 Mon Sep 17 00:00:00 2001 From: Maheshkh9738 Date: Wed, 29 Oct 2025 19:18:36 +0530 Subject: [PATCH 4/4] Create scheduled_job.JS --- .../Schedule Request/scheduled_job.JS | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Client-Side Components/Catalog Client Script/Schedule Request/scheduled_job.JS diff --git a/Client-Side Components/Catalog Client Script/Schedule Request/scheduled_job.JS b/Client-Side Components/Catalog Client Script/Schedule Request/scheduled_job.JS new file mode 100644 index 0000000000..102de236d2 --- /dev/null +++ b/Client-Side Components/Catalog Client Script/Schedule Request/scheduled_job.JS @@ -0,0 +1,14 @@ +var now = new GlideDateTime(); +var gr = new GlideRecord('x_snc_scheduled_requests'); +gr.addQuery('scheduled_time', '<=', now); +gr.query(); + +while (gr.next()) { + var request = new GlideRecord('sc_request'); + request.initialize(); + request.requested_for = gr.requested_for; + request.cat_item = gr.catalog_item; + request.insert(); + + gr.deleteRecord(); // Remove after submission +}