OCRisterSpanApprovalUtil : Global

Die Skripteinbindung „OCRosterSpanApprovalUtil“ stellt Methoden für die Genehmigung von bezahltem Urlaub bereit.

OCRosterSpanApprovalUtil – approvePTOSpan (GlideRecord rosterSpanGr)

Ändert den Typ von „roster_schedule_span“ in eine Auszeit von der Genehmigung.

Tabelle : 1. Parameter
Name Typ Beschreibung
rosterSpanGr GlideRecord Ein roster_schedule_span_proposal-Datensatz.
Tabelle : 2. Ergebnisse
Typ Beschreibung
void

OCRosterSpanApprovalUtil – getContextualCalUrlPerSpanProposal (GlideRecord rosterSpanProposalGr)

Gibt eine URL zum Rufbereitschafts-Kalender zurück, die auf der Liste „rosterSpanProposalGr“ basiert.

Tabelle : 3. Parameter
Name Typ Beschreibung
rosterSpanProposalGr GlideRecord Ein roster_schedule_span_proposal-Datensatz.
Tabelle : 4. Ergebnisse
Typ Beschreibung
Zeichenfolge Eine URL zum Rufbereitschafts-Kalender, die auf der Liste „rosterSpanProposalGr“ basiert.

OCRosterSpanApprovalUtil – getFromDateDisplayValuePerSpanProposal (GlideRecord rosterSpanProposalGr)

Gibt eine formatierte GlideScheduleDateTime-Zeichenfolge basierend auf dem Startdatum von „rosterSpanProposalGr“ zurück.

Tabelle : 5. Parameter
Name Typ Beschreibung
rosterSpanProposalGr GlideRecord Ein roster_schedule_span_proposal-Datensatz.
Tabelle : 6. Ergebnisse
Typ Beschreibung
Zeichenfolge Eine formatierte GlideScheduleDateTime-Zeichenfolge basierend auf dem Startdatum von „rosterSpanProposalGr“.

OCRisterSpanApprovalUtil - getPTOApproversList(GlideRecord rosterSpanProposalGr)

Gibt ein Array von Gruppenmanagern basierend auf den Rotationsplangruppen des Benutzers zurück.

Tabelle : 7. Parameter
Name Typ Beschreibung
rosterSpanProposalGr GlideRecord Ein roster_schedule_span_proposal-Datensatz.
Tabelle : 8. Ergebnisse
Typ Beschreibung
Array Ein Array von Gruppenmanagern basierend auf den Rotationsplangruppen des Benutzers.

Das folgende Beispiel ist eine bedarfsgesteuerte Skripteinbindung mit dem Namen OCPTOApprovalReminder. Bei einem Anruf durch die manuelle Ausführung der geplanten Aufgabe werden die Manager und ihre delegierten Manager über Mitarbeiter benachrichtigt, die am folgenden Tag für den bezahlten Urlaub eingeplant sind.

