OCResterSpanApprovalUtil - グローバル

OCResterSpanApprovalUtil API は、PTO 承認機能のメソッドを提供します。

OCRosterSpanApprovalUtil - approvePTOSpan (GlideRecord rosterSpanGr)

roster_schedule_span のタイプを承認から休暇に変更します。

表 : 1. パラメーター
名前 タイプ 説明
rosterSpanGr GlideRecord roster_schedule_span_proposal レコード。
表 : 2. 返される内容
タイプ 説明
なし

OCRosterSpanApprovalUtil - getContextualCalUrlPerSpanProposal (GlideRecord rosterSpanProposalGr)

rosterSpanProposalGr に基づいてオンコールカレンダーへの URL を返します。

表 : 3. パラメーター
名前 タイプ 説明
rosterSpanProposalGr GlideRecord roster_schedule_span_proposal レコード。
表 : 4. 返される内容
タイプ 説明
文字列 rosterSpanProposalGr に基づくオンコールカレンダーへの URL。

OCRosterSpanApprovalUtil - getFromDateDisplayValuePerSpanProposal (GlideRecord rosterSpanProposalGr)

rosterSpanProposalGr の開始日に基づいて、フォーマットされた GlideScheduleDateTime 文字列を返します。

表 : 5. パラメーター
名前 タイプ 説明
rosterSpanProposalGr GlideRecord roster_schedule_span_proposal レコード。
表 : 6. 返される内容
タイプ 説明
文字列 rosterSpanProposalGr の開始日に基づく、フォーマットされた GlideScheduleDateTime 文字列。

OCRosterSpanApprovalUtil - getPTOApproversList(GlideRecord rosterSpanProposalGr)

ユーザーの勤務表グループに基づいてグループマネージャーのアレイを返します。

表 : 7. パラメーター
名前 タイプ 説明
rosterSpanProposalGr GlideRecord roster_schedule_span_proposal レコード。
表 : 8. 返される内容
タイプ 説明
アレイ ユーザーの勤務表グループに基づくグループマネージャーのアレイ。

次の例は、OCPTOApprovalReminder という名前のオンデマンドのスクリプトインクルードです。スケジュール設定済みジョブを手動で実行する方法でこれが呼び出された場合、翌日に PTO がスケジュールされている従業員がマネージャーとその代理人に通知されます。

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;
	}
}

スクリプトの実行を予定 [sysauto_script] テーブルのレコードに次の呼び出しを追加します。このトリガーは、スケジュール設定済みジョブが手動で実行されたときに OCPTOApprovalReminder スクリプトインクルードを呼び出します。

OCPTOApprovalReminder();

OCRosterSpanApprovalUtil - getToDateDisplayValuePerSpanProposal (rosterSpanProposalGr GlideRecord)

rosterSpanProposalGr の終了日に基づいて、フォーマットされた GlideScheduleDateTime 文字列を返します。

表 : 9. パラメーター
名前 タイプ 説明
rosterSpanProposalGr GlideRecord roster_schedule_span_proposal レコード。
表 : 10. 返される内容
タイプ 説明
文字列 rosterSpanProposalGr の終了日に基づく、フォーマットされた GlideScheduleDateTime 文字列。

OCRosterSpanApprovalUtil - getUserNamePerSpanProposal (GlideRecord rosterSpanProposalGr)

rosterSpanProposalGr に基づいてユーザーの名前を返します。

表 : 11. パラメーター
名前 タイプ 説明
rosterSpanProposalGr GlideRecord roster_schedule_span_proposal レコード。
表 : 12. 返される内容
タイプ 説明
文字列 rosterSpanProposalGr に基づくユーザーの名前。

OCRosterSpanApprovalUtil - isPTOApprovalRequired ()

システムプロパティ com.snc.on_call_rotation.pto.approval.required が true であることを確認します。

表 : 13. パラメーター
名前 タイプ 説明
なし
表 : 14. 返される内容
タイプ 説明
ブーリアン システムプロパティ com.snc.on_call_rotation.pto.approval.required が true の場合は true を返します。

OCRosterSpanApprovalUtil - rejectPTOSpan (rosterSpanGr GlideRecord)

roster_schedule_span のタイプを承認から却下に変更します。

表 : 15. パラメーター
名前 タイプ 説明
rosterSpanGr GlideRecord roster_schedule_span_proposal レコード。
表 : 16. 返される内容
タイプ 説明
なし