top of page
Foto do escritorAmanda Nascimento

Gatilho Controle Bco. de Hora


Resultado:


No meu caso, utilizei o SQL SERVER e o Power BI


1º Passo contruir a consulta relacionando as tabelas que precisa. Fiz a identificação das tabelas que iria utilizar para consstruir minha consulta. Se voccê não tiver acesso ao banco de dados, poderá construir utilizando o Excel mesmo, porem precisa ter as informações cruciais de saldo de horas do funcionário dentro de um determinado período.



Para quem usa o Totvs, acho que é padrão a nomeclatura das tabelas.

Tabelas utilizadas:


ASALDOBANCOHOR (matrícula do funcionário com datas iniciais e finais do período analisado)



APARFUN (registros de abonos, compensações)

PFUNC (registros gerais dos funcionários)

PSECAO (registro de lotação)

PFUNCAO (registro de cargos)

PFCOMPL (complemento de informações da PFUNC)

TABAGP (tabela que criei para caracterizar algumas coisas de acordo com a regra de negócio)


***FROM



***SELECT


Minha data de referência e minhas cases: (será necessário fazer no Excel caso você não esteja utilizando/tratando as informações via SQL).


FORMAT(ASALDOBANCOHOR.FIMPER, 'dd/MM/yyyy') AS DT_PERIODO,


CASE

WHEN ((ASALDOBANCOHOR.EXTRAATU - ASALDOBANCOHOR.ATRASOATU - ASALDOBANCOHOR.FALTAATU) + (ASALDOBANCOHOR.EXTRAANT - ASALDOBANCOHOR.ATRASOANT - ASALDOBANCOHOR.FALTAANT)) < 0 THEN DBO.FN_CONVMIN(ABS(((ASALDOBANCOHOR.EXTRAATU - ASALDOBANCOHOR.ATRASOATU - ASALDOBANCOHOR.FALTAATU) + (ASALDOBANCOHOR.EXTRAANT - ASALDOBANCOHOR.ATRASOANT - ASALDOBANCOHOR.FALTAANT))))

ELSE '00:00'

END BANCO_NEGATIVO,



CASE

WHEN ((ASALDOBANCOHOR.EXTRAATU - ASALDOBANCOHOR.ATRASOATU - ASALDOBANCOHOR.FALTAATU) + (ASALDOBANCOHOR.EXTRAANT - ASALDOBANCOHOR.ATRASOANT - ASALDOBANCOHOR.FALTAANT)) > 0 THEN DBO.FN_CONVMIN(ABS(((ASALDOBANCOHOR.EXTRAATU - ASALDOBANCOHOR.ATRASOATU - ASALDOBANCOHOR.FALTAATU) + (ASALDOBANCOHOR.EXTRAANT - ASALDOBANCOHOR.ATRASOANT - ASALDOBANCOHOR.FALTAANT))))

ELSE '00:00'

END BANCO_POSITIVO,



CASE

WHEN ((ASALDOBANCOHOR.EXTRAATU - ASALDOBANCOHOR.ATRASOATU - ASALDOBANCOHOR.FALTAATU) + (ASALDOBANCOHOR.EXTRAANT - ASALDOBANCOHOR.ATRASOANT - ASALDOBANCOHOR.FALTAANT)) > 0 OR

((ASALDOBANCOHOR.EXTRAATU - ASALDOBANCOHOR.ATRASOATU - ASALDOBANCOHOR.FALTAATU) + (ASALDOBANCOHOR.EXTRAANT - ASALDOBANCOHOR.ATRASOANT - ASALDOBANCOHOR.FALTAANT)) < 0 THEN DBO.FN_CONVMIN(ABS(((ASALDOBANCOHOR.EXTRAATU - ASALDOBANCOHOR.ATRASOATU - ASALDOBANCOHOR.FALTAATU) + (ASALDOBANCOHOR.EXTRAANT - ASALDOBANCOHOR.ATRASOANT - ASALDOBANCOHOR.FALTAANT))))

ELSE '00:00'

END AS BCO_GERAL,




Ainda dentro do SELECT, fiz a tratativa para os casos. Por exemplo...

Se o banco de horas do funcionário for acima de 16:00 a saída será alerta vermelho, se for entre 12:00 a 15:59 a saída será alerta amarelo, e abaixo disso, VERDE.

Mais abaixo, compartilho a consulta completa.




***WHERE


No WHERE inseri minhas restrições (filtros) e fiz uma sub query dentro do WHERE para buscar pelo critério de fechamento do período vigente.





Terminando o tratamento da consulta, faça a conexão do Power BI:



Ao carregar a consulta dentro do Power Query, monte o layout do jeito que preferir (minha sugestão esta na 1ª imagem)


Como fiz as classificações dentro do SQL, na minha tabela ficou assim:



Ao selecionar a tabela, em visualizções faça a formatação condicional da coluna que construímos com as analises considerando número 3, 2, 1, 0




Para criar os alertas ao lado:





BCO HORAS VERMELHO = var _bcoTotalVermelho = CALCULATE(COUNTROWS('SALDO_HORA'),'SALDO_HORA'[GATILHO_NRO]="3",'SALDO_HORA'[GATILHO_NRO]="3") return IF(ISBLANK(_bcoTotalVermelho),0,_bcoTotalVermelho)



% GATILHO VERMELHO = var _qntvermelho = [BCO HORAS VERMELHO] / [QP_ATUAL M.QNT NOME] return IF(ISBLANK(_qntvermelho),0,_qntvermelho)



Entre os dias 16 a 22 é o período de manutenção, nestes dias, a bolinha em verde ficará vermelha pois é um período crítico sem assertividade devido a manutenção de períodos, inviabilizando a consulta.





Clique aqui para acessar a consulta completa


https://github.com/amandarnascimento/sqlserver/commit/a0863e0ab4c27738484e6e7260d5004675df5cff

bottom of page