Pular para o conteúdo
Português - Brasil
  • Não há sugestões porque o campo de pesquisa está em branco.

Solicitação de modificação de query para atender demanda de data de admissão da empresa / data aniversário, contar como data do primeiro vinculo.

Em alguns casos, o colaborador pode ter mais de um cadastro/vínculo na base da Senior, normalmente por troca de tipo de colaborador, recontratação, transferência ou alteração de vínculo.

Nesse cenário, a query original retornava a data de admissão do cadastro consultado no momento, ou seja, considerava apenas o numcad informado no filtro.

Por exemplo, no caso analisado, o colaborador possuía dois vínculos com o mesmo CPF:

numcad 2876 → Data de admissão: 10/03/1997 → Situação: Demitido numcad 47   → Data de admissão: 18/05/2016 → Situação: Trabalhando

Ao consultar apenas o numcad 47, a query retornava a data de admissão do vínculo atual:

"admission_date": "2016-05-18T00:00:00.000Z"

Porém, para a regra esperada pelo cliente, a data correta deveria considerar a primeira admissão encontrada para o mesmo CPF, mesmo que esteja vinculada a outro numcad.

Nesse caso, o retorno esperado seria:

"admission_date": "1997-03-10T00:00:00.000Z"
Como foi feito o ajuste

A alteração foi feita diretamente no campo admission_date.

Antes, a query retornava apenas:

fun.datadm AS admission_date,

Com isso, era considerada somente a data de admissão do registro que estava sendo retornado pela consulta.

Depois do ajuste, foi incluída uma subconsulta para buscar todos os registros existentes na vw_joinin_funcionario com o mesmo CPF do colaborador e retornar a menor data de admissão encontrada.

O campo ficou assim:

COALESCE(   (     SELECT MIN(fun_cpf.datadm)     FROM vw_joinin_funcionario fun_cpf     WHERE RIGHT(CONCAT('00000000000', fun_cpf.numcpf), 11) = RIGHT(CONCAT('00000000000', fun.numcpf), 11)       AND fun_cpf.tipcol IN (1,2)       AND fun_cpf.datadm IS NOT NULL   ),   fun.datadm ) AS admission_date,
Explicação da lógica

A query continua buscando o colaborador normalmente pelo numcad informado no filtro.

A diferença é que, para preencher o campo admission_date, ela não usa mais apenas a data daquele cadastro específico. Antes de retornar o valor, ela valida o CPF do colaborador e procura a menor data de admissão existente para aquele CPF dentro da própria vw_joinin_funcionario.

Na prática, a regra ficou assim:

  • Consulta o colaborador normalmente pelo numcad;
  • Identifica o CPF desse colaborador;
  • Busca todos os vínculos que tenham o mesmo CPF;
  • Retorna a menor datadm encontrada;
  • Caso não encontre outra data válida, mantém a própria fun.datadm.

Foi utilizado o COALESCE para garantir que, se por algum motivo a subconsulta não encontrar uma data, o sistema ainda retorne a data de admissão original do cadastro consultado.

Também foi mantida a comparação do CPF com 11 dígitos:

RIGHT(CONCAT('00000000000', fun_cpf.numcpf), 11)

Isso evita divergência em casos onde o CPF esteja salvo sem zeros à esquerda.

Query de apoio para validação

Antes de aplicar ou validar esse tipo de ajuste, pode ser usada uma consulta auxiliar para verificar se existem outros vínculos para o mesmo CPF:

SELECT    fun.numcpf,   fun.numcad,   fun.tipcol,   fun.datadm,   fun.nomfun,   fun.sitafa,   fun.dessit FROM vw_joinin_funcionario fun WHERE RIGHT(CONCAT('00000000000', fun.numcpf), 11) = (   SELECT TOP 1 RIGHT(CONCAT('00000000000', f.numcpf), 11)   FROM vw_joinin_funcionario f   WHERE f.numcad = 47 ) ORDER BY fun.datadm;

No caso analisado, essa validação retornou os dois vínculos do colaborador, confirmando que o mesmo CPF possuía uma admissão mais antiga em outro numcad.

Quando usar esse ajuste

Esse ajuste pode ser aplicado quando o cliente precisar que a data de admissão considere o histórico do colaborador na empresa, e não apenas o vínculo atual retornado pela integração.

É útil principalmente em casos de:

  • Colaborador com mais de uma matrícula;
  • Recontratação;
  • Alteração de tipo de colaborador;
  • Transferência entre vínculos;
  • Cenários onde o tempo de empresa precisa considerar a primeira admissão;
  • Casos em que a data de admissão impacta regras internas, aniversário de empresa ou exibição de informações no Joinin.
Atenção

Esse ajuste só funciona se o vínculo antigo ainda existir na vw_joinin_funcionario.

Caso a matrícula anterior tenha sido excluída da base, ou não esteja mais disponível na view utilizada pela integração, a query não terá como localizar automaticamente a data antiga.

Nesses casos, é necessário validar com o cliente ou com o responsável pela base Senior se o registro anterior ainda existe e onde ele pode ser consultado.

Resultado esperado

Após o ajuste, mesmo que a consulta seja feita pelo vínculo atual do colaborador, o campo admission_date passa a retornar a data de admissão mais antiga encontrada para o mesmo CPF.

Exemplo:

Consulta realizada pelo numcad: 47 Data do vínculo atual: 18/05/2016 Data mais antiga encontrada para o CPF: 10/03/1997

Retorno esperado:

"admission_date": "1997-03-10T00:00:00.000Z"