function OCPTOApprovalReminder() {

	//Passing parameters in 'getDateFormat()' function with the days which needs to be added
	var startDate = getDateFormat(1); //We can use System property to set Start Date
	var endDate = getDateFormat(2); //We can use System property to set End Date
	
	//Building the encoded query all the Pending approval state proposals whose start date is tomorrow
	var encodedQuery = 'state=1^roster_schedule_span.start_date_time>' + startDate + '^roster_schedule_span.start_date_time<' + endDate;
	
	//Sends an event notification to all rota managers and their delegate managers
	getNotApprovedList(encodedQuery);
	
	//Converts the date and time in ISO Format
	function getDateFormat(daysToBeAdded) {

		//Getting today's date and adding '1' day
		var todaysDate = new GlideDate();
		todaysDate.addDaysUTC(daysToBeAdded);
		todaysDate = todaysDate.getValue();

		//Converting to today's date object to GlideDate object
		var addingDaysToDate = new GlideDate();
		addingDaysToDate.setValue(todaysDate);

		//Setting the time default to '12:00:00' and returning the time in the specified format to match ISO
		var staticTime = new GlideTime();
		staticTime.setValue('00:00:00');
		staticTime.setValue(staticTime.getHourOfDayUTC() + ':' + staticTime.getMinutesUTC() + ':' + staticTime.getSeconds());

		//Returns the date & time in the specified format
		var isoFormattedDateTime = addingDaysToDate.getByFormat("yyyyMMdd") + 'T' + staticTime.getByFormat("HHmmss") + 'Z';
		return isoFormattedDateTime;
	}
	
	//Gliding Roster schedule span proposal table with the built-in query to fetch the records whose proposals are not approved/rejected
	function getNotApprovedList(addEncodedQuery) {
		var rosterScheduleEntryProposalGR = new GlideRecord('roster_schedule_span_proposal');
		rosterScheduleEntryProposalGR.addEncodedQuery(addEncodedQuery);
		rosterScheduleEntryProposalGR.query();
		while(rosterScheduleEntryProposalGR.next()) {

			//Call On-Call Scheduling OCRosterSpanApprovalUtil library with 'getPTOApproversList' function 
			//pass GlideRecord object of 'roster_schedule_span_proposal' table
			var rotaManagers = new OCRosterSpanApprovalUtil().getPTOApproversList(rosterScheduleEntryProposalGR);
			rotaManagers = rotaManagers.join(",");

			// Pull only the unique sys_ids
			var managerList = new ArrayUtil().unique(getManagerDelegateApprovals(rotaManagers).toString().split(','));

                     // Event to trigger a reminder notification for testing.
                     // To use, create a an event registry named "oc.manager.delegate.reminder"
                     // Call the event in a notification and uncomment the following line
			//gs.eventQueue("oc.manager.delegate.reminder", rosterScheduleEntryProposalGR, managerList, "");

               if(managerList)
			gs.info("Returns the list of manager and it's delegate members >>>>>> " + managerList);
		}
	}
	
	//Get the sys_ids of the managers and their delegate managers
	function getManagerDelegateApprovals(manager) {
		var answer = [];
        answer.push(manager);
		var delegateGR = new GlideRecord("sys_user_delegate");
		delegateGR.addQuery("user", 'IN', manager);
		delegateGR.addQuery("starts", "<=", gs.daysAgo(0));
		delegateGR.addQuery("ends", ">=", gs.daysAgo(0));
		delegateGR.addQuery("approvals", true);
		delegateGR.query();
		while(delegateGR.next()) {
			answer.push(delegateGR.getValue('user'));
			answer.push(delegateGR.getValue('delegate'));
		}
		return answer;
	}
}

Fügen Sie den folgenden Aufruf einem Datensatz in der Tabelle „Geplante Skriptausführung“ [sysauto_script] hinzu. Dieser Auslöser ruft die Skripteinbindung OCPTOApprovalReminder auf, wenn die geplante Aufgabe manuell ausgeführt wird.

OCPTOApprovalReminder();

OCRosterSpanApprovalUtil – getToDateDisplayValuePerSpanProposal (rosterSpanProposalGr GlideRecord)

Gibt eine formatierte GlideScheduleDateTime-Zeichenfolge basierend auf dem Enddatum von „rosterSpanProposalGr“ zurück.

Tabelle : 9. Parameter
Name Typ Beschreibung
rosterSpanProposalGr GlideRecord Ein roster_schedule_span_proposal-Datensatz.
Tabelle : 10. Ergebnisse
Typ Beschreibung
Zeichenfolge Eine formatierte GlideScheduleDateTime-Zeichenfolge basierend auf dem Enddatum von „rosterSpanProposalGr“.

OCRosterSpanApprovalUtil – getUserNamePerSpanProposal (GlideRecord rosterSpanProposalGr)

Gibt den Namen des Benutzers basierend auf „rosterSpanProposalGr“ zurück.

Tabelle : 11. Parameter
Name Typ Beschreibung
rosterSpanProposalGr GlideRecord Ein roster_schedule_span_proposal-Datensatz.
Tabelle : 12. Ergebnisse
Typ Beschreibung
Zeichenfolge Der Name des Benutzers basierend auf „rosterSpanProposalGr“.

OCRosterSpanApprovalUtil – isPTOApprovalRequired()

Überprüft, ob die Systemeigenschaft com.snc.on_call_rotation.pto.approval.required auf „wahr“ festgelegt ist.

Tabelle : 13. Parameter
Name Typ Beschreibung
Keine
Tabelle : 14. Ergebnisse
Typ Beschreibung
Boolean Gibt „wahr“ zurück, wenn die Systemeigenschaft com.snc.on_call_rotation.pto.approval.required auf „wahr“ festgelegt ist.

OCRosterSpanApprovalUtil – rejectPTOSpan (rosterSpanGr GlideRecord)

Ändert den Typ von „roster_schedule_span“, um von der Genehmigung abgelehnt zu werden.

Tabelle : 15. Parameter
Name Typ Beschreibung
rosterSpanGr GlideRecord Ein roster_schedule_span_proposal-Datensatz.
Tabelle : 16. Ergebnisse
Typ Beschreibung
void