Aprovação Conjunta por Centro de Custo — Solicitação de Equipamentos

Olá, pessoal!

Estou desenvolvendo um formulário de solicitação de equipamentos de informática que anteriormente era feito de forma manual, com assinatura física dos gestores envolvidos. Agora estamos digitalizando esse processo no Fluig e surgiu uma dúvida sobre a melhor abordagem para a etapa de aprovação.

Contexto do formulário: O solicitante preenche uma tabela com os itens desejados e, em cada linha, seleciona o centro de custo que terá o saldo descontado para a compra. Ou seja:

  • Cada linha da tabela pode ter um centro de custo diferente (ou repetido)

  • O mesmo pedido pode envolver múltiplos centros de custo simultaneamente

O que preciso: Que na etapa de aprovação, apenas os coordenadores responsáveis pelos centros de custo envolvidos naquele pedido sejam notificados e precisem aprovar — sem que aprovadores de CCs não relacionados sejam acionados.

O que já pensei: Implementar uma Atividade Conjunta com aprovação em consenso (100%), onde os aprovadores são atribuídos dinamicamente via campo de formulário, populado no beforeTaskSave com base nos CCs selecionados.

O ponto que ainda não está claro pra mim é: como buscar de forma confiável o login do coordenador aprovador de cada centro de custo dentro do Fluig? Sabemos que no Protheus esse campo fica em CTT_XUSER (tabela CTT), mas não temos certeza se essa tabela está espelhada nos datasets do Fluig e com qual nomenclatura os campos aparecem.

Fala man!

Cara, o que tu pode fazer é salvar no formulario o email do aprovador daquele cc em um campo hidden e em posse do email tu pode criar um mecanismo de atribuição customizado buscando o login do usuario pelo dataset colleague, filtrando pelo email.

Abaixo tem um exemplo que eu fiz, em uma tabela paiXfilho tenho alguns professores que precisam aprovar em consenso uma atividade. O mecanismo de atribuição ficou assim:

function resolve(process, colleague) {

var userList = new java.util.ArrayList();

var indexes = hAPI.getChildrenIndexes("teachers");

for (var i = 0; i < indexes.length; i++) {
	var email = hAPI.getCardValue("teacherEmail___" + indexes[i]);
	var userId = getUserId(email);
	if (userId) {
		userList.add(userId);
	} else {
		log.warn("Nenhum usuário encontrado para o email: " + email);
	}
}

return userList;

}

function getUserId(email) {
	var constraints = new Array();
	var c1 = DatasetFactory.createConstraint('mail', email, email, ConstraintType.MUST)
	constraints.push(c1)

	try {
		var user = DatasetFactory.getDataset('colleague', null, constraints, null)
		log.info(JSONUtil.toJSON(user.values))
		if (user.values.length > 0) {
			return user.getValue(0, "colleaguePK.colleagueId")
		}

		return null
	} catch (e) {
		log.info("ERRO ==>" + e.message)
	}
}

Espero que ajude!!