This commit is contained in:
2026-05-15 09:39:34 -03:00
parent 3ca3d906e1
commit 628c84683b
34 changed files with 3751 additions and 2303 deletions
@@ -9,6 +9,501 @@
</void>
</array>
</void>
<void method="put">
<string>mecanismoGrupo</string>
<object class="java.util.ArrayList">
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Tecnologia e Comunicação</string>
</void>
<void property="groupId">
<string>TIC</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Compras Indiretos</string>
</void>
<void property="groupId">
<string>ComprasIndiretos</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Obras e manutenção</string>
</void>
<void property="groupId">
<string>Manutencao</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Aprovadores Compras Nvl 3</string>
</void>
<void property="groupId">
<string>AprovadoresComprasNvl3</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Motoristas</string>
</void>
<void property="groupId">
<string>Motoristas</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Requisitantes de Vaga</string>
</void>
<void property="groupId">
<string>Requisitantesdevaga</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Recrutamento</string>
</void>
<void property="groupId">
<string>Recrutamento</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>TODOS-TODOS-DIADMISSAO</string>
</void>
<void property="groupId">
<string>TODOS-TODOS-DIADMISSAO</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>ResponsavelDesligamento</string>
</void>
<void property="groupId">
<string>ResponsavelDesligamento</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>GENTE &amp; CULTURA</string>
</void>
<void property="groupId">
<string>GENTE_CULTURA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>LOJA AL</string>
</void>
<void property="groupId">
<string>LOJA_AL</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>CD</string>
</void>
<void property="groupId">
<string>CD</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>ESPAÇO DO REVENDEDOR AL</string>
</void>
<void property="groupId">
<string>ESPACO_DO_REVENDEDOR_AL</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>FINANCEIRO</string>
</void>
<void property="groupId">
<string>FINANCEIRO</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>OPERAÇÕES</string>
</void>
<void property="groupId">
<string>OPERACOES</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>AMG AL</string>
</void>
<void property="groupId">
<string>AMG_AL</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>REGIONAL ALAGOAS</string>
</void>
<void property="groupId">
<string>REGIONAL_ALAGOAS</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>PREVENÇÃO DE PERDA</string>
</void>
<void property="groupId">
<string>PREVENCAO_DE_PERDA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>MARKETING, TREINAMENTO</string>
</void>
<void property="groupId">
<string>MARKETING_TREINAMENTO</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>SECRETARIA EXECUTIVA</string>
</void>
<void property="groupId">
<string>SECRETARIA_EXECUTIVA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>DIRETORIA EXECUTIVA</string>
</void>
<void property="groupId">
<string>DIRETORIA_EXECUTIVA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>INFRAESTRUTURA</string>
</void>
<void property="groupId">
<string>INFRAESTRUTURA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>ESPAÇO DO REVENDEDOR BA</string>
</void>
<void property="groupId">
<string>ESPACO_DO_REVENDEDOR_BA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>BUSINESS INTELLIGENCE</string>
</void>
<void property="groupId">
<string>BUSINESS_INTELLIGENCE</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>DEPARTAMENTO PESSOAL</string>
</void>
<void property="groupId">
<string>DEPARTAMENTO_PESSOAL</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>LOJA BA</string>
</void>
<void property="groupId">
<string>LOJA_BA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>TREINAMENTO</string>
</void>
<void property="groupId">
<string>TREINAMENTO</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>AMG BA</string>
</void>
<void property="groupId">
<string>AMG_BA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>MARKETING</string>
</void>
<void property="groupId">
<string>MARKETING</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>COMPRAS</string>
</void>
<void property="groupId">
<string>COMPRAS</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>AMG SE</string>
</void>
<void property="groupId">
<string>AMG_SE</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>LOJA SE</string>
</void>
<void property="groupId">
<string>LOJA_SE</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>ESPAÇO DO REVENDEDOR SE</string>
</void>
<void property="groupId">
<string>ESPACO_DO_REVENDEDOR_SE</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>VENDAS IN COMPANY</string>
</void>
<void property="groupId">
<string>VENDAS_IN_COMPANY</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>REGIONAL BAHIA</string>
</void>
<void property="groupId">
<string>REGIONAL_BAHIA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>CANAL LOJA 01</string>
</void>
<void property="groupId">
<string>CANAL_LOJA_01</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>AUDITORIA</string>
</void>
<void property="groupId">
<string>AUDITORIA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>CANAL LOJA 02</string>
</void>
<void property="groupId">
<string>CANAL_LOJA_02</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>PLANEJAMENTO DE DEMANDAS</string>
</void>
<void property="groupId">
<string>PLANEJAMENTO_DE_DEMANDAS</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>PROJETOS</string>
</void>
<void property="groupId">
<string>PROJETOS</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>COMPLIANCE</string>
</void>
<void property="groupId">
<string>COMPLIANCE</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>ESCRITÓRIO - MATRIZ</string>
</void>
<void property="groupId">
<string>ESCRITORIO_MATRIZ</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>ESCRITÓRIO - CONQUISTA</string>
</void>
<void property="groupId">
<string>ESCRITORIO_CONQUISTA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>REGIONAL SERGIPE</string>
</void>
<void property="groupId">
<string>REGIONAL_SERGIPE</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Transferencia</string>
</void>
<void property="groupId">
<string>Transferencia</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>Fiscal</string>
</void>
<void property="groupId">
<string>Fiscal</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>motoristaAL</string>
</void>
<void property="groupId">
<string>motoristaAL</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>motoristaBA</string>
</void>
<void property="groupId">
<string>motoristaBA</string>
</void>
</object>
</void>
<void method="add">
<object class="com.totvs.tds.ecm.foundation.ws.GroupDto">
<void property="groupDescription">
<string>motoristaSE</string>
</void>
<void property="groupId">
<string>motoristaSE</string>
</void>
</object>
</void>
</object>
</void>
<void method="put">
<string>expediente</string>
<array class="java.lang.String" length="4">
@@ -29,7 +29,7 @@
<processDefinitionVersionPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
</processDefinitionVersionPK>
<versionDescription></versionDescription>
<formId>823</formId>
@@ -629,7 +629,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>1</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>2</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;centroCusto&quot;) == &quot;&quot;</condition>
@@ -643,7 +643,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>2</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>2</sequence>
</conditionProcessStatePK>
<condition>true</condition>
@@ -657,7 +657,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>1</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>46</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;validarMotivo&quot;) == &quot;substituicao&quot;</condition>
@@ -671,7 +671,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>2</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>46</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;validarMotivo&quot;) == &quot;temporario&quot;</condition>
@@ -685,7 +685,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>3</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>46</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;validarMotivo&quot;) == &quot;aumento&quot;</condition>
@@ -699,7 +699,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>1</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>95</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;validacaoFunc&quot;) == &quot;entregue&quot;</condition>
@@ -713,7 +713,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>2</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>95</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;validacaoFunc&quot;) == &quot;naoEntregue&quot;</condition>
@@ -727,7 +727,7 @@
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<expressionOrder>3</expressionOrder>
<version>31</version>
<version>34</version>
<sequence>95</sequence>
</conditionProcessStatePK>
<condition>hAPI.getCardValue(&quot;validacaoFunc&quot;) == &quot;incorreto&quot;</condition>
@@ -998,7 +998,241 @@
</ProcessLink>
</list>
<list/>
<list/>
<list>
<WorkflowProcessEvent>
<workflowProcessEventPK>
<companyId>1</companyId>
<eventId>beforeTaskSave</eventId>
<processId>Recrutamento e seleção</processId>
<version>1</version>
</workflowProcessEventPK>
<eventDescription>function beforeTaskSave(colleagueId, nextSequenceId, userList) {
try {
var currentState = parseInt(String(getValue(&quot;WKNumState&quot;) || &quot;0&quot;), 10);
var nextState = parseInt(String(nextSequenceId || &quot;0&quot;), 10);
var completeTask = String(getValue(&quot;WKCompletTask&quot;) || &quot;false&quot;);
log.info(&quot;[Recrutamento.beforeTaskSave] currentState=&quot; + currentState + &quot;, nextState=&quot; + nextState + &quot;, completeTask=&quot; + completeTask);
if (completeTask !== &quot;true&quot;) return;
// Disparo do e-mail inicial da solicitação (atividade inicial = 1).
if (currentState === 1) {
enviarNotificacaoSolicitacao();
return;
}
// Disparo quando a seleção define o início do colaborador.
if (currentState === 6 &amp;&amp; nextState === 46) {
enviarNotificacaoInicioColaborador();
}
} catch (e) {
log.error(&quot;[Recrutamento.beforeTaskSave] Erro ao disparar notificação: &quot; + e);
}
}
function enviarNotificacaoSolicitacao() {
var envio = montarContextoEnvio();
if (!envio.ok) return;
var params = new java.util.HashMap();
params.put(&quot;WKNumProces&quot;, envio.processNumber);
params.put(&quot;linkSolicitacao&quot;, envio.processLink);
params.put(&quot;link&quot;, envio.processLink);
params.put(&quot;requesterName&quot;, valueOrDefault(hAPI.getCardValue(&quot;requesterName&quot;)));
params.put(&quot;gestorNome&quot;, valueOrDefault(hAPI.getCardValue(&quot;gestorNome&quot;)));
params.put(&quot;dataAbertura&quot;, valueOrDefault(hAPI.getCardValue(&quot;dataAbertura&quot;)));
params.put(&quot;cargo&quot;, valueOrDefault(hAPI.getCardValue(&quot;funcao&quot;)));
params.put(&quot;kitUtilizado&quot;, getKitDescricao(hAPI.getCardValue(&quot;itensinicio&quot;)));
params.put(&quot;motivoSolicitacao&quot;, getMotivoDescricao(hAPI.getCardValue(&quot;validarMotivo&quot;)));
params.put(&quot;justificativa&quot;, valueOrDefault(hAPI.getCardValue(&quot;justificativa&quot;)));
notifier.notify(&quot;admin&quot;, &quot;tpl_recrutamento_realizada_dia&quot;, params, envio.destinatarios, &quot;text/html&quot;);
log.info(&quot;[Recrutamento.beforeTaskSave] tpl_recrutamento_realizada_dia enviado. processo=&quot; + envio.processNumber + &quot;, destinos=&quot; + envio.destinosLog);
}
function enviarNotificacaoInicioColaborador() {
var envio = montarContextoEnvio();
if (!envio.ok) return;
var dataInicio = safeTrim(hAPI.getCardValue(&quot;datainiciotrabalho&quot;));
if (dataInicio === &quot;&quot;) {
log.warn(&quot;[Recrutamento.beforeTaskSave] Data de início vazia. Notificação de início não enviada.&quot;);
return;
}
var params = new java.util.HashMap();
params.put(&quot;WKNumProces&quot;, envio.processNumber);
params.put(&quot;linkSolicitacao&quot;, envio.processLink);
params.put(&quot;link&quot;, envio.processLink);
params.put(&quot;colaboradorNome&quot;, valueOrDefault(hAPI.getCardValue(&quot;nomedocandidato&quot;)));
params.put(&quot;cargo&quot;, valueOrDefault(hAPI.getCardValue(&quot;funcao&quot;)));
params.put(&quot;dataInicio&quot;, formatDateBr(dataInicio));
params.put(&quot;kitUtilizado&quot;, getKitDescricao(hAPI.getCardValue(&quot;itensinicio&quot;)));
notifier.notify(&quot;admin&quot;, &quot;tpl_recrutamento_realizada&quot;, params, envio.destinatarios, &quot;text/html&quot;);
log.info(&quot;[Recrutamento.beforeTaskSave] tpl_recrutamento_realizada enviado. processo=&quot; + envio.processNumber + &quot;, destinos=&quot; + envio.destinosLog);
}
function montarContextoEnvio() {
var destinatarios = new java.util.ArrayList();
var jaAdicionados = {};
addEmail(destinatarios, jaAdicionados, &quot;tic@grupoginseng.com.br&quot;);
var requesterId = safeTrim(hAPI.getCardValue(&quot;requesterId&quot;));
if (requesterId !== &quot;&quot;) {
addEmail(destinatarios, jaAdicionados, resolveEmailByColleagueId(requesterId));
}
if (destinatarios.isEmpty()) {
log.warn(&quot;[Recrutamento.beforeTaskSave] Nenhum e-mail válido encontrado para notificação.&quot;);
return { ok: false };
}
var processNumber = safeTrim(getValue(&quot;WKNumProces&quot;));
var processLink = buildProcessLink(processNumber);
return {
ok: true,
processNumber: processNumber,
processLink: processLink,
destinatarios: destinatarios,
destinosLog: String(destinatarios.toString())
};
}
function addEmail(destinatarios, jaAdicionados, email) {
var v = safeTrim(email).toLowerCase();
if (!isValidEmail(v)) return;
if (jaAdicionados[v]) return;
destinatarios.add(v);
jaAdicionados[v] = true;
}
function resolveEmailByColleagueId(colleagueId) {
var id = safeTrim(colleagueId);
if (id === &quot;&quot;) return &quot;&quot;;
try {
var cActive = DatasetFactory.createConstraint(&quot;active&quot;, &quot;true&quot;, &quot;true&quot;, ConstraintType.MUST);
var cId = DatasetFactory.createConstraint(&quot;colleaguePK.colleagueId&quot;, id, id, ConstraintType.MUST);
var byId = DatasetFactory.getDataset(&quot;colleague&quot;, null, [cId, cActive], null);
if (byId &amp;&amp; byId.rowsCount &gt; 0) {
return safeTrim(byId.getValue(0, &quot;mail&quot;));
}
var cLogin = DatasetFactory.createConstraint(&quot;login&quot;, id, id, ConstraintType.MUST);
var byLogin = DatasetFactory.getDataset(&quot;colleague&quot;, null, [cLogin, cActive], null);
if (byLogin &amp;&amp; byLogin.rowsCount &gt; 0) {
return safeTrim(byLogin.getValue(0, &quot;mail&quot;));
}
} catch (e) {
log.warn(&quot;[Recrutamento.beforeTaskSave] Falha ao buscar e-mail por colleagueId: &quot; + e);
}
return &quot;&quot;;
}
function buildProcessLink(processNumber) {
var baseUrl = safeTrim(getValue(&quot;WKServerURL&quot;));
var companyId = safeTrim(getValue(&quot;WKCompany&quot;));
if (baseUrl === &quot;&quot; || processNumber === &quot;&quot;) return &quot;&quot;;
if (baseUrl.indexOf(&quot;http://&quot;) !== 0 &amp;&amp; baseUrl.indexOf(&quot;https://&quot;) !== 0) {
baseUrl = &quot;https://&quot; + baseUrl;
}
if (baseUrl.charAt(baseUrl.length - 1) === &quot;/&quot;) {
baseUrl = baseUrl.substring(0, baseUrl.length - 1);
}
if (companyId === &quot;&quot;) companyId = &quot;1&quot;;
return baseUrl + &quot;/portal/p/&quot; + companyId + &quot;/pageworkflowview?app_ecm_workflowview_detailsProcessInstanceID=&quot; + processNumber;
}
function getMotivoDescricao(motivo) {
var v = safeTrim(motivo).toLowerCase();
if (v === &quot;aumento&quot;) return &quot;Aumento de quadro&quot;;
if (v === &quot;substituicao&quot;) return &quot;Substituição&quot;;
if (v === &quot;temporario&quot;) return &quot;Temporário&quot;;
return v === &quot;&quot; ? &quot;Não informado&quot; : v;
}
function getKitDescricao(kit) {
var v = safeTrim(kit).toLowerCase();
if (v === &quot;backoffice&quot;) return &quot;Kit Backoffice (Notebook, mouse, teclado e headset)&quot;;
if (v === &quot;amg&quot;) return &quot;Kit AMG (Notebook, kit mouse e teclado, headset e telefone corporativo)&quot;;
if (v === &quot;comercial&quot;) return &quot;Kit Comercial (Mobshop e Mobpin)&quot;;
return v === &quot;&quot; ? &quot;Não informado&quot; : v;
}
function formatDateBr(value) {
var v = safeTrim(value);
if (/^\d{4}-\d{2}-\d{2}$/.test(v)) {
return v.substring(8, 10) + &quot;/&quot; + v.substring(5, 7) + &quot;/&quot; + v.substring(0, 4);
}
return v;
}
function valueOrDefault(value) {
var v = safeTrim(value);
return v === &quot;&quot; ? &quot;Não informado&quot; : v;
}
function isValidEmail(email) {
var v = safeTrim(email);
if (v === &quot;&quot;) return false;
if (/\s/.test(v)) return false;
var at = v.indexOf(&quot;@&quot;);
if (at &lt;= 0 || at !== v.lastIndexOf(&quot;@&quot;)) return false;
var dot = v.lastIndexOf(&quot;.&quot;);
return dot &gt; at + 1 &amp;&amp; dot &lt; (v.length - 1);
}
function safeTrim(value) {
return String(value == null ? &quot;&quot; : value).trim();
}
</eventDescription>
</WorkflowProcessEvent>
<WorkflowProcessEvent>
<workflowProcessEventPK>
<companyId>1</companyId>
<eventId>onNotify</eventId>
<processId>Recrutamento e seleção</processId>
<version>1</version>
</workflowProcessEventPK>
<eventDescription>function onNotify(subject, receivers, template, params) {&#xd;
&#xd;
log.info(&quot;===== onNotify GLOBAL ===== Template: &quot; + template);&#xd;
&#xd;
var validos = new java.util.ArrayList();&#xd;
&#xd;
for (var i = 0; i &lt; receivers.size(); i++) {&#xd;
&#xd;
var email = receivers.get(i);&#xd;
&#xd;
log.info(&quot;Receiver original: [&quot; + email + &quot;]&quot;);&#xd;
&#xd;
if (email &amp;&amp; email.indexOf(&quot;@&quot;) &gt; 0 &amp;&amp; email.indexOf(&quot;.&quot;) &gt; 0) {&#xd;
validos.add(email);&#xd;
} else {&#xd;
log.warn(&quot;REMOVIDO EMAIL INVALIDO: [&quot; + email + &quot;] TEMPLATE: &quot; + template);&#xd;
}&#xd;
}&#xd;
&#xd;
receivers.clear();&#xd;
&#xd;
for (var j = 0; j &lt; validos.size(); j++) {&#xd;
receivers.add(validos.get(j));&#xd;
}&#xd;
&#xd;
log.info(&quot;TOTAL FINAL RECEIVERS: &quot; + receivers.size());&#xd;
}</eventDescription>
</WorkflowProcessEvent>
</list>
<list/>
<list>
<SwimLane>
@@ -1089,7 +1323,7 @@
<processLinkBendPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
<linkSequence>5</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1100,7 +1334,7 @@
<processLinkBendPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
<linkSequence>5</linkSequence>
<bendSequence>2</bendSequence>
</processLinkBendPK>
@@ -1111,7 +1345,7 @@
<processLinkBendPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
<linkSequence>7</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1122,7 +1356,7 @@
<processLinkBendPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
<linkSequence>110</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1133,7 +1367,7 @@
<processLinkBendPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
<linkSequence>115</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1144,7 +1378,7 @@
<processLinkBendPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
<linkSequence>117</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1155,7 +1389,7 @@
<processLinkBendPK>
<companyId>1</companyId>
<processId>Recrutamento e seleção</processId>
<version>31</version>
<version>34</version>
<linkSequence>120</linkSequence>
<bendSequence>1</bendSequence>
</processLinkBendPK>
@@ -1300,7 +1534,7 @@
<id>0</id>
<tenantId>0</tenantId>
<processId>Recrutamento e seleção</processId>
<processVersion>31</processVersion>
<processVersion>34</processVersion>
<stateSequence>4</stateSequence>
<appKey>approval</appKey>
<appField>title</appField>
@@ -1310,7 +1544,7 @@
<id>0</id>
<tenantId>0</tenantId>
<processId>Recrutamento e seleção</processId>
<processVersion>31</processVersion>
<processVersion>34</processVersion>
<stateSequence>4</stateSequence>
<appKey>approval</appKey>
<appField>highlight</appField>
@@ -1320,7 +1554,7 @@
<id>0</id>
<tenantId>0</tenantId>
<processId>Recrutamento e seleção</processId>
<processVersion>31</processVersion>
<processVersion>34</processVersion>
<stateSequence>4</stateSequence>
<appKey>approval</appKey>
<appField>approve</appField>
@@ -1330,7 +1564,7 @@
<id>0</id>
<tenantId>0</tenantId>
<processId>Recrutamento e seleção</processId>
<processVersion>31</processVersion>
<processVersion>34</processVersion>
<stateSequence>4</stateSequence>
<appKey>approval</appKey>
<appField>reject</appField>
@@ -1340,7 +1574,7 @@
<id>0</id>
<tenantId>0</tenantId>
<processId>Recrutamento e seleção</processId>
<processVersion>31</processVersion>
<processVersion>34</processVersion>
<stateSequence>6</stateSequence>
<appKey>approval</appKey>
<appField>title</appField>
@@ -1350,7 +1584,7 @@
<id>0</id>
<tenantId>0</tenantId>
<processId>Recrutamento e seleção</processId>
<processVersion>31</processVersion>
<processVersion>34</processVersion>
<stateSequence>6</stateSequence>
<appKey>approval</appKey>
<appField>highlight</appField>
@@ -1360,7 +1594,7 @@
<id>0</id>
<tenantId>0</tenantId>
<processId>Recrutamento e seleção</processId>
<processVersion>31</processVersion>
<processVersion>34</processVersion>
<stateSequence>6</stateSequence>
<appKey>approval</appKey>
<appField>reject</appField>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

@@ -2969,7 +2969,7 @@
<bpmn2:BpmnGateway condition="&lt;list&gt;&#10; &lt;org.eclipse.bpmn2.impl.ConditionImpl&gt;&#10; &lt;order&gt;1&lt;/order&gt;&#10; &lt;expression&gt;hAPI.getCardValue(&amp;quot;validarMotivo&amp;quot;) == &amp;quot;substituicao&amp;quot;&lt;/expression&gt;&#10; &lt;targetTask&gt;task18&lt;/targetTask&gt;&#10; &lt;mechanism&gt;Campo Formul&#225;rio&lt;/mechanism&gt;&#10; &lt;conditionType&gt;0&lt;/conditionType&gt;&#10; &lt;mecanismoAtribuicaoConfiguracao class=&quot;org.eclipse.bpmn2.impl.AssignmentControllerFormField&quot;&gt;&#10; &lt;formField&gt;gestor_cc&lt;/formField&gt;&#10; &lt;mechanismName&gt;Campo Formul&#225;rio&lt;/mechanismName&gt;&#10; &lt;/mecanismoAtribuicaoConfiguracao&gt;&#10; &lt;/org.eclipse.bpmn2.impl.ConditionImpl&gt;&#10; &lt;org.eclipse.bpmn2.impl.ConditionImpl&gt;&#10; &lt;order&gt;2&lt;/order&gt;&#10; &lt;expression&gt;hAPI.getCardValue(&amp;quot;validarMotivo&amp;quot;) == &amp;quot;temporario&amp;quot;&lt;/expression&gt;&#10; &lt;targetTask&gt;task18&lt;/targetTask&gt;&#10; &lt;mechanism&gt;Campo Formul&#225;rio&lt;/mechanism&gt;&#10; &lt;conditionType&gt;0&lt;/conditionType&gt;&#10; &lt;mecanismoAtribuicaoConfiguracao class=&quot;org.eclipse.bpmn2.impl.AssignmentControllerFormField&quot;&gt;&#10; &lt;formField&gt;gestor_cc&lt;/formField&gt;&#10; &lt;mechanismName&gt;Campo Formul&#225;rio&lt;/mechanismName&gt;&#10; &lt;/mecanismoAtribuicaoConfiguracao&gt;&#10; &lt;/org.eclipse.bpmn2.impl.ConditionImpl&gt;&#10; &lt;org.eclipse.bpmn2.impl.ConditionImpl&gt;&#10; &lt;order&gt;3&lt;/order&gt;&#10; &lt;expression&gt;hAPI.getCardValue(&amp;quot;validarMotivo&amp;quot;) == &amp;quot;aumento&amp;quot;&lt;/expression&gt;&#10; &lt;targetTask&gt;task24&lt;/targetTask&gt;&#10; &lt;mechanism&gt;Pool Grupo&lt;/mechanism&gt;&#10; &lt;conditionType&gt;0&lt;/conditionType&gt;&#10; &lt;mecanismoAtribuicaoConfiguracao class=&quot;org.eclipse.bpmn2.impl.AssignmentControllerPoolGroup&quot;&gt;&#10; &lt;groupId&gt;TIC&lt;/groupId&gt;&#10; &lt;mechanismName&gt;Pool Grupo&lt;/mechanismName&gt;&#10; &lt;/mecanismoAtribuicaoConfiguracao&gt;&#10; &lt;/org.eclipse.bpmn2.impl.ConditionImpl&gt;&#10;&lt;/list&gt;" extendedFields="&lt;list/&gt;" id="exclusivegateway46" incoming="flow122" name="ValidarEquipamentos" outgoing="flow110 flow120" type="120"/>
<bpmn2:BpmnEndEvent extendedFields="&lt;list/&gt;" id="endcancel55" incoming="flow117" name="Cancelado" notificaRequisitante="true" signalId="0" type="65"/>
<bpmn2:BpmnTask authNotify="true" esforcoCalculo="0" executionAttempts="0" expediente="" extendedFields="&lt;list/&gt;" frequency="0" id="task57" incoming="flow118" loopType="0" managerAssignmentControllerString="&lt;org.eclipse.bpmn2.impl.AssignmentControllerFormField&gt;&#10; &lt;formField&gt;gestor_cc&lt;/formField&gt;&#10; &lt;mechanismName&gt;Campo Formul&#225;rio&lt;/mechanismName&gt;&#10;&lt;/org.eclipse.bpmn2.impl.AssignmentControllerFormField&gt;" managerMechanism="Campo Formul&#225;rio" name="Feedback do gestor" outgoing="flow119" prazoConclusao="4320.0" selecionaColaboradores="1" type="80"/>
<bpmn2:BpmnProcess author="" cardIndex="823" category="Recrutamento e Sele&#231;&#227;o" complementsLevel="1" deadlineTime="36000.0" descriptorFields="&lt;list&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;centroCusto&lt;/id&gt;&#10; &lt;label&gt;centroCusto&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;consideracoesCompras&lt;/id&gt;&#10; &lt;label&gt;consideracoesCompras&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;dataAbertura&lt;/id&gt;&#10; &lt;label&gt;dataAbertura&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;requesterId&lt;/id&gt;&#10; &lt;label&gt;requesterId&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;requesterMail&lt;/id&gt;&#10; &lt;label&gt;requesterMail&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;requesterName&lt;/id&gt;&#10; &lt;label&gt;requesterName&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userCotacaoGestor&lt;/id&gt;&#10; &lt;label&gt;userCotacaoGestor&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userRealizacaoCompras&lt;/id&gt;&#10; &lt;label&gt;userRealizacaoCompras&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userValidacaoCompras&lt;/id&gt;&#10; &lt;label&gt;userValidacaoCompras&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userValidacaoGestor&lt;/id&gt;&#10; &lt;label&gt;userValidacaoGestor&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userValidacaoItens&lt;/id&gt;&#10; &lt;label&gt;userValidacaoItens&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;validacaoItens&lt;/id&gt;&#10; &lt;label&gt;validacaoItens&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;valorTotalsemformat&lt;/id&gt;&#10; &lt;label&gt;valorTotalsemformat&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;WKNumProces&lt;/id&gt;&#10; &lt;label&gt;WKNumProces&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10;&lt;/list&gt;" expedient="Expediente BackOffice, Log&#237;stica e Motorista" extendedFields="&lt;list/&gt;" formSource="server" id="Recrutamento e sele&#231;&#227;o" instruction="Este flow permite abertura de solicita&#231;&#227;o de contrata&#231;&#227;o automatizadas, informando qual a fun&#231;&#227;o e direcionado para as aprova&#231;&#245;es corretas." keyWord="" managerAssignmentController="&lt;org.eclipse.bpmn2.impl.AssignmentControllerGroup&gt;&#10; &lt;groupId&gt;Recrutamento&lt;/groupId&gt;&#10; &lt;mechanismName&gt;Grupo&lt;/mechanismName&gt;&#10;&lt;/org.eclipse.bpmn2.impl.AssignmentControllerGroup&gt;" managerMechanism="Grupo" mobileReady="true" name="Recrutamento e sele&#231;&#227;o" notifyRequisitionerComplements="true" notifyResponsibleComplements="true" serverId="Ginseng Produ&#231;&#227;o" version="31" volume="Default"/>
<bpmn2:BpmnProcess author="" cardIndex="823" category="Recrutamento e Sele&#231;&#227;o" complementsLevel="1" deadlineTime="36000.0" descriptorFields="&lt;list&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;centroCusto&lt;/id&gt;&#10; &lt;label&gt;centroCusto&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;consideracoesCompras&lt;/id&gt;&#10; &lt;label&gt;consideracoesCompras&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;dataAbertura&lt;/id&gt;&#10; &lt;label&gt;dataAbertura&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;requesterId&lt;/id&gt;&#10; &lt;label&gt;requesterId&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;requesterMail&lt;/id&gt;&#10; &lt;label&gt;requesterMail&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;requesterName&lt;/id&gt;&#10; &lt;label&gt;requesterName&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userCotacaoGestor&lt;/id&gt;&#10; &lt;label&gt;userCotacaoGestor&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userRealizacaoCompras&lt;/id&gt;&#10; &lt;label&gt;userRealizacaoCompras&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userValidacaoCompras&lt;/id&gt;&#10; &lt;label&gt;userValidacaoCompras&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userValidacaoGestor&lt;/id&gt;&#10; &lt;label&gt;userValidacaoGestor&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;userValidacaoItens&lt;/id&gt;&#10; &lt;label&gt;userValidacaoItens&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;validacaoItens&lt;/id&gt;&#10; &lt;label&gt;validacaoItens&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;valorTotalsemformat&lt;/id&gt;&#10; &lt;label&gt;valorTotalsemformat&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10; &lt;id&gt;WKNumProces&lt;/id&gt;&#10; &lt;label&gt;WKNumProces&lt;/label&gt;&#10; &lt;cardIndex&gt;823 - recrutamento&lt;/cardIndex&gt;&#10; &lt;/org.eclipse.bpmn2.impl.BpmnProcessFormField&gt;&#10;&lt;/list&gt;" expedient="Expediente BackOffice, Log&#237;stica e Motorista" extendedFields="&lt;list/&gt;" formSource="server" id="Recrutamento e sele&#231;&#227;o" instruction="Este flow permite abertura de solicita&#231;&#227;o de contrata&#231;&#227;o automatizadas, informando qual a fun&#231;&#227;o e direcionado para as aprova&#231;&#245;es corretas." keyWord="" managerAssignmentController="&lt;org.eclipse.bpmn2.impl.AssignmentControllerGroup&gt;&#10; &lt;groupId&gt;Recrutamento&lt;/groupId&gt;&#10; &lt;mechanismName&gt;Grupo&lt;/mechanismName&gt;&#10;&lt;/org.eclipse.bpmn2.impl.AssignmentControllerGroup&gt;" managerMechanism="Grupo" mobileReady="true" name="Recrutamento e sele&#231;&#227;o" notifyRequisitionerComplements="true" notifyResponsibleComplements="true" serverId="Ginseng Produ&#231;&#227;o" version="34" volume="Default"/>
<bpmn2:SequenceFlow atividadeFluxo="" atividadeRetorno="" extendedFields="&lt;list/&gt;" id="flow3" name="" sourceRef="startevent1" targetRef="exclusivegateway2"/>
<bpmn2:SequenceFlow atividadeFluxo="" atividadeRetorno="" extendedFields="&lt;list/&gt;" id="flow5" movementAccessLinkDescription="" movementDescription="" movementTitle="" name="Gestor Identificado" sourceRef="exclusivegateway2" targetRef="task4"/>
<bpmn2:SequenceFlow atividadeFluxo="" atividadeRetorno="" extendedFields="&lt;list/&gt;" id="flow7" name="Sem Gestor" sourceRef="exclusivegateway2" targetRef="task6"/>
@@ -0,0 +1,189 @@
function beforeTaskSave(colleagueId, nextSequenceId, userList) {
try {
var currentState = parseInt(String(getValue("WKNumState") || "0"), 10);
var nextState = parseInt(String(nextSequenceId || "0"), 10);
var completeTask = String(getValue("WKCompletTask") || "false");
log.info("[Recrutamento.beforeTaskSave] currentState=" + currentState + ", nextState=" + nextState + ", completeTask=" + completeTask);
if (completeTask !== "true") return;
// Disparo do e-mail inicial da solicitação (atividade inicial = 1).
if (currentState === 1) {
enviarNotificacaoSolicitacao();
return;
}
// Disparo quando a seleção define o início do colaborador.
if (currentState === 6 && nextState === 46) {
enviarNotificacaoInicioColaborador();
}
} catch (e) {
log.error("[Recrutamento.beforeTaskSave] Erro ao disparar notificação: " + e);
}
}
function enviarNotificacaoSolicitacao() {
var envio = montarContextoEnvio();
if (!envio.ok) return;
var params = new java.util.HashMap();
params.put("WKNumProces", envio.processNumber);
params.put("linkSolicitacao", envio.processLink);
params.put("link", envio.processLink);
params.put("requesterName", valueOrDefault(hAPI.getCardValue("requesterName")));
params.put("gestorNome", valueOrDefault(hAPI.getCardValue("gestorNome")));
params.put("dataAbertura", valueOrDefault(hAPI.getCardValue("dataAbertura")));
params.put("cargo", valueOrDefault(hAPI.getCardValue("funcao")));
params.put("kitUtilizado", getKitDescricao(hAPI.getCardValue("itensinicio")));
params.put("motivoSolicitacao", getMotivoDescricao(hAPI.getCardValue("validarMotivo")));
params.put("justificativa", valueOrDefault(hAPI.getCardValue("justificativa")));
notifier.notify("admin", "tpl_recrutamento_realizada_dia", params, envio.destinatarios, "text/html");
log.info("[Recrutamento.beforeTaskSave] tpl_recrutamento_realizada_dia enviado. processo=" + envio.processNumber + ", destinos=" + envio.destinosLog);
}
function enviarNotificacaoInicioColaborador() {
var envio = montarContextoEnvio();
if (!envio.ok) return;
var dataInicio = safeTrim(hAPI.getCardValue("datainiciotrabalho"));
if (dataInicio === "") {
log.warn("[Recrutamento.beforeTaskSave] Data de início vazia. Notificação de início não enviada.");
return;
}
var params = new java.util.HashMap();
params.put("WKNumProces", envio.processNumber);
params.put("linkSolicitacao", envio.processLink);
params.put("link", envio.processLink);
params.put("colaboradorNome", valueOrDefault(hAPI.getCardValue("nomedocandidato")));
params.put("cargo", valueOrDefault(hAPI.getCardValue("funcao")));
params.put("dataInicio", formatDateBr(dataInicio));
params.put("kitUtilizado", getKitDescricao(hAPI.getCardValue("itensinicio")));
notifier.notify("admin", "tpl_recrutamento_realizada", params, envio.destinatarios, "text/html");
log.info("[Recrutamento.beforeTaskSave] tpl_recrutamento_realizada enviado. processo=" + envio.processNumber + ", destinos=" + envio.destinosLog);
}
function montarContextoEnvio() {
var destinatarios = new java.util.ArrayList();
var jaAdicionados = {};
addEmail(destinatarios, jaAdicionados, "tic@grupoginseng.com.br");
var requesterId = safeTrim(hAPI.getCardValue("requesterId"));
if (requesterId !== "") {
addEmail(destinatarios, jaAdicionados, resolveEmailByColleagueId(requesterId));
}
if (destinatarios.isEmpty()) {
log.warn("[Recrutamento.beforeTaskSave] Nenhum e-mail válido encontrado para notificação.");
return { ok: false };
}
var processNumber = safeTrim(getValue("WKNumProces"));
var processLink = buildProcessLink(processNumber);
return {
ok: true,
processNumber: processNumber,
processLink: processLink,
destinatarios: destinatarios,
destinosLog: String(destinatarios.toString())
};
}
function addEmail(destinatarios, jaAdicionados, email) {
var v = safeTrim(email).toLowerCase();
if (!isValidEmail(v)) return;
if (jaAdicionados[v]) return;
destinatarios.add(v);
jaAdicionados[v] = true;
}
function resolveEmailByColleagueId(colleagueId) {
var id = safeTrim(colleagueId);
if (id === "") return "";
try {
var cActive = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
var cId = DatasetFactory.createConstraint("colleaguePK.colleagueId", id, id, ConstraintType.MUST);
var byId = DatasetFactory.getDataset("colleague", null, [cId, cActive], null);
if (byId && byId.rowsCount > 0) {
return safeTrim(byId.getValue(0, "mail"));
}
var cLogin = DatasetFactory.createConstraint("login", id, id, ConstraintType.MUST);
var byLogin = DatasetFactory.getDataset("colleague", null, [cLogin, cActive], null);
if (byLogin && byLogin.rowsCount > 0) {
return safeTrim(byLogin.getValue(0, "mail"));
}
} catch (e) {
log.warn("[Recrutamento.beforeTaskSave] Falha ao buscar e-mail por colleagueId: " + e);
}
return "";
}
function buildProcessLink(processNumber) {
var baseUrl = safeTrim(getValue("WKServerURL"));
var companyId = safeTrim(getValue("WKCompany"));
if (baseUrl === "" || processNumber === "") return "";
if (baseUrl.indexOf("http://") !== 0 && baseUrl.indexOf("https://") !== 0) {
baseUrl = "https://" + baseUrl;
}
if (baseUrl.charAt(baseUrl.length - 1) === "/") {
baseUrl = baseUrl.substring(0, baseUrl.length - 1);
}
if (companyId === "") companyId = "1";
return baseUrl + "/portal/p/" + companyId + "/pageworkflowview?app_ecm_workflowview_detailsProcessInstanceID=" + processNumber;
}
function getMotivoDescricao(motivo) {
var v = safeTrim(motivo).toLowerCase();
if (v === "aumento") return "Aumento de quadro";
if (v === "substituicao") return "Substituição";
if (v === "temporario") return "Temporário";
return v === "" ? "Não informado" : v;
}
function getKitDescricao(kit) {
var v = safeTrim(kit).toLowerCase();
if (v === "backoffice") return "Kit Backoffice (Notebook, mouse, teclado e headset)";
if (v === "amg") return "Kit AMG (Notebook, kit mouse e teclado, headset e telefone corporativo)";
if (v === "comercial") return "Kit Comercial (Mobshop e Mobpin)";
return v === "" ? "Não informado" : v;
}
function formatDateBr(value) {
var v = safeTrim(value);
if (/^\d{4}-\d{2}-\d{2}$/.test(v)) {
return v.substring(8, 10) + "/" + v.substring(5, 7) + "/" + v.substring(0, 4);
}
return v;
}
function valueOrDefault(value) {
var v = safeTrim(value);
return v === "" ? "Não informado" : v;
}
function isValidEmail(email) {
var v = safeTrim(email);
if (v === "") return false;
if (/\s/.test(v)) return false;
var at = v.indexOf("@");
if (at <= 0 || at !== v.lastIndexOf("@")) return false;
var dot = v.lastIndexOf(".");
return dot > at + 1 && dot < (v.length - 1);
}
function safeTrim(value) {
return String(value == null ? "" : value).trim();
}
@@ -0,0 +1,27 @@
function onNotify(subject, receivers, template, params) {
log.info("===== onNotify GLOBAL ===== Template: " + template);
var validos = new java.util.ArrayList();
for (var i = 0; i < receivers.size(); i++) {
var email = receivers.get(i);
log.info("Receiver original: [" + email + "]");
if (email && email.indexOf("@") > 0 && email.indexOf(".") > 0) {
validos.add(email);
} else {
log.warn("REMOVIDO EMAIL INVALIDO: [" + email + "] TEMPLATE: " + template);
}
}
receivers.clear();
for (var j = 0; j < validos.size(); j++) {
receivers.add(validos.get(j));
}
log.info("TOTAL FINAL RECEIVERS: " + receivers.size());
}