OCRosterSpanApprovalUtil - Global

A inclusão de script OCRosterSpanApprovalUtil fornece métodos para o recurso de aprovação de descanso remunerado.

OCRosterSpanApprovalUtil - approvalPTOSpan (GlideRecord rosterSpanGr)

Altera o tipo de roster_schedule_span para licença a partir da aprovação.

Tabela 1. Parâmetros
Nome Tipo Descrição
rosterSpanGr GlideRecord Um registro roster_schedule_span_proposal.
Tabela 2. Retornos
Tipo Descrição
vazio

OCRosterSpanApprovalUtil – getContextualCalUrlPerSpanProposal (GlideRecord rosterSpanProposalGr)

Retorna um URL para o calendário de plantão com base em rosterSpanProposalGr.

Tabela 3. Parâmetros
Nome Tipo Descrição
rosterSpanProposalGr GlideRecord Um registro roster_schedule_span_proposal.
Tabela 4. Retornos
Tipo Descrição
Cadeia de caracteres Um URL para o calendário de plantão com base em rosterSpanProposalGr.

OCRosterSpanApprovalUtil – getFromDateDisplayValuePerSpanProposal (GlideRecord rosterSpanProposalGr)

Retorna uma cadeia de caracteres GlideScheduleDateTime formatada com base na data de início de rosterSpanProposalGr.

Tabela 5. Parâmetros
Nome Tipo Descrição
rosterSpanProposalGr GlideRecord Um registro roster_schedule_span_proposal.
Tabela 6. Retornos
Tipo Descrição
Cadeia de caracteres Uma cadeia de caracteres GlideScheduleDateTime formatada com base na data de início de rosterSpanProposalGr.

OCRosterSpanApprovalUtil - getPTOApproversList(GlideRecord rosterSpanProposalGr)

Retorna uma matriz de gerentes de grupo com base nos grupos de escala do usuário.

Tabela 7. Parâmetros
Nome Tipo Descrição
rosterSpanProposalGr GlideRecord Um registro roster_schedule_span_proposal.
Tabela 8. Retornos
Tipo Descrição
Matriz Uma matriz de gerentes de grupo com base nos grupos de escala do usuário.

O exemplo a seguir é uma inclusão de script sob demanda chamada OCPTOApprovalReminder. Quando chamados executando o trabalho agendado manualmente, os gerentes e seus gerentes delegados são notificados sobre os funcionários que estão programados para descanso remunerado no dia seguinte.

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

Adicione a seguinte chamada a um registro na tabela Execução de script agendada [sysauto_script]. Este gatilho chama a inclusão de script OCPTOApprovalReminder quando o trabalho agendado é executado manualmente.

OCPTOApprovalReminder();

OCRosterSpanApprovalUtil – getToDateDisplayValuePerSpanProposal (rosterSpanProposalGr GlideRecord)

Retorna uma cadeia de caracteres GlideScheduleDateTime formatada com base na data de término de rosterSpanProposalGr.

Tabela 9. Parâmetros
Nome Tipo Descrição
rosterSpanProposalGr GlideRecord Um registro roster_schedule_span_proposal.
Tabela 10. Retornos
Tipo Descrição
Cadeia de caracteres Uma cadeia de caracteres GlideScheduleDateTime formatada com base na data de término de rosterSpanProposalGr.

OCRosterSpanApprovalUtil – getUserNamePerSpanProposal (GlideRecord rosterSpanProposalGr)

Retorna o nome do usuário com base em rosterSpanProposalGr.

Tabela 11. Parâmetros
Nome Tipo Descrição
rosterSpanProposalGr GlideRecord Um registro roster_schedule_span_proposal.
Tabela 12. Retornos
Tipo Descrição
Cadeia de caracteres O nome do usuário com base em rosterSpanProposalGr.

OCRosterSpanApprovalUtil - isPTOApprovalRequired ()

Verifica se a propriedade do sistema com.snc.on_call_rotation.pto.approval.required é verdadeira.

Tabela 13. Parâmetros
Nome Tipo Descrição
Nenhum
Tabela 14. Retorna
Tipo Descrição
Booliano Retorna verdadeiro se a propriedade do sistema com.snc.on_call_rotation.pto.approval.required for verdadeira.

OCRosterSpanApprovalUtil - rejeitaPTOSpan (rosterSpanGr GlideRecord)

Altera o tipo de roster_schedule_span para rejeitado da aprovação.

Tabela 15. Parâmetros
Nome Tipo Descrição
rosterSpanGr GlideRecord Um registro roster_schedule_span_proposal.
Tabela 16. Retornos
Tipo Descrição
vazio