Ir para o conteúdo principal

Estudo Sobre os Scripts Utilizados Para o Fechamento da Folha de Pagamento

Data de elaboração 23/08/2023
Responsável pelo estudo

Ádrian Rabelo Mendes (Assessor)
Diego Gonçalves de Almeida (Assessor)
Jônatas Legal (Técnico em Tecnologia da Informação e Comunicação) (Assessor)
Rodrigo Stefano Sales Nascimento (Assessor)

Equipe do estudo CAOS

Alvo

Sistema Governa

Origem

Scripts SQL utilizados pela SEGEP para o fechamento da folha de pagamento

Objetivo Para verificar a possibilidade de implementação e execução automatizada desses scripts SQL em funcionalidades do Governa após processamento da folha de pagamento.
Glossário

API - Application Programming Interface (em português Interface de Programação de Aplicação)

HTTP - Hypertext Transfer Protocol (em português Protocolo de Transferência de Hipertexto)

HTML - Hypertext Markup Language (em português Linguagem de Marcação de Hipertexto)

SQL - Structured Query Language (em português Linguagem de Consulta Estruturada)

REST - Representational State Transfer (em português Transferência de Estado Representacional)

URL - Uniform Resource Locator (em português Localizador Padrão de Recursos)

1. Introdução

Atualmente, o cálculo da folha de pagamento ocorre mensalmente através do sistema Governa. No entanto, há algumas verificações que precisam ocorrer antes do fechamento completo da folha. Essas verificações são realizadas manualmente pela equipe de usuários da SEGEP responsáveis pela folha de pagamento do estado. Verificações estas realizadas através de scripts SQL diretamente no banco de dados do Governa.

1.1 Problema

A execução de scripts no banco de dados, ao invés de funcionalidades na aplicação, não é somente oneroso ao usuário no cumprimento das suas atividades, devido ao trabalho manual e exaustivo. É oneroso também a integridade do próprio banco de dados. Há ainda a possibilidade de brechas de segurança, risco de violação a LGPD, entre outras situações, consequentes do acesso aos dados não estarem restritos apenas à aplicação. Estes scripts estão listados a seguir:

  1. ANTES DA ANÁLISE verificando valor da verba 85 que não esta na financeiro mensal
  2. ANTES DA ANÁLISE verificando abono sem salvar na financeiro_mensal
  3. ANTES DA ANALISE verificando diferença de consignação
  4. sp_gerar_auxilio_saude - GERAR APENAS NA PREVIA
  5. verificar servidores sem verba de vencimento
  6. verificando saldo negativo
  7. verificando servidores admitidos 06112018 prevcom
  8. verificando lotações novas
  9. verificando afastamentos IPERON em servidor não IPERON
  10. Checar Afastamento Salario Maternidade Errado
  11. checando FGTS
  12. verifica servidores sem vencimento no mês
  13. VERIFICANDO SERVIDORES COM INSALUBRIDADE E PERICULOSIDADE
  14. verificando hora extra errada
  15. Altera verba 709 763 para 303 de quem está na TABSAL PCIVIL
  16. checando gozo com varias datas de pagamento para mesmo período aquisitivo
  17. checando quem tem averbação duplicada
  18. Checando Recebimento Cumulativo das Verbas 165. 2013 e 2015
  19. Checar SEJUS com verba de adicional noturno errado 719
  20. Checar SEJUS com verba de adicional noturno errado. 783
  21. Checar SEJUS com verba de adicional noturno errado. 785
  22. corrigindo saldo negativo indevido
  23. Deletando Verbas Indevidas no Detran
  24. Deletar Auxilio Transporte de Federais
  25. Deletar férias de servidores afastados aguardando aposentadoria com data de pagamento maior igual ao mês corrente
  26. Deletar vale transporte para quem está afastado aguardando aposentadoria
  27. Deletar verbas variáveis para quem está afastado aguardando aposentadoria
  28. Exclusão de conflito de verbas 709 com 363 303
  29. Lançando reposição de GAE para servidores da saúde com faltas
  30. REL. SERVIDORES FEDERAIS A DISPOSIÇÃO DO ESTADO COM INSS
  31. relação de quem tem a verba 727,1727 com a tabela da SESAU 0020.0728182022-18
  32. Verifica Duplicidade de Auxilio Saúde
  33. Verifica GAD Valores Errados
  34. Verifica Piso do Magistério em Cargos não Professores Exclui a Verba
  35. Verifica Piso do Magistério em Cargos não Professores Fecha a Verba
  36. Verifica Plantões Errados da SESAU
  37. Verifica Servidores não IPERON com Afastamento IPERON
  38. verificando averbação suspensa com desconto
  39. Verificando Cedido sem CDSFG
  40. verificando diferença de consignação
  41. verificando diferença entra verba 2051 e 2043
  42. verificando duplicidade de auxilio COVID
  43. verificando inativos com afastamento
  44. verificando inativos com auxilio saúde
  45. verificando inativos com férias
  46. verificando lançamento de verba de consignação na verba eventual
  47. verificando licença premio com data de pagamento
  48. verificando PM e BM em classificação errada
  49. Verificando quem tem somente auxilio transporte, auxilio saúde, complemento salario mínimo e outros
  50. VERIFICANDO SERVIDORES COM INSALUBRIDADE E PERICULOSIDADE
  51. Verificar Averbações em Servidores em Cargo para Pagamento
  52. VERIFICAR COM ABONO PERMANECIA E CDS
  53. Verificar GAD Médicos em não médicos
  54. verificar maternidade INSS sem salvar valor no campo maternidade INSS na financeiro base
  55. VERIFICAR PAGAMENTO EM DUPLICIDADE DE PERICULOSIDADE
  56. VERIFICAR SERVIDORES COM FG E CDS COM GAE E HORA EXTRA
  57. verificar verba exclusão BB

Os detalhes deles podem ser visualizados no Anexo I.

1.2 Proposta de Solução

Para resolver o problema, propõe-se automatizar a execução desses scripts pela aplicação, implementando suas regras de negócio e restringindo seu controle exclusivamente à aplicação.

2. Referencial Teórico

Este capítulo introduz a base teórica deste estudo. São brevemente descritos conceitos de comunicação entre softwares com APIs. Também algumas premissas de arquitetura de software, especificamente da arquitetura monolítica que forma a base estrutural do Governa, e da arquitetura de microsserviços na qual poderá ser implementada a automação dos scripts. Por fim, também são apresentadas as ferramentas e tecnologias que podem ser utilizadas no desenvolvimento dessa solução.

2.1 API

No contexto de APIs, a interface pode ser pensada como um contrato de serviço entre duas aplicações. Esse contrato define como APIs se comunicam e a documentação delas contém informações sobre como os desenvolvedores devem estruturar essa comunicação usando requisições e respostas. Já a aplicação refere-se a qualquer software com uma função distinta.

A arquitetura da API geralmente é explicada em termos de cliente e servidor. A aplicação que envia a solicitação é chamada de cliente e a aplicação que envia a resposta é chamada de servidor.

Há uma diversidade de maneiras pelas quais as APIs podem funcionar, mas vale destacar APIs REST. Essas são as APIs mais populares e flexíveis encontradas na Web atualmente. O cliente envia solicitações ao servidor como dados. O servidor usa essa entrada do cliente para iniciar funções internas e retorna os dados de saída ao cliente. 

A principal característica da API REST é a ausência de estado. A ausência de estado significa que os servidores não salvam dados do cliente entre as solicitações. As solicitações do cliente ao servidor são semelhantes aos URLs digitadas no navegador para visitar um site. A resposta do servidor corresponde a dados simples, sem a renderização gráfica típica de uma página da Web.

2.2 Arquitetura de Software

A arquitetura de software especifica como um sistema deve ser organizado e estruturado, compreendendo o conjunto de componentes do sistema, suas relações entre si, relacionamento com outros softwares e os princípios que regem sua evolução. A arquitetura destaca uma série de decisões de projeto e fornece mecanismos para considerar os benefícios de estruturas alternativas do sistema.

Vários estilos de arquitetura encontram-se à disposição dos engenheiros de software que podem ser aplicadas à uma arquitetura específica para um software valendo destacar microsserviços e arquitetura monolítica em termos de desenvolvimento web. 

2.1.1 Arquitetura Monolítica

Uma aplicação web típica é executada em um computador remoto, denominado servidor, cuja interface de usuário é acessada por meio de um navegador (browser) no computador cliente. A aplicação é dita ser monolítica (ou monólito), quando toda a sua lógica é executada em uma única máquina, compartilhando memória, arquivos e recursos de processamento 

Apesar das principais linguagens de desenvolvimento de aplicações oferecerem abstrações para fragmentar a complexidade dos sistemas em módulos, ainda são projetadas para a criação de um único executável, no qual toda a modularização utilizada é executada numa mesma máquina compartilhando seus recursos.

Uma aplicação em arquitetura monolítica típica pode ser representada pela Figura 1 a seguir, onde todas as suas funções estão implementadas e são executadas em um único processo. 

Figura 1 – Representação de uma aplicação monolítica monolito.PNG

É este único executável lógico que manipula solicitações HTTP, executa lógicas de negócio, recupera e atualiza dados do banco de dados, e constrói visualizações HTML a serem enviadas ao navegador.

2.1.2 Arquitetura de Microsserviços

O termo "Arquitetura de Microsserviços" surgiu nos últimos anos para descrever uma maneira particular de projetar aplicativos de software como suítes de serviços independentemente implantáveis. Trata-se de uma abordagem para o desenvolvimento de aplicações através da decomposição de suas funcionalidades em serviços discretos, cada um executando em seu próprio processo e se comunicando com mecanismos leves, tal como uma API de recursos HTTP.

A proposta da arquitetura de microsserviços é possibilitar o desenvolvimento de aplicações de maneira mais flexível, escaláveis e com manutenção mais simples em relação às aplicações em arquiteturas monolíticas.  Como a aplicação é criada com pequenos serviços independentes, cada serviço pode funcionar ou falhar individualmente sem comprometer os demais. A Figura 2 representa um esquema de uma aplicação em arquitetura de microsserviços.

Figura 2 – Representação de microsserviços em uma aplicação microsservicos.PNG

Um serviço é desenvolvido para solucionar um problema específico e pode ser implantado, atualizado e escalado de forma independente, mantendo sua disponibilidade e funcionamento.  Como os processos da aplicação são executados como serviços que se comunicam por meio de APIs, estes não necessitam ser desenvolvidas em uma linguagem de programação específica.

2.3 Spring Framework

O Spring é um framework que facilita a criação de aplicativos corporativos. Fornece tudo o que o desenvolvedor necessita para adotar a linguagem de programação Java em um ambiente corporativo, e com a flexibilidade de criar muitas tipos de arquiteturas dependendo das necessidades de um aplicativo. É de código aberto e possui uma comunidade amplamente ativa que fornece feedback contínuo com base em uma gama diversificada de casos de uso do mundo real.

O Spring é dividido em módulos. Os aplicativos podem escolher quais módulos precisam. No centro estão os módulos do contêiner principal, incluindo um modelo de configuração e um mecanismo de injeção de dependência. Além disso, fornece suporte para diferentes arquiteturas de aplicativos, incluindo mensagens, dados transacionais e persistência e web. 

3. Possível Solução

Embora o Governa seja um sistema monolítico, não há impedimento para uma abordagem híbrida utilizando microsserviços para processamentos específicos, como é o caso da execução dos scripts. Um microsserviço possibilitará a automação destes de forma independente do Governa, permitido que sejam executados de diversas formas distintas e em qualquer momento oportuno. Vale ressaltar a facilidade de manutenção dessa solução, devido ao desacoplamento e a tecnologia mais atualizada. E ainda, a desoneração dos recursos já escassos do Governa, devido as execuções de cálculos pesados.

3.1 Microsserviço de Fechamento da Folha

Como visto anteriormente, os scripts realizam uma série de verificações nas tabelas do governa após o cálculo da folha de pagamento, visando corrigir eventuais erros.

Para o desenvolvimento dessa solução, pode-se construir um microsserviço simples utilizando Spring REST a fim de fornecer uma interface para troca de informações entre o Governa e o microsserviço. Também é possível utilizar um serviço de mensageria para empilhar requisições a fim de manter a disponibilidade integral dessa comunicação. Essa relação pode ser vislumbrada na Figura 3 a seguir:

Figura 3 – Representação da comunicação entre Governa e microsserviços através de um sistema de mensageriaScreenshot-from-2021-11-05-19-38-29.png

Na maioria dos aspectos, este seria um típico aplicativo Spring Boot simples. No entanto, a complexidade de implementação estará na conversão dos scripts em funcionalidades, devido as suas particularidades, e por fim incrementando todas as regras de negócio dos scripts na aplicação.

4. Conclusão

Após uma breve análise dos scripts, observou-se uma premissa geral. Caso as consultas não retornem resultados significa que os dados estão corretos; havendo retorno, os registros devem sofrer alterações ou exclusão. No mínimo, as duas histórias a seguir serão necessárias para dar início aos trabalhos.

História

O quê: Implementar, no Governa, funcionalidade para chamada à API externa

Por quê: Para possibilitar a comunicação entre o Governa e o microsserviço

Regras e Validações --
Pontuação 8
História

O quê: Criar projeto do microsserviço, configurar e adicionar ao gitlab da SETIC

Por quê: Para desenvolvimento, manutenção e versionamento do código-fonte

Regras e Validações
  • Configurar como API com Spring Framework em Java
  • Configurar versionamento e ambientes de Development, Staging e Production na esteira do gitlab
Pontuação 8

Essas histórias possibilitarão que o Governa realize chamadas à APIs e ao início do desenvolvimento do microsserviço. Ainda será necessária a criação de uma história para cada script, visto que cada um possui suas particularidades e precisam ser compreendidos para correta implementação.

5. Referências 

Visão geral de API :: Amazon AWS

SOMMERVILLE, I. Engenharia de Software. 9ª edição. São Paulo: Pearson. 2011. 

PRESSMAN, R. S. Engenharia de Software uma abordagem profissional. 8ª edição. São Paulo: AMGH, 2016. 

FOWLER, M; LEWIS, J. Microservices. martinfowler.com; 2014.

Visão geral do Spring Framework :: Spring Framework

ANEXO I

Scripts SQL utilizados pela SEGEP para fechamento da folha de pagamento. Os scripts seguintes (itens 1, 2, 3 e 4) são executados na ordem em que se apresentam uma única vez.


1- ANTES DA ANÁLISE verificando valor da verba 85 que não esta na financeiro mensal

use governa

---executar antes da análise

declare
@mesref int = 202305

select ltc.codigo, vba.valor, bse.auxilio_doenca_valor, srv.matricula, bse.id_pensionista_vitalicio,bse.abono_salario_familia_valor, vba.valor, bse.id_vinculo_empregaticio, bse.id_classificacao_funcional,
	bse.abono_salario_familia_tipo
--update rh.financeiro_mensal set auxilio_doenca_valor = vba.valor
from rh.financeiro_mensal bse, rh.servidor_mensal mns, rh.financeiro_mensal_verba vba, rh.lotacao ltc, rh.lotacao_mensal lms, rh.verba inc, rh.verba_rotina rot, rh.servidor srv
where bse.id_servidor_mensal = mns.id
and mns.mes_referencia = 202305
and bse.id = vba.id_financeiro_mensal
and mns.mes_referencia = lms.mes_referencia
and bse.id_lotacao_mensal = lms.id
and ltc.id = lms.id_lotacao
and vba.id_verba_rotina = rot.id
and inc.id = rot.id_verba
and srv.id = mns.id_servidor
--and id_pensionista_vitalicio is not null
and rot.rotina in ('FOL')
and rot.rotina = bse.rotina
and inc.codigo in (85,86)
and bse.auxilio_doenca_valor <> vba.valor


select ltc.codigo,vba.valor, srv.matricula, bse.id_pensionista_vitalicio,bse.abono_salario_familia_valor, bse.salario_maternidade_valor, bse.id_vinculo_empregaticio, bse.id_classificacao_funcional,
	bse.abono_salario_familia_tipo
--update rh.financeiro_mensal set salario_maternidade_valor = vba.valor
from rh.financeiro_mensal bse, rh.servidor_mensal mns, rh.financeiro_mensal_verba vba, rh.lotacao ltc, rh.lotacao_mensal lms, rh.verba inc, rh.verba_rotina rot, rh.servidor srv
where bse.id_servidor_mensal = mns.id
and mns.mes_referencia = 202305
and bse.id = vba.id_financeiro_mensal
and mns.mes_referencia = lms.mes_referencia
and bse.id_lotacao_mensal = lms.id
and ltc.id = lms.id_lotacao
and vba.id_verba_rotina = rot.id
and inc.id = rot.id_verba
and srv.id = mns.id_servidor
--and id_pensionista_vitalicio is not null
and rot.rotina in ('FOL')
and inc.codigo in (81)--10,82)
and rot.rotina = bse.rotina
and bse.salario_maternidade_valor <> vba.valor


select ltc.codigo,vba.valor, srv.matricula, bse.id_pensionista_vitalicio,bse.abono_salario_familia_valor, bse.salario_maternidade_valor, bse.id_vinculo_empregaticio, bse.id_classificacao_funcional,
	bse.abono_salario_familia_tipo
--update rh.financeiro_mensal set salario_maternidade_valor = salario_maternidade_valor + vba.valor
--update rh.financeiro_mensal set salario_maternidade_valor = vba.valor 
from rh.financeiro_mensal bse, rh.servidor_mensal mns, rh.financeiro_mensal_verba vba, rh.lotacao ltc, rh.lotacao_mensal lms, rh.verba inc, rh.verba_rotina rot, rh.servidor srv
where bse.id_servidor_mensal = mns.id
and mns.mes_referencia = 202305
and bse.id = vba.id_financeiro_mensal
and mns.mes_referencia = lms.mes_referencia
and bse.id_lotacao_mensal = lms.id
and ltc.id = lms.id_lotacao
and vba.id_verba_rotina = rot.id
and inc.id = rot.id_verba
and srv.id = mns.id_servidor
--and id_pensionista_vitalicio is not null
and rot.rotina in ('FOL')
and inc.codigo in (9)--10,82)
and bse.rotina = rot.rotina
and bse.salario_maternidade_valor <> vba.valor




select ltc.codigo,vba.valor, srv.matricula, bse.id_pensionista_vitalicio,bse.abono_salario_familia_valor, bse.salario_maternidade_valor, bse.id_vinculo_empregaticio, bse.id_classificacao_funcional,
	bse.abono_salario_familia_tipo
--update rh.financeiro_mensal set salario_maternidade_valor = salario_maternidade_valor + vba.valor
--update rh.financeiro_mensal set salario_maternidade_valor = vba.valor 
from rh.financeiro_mensal bse, rh.servidor_mensal mns, rh.financeiro_mensal_verba vba, rh.lotacao ltc, rh.lotacao_mensal lms, rh.verba inc, rh.verba_rotina rot, rh.servidor srv
where bse.id_servidor_mensal = mns.id
and mns.mes_referencia = 202305
and bse.id = vba.id_financeiro_mensal
and mns.mes_referencia = lms.mes_referencia
and bse.id_lotacao_mensal = lms.id
and ltc.id = lms.id_lotacao
and vba.id_verba_rotina = rot.id
and inc.id = rot.id_verba
and srv.id = mns.id_servidor
--and id_pensionista_vitalicio is not null
and rot.rotina in ('FOL')
and inc.codigo in (9)--10,82)
and bse.salario_maternidade_valor <> vba.valor

2 - ANTES DA ANÁLISE verificando abono sem salvar na financeiro_mensal

use governa

--executar antes da analise

declare

@mesref int = 202305


select srv.matricula, bse.abono_salario_familia_valor, vba.valor, bse.id_vinculo_empregaticio, bse.id_classificacao_funcional,
	bse.abono_salario_familia_tipo
--delete rh.financeiro_mensal_verba 
--update rh.financeiro_mensal set abono_salario_familia_valor = vba.valor, abono_salario_familia_tipo = 'SAF' 
from rh.financeiro_mensal bse, rh.servidor_mensal mns, rh.financeiro_mensal_verba vba, rh.lotacao ltc, rh.lotacao_mensal lms, rh.verba inc, rh.verba_rotina rot, rh.servidor srv
where bse.id_servidor_mensal = mns.id
and mns.mes_referencia = @mesref
and bse.id = vba.id_financeiro_mensal
and mns.mes_referencia = lms.mes_referencia
and bse.id_lotacao_mensal = lms.id
and ltc.id = lms.id_lotacao
and vba.id_verba_rotina = rot.id
and inc.id = rot.id_verba
and srv.id = mns.id_servidor
and rot.rotina in ('FOL')
and inc.codigo in (51)
AND vba.valor <> bse.abono_salario_familia_valor
and abono_salario_familia_tipo <> 'SAF'


select srv.matricula, bse.abono_salario_familia_valor, vba.valor, bse.id_vinculo_empregaticio, bse.id_classificacao_funcional,
	bse.abono_salario_familia_tipo, ltc.codigo
--delete rh.financeiro_mensal_verba 
--update rh.financeiro_mensal set abono_salario_familia_valor = vba.valor, abono_salario_familia_tipo = 'SAF'
from rh.financeiro_mensal bse, rh.servidor_mensal mns, rh.financeiro_mensal_verba vba, rh.lotacao ltc, rh.lotacao_mensal lms, rh.verba inc, rh.verba_rotina rot, rh.servidor srv
where bse.id_servidor_mensal = mns.id
and mns.mes_referencia = @mesref
and bse.id = vba.id_financeiro_mensal
and mns.mes_referencia = lms.mes_referencia
and bse.id_lotacao_mensal = lms.id
and ltc.id = lms.id_lotacao
and vba.id_verba_rotina = rot.id
and inc.id = rot.id_verba
and srv.id = mns.id_servidor
and rot.rotina in ('FOL')
and inc.codigo in (53)
AND vba.valor <> bse.abono_salario_familia_valor
And abono_salario_familia_tipo <> 'ABF'

3 - ANTES DA ANALISE verificando diferença de consignação

use governa

--executar antes da análise

declare
@mesref int = 202305

drop table #financeiro_csg
select	srv.matricula, inc.codigo, sum(avb.valor) 'valor', avb.id into #financeiro_csg
from	rh.financeiro_mensal_averbacao avb, 
		rh.financeiro_mensal bse, 
		rh.averbacao aver, 
		rh.verba inc, 
		rh.servidor_mensal mns, 
		rh.servidor srv,
		rh.lotacao ltc, 
		rh.lotacao_mensal lms
where avb.id_financeiro_mensal = bse.id
and avb.id_averbacao = aver.id
and aver.id_verba = inc.id
and bse.id_servidor_mensal = mns.id
and bse.mes_referencia = mns.mes_referencia
and mns.mes_referencia = avb.mes_referencia
and aver.id_servidor = srv.id
and ltc.id = lms.id_lotacao
and lms.mes_referencia = mns.mes_referencia
and lms.id = bse.id_lotacao_mensal
and mns.mes_referencia = @mesref
and bse.rotina = 'FOL'
group by srv.matricula, inc.codigo,avb.id

drop table ##ver
select srv.matricula, inc.codigo, SUM(vba.valor) 'valor_folha' into ##ver
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.id in (select id_verba from rh.param_verba_consignacao where compulsorio = 0)
group by srv.matricula, inc.codigo


select * from #financeiro_csg csg, ##ver ver
where csg.matricula = ver.matricula
and csg.codigo = ver.codigo
and csg.valor <> ver.valor_folha
and csg.valor - ver.valor_folha > 0.01

select * from #financeiro_csg csg left join ##ver ver
on csg.matricula = ver.matricula
and csg.codigo = ver.codigo
where ver.matricula	 is null

/* quando tiver analise critica duplicada

select * 
--delete rh.ANALISE_CRITICA_DETALHE
From rh.ANALISE_CRITICA_DETALHE ana, rh.averbacao avb, rh.servidor srv
where mes_referencia = 202108
and ana.id_averbacao = avb.id
and avb.id_servidor = srv.id
and srv.matricula in (300003039)
and ana.id = 50372092
*/

4 - sp_gerar_auxilio_saude - GERAR APENAS NA PREVIA

USE [Governa]
GO

/****** Object:  StoredProcedure [rh].[sp_gerar_auxilio_saude]    Script Date: 25/10/2018 07:25:41 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


--CREATE PROCEDURE [rh].[sp_gerar_auxilio_saude]

--verificar cadastro de servidor afastado com consignacao e outra matricula exemplo matricula 300156490 matricula nova

DECLARE
	 @MesReferencia					VARCHAR(6) = '202305'
	,@MenorMatricula				VARCHAR(9) = '100000000'
	,@MenorLotacao					VARCHAR(6) = '001'
	,@MenorVerba					VARCHAR(6) = '5000'
	,@AuxilioSaude					VARCHAR(6) = '2060'
	,@Condicional					VARCHAR(6) = '2260'
	,@MoedaAuxilio					int		   = '357'
    ,@MoedaCondicona				int        = '371'
	,@Rotina						VARCHAR(3) = 'FOL'
	,@LotacaoDefenso				VARCHAR(6) = '110'
	
--AS

DECLARE	
 @ID_VERBA_ROTINA_AUXILIO_SAUDE INT
,@ID_VERBA_ROTINA_AUXILIO_SAUDE_CONDICIONAL INT

-- PEGA A VERBA rotina DO AUXILIO SAÚDE
SET @ID_VERBA_ROTINA_AUXILIO_SAUDE = (SELECT rot.ID FROM rh.verba_rotina rot, rh.verba vba 
                                      WHERE rot.rotina = @Rotina AND vba.codigo = Convert(int,@AuxilioSaude)
									        AND rot.id_verba = vba.id)

-- PEGA A VERBA ROTINA DO AUXILIO SAÚDE CONDICIONAL
SET @ID_VERBA_ROTINA_AUXILIO_SAUDE_CONDICIONAL = (SELECT rot.ID FROM rh.verba_rotina rot, rh.verba vba 
                                                  WHERE rot.rotina = @Rotina AND vba.codigo = Convert(int,@Condicional)
												        AND rot.id_verba = vba.id)

-- CARREGA TODOS OS SERVIDORES DO MÊS
SELECT DISTINCT	
	 'ServidorId' = ser.id
	,'ServidorMensalId' = sMensal.id
	,'Matricula' = ser.matricula
	,'Cpf' = pes.cpf
	,'CargoId' = sMensal.id_cargo
	,'ClassificacaoId' = sMensal.id_classificacao_funcional
	,'Situacao' = sMensal.situacao	
	,'CargoCodigo' = carg.codigo
	,'GrauSalarialId' = isnull(sMensal.id_grau_salarial,'391')
	,'LotacaoId' = lot.id
	,'LotacaoCodigo' = lot.codigo
INTO #Servidores
FROM rh.servidor ser
    ,Admin.pessoa_fisica pes
	,rh.servidor_mensal sMensal
	,rh.cargo carg
	,rh.servidor_local sLoc
	,rh.local_trabalho loc
	,rh.lotacao lot
WHERE 	ser.id_pessoa = pes.id
	AND sMensal.id_servidor = ser.id
	AND carg.id = sMensal.id_cargo	
	AND sLoc.id_servidor_mensal = sMensal.id
	AND loc.id = sLoc.id_local_trabalho
	AND lot.id = loc.id_lotacao
	AND sMensal.situacao IN ('AFA','ATV')
	and carg.descricao not like 'cargo p%'
	and carg.descricao not like '%estag%'
	and carg.codigo not in (51318)
	AND sMensal.mes_referencia = Convert(int,@MesReferencia)
	and sMensal.id_classificacao_funcional not in (select clffnc from dbflh.dbo.TbClfAuxSau)
	and lot.codigo not in (1892,1896) --acrescentado essa linha em 26/04/2022, solicitado por Vanessa

SELECT
	'Matricula' = ser.matricula
	,'Cpf' = ser.cpf
	INTO #temp1
FROM #Servidores ser
	,rh.averbacao avb
	,rh.verba vba	
WHERE   avb.id_servidor = ser.servidorId	
	AND vba.id = avb.id_verba		
	AND ser.matricula > Convert(int,@MenorMatricula)
	AND avb.situacao IN ('ATV','RED')
	and ser.ServidorId not in (select id_servidor from rh.servidor_afastamento where remunerado = 0 and fim >= GETDATE())
--verificar cadastro de servidor afastado com consignacao e outra matricula exemplo matricula 300156490,300156638,300147014 matricula nova
--	AND vba.codigo IN (SELECT CodVba FROM DBTEMPS..TbVbaAuxSau)
	and vba.id in (select id_verba from rh.param_verba_consignacao where id_tipo_facultativo in (3))
	AND ser.matricula NOT IN (SELECT mtcfnc FROM dbtemps..tbmtcfnnaoauxsau) --tabela de matriculas que não deverao receber aux saude
	AND ser.ClassificacaoId NOT IN (SELECT ClfFnc FROM dbtemps..TbClfAuxSau)
	AND ser.cargoCodigo NOT IN (SELECT codFun FROM dbtemps..TbCargoNaoAuxSau)	
	AND ser.LotacaoCodigo NOT IN (SELECT codltc FROM dbtemps..TbLotNaoAuxSau)



--select * 
--delete [192.168.10.14].dbflh.dbo.tbmtcfnnaoauxsau
--FROM [192.168.10.14].dbflh.dbo.tbmtcfnnaoauxsau where mtcfnc in (100085395,100085597,100088244,100089133,100067890)

-- CASO TENHA MAIS DE UMA MATRICULA (POR CPF), SELECIONA A MAIOR MATRICULA E LANCA A VERBA.
SELECT 
	'Matricula' = MAX(ser.matricula)
INTO #MatriculaEfetivas
FROM #Servidores ser	
WHERE ser.matricula > Convert(int,@MenorMatricula)
	  AND ser.situacao = 'ATV'	  
	  AND ser.matricula NOT IN (SELECT clffnc FROM dbtemps..TbClfAuxSau)
      AND ser.cargoCodigo NOT IN (SELECT codFun FROM dbtemps..TbCargoNaoAuxSau)	
	  AND ser.LotacaoCodigo NOT IN (SELECT codltc FROM dbtemps..TbLotNaoAuxSau)
	  AND ser.matricula NOT IN (SELECT mtcfnc FROM dbtemps..tbmtcfnnaoauxsau)
	  AND ser.GrauSalarialId NOT IN (SELECT id FROM rh.grau_salarial WHERE grau in ('9900',''))
GROUP BY ser.cpf
HAVING COUNT(ser.matricula) >= 1

SELECT 
	 'Matricula' = ser.matricula
	,'Cpf' = ser.cpf
INTO #temp2
FROM #Servidores ser
WHERE ser.cpf NOT IN (SELECT Cpf FROM #temp1)
	  AND ser.matricula IN (SELECT Matricula FROM #MatriculaEfetivas)

-- MATRICULAS QUE TEM CDS
SELECT 'Matricula' = Max(ser.matricula)
INTO #MatriculasCDS
FROM #Servidores ser	
WHERE ser.matricula > Convert(int,@MenorMatricula)
	  AND ser.grauSalarialId IN (SELECT id FROM rh.grau_salarial WHERE grau in ('9900',''))
	  AND ser.situacao = 'ATV'
      AND ser.cargoId NOT IN (SELECT codFun FROM dbtemps..TbCargoNaoAuxSau)	
	  AND ser.matricula NOT IN (SELECT clffnc FROM dbtemps..TbClfAuxSau)
	  AND ser.matricula NOT IN (SELECT mtcfnc FROM dbtemps..tbmtcfnnaoauxsau)
	  AND ser.LotacaoCodigo NOT IN (SELECT codltc FROM dbtemps..TbLotNaoAuxSau)
GROUP BY ser.cpf
HAVING COUNT(ser.matricula) >= 1	



INSERT INTO #temp2
SELECT 
	'Matricula' = ser.matricula
   ,'Cpf' = ser.cpf
FROM #Servidores ser
WHERE ser.cpf NOT IN (SELECT Cpf FROM #temp1)
      AND ser.cpf NOT IN (SELECT Cpf FROM #temp2) 
      AND ser.matricula IN (SELECT Matricula FROM #MatriculasCDS)

-- INSERIR MATRICULAS AFASTADAS COM ONUS PARA O ESTADO, LICENÇA MATERNIDADE E AUXILIO DOENÇA
INSERT INTO #TEMP2
SELECT 
	'Matricula' = MIN(ser.matricula)
   ,'Cpf' = ser.cpf
FROM #Servidores ser
    ,rh.servidor_afastamento afa
	,rh.motivo_afastamento cauAfa	
WHERE afa.id_servidor = ser.servidorId
	  AND afa.id_motivo_afastamento = cauAfa.id
	  AND ser.Cpf NOT IN (SELECT Cpf FROM #temp1)
   	  AND ser.Cpf NOT IN (SELECT Cpf FROM #temp2)
	  AND ser.cargoCodigo NOT IN (SELECT codFun FROM dbtemps..TbCargoNaoAuxSau)
	  AND ser.classificacaoId NOT IN (SELECT ClfFnc FROM dbtemps..TbClfAuxSau)
	  AND ser.matricula NOT IN (SELECT mtcfnc FROM dbtemps..tbmtcfnnaoauxsau)
	  AND ser.matricula > Convert(int,@MenorMatricula)	
   	  AND ser.situacao = 'AFA'	
	  AND cauAfa.id IN (21,22,27,2,29,34,37,38,36,35,34,33)
	  AND ser.LotacaoCodigo NOT IN (SELECT codltc FROM dbtemps..TbLotNaoAuxSau)
GROUP BY ser.cpf

-- RETIRA DA TABELA OS LANCAMENTOS EFETUADOS NA VERBAS EVENTUAIS

BEGIN 
	DELETE FROM #temp1
	WHERE Cpf IN (SELECT ser.cpf 
	              FROM rh.verba_eventual vba
					   ,#Servidores ser
				 	   ,rh.verba_rotina vRot
				 	   ,rh.verba vINc
				   WHERE mes_referencia = Convert(int,@MesReferencia)
						 AND vba.id_servidor = ser.servidorId
				 		 AND vRot.id = vba.id_verba_rotina
  						 AND vRot.rotina = @Rotina
						 AND vINc.id = vRot.id_verba
						 AND vINc.codigo IN (Convert(int,@AuxilioSaude),Convert(int,@Condicional)))

	DELETE FROM #temp2
	WHERE Cpf IN (SELECT ser.cpf 
	              FROM rh.verba_eventual vba
					   ,#Servidores ser
				 	   ,rh.verba_rotina vRot
				 	   ,rh.verba vINc
				   WHERE mes_referencia = Convert(int,@MesReferencia)
						 AND vba.id_servidor = ser.servidorId
				 		 AND vRot.id = vba.id_verba_rotina
  						 AND vRot.rotina = @Rotina
						 AND vINc.id = vRot.id_verba
						 AND vINc.codigo IN (Convert(int,@AuxilioSaude), Convert(int,@Condicional)))
END

-- RETIRA DA TABELA OS LANCAMENTOS EFETUADOS NA VERBAS PERIODICA
BEGIN
	DELETE #temp1
	WHERE Cpf IN (SELECT ser.cpf 
				  FROM rh.verba_periodica vPer
					   ,#Servidores ser
					   ,rh.verba vba
				  WHERE INicio <= CONVERT(DATETIME, (CONVERT(CHAR(06) , Convert(int,@MesReferencia)) + '01'))
						AND fim >= CONVERT(DATETIME,(CONVERT(CHAR(06),Convert(int,@MesReferencia)) + '28'))
						AND ser.servidorId = vPer.id_servidor
						AND vPer.id_verba = vba.id 
						AND vba.codigo IN(Convert(int,@AuxilioSaude),Convert(int,@Condicional)))

	DELETE #temp2
	WHERE Cpf IN (SELECT ser.cpf 
				  FROM rh.verba_periodica vPer
					   ,#Servidores ser
					   ,rh.verba vba
				  WHERE Inicio <= CONVERT(DATETIME, (CONVERT(CHAR(06) , Convert(int,@MesReferencia)) + '01'))
						AND fim >= CONVERT(DATETIME,(CONVERT(CHAR(06),Convert(int,@MesReferencia)) + '28'))
						AND ser.servidorId = vPer.id_servidor
						AND vPer.id_verba = vba.id 
						AND vba.codigo IN(Convert(int,@AuxilioSaude),Convert(int,@Condicional)))

END

-- RETIRA DA TABELA OS LANCAMENTOS EFETUADOS NA VERBAS PERIODICA SEM DATA DE FIM
BEGIN
	DELETE #temp1
	WHERE Cpf IN (SELECT ser.cpf 
				  FROM rh.verba_periodica vPer
					   ,#Servidores ser
					   ,rh.verba vba
				  WHERE Inicio <= CONVERT(DATETIME, (CONVERT(CHAR(06) , Convert(int,@MesReferencia)) + '01'))
						AND fim is null
						AND ser.servidorId = vPer.id_servidor
						AND vPer.id_verba = vba.id 
						AND vba.codigo IN(Convert(int,@AuxilioSaude),Convert(int,@Condicional)))

	DELETE #temp2
	WHERE Cpf IN (SELECT ser.cpf 
				  FROM rh.verba_periodica vPer
					   ,#Servidores ser
					   ,rh.verba vba
				  WHERE Inicio <= CONVERT(DATETIME, (CONVERT(CHAR(06) , Convert(int,@MesReferencia)) + '01'))
						AND fim is null
						AND ser.servidorId = vPer.id_servidor
						AND vPer.id_verba = vba.id 
						AND vba.codigo IN(Convert(int,@AuxilioSaude),Convert(int,@Condicional)))
END


-- INSERE AUXILIO SAUDE CONDICIONAL PARA VERBAS VARIAVEIS
BEGIN 	
	INSERT INTO RH.VERBA_EVENTUAL 
	SELECT NEXT VALUE FOR rh.s_verba_eventual, Convert(int,@MesReferencia), ser.servidorId
	            ,@ID_VERBA_ROTINA_AUXILIO_SAUDE_CONDICIONAL, mMensal.valor_moeda, 1.00, 30.00, NULL, NULL, ser.Matricula,null,null,null,null,null
	FROM #temp1 a
	     ,rh.moeda moe
	     ,rh.moeda_mensal mMensal 
		 ,#Servidores ser
	WHERE ser.matricula = a.matricula
		  AND moe.id = mMensal.id_moeda
		  AND mMensal.mes_referencia = Convert(int,@MesReferencia)
	      AND moe.codigo = @MoedaCondicona
		  and ser.ServidorId not in (select id_servidor from rh.verba_eventual eve where eve.id_servidor = ser.ServidorId and eve.mes_referencia = @MesReferencia and eve.id_verba_rotina = @ID_VERBA_ROTINA_AUXILIO_SAUDE_CONDICIONAL)
END

BEGIN 
	INSERT INTO RH.VERBA_EVENTUAL 
	SELECT NEXT VALUE FOR rh.s_verba_eventual, Convert(int,@MesReferencia), ser.servidorId
	            ,@ID_VERBA_ROTINA_AUXILIO_SAUDE, mMensal.valor_moeda, 1.00, 30.00, NULL, NULL, ser.Matricula,null,null,null,null,null
	FROM #temp2 a
	     ,rh.moeda moe
	     ,rh.moeda_mensal mMensal 
		 ,#Servidores ser
	WHERE ser.matricula = a.matricula
		  AND moe.id = mMensal.id_moeda
		  AND mMensal.mes_referencia = Convert(int,@MesReferencia)
	      AND moe.codigo = @MoedaAuxilio
		  and ser.ServidorId not in (select id_servidor from rh.verba_eventual eve where eve.id_servidor = ser.ServidorId and eve.mes_referencia = @MesReferencia and eve.id_verba_rotina = @ID_VERBA_ROTINA_AUXILIO_SAUDE)
		  and ser.ServidorId not in (select id_servidor from rh.verba_eventual eve where eve.id_servidor = ser.ServidorId and eve.mes_referencia = @MesReferencia and eve.id_verba_rotina = @ID_VERBA_ROTINA_AUXILIO_SAUDE_CONDICIONAL)
END


--	ATUALIZANDO VALOR DO VALE PARA DEFENSORIA PUBLICA PARA 100 REAIS
BEGIN
	UPDATE RH.VERBA_EVENTUAL 
	       SET valor = 100.00
	FROM    RH.VERBA_EVENTUAL B
		   ,RH.VERBA A
		   ,RH.verba_rotina C
  		   ,#Servidores ser
	WHERE	A.ID =  C.id_verba
			AND C.id = B.id_verba_rotina			
			AND ser.ServidorId = b.id_servidor
			AND ser.LotacaoCodigo in (@LotacaoDefenso)
			AND C.id = @ID_VERBA_ROTINA_AUXILIO_SAUDE
			AND b.mes_referencia = Convert(int,@MesReferencia)
			AND valor = 50.0
END

-- ATUALIZANDO VALOR DO VALE PARA DEFENSORIA PUBLICA PARA 200 REAIS
BEGIN
	UPDATE RH.VERBA_EVENTUAL 
	       SET valor = 200.00
	FROM    RH.VERBA_EVENTUAL B
		   ,RH.VERBA A
		   ,RH.verba_rotina C
  		   ,#Servidores ser
	WHERE	A.ID =  C.id_verba
			AND C.id = B.id_verba_rotina			
			AND ser.ServidorId = b.id_servidor
			AND ser.LotacaoCodigo in (@LotacaoDefenso)
			AND c.id = @ID_VERBA_ROTINA_AUXILIO_SAUDE_CONDICIONAL			
			AND B.mes_referencia = Convert(int,@MesReferencia)
			AND valor = 150.00
END

	DROP TABLE #temp1
	DROP TABLE #temp2
	DROP TABLE #MatriculaEfetivas
	DROP TABLE #MatriculasCDS
	DROP TABLE #Servidores
GO

Os demais scripts a seguir podem ser executados independentemente da ordem, até que não retorne mais registros com erro.

5 - verificar servidores sem verba de vencimento

use governa

declare

	@mesref int = 202304,
	@mesant int = 202305

drop table #sem
select	mns.matricula, mns.id_cargo into #sem 
from	rh.servidor_mensal mns, rh.grau_salarial gra
where	mes_referencia = @mesref
and id_verba_vencimento is null
and isnull(mns.id_grau_salarial,0) = gra.id
and gra.grau not in ('9900','AL/PM')
and mns.situacao not in ('DSL')

drop table #retornar
select	mns.matricula, mns.id_cargo, mns.id_verba_vencimento into #retornar
from	rh.servidor_mensal mns, rh.grau_salarial gra, #sem sem
where	mes_referencia = @mesant
and id_verba_vencimento is not null
and isnull(mns.id_grau_salarial,0) = gra.id
and mns.matricula = sem.matricula
and mns.id_cargo = sem.id_cargo


select	mns.matricula, mns.id_verba_vencimento, rto.id_verba_vencimento, ltc.codigo, lms.descricao
--update rh.servidor_mensal set id_verba_vencimento = rto.id_verba_vencimento
from	rh.servidor_mensal mns, rh.grau_salarial gra, #retornar rto, rh.lotacao ltc, rh.lotacao_mensal lms
where	mns.mes_referencia = 202305
and mns.id_verba_vencimento is null
and isnull(mns.id_grau_salarial,0) = gra.id
and mns.matricula = rto.matricula
and mns.id_cargo = rto.id_cargo
and mns.id_lotacao_mensal = lms.id
and lms.id_lotacao = ltc.id
and lms.mes_referencia = mns.mes_referencia
--and ltc.codigo not in (822)
--order by ltc.codigo


6 - verificando saldo negativo

use governa

declare

@mesref int = 202305

select  srv.matricula, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.verba inc,
		rh.verba_rotina rot,
		rh.lotacao ltc,
		rh.lotacao_mensal lms
where	bse.id = vba.id_financeiro_mensal
	and bse.id_servidor_mensal = mns.id
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and mns.id_servidor = srv.id
	and ltc.id = lms.id_lotacao
	and lms.mes_referencia = mns.mes_referencia
	and bse.id_lotacao_mensal = lms.id
	and mns.mes_referencia = @mesref
	and inc.codigo in (400)
	and bse.rotina = 'FOL'
order by ltc.codigo

	--select * 
	----update rh.servidor_mensal set situacao = 'ATV'
	--from rh.servidor srv, rh.servidor_mensal mns
	--where srv.id = mns.id_servidor
	--and mes_referencia = 202110
	--and srv.matricula in (300117397,300062142)

7 - verificando servidores admitidos 06112018 prevcom

use Governa

declare 

@mesref int = 202305


select matricula, cargoId,convert(char(10),admissao,103) 'Admissão',cargoDescricao , classificacaoFuncionalId, classificacao_funcional
from FinanceiroMensal
where mesreferencia = @mesref
and admissao >= '20181106'
and classificacaoFuncionalId in (4,65)
and cargoId not in (1896,1895,1891,1877,1876,1231,1250,1962,1221,2384,3341,2204,2011,1939,2552,487,2113,3565,1963,3566)
and grauSalarial <> '9900'
and matricula >= 300000000
and matricula not in (300156208,300168976,300170916,300169929,300171739,300168958,300188247)
order by cargoDescricao


select bse.matricula, bse.admissao, SUM(vba.verbaValor)'Total_Verbas_Contribuicao'
from FinanceiroMensal bse, FinanceiroMensalVerba vba, rh.verba inc, rh.verba_rotina rot
where bse.mesreferencia = @mesref
and bse.admissao >= '20181106'
and bse.classificacaoFuncionalId in (83)
and bse.cargoId not in (1896,1895,1891,1877,1876,1231,1250,1962,1221,2384,3341,2204,2011,1939)
and bse.financeiroMensalId = vba.idFinanceiroMensal
and vba.verbaId = inc.id
and inc.id = rot.id_verba
and bse.rotina = vba.rotina
and bse.rotina = rot.rotina
and rot.rotina = 'FOL'
and rot.incide_rpps = 1
and inc.classificacao <> 'DIF'
and inc.codigo < 5000
and bse.servidorId not in (select id_servidor from rh.verba_periodica where id_verba = 7646)
and bse.matricula not in (300161214,300169053,300172954,300176406,300181912,300182823,300182453,300188247)

group by bse.matricula, bse.admissao
having  SUM(vba.verbaValor) >  7507.49

8 - verificando lotações novas

use governa


declare

@mesref int = 202305,
@mesant int = 202302


select distinct lotacaoCodigo, lotacaoMensalDescricao 
from FinanceiroMensal
where mesReferencia = @mesref
and lotacaoCodigo not in (select distinct lotacaoCodigo from FinanceiroMensal
where mesReferencia = @mesant)
order by lotacaoCodigo


select matricula,lotacaoCodigo, lotacaoMensalDescricao from FinanceiroMensal
where lotacaoCodigo in (select distinct lotacaoCodigo
							from FinanceiroMensal
							where mesReferencia = @mesref
							and lotacaoCodigo not in (select distinct lotacaoCodigo from FinanceiroMensal
							where mesReferencia = @mesant))
and mesReferencia = @mesref
order by lotacaoCodigo

9 - verificando afastamentos IPERON em servidor não IPERON

use governa 

declare 

@mesref int = 202305

select	srv.matricula, clf.descricao ,mot.descricao
From	rh.servidor_afastamento afa, 
		rh.servidor srv, 
		rh.motivo_afastamento mot,
		rh.servidor_mensal mns,
		rh.param_previdencia par,
		rh.classificacao_funcional clf
where afa.id_servidor = srv.id
and afa.id_motivo_afastamento = mot.id
and afa.fim >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'
and afa.id_motivo_afastamento in (27,29,34,38)
and srv.id = mns.id_servidor
and mns.mes_referencia = @mesref
and mns.mes_referencia = par.mes_referencia
and par.id_classificacao_funcional = mns.id_classificacao_funcional
and par.id_vinculo_empregaticio = mns.id_vinculo_empregaticio
and clf.id = par.id_classificacao_funcional
and par.tipo <> 'OUT'
and mns.situacao <> 'DSL'

10 - Checar Afastamento Salário Maternidade Errado

use governa

declare 

@mesref int = 202305

drop table #maternidade
select  srv.matricula into #maternidade	 
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns,
		rh.servidor srv,
		rh.param_previdencia par
where bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and inc.codigo in (81,82)
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and mns.mes_referencia = @mesref
and mns.mes_referencia = par.mes_referencia
and mns.id_vinculo_empregaticio = par.id_vinculo_empregaticio
and mns.id_classificacao_funcional = par.id_classificacao_funcional
and par.id_orgao_previdenciario <> 1


insert into #maternidade
select	srv.matricula 
from	rh.servidor_mensal mns,
		rh.servidor srv,
		rh.param_previdencia par,
		rh.servidor_afastamento afa,
		rh.verba inc,
		rh.verba_rotina rot
where mns.id_servidor = srv.id
and afa.id_servidor = srv.id
and afa.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and inc.codigo = 81
and ((afa.fim is null) or (afa.fim > getdate()))
and mns.mes_referencia = par.mes_referencia
and mns.id_vinculo_empregaticio = par.id_vinculo_empregaticio
and mns.id_classificacao_funcional = par.id_classificacao_funcional
and par.id_orgao_previdenciario <> 1
and mns.mes_referencia = @mesref
and mns.situacao <> 'DSL'

select	srv.matricula 
from	rh.servidor_mensal mns,
		rh.servidor srv,
		rh.param_previdencia par,
		rh.servidor_afastamento afa,
		rh.motivo_afastamento mtv,
		rh.verba inc,
		rh.verba_rotina rot
where mns.id_servidor = srv.id
and afa.id_servidor = srv.id
and afa.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and ((afa.fim is null) or (afa.fim > getdate()))
and mns.mes_referencia = par.mes_referencia
and mns.id_vinculo_empregaticio = par.id_vinculo_empregaticio
and mns.id_classificacao_funcional = par.id_classificacao_funcional
and srv.matricula in (select matricula from #maternidade)
and par.id_orgao_previdenciario <> 1
and mns.mes_referencia = @mesref
and afa.id_motivo_afastamento = mtv.id
and mtv.id = 27
and mns.situacao <> 'DSL'
union
select  srv.matricula 
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns,
		rh.servidor srv,
		rh.param_previdencia par
where bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and inc.codigo in (81,82,9)
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and mns.mes_referencia = @mesref
and mns.mes_referencia = par.mes_referencia
and mns.id_vinculo_empregaticio = par.id_vinculo_empregaticio
and mns.id_classificacao_funcional = par.id_classificacao_funcional
and ((par.id_orgao_previdenciario <> 1) and (par.id_orgao_previdenciario <> 2))
and mns.situacao <> 'DSL'
union
select  srv.matricula 
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns,
		rh.servidor srv,
		rh.param_previdencia par
where bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and inc.codigo in (9)
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and mns.mes_referencia = @mesref
and mns.mes_referencia = par.mes_referencia
and mns.id_vinculo_empregaticio = par.id_vinculo_empregaticio
and mns.id_classificacao_funcional = par.id_classificacao_funcional
and par.id_orgao_previdenciario = 1
and mns.situacao <> 'DSL'
union
select srv.matricula 
from rh.servidor_afastamento afa, rh.servidor srv, rh.servidor_mensal mns
where id_motivo_afastamento in (27,38)
and afa.id_servidor in (select id_servidor from rh.servidor_afastamento where id_motivo_afastamento in (2,37) and ((fim is null) or (fim > getdate())))
and ((fim is null) or (fim > getdate()))
and afa.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.mes_referencia = @mesref
and mns.situacao <> 'DSL'


union
select  srv.matricula 
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns,
		rh.servidor srv,
		rh.param_previdencia par
where bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and inc.codigo in (81)
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and mns.mes_referencia = @mesref
and mns.mes_referencia = par.mes_referencia
and mns.id_vinculo_empregaticio = par.id_vinculo_empregaticio
and mns.id_classificacao_funcional = par.id_classificacao_funcional
and par.id_orgao_previdenciario = 2



drop table #maternidade

11 - checando FGTS

use governa

declare

@mesref int = 202305


begin
print 'Não INSS com FGTS'
select  fis.cpf, srv.matricula, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis

where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and isnull(bse.fgts_servidor_valor,0) <> .0000
	and isnull(bse.previ_tipo,'0') <> 'INS'
end
begin
print 'Celetista sem FGTS'
select  fis.cpf, srv.matricula, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis

where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and bse.id_vinculo_empregaticio = 2
	and bse.id_classificacao_funcional in (1,14)
	and isnull(bse.fgts_servidor_valor,0) <> .0000
end
begin
print 'celetista sem FGTS'
select  srv.matricula, fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis

where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and bse.id_vinculo_empregaticio = 1
	and bse.id_classificacao_funcional NOT in (5,6,31,33,27,12)
	and isnull(bse.fgts_servidor_valor,0) = .0000
	and mns.processa_fgts = 0
end
begin
print 'Nao Celetista com FGTS'
select  fis.cpf, bse.matricula, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis

where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and bse.id_vinculo_empregaticio = 2
	and bse.id_classificacao_funcional NOT in (1,14)
	and isnull(bse.fgts_servidor_valor,0) <> .0000
end
begin
print 'Celetista sem FGTS'
select  srv.matricula,fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis

where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and bse.id_vinculo_empregaticio = 2
	and bse.id_classificacao_funcional in (1,14)
	and isnull(bse.fgts_servidor_valor,0) = .0000
end
begin
print 'Base de FGTS Diferente da base Previdencia'
select  srv.matricula, fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, bse.previ_folha_base, bse.fgts_folha_base, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis
where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and isnull(bse.fgts_folha_base,0) <> isnull(bse.previ_folha_base,0)
	and isnull(bse.fgts_servidor_valor,0) <> 0
end
begin
print 'Sem valor de previdencia na base e com verba de previdencia'
select  srv.matricula, fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, bse.previ_folha_base, bse.fgts_folha_base, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis
where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and bse.id = vba.id_financeiro_mensal
	and vba.id_verba_rotina = rot.id
	and inc.id = rot.id_verba
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and inc.codigo in (6004,6002)
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and isnull(bse.previ_folha_valor,0) = 0
end
begin
print 'Valor do FGTS diferente'
select  srv.matricula, fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, bse.previ_folha_base, bse.fgts_folha_base, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis
where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and bse.id = vba.id_financeiro_mensal
	and vba.id_verba_rotina = rot.id
	and inc.id = rot.id_verba
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and inc.codigo in (6004)
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and round((bse.fgts_folha_base*8)/100,2) - bse.fgts_servidor_valor >=0.02
end
begin
print 'Celetista com Classificacao Diferente'
select  fis.cpf, bse.matricula, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis

where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and bse.id_vinculo_empregaticio = 1
	and bse.id_classificacao_funcional NOT in (1,4,13,14,30,35)
	and isnull(bse.fgts_servidor_valor,0) <> .0000
end
begin
print 'Servidor com ocorrencia 05'
select  fis.cpf, bse.matricula, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, ltc.codigo, lms.descricao_reduzida_lotacao
from	rh.financeiro_mensal bse,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		admin.pessoa_fisica fis

where	bse.id_servidor_mensal = mns.id
	and srv.id_pessoa = fis.id
	and mns.id_servidor = srv.id
	and mns.id_lotacao_mensal = lms.id
	and mns.mes_referencia = lms.mes_referencia
	and ltc.id = lms.id_lotacao
	and mns.mes_referencia = @mesref
	and bse.rotina = 'FOL'
	and mns.ocorrencia_especial_sefip in ('05','5')
	--colocar ainda para verificar verba fixa 9005
end
--print 'Servidor com ocorrencia 05'
--select  fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor
--from	rh.financeiro_mensal bse,
--		rh.servidor srv,
--		rh.servidor_mensal mns,
--		admin.pessoa_fisica fis

--where	bse.id_servidor_mensal = mns.id
--	and srv.id_pessoa = fis.id
--	and mns.id_servidor = srv.id
--	and mns.mes_referencia = 201904
--	and bse.rotina = 'FOL'
--	and mns.ocorrencia_especial_sefip in ('05','5')
	--colocar ainda para verificar verba fixa 6004



--union
--select 	'mtcfnc' = bse.mtcfnc, 'Nomfnc' = 'Nome'	
--from tbrhpssmns mns,
--	 tbrhfinbse bse
--where mns.mesref = @MesRef
--	  and mns.mesref = bse.mesref
--	  and mns.mtcfnc = bse.mtcfnc
--	  and bse.tiprotcal = 4
--	  and mns.CodOcoSefip in ('05','5')
--	  and mns.CalFgts = 'S'
--group by bse.mtcfnc,bse.numseqpns,bse.codltc,BseCalFgtsFin ,bse.vlrfgtsfin

--select  fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor
--from	rh.financeiro_mensal bse,
--		rh.servidor srv,
--		rh.servidor_mensal mns,
--		admin.pessoa_fisica fis

--where	bse.id_servidor_mensal = mns.id
--	and srv.id_pessoa = fis.id
--	and mns.id_servidor = srv.id
--	and mns.mes_referencia = 201904
--	and bse.rotina = 'FOL'
--	and mns.ocorrencia_especial_sefip in ('05','5')
	--colocar ainda para verificar verba fixa 6004

--union
--select 	'mtcfnc' = bse.mtcfnc, 'Nomfnc' = 'Nome'	
--from tbrhpssmns mns,
--	 tbrhfinbse bse
--where mns.mesref = @MesRef
--	  and mns.mesref = bse.mesref
--	  and mns.mtcfnc = bse.mtcfnc
--	  and bse.tiprotcal = 4
--	  and ((mns.CodOcoSefip is null) or (mns.CodOcoSefip = ''))
--	  and mns.MtcFnc in (select MtcFnc from TbRhVbaFix where CodVba = 9005 and ((DatFimVbaFix >= GETDATE()) or (DatFimVbaFix is null)))
--group by bse.mtcfnc,bse.numseqpns,bse.codltc ,BseCalFgtsFin,bse.vlrfgtsfin


--select  srv.matricula, fis.cpf, bse.salario_bruto_valor 'Valor Bruto', previ_tipo, fgts_servidor_valor, bse.previ_folha_base, bse.fgts_folha_base
--from	rh.financeiro_mensal bse,
--		rh.servidor srv,
--		rh.servidor_mensal mns,
--		admin.pessoa_fisica fis
--where	bse.id_servidor_mensal = mns.id
--	and srv.id_pessoa = fis.id
--	and mns.id_servidor = srv.id
--	and mns.mes_referencia = 201904
--	and bse.rotina = 'FOL'
--	and round(bse.fgts_folha_base*0.08,2) <> bse.fgts_servidor_valor

12 - verifica servidores sem vencimento no mês

-- verifica servidores sem vencimento no mês

use governa
select	mns.matricula, mns.id_verba_vencimento, ltc.codigo, lms.descricao, mns.id_cargo, mns.id_classificacao_funcional
from	rh.servidor_mensal mns, rh.grau_salarial gra, rh.lotacao ltc, rh.lotacao_mensal lms, rh.financeiro_mensal fmn
where	mns.mes_referencia = 202305
and mns.id_verba_vencimento is null
and isnull(mns.id_grau_salarial,0) = gra.id
and mns.id_cargo not in (1877,1935,1896,2552,1939,2213,2204,2011,1876)
and mns.id_classificacao_funcional not in (2,17,16,21,13)
and mns.id_lotacao_mensal = lms.id
--and mns.id_verba_vencimento = 314
and fmn.id_servidor_mensal = mns.id
and lms.id_lotacao = ltc.id
and lms.mes_referencia = mns.mes_referencia
and ltc.codigo not in (104)


13 - VERIFICANDO SERVIDORES COM INSALUBRIDADE E PERICULOSIDADE

use governa

declare

@mesref int = 202305

select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.descricao like '%INSALU%'
and inc.codigo < 5000
and srv.matricula in (select	srv.matricula
						from	rh.financeiro_mensal bse, 
								rh.financeiro_mensal_verba vba, 
								rh.verba inc,
								rh.verba_rotina rot,
								rh.servidor_mensal mns, 
								rh.servidor srv, 
								admin.pessoa_fisica fis
						where	bse.id = vba.id_financeiro_mensal
						and vba.id_verba_rotina = rot.id
						and rot.id_verba = inc.id
						and rot.rotina = 'FOL'
						and bse.id_servidor_mensal = mns.id
						and mns.id_servidor = srv.id
						and srv.id_pessoa = fis.id
						and mns.mes_referencia = @mesref
						and inc.descricao like '%pericu%'
						and inc.codigo < 5000)

14 - verificando hora extra errada

use governa

declare 

@mesref int = 202305


--verifica servidor com verba de medico 20h
select srv.matricula, pes.nome 
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_eventual vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and vra.mes_referencia = mns.mes_referencia
and mns.mes_referencia = crm.mes_referencia
and pes.id = srv.id_pessoa
and rot.rotina = 'FOL'
and vba.codigo in (1059,1060)
and mns.id_cargo = crm.id_cargo
and crm.id_cargo = fun.id
and fun.codigo not in (642)
and vra.mes_referencia = @mesref



--verifica medico 20h com verba errada
select srv.matricula, pes.nome, fun.descricao, vba.codigo as verba
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_eventual vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and vra.mes_referencia = mns.mes_referencia
and mns.mes_referencia = crm.mes_referencia
and pes.id = srv.id_pessoa
and rot.rotina = 'FOL'
and vba.codigo in (1057,1058)
and mns.id_cargo = crm.id_cargo
and crm.id_cargo = fun.id
and fun.codigo in (642)
and vra.mes_referencia = @mesref

15 - Altera verba 709 763 para 303 de quem está na TABSAL PCIVIL

use governa

declare 

@mesref int = 202305

select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--update rh.verba_eventual set id_verba_rotina = 638
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc,
		rh.cargo crg,
		rh.cargo_mensal crm,
		rh.nivel_salarial niv
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and mns.id_cargo = crg.id
and crg.id = crm.id_cargo
and mns.mes_referencia = crm.mes_referencia
and crm.id_nivel_salarial = niv.id
and niv.nivel = 'PCIVIL' 
and inc.codigo in (709,363)
and vms.rotina = 'FOL'
and mns.mes_referencia = 202305
--order by ltc.codigo

--select * from rh.verba_rotina rot, rh.verba inc where rot.id_verba = inc.id and rot.rotina = 'FOL' and inc.codigo = 303

16 - checando gozo com varias datas de pagamento para mesmo período aquisitivo

use governa

declare

@mesref int = 202305


select srv.matricula, fer.inicio, fer.fim, mns.id_cargo,crg.descricao, count(distinct data_pagamento) 'Qde_data' into #temp
from rh.servidor_ferias fer, rh.servidor_ferias_gozo goz, rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg
where fer.id = goz.id_servidor_ferias
and fer.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id_cargo = crg.id
and mns.mes_referencia = @mesref
and goz.data_pagamento is not null
and goz.data_pagamento >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'
and mns.id_cargo not in (select fca.id_cargo from rh.param_ferias_especiais_cargo fca, rh.param_ferias_especiais esp where fca.id_param_ferias_especiais = esp.id and esp.quantidade_pagamento = 2)
group by srv.matricula, fer.inicio, fer.fim, mns.id_cargo,crg.descricao
having count(distinct data_pagamento) > 1


select tmp.matricula, pes.nome, tmp.descricao, tmp.inicio, tmp.fim, lms.codigo, lms.descricao, goz.data_pagamento
from	#temp tmp, rh.servidor srv, admin.pessoa pes, rh.servidor_mensal mns, rh.lotacao_mensal lms, rh.servidor_ferias_gozo goz, rh.servidor_ferias fer
where srv.id_pessoa = pes.id
and srv.matricula = tmp.matricula
and goz.id_servidor_ferias = fer.id
and fer.inicio = tmp.inicio
and fer.fim = tmp.fim
and fer.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id_lotacao_mensal = lms.id
and mns.mes_referencia = lms.mes_referencia
and mns.mes_referencia = @mesref
and goz.data_pagamento >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'
order by goz.data_pagamento

drop table #temp

17 - checando quem tem averbação duplicada

-- Confere quem tem averbação duplicada

use governa

select avb.codigo, count(*) 'qde' into #temp
from rh.averbacao avb, rh.servidor srv
where avb.id_servidor = srv.id
group by avb.codigo
having count(*) > 1

select tmp.codigo, max(id) 'deletar' into #deletar
from #temp tmp, rh.averbacao avb
where tmp.codigo = avb.codigo
group by tmp.codigo

--PRIMEIRO APAGA O FINANCEIRO DA AVERBAÇÃO
select * 
--delete rh.financeiro_mensal_averbacao
from rh.financeiro_mensal_averbacao fma, #deletar del
where mes_referencia = 202305
and del.deletar = fma.id_averbacao


--SEGUNDO APAGA NA TABELA DE AVERBAÇÃO
select * 
--delete rh.averbacao 
From #deletar del, rh.averbacao avb, rh.servidor srv
where del.deletar = avb.id
and srv.id = avb.id_servidor


--drop table #temp
--drop table #deletar

-- CHECANDO QUEM ESTÁ COM AVERBAÇÃO DE PLANO DE SAÚDE ZERADA
select matricula,* 
--update rh.averbacao set situacao = 'SUS'
from rh.averbacao ave, rh.servidor srv
where srv.id = ave.id_servidor
and situacao = 'atv'
and valor_parcela = 0.00
and id_verba in (2019,2009,2012,1913,2160,2159,1736,1518,1715,7548,2075,1568,2077,2036,2039,7692,1504,2037,2038,7642,7674,1488,1874,1689,1622,1572,2015,1499,1753,1752,1757)

18 - Checando Recebimento Cumulativo das Verbas 165. 2013 e 2015

use governa

declare

@mesref int = 202305

select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 165
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (2013, 2015))


select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 2013
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (2015))

19 - Checar SEJUS com verba de adicional noturno errado 719

use governa

declare 

@mesref int = 202305


select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--update rh.verba_eventual set id_verba_rotina = 1389
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc,
		rh.cargo crg,
		rh.cargo_mensal crm,
		rh.nivel_salarial niv
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and mns.id_cargo = crg.id
and crg.id = crm.id_cargo
and mns.mes_referencia = crm.mes_referencia
and crm.id_nivel_salarial = niv.id 
and inc.codigo in (709,363,303)
and vms.rotina = 'FOL'
and mns.mes_referencia = 202305
and srv.matricula in (300117240,300116567,300117236,300087537,300088222,300116555,300117152,300118201,300088168,300097844,300087534,300093063,
				300117156,300093240,300117209,300117115,300117156,300097551,300098884,300117142,300097767,300117117,300116391,300117663,
				300097802,300099905,300117128,300116396,300084204,300088740,300098848,300098865,300093102,300137150)
order by ltc.codigo

select codigo, rot.id from rh.verba inc, rh.verba_rotina rot
where inc.id = rot.id_verba
and codigo = 719
and rotina = 'FOL'

20 - Checar SEJUS com verba de adicional noturno errado. 783

use governa

declare 

@mesref int = 202305

select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--update rh.verba_eventual set id_verba_rotina = 1546
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc,
		rh.cargo crg,
		rh.cargo_mensal crm,
		rh.nivel_salarial niv
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and mns.id_cargo = crg.id
and crg.id = crm.id_cargo
and mns.mes_referencia = crm.mes_referencia
and crm.id_nivel_salarial = niv.id 
and inc.codigo in (785,719,709,363,303)
and vms.rotina = 'FOL'
and mns.mes_referencia = 202305
and srv.matricula in (300099974,300118201)
order by ltc.codigo

select codigo, rot.id from rh.verba inc, rh.verba_rotina rot
where inc.id = rot.id_verba
and codigo = 783
and rotina = 'FOL'

21 - Checar SEJUS com verba de adicional noturno errado. 785

use governa

declare 

@mesref int = 202305


select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--update rh.verba_eventual set id_verba_rotina = 1549
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc,
		rh.cargo crg,
		rh.cargo_mensal crm,
		rh.nivel_salarial niv
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and mns.id_cargo = crg.id
and crg.id = crm.id_cargo
and mns.mes_referencia = crm.mes_referencia
and crm.id_nivel_salarial = niv.id 
and inc.codigo in (719,709,363,303,1041)
and vms.rotina = 'FOL'
and mns.mes_referencia = 202305
and srv.matricula in (300117132,300088287)
order by ltc.codigo

select codigo, rot.id from rh.verba inc, rh.verba_rotina rot
where inc.id = rot.id_verba
and codigo = 785
and rotina = 'FOL'

22 - corrigindo saldo negativo indevido

use governa

select	* 
--delete rh.financeiro_mensal_verba 
From	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba_rotina rot,
		rh.verba inc
where bse.id = vba.id_financeiro_mensal
and bse.mes_referencia = vba.mes_referencia
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and inc.codigo = 400
and bse.rotina = 'FOL'
and bse.matricula = 300131803--300139269--300103675
and bse.mes_referencia = 202305

--drop table  #bruto
select	 sum(vba.valor) 'Bruto' into  #bruto
From	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba_rotina rot,
		rh.verba inc
where bse.id = vba.id_financeiro_mensal
and bse.mes_referencia = vba.mes_referencia
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and inc.codigo < 5000
and bse.rotina = 'FOL'
and bse.matricula = 300131803--300139269--300103675
and bse.mes_referencia = 202305


select	*
From	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba_rotina rot,
		rh.verba inc
where bse.id = vba.id_financeiro_mensal
and bse.mes_referencia = vba.mes_referencia
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and inc.codigo < 5000
and bse.rotina = 'FOL'
and bse.matricula = 300131803--300139269--300103675
and bse.mes_referencia = 202305

/*select * From #bruto
select * from #desconto*/

--drop table #desconto
select	 sum(vba.valor) 'Desconto' into #desconto
From	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba,
		rh.verba_rotina rot,
		rh.verba inc
where bse.id = vba.id_financeiro_mensal
and bse.mes_referencia = vba.mes_referencia
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and inc.codigo >= 5000
and bse.rotina = 'FOL'
and bse.matricula = 300131803--300139269--300103675
and bse.mes_referencia = 202305


select	 salario_bruto_valor, desconto_total_valor
--update rh.financeiro_mensal set salario_bruto_valor = bruto, desconto_total_valor = desconto
From	rh.financeiro_mensal bse, #bruto, #desconto
where bse.rotina = 'FOL'
and bse.matricula = 300131803--300139269--300103675
and bse.mes_referencia = 202305


select	 salarioBrutoValor, descontoTotalValor
--update financeiromensal set salarioBrutoValor = bruto, descontoTotalValor = desconto
From	financeiromensal bse, #bruto, #desconto
where bse.rotina = 'FOL'
and bse.matricula = 300131803--300139269--300103675
and bse.mesreferencia = 202305

select * 
--delete FinanceiroMensalVerba
from FinanceiroMensalVerba
where mesReferencia = 202305
and rotina = 'FOL'
and codigoVerba = 400
and matricula = 300131803--300139269--300103675

23 - Deletando Verbas Indevidas no Detran

use governa

declare

@mesref int = 202305

select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis,
		rh.lotacao_mensal lms,
		rh.lotacao ltc
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and inc.codigo in (4150,4152,4154,4156,4157)
and mns.mes_referencia = @mesref
and bse.id_lotacao_mensal = lms.id
and lms.mes_referencia = mns.mes_referencia
and lms.id_lotacao = ltc.id
and ltc.codigo in (806)

24 - Deletar Auxilio Transporte de Federais

use governa

declare

@mesref int = 202305

drop table #federais
select	srv.matricula into #federais
from	rh.financeiro_mensal bse, 
		rh.servidor_mensal mns, 
		rh.cargo crg,
		rh.servidor srv, 
		admin.pessoa_fisica fis
where bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and bse.id_cargo = crg.id
and mns.mes_referencia = @mesref
and bse.rotina = 'FOL'
and ((mns.id_classificacao_funcional in (17,21,25,26)) or (crg.codigo in (35346,35344)))
and mns.situacao in ('ATV', 'AFA')

select	srv.matricula 
--update rh.servidor_mensal set id_percurso = null
from	rh.financeiro_mensal bse, 
		rh.servidor_mensal mns, 
		rh.cargo crg,
		rh.servidor srv, 
		admin.pessoa_fisica fis
where bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and bse.id_cargo = crg.id
and mns.mes_referencia = 202305
and bse.rotina = 'FOL'
and mns.id_percurso is not null
and ((mns.id_classificacao_funcional in (17,21,25,26)) or (crg.codigo in (35346,35344)))
and mns.situacao in ('ATV', 'AFA')


select srv.matricula, pes.nome 
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (575)
and srv.matricula in (select matricula from #federais)
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305


select * 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #federais)
and vba.codigo in (575)
and rot.rotina = 'FOL'

select srv.matricula 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and vba.codigo in (2060,2260)
and srv.matricula in (select matricula from #federais)
and rot.rotina = 'FOL'
order by srv.matricula


select srv.matricula, pes.nome 
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and srv.matricula in (select matricula from #federais)
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305

25 - Deletar férias de servidores afastados aguardando aposentadoria com data de pagamento maior igual ao mês corrente

use governa

declare 

@mesref int = 202305

drop table #deletar
select	srv.matricula, ltc.codigo, fer.id 'Id_Ferias', fer.inicio 'Aq_inicio', fer.fim 'Aq_Fim', goz.id 'Id_gozo', 
		goz.inicio 'Goz_Inicio', goz.fim 'Goz_fim', goz.data_pagamento, fer.tipo_ferias
into #deletar
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.servidor_ferias fer,
		rh.servidor_ferias_gozo goz,
		rh.servidor_afastamento afa

where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and fer.id_servidor = srv.id
and fer.id = goz.id_servidor_ferias
and ltc.codigo in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818)
and goz.data_pagamento >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'
and goz.data_pagamento < '5001-01-01'
and afa.id_servidor = srv.id
and afa.id_motivo_afastamento in (33,36)
and afa.fim >= getdate()
and mns.mes_referencia = @mesref
order by ltc.codigo

--select * from rh.motivo_afastamento


select * 
--delete rh.servidor_ferias_gozo
from rh.servidor_ferias_gozo goz, #deletar del
where goz.id_servidor_ferias = del.Id_Ferias


select * 
--delete rh.servidor_ferias
from rh.servidor_ferias fer, #deletar del
where fer.id = del.Id_Ferias


drop table #deletar_afastados
select	srv.matricula, ltc.codigo, fer.id 'Id_Ferias', fer.inicio 'Aq_inicio', fer.fim 'Aq_Fim', goz.id 'Id_gozo', 
		goz.inicio 'Goz_Inicio', goz.fim 'Goz_fim', goz.data_pagamento, fer.tipo_ferias
into #deletar_afastados
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.servidor_ferias fer,
		rh.servidor_ferias_gozo goz,
		rh.servidor_afastamento afa

where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and fer.id_servidor = srv.id
and fer.id = goz.id_servidor_ferias
and afa.id_servidor = srv.id
and afa.id_motivo_afastamento in (33,36)
and afa.fim >= getdate()
and goz.data_pagamento >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'
and goz.data_pagamento < '5001-01-01'
and mns.mes_referencia = @mesref
and ltc.codigo not in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818)
order by ltc.codigo



select * 
--delete rh.servidor_ferias_gozo
from rh.servidor_ferias_gozo goz, #deletar_afastados del
where goz.id_servidor_ferias = del.Id_Ferias


select * 
--delete rh.servidor_ferias
from rh.servidor_ferias fer, #deletar_afastados del
where fer.id = del.Id_Ferias

26 - Deletar vale transporte para quem está afastado aguardando aposentadoria

use governa

declare 

@mesref int = 202305

select	srv.matricula, ltc.codigo
--update rh.servidor_mensal set id_percurso = null
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.servidor_afastamento afa

where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and ltc.codigo not in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818,819,825)
and mns.id_percurso is not null
and afa.id_servidor = srv.id
and afa.id_motivo_afastamento = 33
and afa.fim >= getdate()
and mns.mes_referencia = 202305
--order by ltc.codigo

27 - Deletar verbas variáveis para quem está afastado aguardando aposentadoria

use governa

declare 

@mesref int = 202305

select	srv.matricula, ltc.codigo
--delete rh.verba_eventual
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.servidor_afastamento afa,
		rh.verba_eventual eve,
		rh.verba_rotina rot,
		rh.verba inc

where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and ltc.codigo not in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818)
and eve.id_servidor = srv.id
and eve.mes_referencia = mns.mes_referencia
and eve.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and inc.codigo in (363,364,692,575,704,714,565,990,2035,727,924,928)
and afa.id_servidor = srv.id
and afa.id_motivo_afastamento = 33
and afa.fim >= getdate()
and mns.mes_referencia = 202305
order by ltc.codigo

28 - Exclusão de conflito de verbas 709 com 363 303

use governa

declare 

@mesref int = 202305


select * 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = @mesref
and vba.codigo in (709)
and rot.rotina = 'FOL'
and srv.matricula in (select srv.matricula
						from	rh.verba vba, 
								rh.verba_rotina rot,
								rh.verba_periodica vra, 
								rh.servidor srv,
								rh.servidor_mensal mns,
								rh.financeiro_mensal bse,
								admin.pessoa pes
						where vba.id = rot.id_verba
						and vba.id = vra.id_verba
						and vra.id_servidor = srv.id
						and srv.id = mns.id_servidor
						and mns.id = bse.id_servidor_mensal
						and pes.id = srv.id_pessoa
						and vba.codigo in (363,303)
						and ((vra.fim is null) or (vra.fim >= getdate()))
						and rot.rotina = 'FOL'
						and mns.mes_referencia = @mesref)


select * 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = @mesref
and vba.codigo in (704)
and rot.rotina = 'FOL'
and srv.matricula in (select srv.matricula
						from	rh.verba vba, 
								rh.verba_rotina rot,
								rh.verba_periodica vra, 
								rh.servidor srv,
								rh.servidor_mensal mns,
								rh.financeiro_mensal bse,
								admin.pessoa pes
						where vba.id = rot.id_verba
						and vba.id = vra.id_verba
						and vra.id_servidor = srv.id
						and srv.id = mns.id_servidor
						and mns.id = bse.id_servidor_mensal
						and pes.id = srv.id_pessoa
						and vba.codigo in (1053)
						and ((vra.fim is null) or (vra.fim >= getdate()))
						and rot.rotina = 'FOL'
						and mns.mes_referencia = @mesref)





select a.matricula,v.codigo,v.descricao, a.valor, a.quantidade
-- delete rh.verba_eventual 
from rh.verba_eventual a,
    rh.verba v,
rh.verba_rotina rot
where a.id_verba_rotina = rot.id
and rot.id_verba = v.id
and rot.rotina = 'FOL'
and a.mes_referencia = 202305
and v.codigo in (4992)
and a.matricula in (select a.matricula
					from rh.verba_eventual a,
						rh.verba v,
						rh.verba_rotina rot
					where a.id_verba_rotina = rot.id
					and rot.id_verba = v.id
					and rot.rotina = 'FOL'
					and a.mes_referencia = 202305
					and v.codigo in (4986))
					



29 - Lançando reposição de gae para servidores da saúde com faltas

use governa

declare

@mesref int = 202305

select *--srv.matricula, pes.nome, 
--insert into rh.verba_eventual select next value for rh.s_verba_eventual,mns.mes_referencia, srv.id, 3788, 0.00, 1.00, 30, null, null, srv.matricula,null,null,null,null,null
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.verba_eventual var,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and mns.id_cargo = fun.id
and fun.id = crm.id_cargo
and vba.codigo in (727)
and crm.id_nivel_salarial in (select id from rh.nivel_salarial where nivel like 'Sau%')
and mns.id_servidor not in (select id_servidor from rh.verba_eventual eve where eve.id_servidor = mns.id_servidor and eve.mes_referencia = mns.mes_referencia and id_verba_rotina = 3788)
and ((vra.fim is null) or (vra.fim >= getdate()))
and var.mes_referencia = mns.mes_referencia
and crm.mes_referencia = mns.mes_referencia
and var.id_servidor = srv.id
and var.id_verba_rotina = 4187 --id verba 6001
and bse.rotina = rot.rotina
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305

30 - REL. SERVIDORES FEDERAIS A DISPOSIÇÃO DO ESTADO COM INSS

use governa

---REL. SERVIDORES FEDERAIS A DISPOSIÇÃO DO ESTADO COM INSS..........

select  fin.mes_referencia,lms.codigo,lms.descricao_reduzida_lotacao,srv.matricula,pes.nome,cf.descricao,vr.codigo,fver.valor,fin.salario_bruto_valor

       from admin.pessoa_fisica fis,
		   admin.pessoa pes, 
	       rh.financeiro_mensal fin,
	        rh.lotacao_mensal lms,
			rh.lotacao ltc,
			rh.servidor srv,
			rh.servidor_mensal srm,
		    rh.nivel_salarial nvl,
			rh.grau_salarial gra,
			rh.financeiro_mensal_verba fver,
			rh.verba vr,
			rh.verba_rotina b,
			rh.cargo crg,
		    rh.cargo_mensal cms,
			rh.classificacao_funcional cf 
			
				     
	 where  lms.id = fin.id_lotacao_mensal
	        and fin.mes_referencia = lms.mes_referencia
			and lms.id_lotacao = ltc.id
			and fin.mes_referencia = srm.mes_referencia
			and srv.id = srm.id_servidor
			and fis.id = pes.id
			and pes.id = srv.id_pessoa
		    and srm.id = fin.id_servidor_mensal
			and gra.id_nivel_salarial = nvl.id
			and srm.id_grau_salarial =gra.id
			and fin.mes_referencia = fver.mes_referencia
			and lms.mes_referencia = fver.mes_referencia
			and b.rotina = fin.rotina
			and vr.id = b.id_verba
			and b.id = fver.id_verba_rotina
			and fin.id = fver.id_financeiro_mensal
			and crg.id = cms.id_cargo
	        and cms.mes_referencia = srm.mes_referencia
	        and cms.id_cargo = srm.id_cargo
			and cf.id = srm.id_classificacao_funcional
	        --and cms.id_nivel_salarial = nvl.id
			and fin.mes_referencia = 202211
			and fin.rotina = 'FOL'
			---and ltc.codigo  = 806
			and cf.id in (21,17,18,19,20) --(federal a disposição do estado)
			--and srv.matricula = 300151569
			and vr.codigo in (6004)
			order by lms.codigo,srv.matricula



		--select * from rh.classificacao_funcional

31 - relação de quem tem a verba 727,1727 com a tabela da sesau 0020.0728182022-18

use governa
---relação de quem tem a verba 727,1727 com a tabela da sesau--( essas vebas foram incorporadas no vencimento)




select  fin.mes_referencia,lms.codigo,lms.descricao_reduzida_lotacao,srv.matricula,pes.nome,srv.admissao,crg.descricao,gra.grau,vr.codigo,fis.cpf,
vr.descricao,fver.valor,clf.descricao,srm.situacao
--select *
       from admin.pessoa_fisica fis,
		    admin.pessoa pes, 
	        rh.financeiro_mensal fin,
	        rh.lotacao_mensal lms,
			rh.lotacao ltc,
			rh.servidor srv,
			rh.servidor_mensal srm,
		    rh.nivel_salarial nvl,
			rh.grau_salarial gra,
			rh.financeiro_mensal_verba fver,
			rh.verba vr,
			rh.verba_rotina b,
			rh.cargo crg,
		    rh.cargo_mensal cms,
			rh.classificacao_funcional clf
			
				     
	 where  lms.id = fin.id_lotacao_mensal
	        and fin.mes_referencia = lms.mes_referencia
			and lms.id_lotacao = ltc.id
			and fin.mes_referencia = srm.mes_referencia
			and srv.id = srm.id_servidor
			and fis.id = pes.id
			and pes.id = srv.id_pessoa
		    and srm.id = fin.id_servidor_mensal
			and gra.id_nivel_salarial = nvl.id
			and isnull(srm.id_grau_salarial,'9900') = gra.id
			and fin.mes_referencia = fver.mes_referencia
			and lms.mes_referencia = fver.mes_referencia
			and b.rotina = fin.rotina
			and vr.id = b.id_verba
			and b.id = fver.id_verba_rotina
			and fin.id = fver.id_financeiro_mensal
			and crg.id = cms.id_cargo
	        and cms.mes_referencia = srm.mes_referencia
	        and cms.id_cargo = srm.id_cargo
			and srm.id_classificacao_funcional = clf.id
	       	and fin.mes_referencia = 202305
			and fin.rotina = 'FOL'
			and nvl.nivel  in ('SABOL','SAU001','SAU002','SAU003','SAU004','SAU005','SAU006')
			and vr.codigo in (727,1727)
		order by lms.codigo

32 - Verifica Duplicidade de Auxilio Saúde

use governa

declare

@mesref int = 202305

--drop table #temp1
select	srv.matricula, inc.codigo, fis.cpf 
into #temp1
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 2060

select	srv.matricula, inc.codigo, fis.cpf 
into #temp3
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 2060


select	srv.matricula, inc.codigo, fis.cpf 
into #temp2
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 2260


select	srv.matricula, inc.codigo, fis.cpf 
into #temp4
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 2260


select	srv.matricula, inc.codigo, fis.cpf 
into #cedidos
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 4492


select	srv.matricula, inc.codigo, fis.cpf 
into #auxilio_sedec
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 2028


select tmp1.matricula into #temp5
from 	#temp1 tmp1, 
		#temp2 tmp2
where	tmp1.cpf = tmp2.cpf

--verificando auxilio sesdec com auxilo normal em outra matricula
select tmp1.matricula into #temp_sedec
from 	#temp1 tmp1, 
		#auxilio_sedec sec
where	tmp1.cpf = sec.cpf
and tmp1.matricula <> sec.matricula

select tmp2.matricula into #temp_sedec_2
from 	#temp2 tmp2, 
		#auxilio_sedec sec
where	tmp2.cpf = sec.cpf
and tmp2.matricula <> sec.matricula


--verificando duplicidade na mesma matricula
select tmp1.matricula into #temp_duplicida_na_mesma_matricula
from 	#temp1 tmp1, 
		#temp2 tmp2
where	tmp1.matricula = tmp2.matricula


insert into #temp5
select  tmp1.matricula
from 	#temp1 tmp1, 
		#temp3 tmp3

where	tmp1.cpf = tmp3.cpf
	and tmp3.matricula <> tmp1.matricula


select  tmp1.cpf, MAX(tmp1.matricula)'matricula' into #deletar

from 	#temp2 tmp1, 
		#temp4 tmp3

where	tmp1.cpf = tmp3.cpf
	and tmp3.matricula <> tmp1.matricula
group by tmp1.cpf



select	srv.matricula, bse.salario_bruto_valor
into #temp6
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and bse.salario_bruto_valor in (50.000,150.000)
and mns.mes_referencia = @mesref
and inc.codigo = 2260


select srv.matricula , vba.codigo
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #deletar)
and vba.codigo in (2260)
and rot.rotina = 'FOL'

select srv.matricula , vba.codigo
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #temp_duplicida_na_mesma_matricula)
and vba.codigo in (2060)
and rot.rotina = 'FOL'


select srv.matricula , vba.codigo
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #temp_sedec)
and vba.codigo in (2060)
and rot.rotina = 'FOL'

select srv.matricula , vba.codigo
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #temp_sedec_2)
and vba.codigo in (2260)
and rot.rotina = 'FOL'



select srv.matricula, pes.nome , inicio
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2260)
and srv.matricula in (select matricula from #deletar)
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305


select srv.matricula, pes.nome , inicio
--delete  rh.verba_periodica
--update rh.verba_periodica set fim = '20230430'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060)
and srv.matricula in (select matricula from #temp_duplicida_na_mesma_matricula)
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305


select srv.matricula, pes.nome , inicio
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060)
and srv.matricula in (select matricula from #temp_sedec)
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305

select srv.matricula, pes.nome , inicio
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2260)
and srv.matricula in (select matricula from #temp_sedec_2)
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305

select srv.matricula 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #temp5)
and vba.codigo in (2060,2061)
and rot.rotina = 'FOL'

--cedido com auxilio de cedidos
select srv.matricula 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #cedidos)
and vba.codigo in (2060,2061,2260)
and rot.rotina = 'FOL'

--cedido com auxilio de cedidos
select srv.matricula, pes.nome 
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2061,2260)
and srv.matricula in (select matricula from #cedidos)
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305



--cedido com auxilio de sedec
select srv.matricula 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #auxilio_sedec)
and vba.codigo in (2060,2061,2260)
and rot.rotina = 'FOL'

--cedido com auxilio de cedidos
select srv.matricula, pes.nome 
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2061,2260)
and srv.matricula in (select matricula from #auxilio_sedec)
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305


select srv.matricula, pes.nome 
--delete  rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060)
and srv.matricula in (select matricula from #temp5)
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305




select bse.matricula, pes.nome, vra.inicio, vra.fim
--update  rh.verba_periodica set fim = '2021-12-30'
--update TbRhVbaFix set fim = dateadd(day,-1,(dateadd(month,1,convert(char(08),dateadd(mm,-1,convert(varchar(10),(@mesref*100)+1)),126)+'01')))
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060)
and srv.matricula in (select matricula from #temp5)
and vra.inicio <> left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and bse.rotina = rot.rotina
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305


select * 
--delete  rh.verba_eventual 
from rh.verba vba, rh.verba_rotina rot, rh.verba_eventual vra, rh.servidor srv
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and mes_referencia = 202305
and srv.matricula in (select matricula from #temp6)
and vba.codigo in (2260,2060)
and rot.rotina = 'FOL'



select srv.matricula, pes.nome 
--update  rh.verba_periodica set fim = '2021-12-30'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and srv.matricula in (select matricula from #temp6)
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305

/*
drop table #temp1
drop table #temp2
drop table #temp3
drop table #temp4
drop table #temp5
drop table #temp6
drop table #deletar
drop table #cedidos
drop table #temp_sedec
drop table #temp_sedec_2
drop table #auxilio_sedec
drop table #deletar
drop table #temp_duplicida_na_mesma_matricula
*/

33 - Verifica GAD Valores Errados

use governa

declare 

@mesref int = 202305

select srv.matricula, pes.nome , vba.codigo, vra.valor
--delete  rh.verba_eventual 
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_eventual vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and vra.mes_referencia = mns.mes_referencia
and mns.mes_referencia = crm.mes_referencia
and pes.id = srv.id_pessoa
and rot.rotina = 'FOL'
and mns.id_cargo = crm.id_cargo
and crm.id_cargo = fun.id
and vba.codigo in (752)
and fun.codigo in (612,641)
and vra.valor > 2922.52
and vra.mes_referencia = 202305

select srv.matricula, pes.nome , vra.valor
--update rh.verba_eventual set valor = 1380.24
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_eventual vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and vra.mes_referencia = mns.mes_referencia
and mns.mes_referencia = crm.mes_referencia
and pes.id = srv.id_pessoa
and rot.rotina = 'FOL'
and mns.id_cargo = crm.id_cargo
and crm.id_cargo = fun.id
and vba.codigo in (752)
and fun.codigo in (642)
and vra.valor > 1461.26
and vra.mes_referencia = 202305

34 - Verifica Piso do Magistério em Cargos não Professores Exclui a Verba

use governa

declare 

@mesref int = 202305

select	srv.matricula, pes.nome
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and mns.id_cargo = fun.id
and mns.mes_referencia = crm.mes_referencia
and fun.id = crm.id_cargo
and vba.codigo in (57,58,390,392,394,395,396,397,398,579)
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and mns.id not in (select mn1.id from rh.servidor_local srl, rh.local_trabalho lcl, rh.lotacao ltc, rh.servidor_mensal mn1
					where srl.id_local_trabalho = lcl.id and lcl.id_lotacao = ltc.id and srl.id_servidor_mensal = mn1.id and mn1.mes_referencia = mns.mes_referencia and ltc.codigo in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814))
and ((vra.fim is null) or (vra.fim >= getdate()))
and fun.codigo not in (533,534,535,536,537,538,547,548,549,550,551,552,9532,9533,9633,30179)
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref

35 - Verifica Piso do Magistério em Cargos não Professores Fecha a Verba

use governa

declare 

@mesref int = 202305

select	srv.matricula, pes.nome, vra.inicio, vra.fim
--update rh.verba_periodica set fim = '20191230'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and mns.id_cargo = fun.id
and mns.mes_referencia = crm.mes_referencia
and fun.id = crm.id_cargo
and vba.codigo in (57,58,390,392,394,395,396,397,398,579)
and vra.inicio <> left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and mns.id not in (select mn1.id from rh.servidor_local srl, rh.local_trabalho lcl, rh.lotacao ltc, rh.servidor_mensal mn1
					where srl.id_local_trabalho = lcl.id and lcl.id_lotacao = ltc.id and srl.id_servidor_mensal = mn1.id and mn1.mes_referencia = mns.mes_referencia and ltc.codigo in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814))
and ((vra.fim is null) or (vra.fim >= getdate()))
and fun.codigo not in (533,534,535,536,537,538,547,548,549,550,551,552,9532,9533,9633,30179)
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref

36 - Verifica Plantões Errados da SESAU

use governa

declare

@mesref int = 202305

	--select inc.codigo, rot.id from rh.verba inc, rh.verba_rotina rot where inc.id = rot.id_verba and inc.codigo = 4140 and rotina = 'FOL'

select	srv.matricula, *
--update rh.verba_eventual set id_verba_rotina = 3426 --verba 4140
from	rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv,
		rh.verba_eventual eve,
		rh.verba inc,
		rh.verba_rotina rot
where	srv.id = mns.id_servidor
	and mns.id = bse.id_servidor_mensal
	and bse.id = vba.id_financeiro_mensal
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and crg.id = mns.id_cargo
	and crg.id = cms.id_cargo
	and cms.id_nivel_salarial = niv.id
	and eve.id_servidor = mns.id_servidor
	and eve.id_verba_rotina = rot.id
	and mns.mes_referencia = eve.mes_referencia
	and cms.mes_referencia = mns.mes_referencia
	and bse.rotina ='FOL'
	and mns.mes_referencia = 202305
	and	inc.codigo in (4141,4142,4128)
	and niv.nivel  in ('SAU001') 
	and crg.codigo not in (35365)

	--select inc.codigo, rot.id from rh.verba inc, rh.verba_rotina rot where inc.id = rot.id_verba and inc.codigo = 4141 and rotina = 'FOL'


select	srv.matricula, *
--update rh.verba_eventual set id_verba_rotina = 3430 --verba 4141
from	rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv,
		rh.verba_eventual eve,
		rh.verba inc,
		rh.verba_rotina rot
where	srv.id = mns.id_servidor
	and mns.id = bse.id_servidor_mensal
	and bse.id = vba.id_financeiro_mensal
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and crg.id = mns.id_cargo
	and crg.id = cms.id_cargo
	and cms.id_nivel_salarial = niv.id
	and eve.id_servidor = mns.id_servidor
	and eve.id_verba_rotina = rot.id
	and mns.mes_referencia = eve.mes_referencia
	and cms.mes_referencia = mns.mes_referencia
	and bse.rotina ='FOL'
	and mns.mes_referencia = 202305
	and	inc.codigo in (4140,4142,4128) 
	and niv.nivel  in ('SAU002')
	and crg.codigo not in (35365)

--	select inc.codigo, rot.id from rh.verba inc, rh.verba_rotina rot where inc.id = rot.id_verba and inc.codigo = 4142 and rotina = 'FOL'

select	srv.matricula, *
--update rh.verba_eventual set id_verba_rotina = 3434 --verba 4142
from	rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv,
		rh.verba_eventual eve,
		rh.verba inc,
		rh.verba_rotina rot
where	srv.id = mns.id_servidor
	and mns.id = bse.id_servidor_mensal
	and bse.id = vba.id_financeiro_mensal
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and crg.id = mns.id_cargo
	and crg.id = cms.id_cargo
	and cms.id_nivel_salarial = niv.id
	and eve.id_servidor = mns.id_servidor
	and eve.id_verba_rotina = rot.id
	and mns.mes_referencia = eve.mes_referencia
	and cms.mes_referencia = mns.mes_referencia
	and bse.rotina ='FOL'
	and mns.mes_referencia = 202305
	and	inc.codigo in (4140,4141,4128)
	and niv.nivel  in ('SAU003')
	and crg.codigo not in (35365)

	
--	select inc.codigo, rot.id from rh.verba inc, rh.verba_rotina rot where inc.id = rot.id_verba and inc.codigo = 4128 and rotina = 'FOL'

	
select	srv.matricula, *
--update rh.verba_eventual set id_verba_rotina = 3407 --verba 4128
from	rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv,
		rh.verba_eventual eve,
		rh.verba inc,
		rh.verba_rotina rot
where	srv.id = mns.id_servidor
	and mns.id = bse.id_servidor_mensal
	and bse.id = vba.id_financeiro_mensal
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and crg.id = mns.id_cargo
	and crg.id = cms.id_cargo
	and cms.id_nivel_salarial = niv.id
	and eve.id_servidor = mns.id_servidor
	and eve.id_verba_rotina = rot.id
	and mns.mes_referencia = eve.mes_referencia
	and cms.mes_referencia = mns.mes_referencia
	and bse.rotina ='FOL'
	and mns.mes_referencia = 202305
	and	inc.codigo in (4140,4141,4142)
	and niv.nivel  in ('MEDI20', 'MEDI40','MEDICO')
	and crg.codigo not in (35365)


select	srv.matricula, *
--delete rh.verba_eventual
from	rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv,
		rh.verba_eventual eve,
		rh.verba inc,
		rh.verba_rotina rot
where	srv.id = mns.id_servidor
	and mns.id = bse.id_servidor_mensal
	and bse.id = vba.id_financeiro_mensal
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and crg.id = mns.id_cargo
	and crg.id = cms.id_cargo
	and cms.id_nivel_salarial = niv.id
	and eve.id_servidor = mns.id_servidor
	and eve.id_verba_rotina = rot.id
	and mns.mes_referencia = eve.mes_referencia
	and cms.mes_referencia = mns.mes_referencia
	and bse.rotina ='FOL'
	and mns.mes_referencia = 202305
	and	inc.codigo in (4140,4141,4142,4128,4130)
	and niv.nivel  not in ('SAU001','SAU002','SAU003','MEDI20', 'MEDI40','MEDICO','BUCO')
	and crg.codigo not in (35365,35345)

37 - Verifica Servidores não Iperon com Afastamento Iperon

use governa

declare

@mesref int = 202305

select	srv.matricula,cla.descricao, mot.descricao
from	rh.financeiro_mensal bse, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns,
		rh.servidor srv,
		rh.param_previdencia par,
		rh.servidor_afastamento afa,
		rh.motivo_afastamento mot,
		rh.classificacao_funcional cla
where rot.id_verba = inc.id
and rot.rotina = 'FOL'
and inc.codigo in (85,86)
and afa.id_servidor = srv.id
and afa.fim >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'
and afa.id_verba_rotina = rot.id
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and mns.mes_referencia = @mesref
and mns.mes_referencia = par.mes_referencia
and mns.id_vinculo_empregaticio = par.id_vinculo_empregaticio
and mns.id_classificacao_funcional = par.id_classificacao_funcional
and par.id_orgao_previdenciario <> 1
and afa.id_motivo_afastamento = mot.id
and bse.id_classificacao_funcional = cla.id

38 - verificando averbação suspensa com desconto

use governa

declare

@mesref int = 202305


select * from rh.averbacao
where situacao in ('QUI','SUS')
and id in (select isnull(id_averbacao,0) from rh.ANALISE_CRITICA_DETALHE where mes_referencia = @mesref)

select srv.matricula, avb.id_verba, inc.codigo
from rh.averbacao avb, rh.servidor srv, rh.verba inc
where situacao in ('QUI','SUS')
and avb.id_servidor = srv.id
and avb.id_verba = inc.id
and avb.id_verba in (select verbaId from FinanceiroMensalVerba vba where mesReferencia = @mesref and vba.matricula = srv.matricula and rotina = 'FOL')
and id_verba in (select rot.id_verba from rh.verba_eventual eve, rh.verba_rotina rot
				where mes_referencia = @mesref
				and eve.id_verba_rotina = rot.id
				and eve.id_servidor = avb.id_servidor
				and rot.rotina = 'FOL')


--suspensa com desconto
select vba.matricula, vba.codigoVerba, inc.descricao, vba.verbaValor 
--delete rh.ANALISE_CRITICA_DETALHE
from	rh.ANALISE_CRITICA_DETALHE ana, rh.verba_eventual eve, rh.verba inc, rh.verba_rotina rot, financeiromensalverba vba
where ana.mes_referencia = 202305
and ana.id_verba_eventual = eve.id
and ana.mes_referencia = eve.mes_referencia
and rot.id = eve.id_verba_rotina
and rot.id_verba = inc.id
and inc.id = vba.verbaid
and ana.mes_referencia = vba.mesreferencia
and eve.matricula = vba.matricula
and rot.rotina = 'FOL'


select mns.matricula, mns.situacao, eve.*, inc.codigo , mns.id_servidor
from rh.verba_eventual eve, rh.verba inc, rh.verba_rotina rot, rh.servidor_mensal mns
where eve.mes_referencia = @mesref
and eve.id_verba_rotina = rot.id
and inc.id = rot.id_verba
and rot.rotina = 'FOL'
and inc.codigo in (5149,7345,7311,7343,7230,5387)
and eve.mes_referencia = mns.mes_referencia
and eve.matricula = mns.matricula
and eve.matricula in (select matricula from FinanceiroMensal bse where bse.mesReferencia = mns.mes_referencia and bse.matricula = mns.matricula and isnull(bse.pensionistaVitalicioId,0) = ISNULL(eve.id_pensionista_vitalicio,0) and rotina = 'FOL')
and eve.matricula not in (select vba.matricula from FinanceiroMensalVerba vba where inc.codigo = vba.codigoVerba and vba.matricula = eve.matricula and vba.mesReferencia = eve.mes_referencia and rotina = 'FOL')
and eve.id not in (select isnull(id_verba_eventual,0) from rh.ANALISE_CRITICA_DETALHE ana where ana.mes_referencia = eve.mes_referencia)


--verificando desconto de verba de cartao
select * 
from	rh.param_verba_consignacao csg,rh.verba_eventual eve, rh.verba inc, rh.verba_rotina rot, financeiromensalverba vba
where eve.mes_referencia = 202305
and rot.id = eve.id_verba_rotina
and rot.id_verba = inc.id
and inc.id = vba.verbaid
and eve.mes_referencia = vba.mesreferencia
and eve.matricula = vba.matricula
and inc.id = csg.id_verba
and csg.compulsorio = 0
and rot.rotina = 'FOL'

39 - Verificando Cedido sem CDSFG

USE [Governa]
GO
/****** Object:  StoredProcedure [dbo].[pcdcst14]    Script Date: 08/11/2018 20:09:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
--ALTER Procedure [dbo].[pcdcst14]
declare
@Mesref int = 202305

--As

drop table #cds
select	srv.matricula, CPF into #cds
from	rh.verba_periodica vfx,
		rh.servidor srv,
		rh.servidor_mensal mns,
		dbtemps.dbo.verbascds cds,
		rh.cargo fun,
		rh.cargo_mensal crm,
		rh.verba inc,
		admin.pessoa_fisica fis
where	vfx.id_servidor = srv.id
	and srv.id = mns.id_servidor
	and mns.id_cargo = fun.id
	and fun.id = crm.id_cargo
	and mns.mes_referencia = crm.mes_referencia
	and crm.id_nivel_salarial not in (select id from rh.nivel_salarial where nivel like 'Sau%')
	and ((vfx.fim is null) or (vfx.fim >= getdate()))
	and mns.situacao in ('ATV', 'AFA')
	and cds.codigo = inc.codigo
	and srv.id_pessoa = fis.id
	and vfx.id_verba = inc.id
	and mns.mes_referencia = @Mesref


select srv.matricula, pes.nome , vba.codigo
--delete  rh.verba_eventual 
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_eventual vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and vra.mes_referencia = mns.mes_referencia
and pes.id = srv.id_pessoa
and bse.rotina = rot.rotina
and rot.rotina = 'FOL'
and vba.codigo in (2060,2260)
and mns.id_classificacao_funcional not in (4,2,1,65,5,14,76,83,84,94)
and srv.matricula not in (select matricula from #cds)
and srv.matricula not in (select srv.matricula from rh.verba_periodica per, rh.verba inc, rh.servidor srv where fim is null and per.id_verba = inc.id  and per.id_servidor = srv.id and inc.codigo in (select codigo from dbtemps.dbo.verbasfgecds))
and vra.mes_referencia = 202305
order by 3

--select * from rh.classificacao_funcional

select srv.matricula, pes.nome , vra.inicio
--update  rh.verba_periodica set fim = '2023-04-30'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and mns.id_classificacao_funcional not in (4,2,1,65,5,14,76,83,84,94)
and srv.matricula not in (select matricula from #cds)
and srv.matricula not in (select srv.matricula from rh.verba_periodica per, rh.verba inc, rh.servidor srv where fim is null and per.id_verba = inc.id  and per.id_servidor = srv.id and inc.codigo in (select codigo from dbtemps.dbo.verbasfgecds))
and vra.inicio <> left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = 202305




select srv.matricula, pes.nome , inicio
--delete  rh.verba_periodica 
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and mns.id_classificacao_funcional not in (4,2,1,65,5,14,76,83,84,94)
and srv.matricula not in (select matricula from #cds)
and srv.matricula not in (select srv.matricula from rh.verba_periodica per, rh.verba inc, rh.servidor srv where fim is null and per.id_verba = inc.id  and per.id_servidor = srv.id and inc.codigo in (select codigo from dbtemps.dbo.verbasfgecds))
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and mns.mes_referencia = 202305
and rot.rotina = 'FOL'


--drop table #cds

40 - verificando diferença de consignação

use governa

--executar antes da análise

declare
@mesref int = 202104

drop table #financeiro_csg
select	srv.matricula, inc.codigo, sum(avb.valor) 'valor', avb.id into #financeiro_csg
from	rh.financeiro_mensal_averbacao avb, 
		rh.financeiro_mensal bse, 
		rh.averbacao aver, 
		rh.verba inc, 
		rh.servidor_mensal mns, 
		rh.servidor srv,
		rh.lotacao ltc, 
		rh.lotacao_mensal lms
where avb.id_financeiro_mensal = bse.id
and avb.id_averbacao = aver.id
and aver.id_verba = inc.id
and bse.id_servidor_mensal = mns.id
and bse.mes_referencia = mns.mes_referencia
and mns.mes_referencia = avb.mes_referencia
and aver.id_servidor = srv.id
and ltc.id = lms.id_lotacao
and lms.mes_referencia = mns.mes_referencia
and lms.id = bse.id_lotacao_mensal
and mns.mes_referencia = @mesref
and bse.rotina = 'FOL'
group by srv.matricula, inc.codigo,avb.id

drop table ##ver
select srv.matricula, inc.codigo, SUM(vba.valor) 'valor_folha' into ##ver
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.id in (select id_verba from rh.param_verba_consignacao where compulsorio = 0)
group by srv.matricula, inc.codigo


select * from #financeiro_csg csg, ##ver ver
where csg.matricula = ver.matricula
and csg.codigo = ver.codigo
and csg.valor <> ver.valor_folha
and csg.valor - ver.valor_folha > 0.01

select * from #financeiro_csg csg left join ##ver ver
on csg.matricula = ver.matricula
and csg.codigo = ver.codigo
where ver.matricula	 is null


41 - verificando diferenca entra verba 2051 e 2043

use governa

declare

@mesref int = 202305


select vb1.matricula, vb1.codigoVerba, vb1.verbaValor, vb2.codigoVerba, vb2.verbaValor, vb1.verbaValor-vb2.verbaValor, vb2.verbaId, eve.quantidade,eve.valor
--update rh.verba_eventual set valor = vb1.verbavalor
from FinanceiroMensalVerba vb1, FinanceiroMensalVerba vb2, rh.verba_eventual eve, FinanceiroMensal bse
where vb1.matricula = vb2.matricula
and vb1.mesReferencia = vb2.mesReferencia
and vb1.mesReferencia = 202304
and vb1.codigoVerba = 2051
and vb2.codigoVerba = 2043
and vb1.verbaValor <> vb2.verbaValor
and vb2.verbaValor-vb1.verbaValor >= 0.01
and eve.id_verba_rotina = 6657
and vb2.idFinanceiroMensal = bse.financeiroMensalId
and eve.id_servidor = bse.servidorId
and eve.mes_referencia = vb2.mesReferencia
and eve.quantidade = 1.00
and eve.valor = 0
order by eve.valor

select vb1.matricula, vb1.codigoVerba, vb1.verbaValor, vb2.codigoVerba, vb2.verbaValor, vb1.verbaValor-vb2.verbaValor, vb2.verbaId, eve.quantidade,eve.valor
from FinanceiroMensalVerba vb1, FinanceiroMensalVerba vb2, rh.verba_eventual eve, FinanceiroMensal bse
where vb1.matricula = vb2.matricula
and vb1.mesReferencia = vb2.mesReferencia
and vb1.mesReferencia = @mesref
and vb1.codigoVerba = 2051
and vb2.codigoVerba = 2043
and vb1.verbaValor <> vb2.verbaValor
and vb2.verbaValor-vb1.verbaValor >= 0.01
and eve.id_verba_rotina = 6657
and vb2.idFinanceiroMensal = bse.financeiroMensalId
and eve.id_servidor = bse.servidorId
and eve.mes_referencia = vb2.mesReferencia
and eve.quantidade = 1.00
and eve.valor <> 0
and eve.valor <> vb1.verbaValor
order by eve.valor

42 - verificando duplicidade de auxilio covid

use governa

--drop table #quantidade
declare

@mesref int = 202305

select bse.servidorCPF, count(bse.matricula) 'Qde' into #quantidade
from FinanceiroMensal bse, FinanceiroMensalVerba vba
where bse.matricula = vba.matricula
and isnull(vba.idPensionistaVitalicio,0) = isnull(bse.pensionistaVitalicioId,0)
and bse.mesReferencia = vba.mesReferencia
and bse.rotina = vba.rotina
and bse.mesReferencia = @mesref
and vba.codigoVerba = 4992
group by bse.servidorCPF
having count(bse.matricula) >= 2



--drop table #retirar
select	bse.servidorCPF, max(bse.matricula) 'Maior_Matricula' into #retirar
From	#quantidade qde,
		FinanceiroMensal bse,
		FinanceiroMensalVerba vba
where	qde.servidorCPF = bse.servidorCPF
and bse.matricula = vba.matricula
and bse.rotina = vba.rotina
and bse.mesReferencia = vba.mesReferencia
and vba.codigoVerba = 4992
and bse.mesReferencia = @mesref
and bse.rotina = 'FOL'
group by bse.servidorCPF

select * 
--delete rh.verba_eventual
from #retirar ret, rh.verba_eventual eve
where ret.Maior_Matricula = eve.matricula
and eve.mes_referencia = 202305
and eve.id_verba_rotina = 7418


--retirar mes anterior

--drop table #quantidade_mes_anterior
select bse.servidorCPF, count(bse.matricula) 'Qde' into #quantidade_mes_anterior
from FinanceiroMensal bse, FinanceiroMensalVerba vba
where bse.matricula = vba.matricula
and isnull(vba.idPensionistaVitalicio,0) = isnull(bse.pensionistaVitalicioId,0)
and bse.mesReferencia = vba.mesReferencia
and bse.rotina = vba.rotina
and bse.mesReferencia = 202305
and vba.codigoVerba = 4993
and bse.rotina = 'FOL'
group by bse.servidorCPF
having count(bse.matricula) >= 2



--drop table #retirar_mes_anterior
select	bse.servidorCPF, max(bse.matricula) 'Maior_Matricula' into #retirar_mes_anterior
From	#quantidade_mes_anterior qde,
		FinanceiroMensal bse,
		FinanceiroMensalVerba vba
where	qde.servidorCPF = bse.servidorCPF
and bse.matricula = vba.matricula
and bse.rotina = vba.rotina
and bse.mesReferencia = vba.mesReferencia
and vba.codigoVerba = 4993
and bse.mesReferencia = 202305
and bse.rotina = 'FOL'
group by bse.servidorCPF

select * 
--delete rh.verba_eventual
from #retirar_mes_anterior ret, rh.verba_eventual eve
where ret.Maior_Matricula = eve.matricula
and eve.mes_referencia = 202305
and eve.id_verba_rotina = 7444

43 - verificando inativos com afastamento

use governa

declare

@mesref int = 202305


select	srv.matricula, afa.inicio, afa.fim
--update rh.servidor_afastamento set fim = '20230430'
--delete rh.servidor_afastamento
from	rh.servidor_afastamento afa, 
		rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.financeiro_mensal bse, 
		rh.lotacao ltc, 
		rh.lotacao_mensal lms,
		rh.motivo_afastamento mot
where afa.id_servidor = srv.id
and srv.id = mns.id_servidor
and bse.id_servidor_mensal = mns.id
and bse.mes_referencia = mns.mes_referencia
and bse.id_lotacao_mensal = lms.id
and lms.id_lotacao = ltc.id
and lms.mes_referencia = mns.mes_referencia
and afa.id_motivo_afastamento = mot.id
and bse.mes_referencia = 202305
and afa.inicio < SUBSTRING(convert(char(6),202305), 1, 6) + '01'
and afa.fim > = getdate()
and afa.id_motivo_afastamento not in (15)
and ltc.codigo in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818,819,825)
order by afa.inicio

select	srv.matricula--distinct mot.id, mot.descricao, ltc.codigo, lms.descricao_reduzida_lotacao
--delete rh.servidor_afastamento
from	rh.servidor_afastamento afa, 
		rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.financeiro_mensal bse, 
		rh.lotacao ltc, 
		rh.lotacao_mensal lms,
		rh.motivo_afastamento mot
where afa.id_servidor = srv.id
and srv.id = mns.id_servidor
and bse.id_servidor_mensal = mns.id
and bse.mes_referencia = mns.mes_referencia
and bse.id_lotacao_mensal = lms.id
and lms.id_lotacao = ltc.id
and lms.mes_referencia = mns.mes_referencia
and afa.id_motivo_afastamento = mot.id
and bse.mes_referencia = 202305
and afa.inicio >= SUBSTRING(convert(char(6),202305), 1, 6) + '01'
and afa.fim > = getdate()
and afa.id_motivo_afastamento not in (15)
and ltc.codigo in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818,819,825)

44 - verificando inativos com auxilio saúde

use governa

declare

@mesref int = 202305


select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--delete rh.verba_eventual
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and inc.codigo in (2260,2060,2061)
and vms.rotina = 'FOL'
and ltc.codigo in (270,271,290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818,819,825)
and mns.mes_referencia = 202305
order by ltc.codigo

select	srv.matricula, ltc.codigo, inc.codigo, evt.valor , evt.inicio
--delete rh.verba_periodica
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_periodica evt,
		rh.verba_rotina vms,
		rh.verba inc
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba = inc.id
and vms.id_verba = inc.id
and inc.codigo in (2260,2060,2061)
and vms.rotina = 'FOL'
and ltc.codigo in (270,271,290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818,819,825)
and mns.mes_referencia = 202305
and ((evt.fim is null) or (evt.fim >= getdate()))
and evt.inicio >= SUBSTRING(convert(char(6),202305), 1, 6) + '01'
order by ltc.codigo


select	srv.matricula, ltc.codigo, inc.codigo, evt.valor , evt.inicio
--update rh.verba_periodica set fim = '20230431'
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_periodica evt,
		rh.verba_rotina vms,
		rh.verba inc
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba = inc.id
and vms.id_verba = inc.id
and inc.codigo in (2260,2060,2061)
and vms.rotina = 'FOL'
and ltc.codigo in (270,271,290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818,819,825)
and mns.mes_referencia = 202305
and ((evt.fim is null) or (evt.fim >= getdate()))
and evt.inicio < SUBSTRING(convert(char(6),202305), 1, 6) + '01'
order by ltc.codigo



select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--delete rh.verba_eventual
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and inc.codigo in (2260,2060,2061)
and vms.rotina = 'FOL'
and mns.id_classificacao_funcional in (select clffnc from dbflh.dbo.TbClfAuxSau)
and mns.mes_referencia = 202305
order by ltc.codigo


select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--delete rh.verba_periodica
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_periodica evt,
		rh.verba_rotina vms,
		rh.verba inc
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba = inc.id
and vms.id_verba = inc.id
and inc.codigo in (2260,2060,2061)
and vms.rotina = 'FOL'
and mns.id_classificacao_funcional in (select clffnc from dbflh.dbo.TbClfAuxSau)
and mns.mes_referencia = 202305
and ((evt.fim is null) or (evt.fim >= getdate()))
order by ltc.codigo



select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--delete rh.verba_eventual
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and inc.codigo in (2260,2060,2061)
and vms.rotina = 'FOL'
and mns.id_cargo = 3341
and mns.mes_referencia = 202305
order by ltc.codigo


select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--delete rh.verba_periodica
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_periodica evt,
		rh.verba_rotina vms,
		rh.verba inc
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba = inc.id
and vms.id_verba = inc.id
and inc.codigo in (2260,2060,2061)
and vms.rotina = 'FOL'
and mns.id_cargo = 3341
and mns.mes_referencia = 202305
and ((evt.fim is null) or (evt.fim >= getdate()))
order by ltc.codigo

45 - verificando inativos com férias

use governa

declare

@mesref int = 202305


drop table #deletar
select	srv.matricula, ltc.codigo, fer.id 'Id_Ferias', fer.inicio 'Aq_inicio', fer.fim 'Aq_Fim', goz.id 'Id_gozo', 
		goz.inicio 'Goz_Inicio', goz.fim 'Goz_fim', goz.data_pagamento, fer.tipo_ferias
into #deletar
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.servidor_ferias fer,
		rh.servidor_ferias_gozo goz

where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and fer.id_servidor = srv.id
and fer.id = goz.id_servidor_ferias
and ltc.codigo in (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814,815,816,817,818,819,825)
and goz.data_pagamento >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'
and goz.data_pagamento < '5001-01-01'
and mns.mes_referencia = @mesref
order by ltc.codigo

select * 
--delete rh.servidor_ferias_gozo
from rh.servidor_ferias_gozo goz, #deletar del
where goz.id_servidor_ferias = del.Id_Ferias


select * 
--delete rh.servidor_ferias
from rh.servidor_ferias fer, #deletar del
where fer.id = del.Id_Ferias

46 - verificando lançamento de verba de consignação na verba eventual

use governa


declare

@mesref int = 202305

select distinct inc.codigo, inc.descricao 
from rh.verba_eventual eve, rh.verba_rotina rot, rh.verba inc
where mes_referencia = @mesref
and eve.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.id_verba in (select id_verba from rh.param_verba_consignacao where compulsorio = 0 and id_tipo_facultativo not in (7))

47 - verificando licença premio com data de pagamento

use governa

declare

@mesref int = 202305

select * 
--update rh.servidor_ferias_gozo set data_pagamento = null
from rh.servidor_ferias fer, rh.servidor_ferias_gozo goz
where fer.id = goz.id_servidor_ferias
and fer.tipo_ferias = 'PRE'
and data_pagamento is not null
and data_pagamento >= SUBSTRING(convert(char(6),@mesref), 1, 6) + '01'

48 - verificando PM e BM em classificação errada


use governa

declare

@mesref int = 202305

select matricula, lotacaoCodigo, classificacaoFuncionalId, classificacao_funcional,lotacaoMensalDescricao
from FinanceiroMensal
where mesReferencia = @mesref
and nivelSalarial in ('PM','BM')
and grauSalarial <> '9900'
and classificacaoFuncionalId not in (56,11,85,84,87,86,104,105,106,107,108,109,110,111,112)

49 - Verificando quem tem somente auxilio transporte, auxilio saúde, complemento salario mínimo e outros

use governa

declare

@mesref int = 202305


drop table #vba_51_53
drop table #vba_2060_2260
drop table #vba_575_588
drop table #brutosomaverbas
drop table #vba_4992

select  srv.matricula into #vba_51_53
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.verba inc,
		rh.verba_rotina rot
where	bse.id = vba.id_financeiro_mensal
	and bse.id_servidor_mensal = mns.id
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and mns.id_servidor = srv.id
	and mns.mes_referencia = @mesref
	and inc.codigo in (51,53)
	and bse.rotina = 'FOL'
	and bse.salario_bruto_valor = vba.valor



select  srv.matricula into #vba_2060_2260
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.verba inc,
		rh.verba_rotina rot
where	bse.id = vba.id_financeiro_mensal
	and bse.id_servidor_mensal = mns.id
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and mns.id_servidor = srv.id
	and mns.mes_referencia = @mesref
	and inc.codigo in (2060,2260)
	and bse.rotina = 'FOL'
	and bse.salario_bruto_valor = vba.valor


select  srv.matricula into #vba_575_588
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.verba inc,
		rh.verba_rotina rot
where	bse.id = vba.id_financeiro_mensal
	and bse.id_servidor_mensal = mns.id
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and mns.id_servidor = srv.id
	and mns.mes_referencia = 202305
	and inc.codigo in (575,588,1575,3575,4912)
	and bse.rotina = 'FOL'
	and bse.salario_bruto_valor = vba.valor


select  srv.matricula into #vba_4992
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.verba inc,
		rh.verba_rotina rot
where	bse.id = vba.id_financeiro_mensal
	and bse.id_servidor_mensal = mns.id
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and mns.id_servidor = srv.id
	and mns.mes_referencia = @mesref
	and inc.codigo in (4992)
	and bse.rotina = 'FOL'
	and bse.salario_bruto_valor = vba.valor



--drop table #brutosomaverbas
select  srv.matricula, bse.salario_bruto_valor, sum(vba.valor) 'Valor' into #brutosomaverbas
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.verba inc,
		rh.verba_rotina rot
where	bse.id = vba.id_financeiro_mensal
	and bse.id_servidor_mensal = mns.id
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and mns.id_servidor = srv.id
	and mns.mes_referencia = @mesref
	and inc.codigo in (400,575,588,2060,2260,53,51,4999,1575,3575,4912) --,4992,4993)
	and bse.rotina = 'FOL'
	and srv.matricula not in (300152265,300152444,300152509,300152525,300152589,300152611,300152992,300153010,300153030,300153095,300153110,300153164,300153264,300153270,300153382,300153591,300153778,
	300153786,300153994,300153265,300152107,300152353,300153569,300153265,300153936,300152537,300153592,300153667,300153278,300153036,300153270,300153297,300152551,300153710,300153083,300152243,300154121)

group by srv.matricula, bse.salario_bruto_valor
having bse.salario_bruto_valor = sum(vba.valor) 

select * from #brutosomaverbas

select srv.matricula
--update rh.servidor_mensal set processa_abono_salario_familia = 0
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and bse.rotina = 'FOL'
	and crg.codigo = 35365
	and mns.processa_abono_salario_familia = 1
	and mns.mes_referencia = 202305
--order by srv.matricula



select srv.matricula
--update rh.servidor_mensal set id_percurso = null
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #vba_575_588 trp
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = trp.matricula
	and bse.rotina = 'FOL'
	and mns.id_percurso is not null
	and mns.mes_referencia = 202305




select srv.matricula, eve.id_verba_rotina
--delete rh.verba_eventual
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #vba_2060_2260 vba, rh.verba_eventual eve
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = vba.matricula
	and srv.id = eve.id_servidor
	and mns.mes_referencia = eve.mes_referencia
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305
	and eve.id_verba_rotina in (3189,3342)
--order by srv.matricula

/*
--COVID para FEDERAIS
select srv.matricula, eve.id_verba_rotina
--delete rh.verba_eventual
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #vba_4992 vba, rh.verba_eventual eve
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = vba.matricula
	and srv.id = eve.id_servidor
	and mns.mes_referencia = eve.mes_referencia
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305
	and eve.id_verba_rotina in (7418)
--order by srv.matricula
*/

select srv.matricula 
--update rh.verba_periodica set fim = '20230430'
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #vba_2060_2260 vba, rh.verba_periodica eve, rh.verba inc
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = vba.matricula
	and srv.id = eve.id_servidor
	and eve.id_verba = inc.id
	and inc.codigo in (2060,2260)
	and ((eve.fim is null) or (eve.fim >= getdate()))
	and eve.inicio < left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305
	and srv.matricula not in (300152265,300152444,300152509,300152525,300152589,300152611,300152992,300153010,300153030,300153095,300153110,300153164,300153264,300153270,300153382,300153591,300153778,
	300153786,300153994,300152107,300152353,300153569,300153265,300153936,300152537,300153592,300153667,300153278,300153036,300153270,300153297,300152551,300153710,300153083,300152243,300154121)




select srv.matricula 
--delete rh.verba_periodica
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #vba_2060_2260 vba, rh.verba_periodica eve, rh.verba inc
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = vba.matricula
	and srv.id = eve.id_servidor
	and eve.id_verba = inc.id
	and inc.codigo in (2060,2260)
	and ((eve.fim is null) or (eve.fim >= getdate()))
	and eve.inicio >= left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305
	and srv.matricula not in (300152992,300153164,300153382,300152611,300152509,300153778,300153095,300153591,300152444,300153264,300153030,300153786,300152265,300153010,300153265,300153569,
	300153265,300153936,300152537,300153592,300153667,300153278,300153036,300153270,300153297,300152551,300153710,300153083,300152243,300154121)



select srv.matricula 
--update rh.servidor_mensal set processa_abono_salario_familia = 0
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and bse.rotina = 'FOL'
	and srv.matricula in (select matricula from #vba_51_53)
	and mns.processa_abono_salario_familia = 1
	and mns.mes_referencia = 202305




select srv.matricula 
--update rh.servidor_mensal set processa_abono_salario_familia = 0
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #brutosomaverbas bru
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and bse.rotina = 'FOL'
	and srv.matricula = bru.matricula
	and mns.processa_abono_salario_familia = 1
	and mns.mes_referencia = 202305



select srv.matricula , eve.id_verba_rotina
--delete rh.verba_eventual
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #brutosomaverbas vba, rh.verba_eventual eve
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = vba.matricula
	and srv.id = eve.id_servidor
	and mns.mes_referencia = eve.mes_referencia
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305
	and eve.id_verba_rotina in (145,148,817,1082,1117,2582,3189,3342,3373,3626,3654,7418,7444)
--order by srv.matricula


select srv.matricula, eve.inicio
--update rh.verba_periodica set fim = '2023-04-30'
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #brutosomaverbas vba, rh.verba_periodica eve, rh.verba inc
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = vba.matricula
	and srv.id = eve.id_servidor
	and eve.id_verba = inc.id
	and inc.codigo in (400,575,588,2060,2260,53,51,4999,1575,3575,4912,7418)
	and ((eve.fim is null) or (eve.fim >= getdate()))
	and eve.inicio < left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305



select srv.matricula 
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #brutosomaverbas vba, rh.verba_periodica eve, rh.verba inc
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = vba.matricula
	and srv.id = eve.id_servidor
	and eve.id_verba = inc.id
	and inc.codigo in (2060,2260)
	and ((eve.fim is null) or (eve.fim >= getdate()))
	and eve.inicio >= left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305
	and srv.matricula not in (300152265,300152444,300152509,300152525,300152589,300152611,300152992,300153010,300153030,300153095,300153110,300153164,300153264,300153270,300153382,
	300153591,300153778,300153786,300153994,300153569,300153265,300153936,300152537,300153592,300153667,300153278,300153036,300153270,300153297,300152551,300153710,300153083,300152243,300154121)



select srv.matricula
--update rh.servidor_mensal set id_percurso = null
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, #brutosomaverbas trp
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.matricula = trp.matricula
	and bse.rotina = 'FOL'
	and mns.id_percurso is not null
	and mns.mes_referencia = 202305




select srv.matricula 
--update rh.servidor_mensal set id_percurso = null
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and crg.codigo = 35365
	and bse.rotina = 'FOL'
	and mns.id_percurso is not null
	and mns.mes_referencia = 202305

--matriculas na tabela para nao receber auxilio saude
select  srv.matricula
from	rh.financeiro_mensal bse,
		rh.financeiro_mensal_verba vba,
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.verba inc,
		rh.verba_rotina rot
where	bse.id = vba.id_financeiro_mensal
	and bse.id_servidor_mensal = mns.id
	and vba.id_verba_rotina = rot.id
	and rot.id_verba = inc.id
	and mns.id_servidor = srv.id
	and mns.mes_referencia = 202305
	and inc.codigo in (2060,2061,2260)
	and bse.rotina = 'FOL'
	and bse.matricula in (select mtcfnc from dbtemps..tbmtcfnnaoauxsau)

select srv.matricula, eve.inicio
--update rh.verba_periodica set fim = '2023-04-30'
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse,rh.verba_periodica eve, rh.verba inc
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.id = eve.id_servidor
	and eve.id_verba = inc.id
	and inc.codigo in (2060,2061,2260)
	and ((eve.fim is null) or (eve.fim >= getdate()))
	and eve.inicio < left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
	and bse.rotina = 'FOL'
	and bse.matricula in (select mtcfnc from dbtemps..tbmtcfnnaoauxsau)
	and mns.mes_referencia = 202305

select srv.matricula, eve.inicio
--delete rh.verba_periodica
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse,rh.verba_periodica eve, rh.verba inc
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.id = eve.id_servidor
	and eve.id_verba = inc.id
	and inc.codigo in (2060,2061,2260)
	and ((eve.fim is null) or (eve.fim >= getdate()))
	and eve.inicio >= left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
	and bse.rotina = 'FOL'
	and bse.matricula in (select mtcfnc from dbtemps..tbmtcfnnaoauxsau)
	and mns.mes_referencia = 202305


select srv.matricula 
--delete rh.verba_eventual
from rh.servidor srv, rh.servidor_mensal mns, rh.cargo crg, rh.financeiro_mensal bse, rh.verba_eventual eve, rh.verba_rotina rot, rh.verba inc
where	srv.id = mns.id_servidor
	and mns.id_cargo = crg.id
	and mns.id = bse.id_servidor_mensal
	and srv.id = eve.id_servidor
	and mns.mes_referencia = eve.mes_referencia
	and bse.rotina = 'FOL'
	and mns.mes_referencia = 202305
	and eve.id_verba_rotina = rot.id
	and bse.rotina = rot.rotina
	and rot.id_verba = inc.id
	and inc.codigo in (2060,2061,2260)
    and bse.matricula in (select mtcfnc from dbtemps..tbmtcfnnaoauxsau)
--order by srv.matricula


select * 
From	FinanceiroMensal bse, 
		FinanceiroMensalVerba vba, 
		rh.verba_eventual eve,
		rh.verba_rotina rot
where bse.servidorId = eve.id_servidor
	and bse.mesReferencia = eve.mes_referencia
	and vba.idFinanceiroMensal = bse.financeiroMensalId
	and vba.mesReferencia = bse.mesReferencia
	and vba.matricula = bse.matricula
	and isnull(vba.idPensionistaVitalicio,0) = isnull(bse.pensionistaVitalicioId,0)
	and vba.rotina = bse.rotina
	and vba.verbaId = rot.id_verba
	and vba.rotina = rot.rotina
	and bse.rotina = 'FOL'
	and bse.mesReferencia = 202305
	and rot.id = eve.id_verba_rotina
	and vba.codigoVerba in (2060,2061,2260)
	and bse.lotacaoCodigo in (select CodLtc from dbtemps..TbLotNaoAuxSau)

select * 
From	FinanceiroMensal bse, 
		FinanceiroMensalVerba vba, 
		rh.verba_periodica per
where bse.servidorId = per.id_servidor
	and vba.idFinanceiroMensal = bse.financeiroMensalId
	and vba.mesReferencia = bse.mesReferencia
	and vba.matricula = bse.matricula
	and isnull(vba.idPensionistaVitalicio,0) = isnull(bse.pensionistaVitalicioId,0)
	and vba.rotina = bse.rotina
	and vba.verbaId = per.id_verba
	and bse.rotina = 'FOL'
	and bse.mesReferencia = @mesref
	and vba.codigoVerba in (2060,2061,2260)
    and bse.lotacaoCodigo not in (822)
	and bse.lotacaoCodigo in (select CodLtc from dbtemps..TbLotNaoAuxSau)
	and per.inicio >= left(rtrim(convert(char(6),bse.mesReferencia)),4)+ '-' + right(rtrim(convert(char(6),bse.mesReferencia)),2) + '-01'

select  * 
From	FinanceiroMensal bse, 
		FinanceiroMensalVerba vba, 
		rh.verba_periodica per
where bse.servidorId = per.id_servidor
	and vba.idFinanceiroMensal = bse.financeiroMensalId
	and vba.mesReferencia = bse.mesReferencia
	and vba.matricula = bse.matricula
	and isnull(vba.idPensionistaVitalicio,0) = isnull(bse.pensionistaParenteId,0)
	and vba.rotina = bse.rotina
	and vba.verbaId = per.id_verba
	and bse.rotina = 'FOL'
	and bse.mesReferencia = @mesref
	and vba.codigoVerba in (2060,2061,2260)
	and bse.lotacaoCodigo in (select CodLtc from dbtemps..TbLotNaoAuxSau)
	and bse.lotacaoCodigo not in (822)
	and per.inicio < left(rtrim(convert(char(6),bse.mesReferencia)),4)+ '-' + right(rtrim(convert(char(6),bse.mesReferencia)),2) + '-01'

50 - VERIFICANDO SERVIDORES COM INSALUBRIDADE E PERICULOSIDADE

use governa

declare

@mesref int = 202104

select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.descricao like '%INSALU%'
and inc.codigo < 5000
and srv.matricula in (select	srv.matricula
						from	rh.financeiro_mensal bse, 
								rh.financeiro_mensal_verba vba, 
								rh.verba inc,
								rh.verba_rotina rot,
								rh.servidor_mensal mns, 
								rh.servidor srv, 
								admin.pessoa_fisica fis
						where	bse.id = vba.id_financeiro_mensal
						and vba.id_verba_rotina = rot.id
						and rot.id_verba = inc.id
						and rot.rotina = 'FOL'
						and bse.id_servidor_mensal = mns.id
						and mns.id_servidor = srv.id
						and srv.id_pessoa = fis.id
						and mns.mes_referencia = @mesref
						and inc.descricao like '%pericu%'
						and inc.codigo < 5000)

51 - Verificar Averbações em Servidores em Cargo para Pagamento

use governa

declare 

@mesref int = 202305


select	srv.matricula, CPF
--update rh.averbacao set situacao = 'SUS' 
from	rh.servidor srv,
		rh.servidor_mensal mns,
		rh.cargo fun,
		rh.cargo_mensal crm,
		rh.verba inc,
		admin.pessoa_fisica fis,
		rh.averbacao avb
where	srv.id = mns.id_servidor
	and mns.id_cargo = fun.id
	and fun.id = crm.id_cargo
	and mns.mes_referencia = crm.mes_referencia
	and fun.codigo in (35345,35365,35434,35484,50053,50088,50144,50153)--(35345,35365,35484)
	--and mns.situacao in ('ATV','AFA')
	and srv.id_pessoa = fis.id
	and inc.id = avb.id_verba
	and avb.id_servidor = srv.id
	and avb.situacao  in ('ATV','RED')
	and avb.id_pensao_vitalicia is null
	and mns.mes_referencia = 202305

52 - VERIFICAR COM ABONO PERMANECIA E CDS

use governa

declare 

@mesref int = 202305

drop table #delete
drop table #cds
select	srv.matricula, CPF into #cds
from	rh.verba_periodica vfx,
		rh.servidor srv,
		rh.servidor_mensal mns,
		dbtemps.dbo.verbascds cds,
		rh.cargo fun,
		rh.cargo_mensal crm,
		rh.verba inc,
		admin.pessoa_fisica fis
where	vfx.id_servidor = srv.id
	and srv.id = mns.id_servidor
	and mns.id_cargo = fun.id
	and fun.id = crm.id_cargo
	and mns.mes_referencia = crm.mes_referencia
	and ((vfx.fim is null) or (vfx.fim >= getdate()))
	and mns.situacao in ('ATV', 'AFA')
	and cds.codigo = inc.codigo
	and srv.id_pessoa = fis.id
	and vfx.id_verba = inc.id
	and mns.mes_referencia = @mesref


select	srv.matricula, pes.nome into #delete
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2035)
and srv.matricula in (select matricula from #cds)
and ((vra.fim is null) or (vra.fim >= getdate()))
and mns.id not in (select mns.id from rh.servidor_local srl, rh.local_trabalho lcl, rh.lotacao ltc, rh.servidor_mensal mn1
					where srl.id_local_trabalho = lcl.id and lcl.id_lotacao = ltc.id and srl.id_servidor_mensal = mn1.id and mn1.mes_referencia = mns.mes_referencia and ltc.codigo = 799)
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref

select srv.matricula, pes.nome 
--update  rh.verba_periodica set fim = '2018-10-30'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2035)
and srv.matricula in (select matricula from #delete)
and vba.codigo in (select codigo from dbtemps.dbo.verbascds)
and vra.inicio <> left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref

select srv.matricula, pes.nome 
--delete rh.verba_periodica
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2035)
and srv.matricula in (select matricula from #delete)
and vba.codigo in (select codigo from dbtemps.dbo.verbascds)
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref

53 - Verificar GAD Médicos em não médicos

use governa

declare 

@mesref int = 202305

select srv.matricula, pes.nome 
--delete  rh.verba_eventual 
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_eventual vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.cargo fun,
		rh.cargo_mensal crm
where vba.id = rot.id_verba
and rot.id = vra.id_verba_rotina
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and vra.mes_referencia = mns.mes_referencia
and mns.mes_referencia = crm.mes_referencia
and pes.id = srv.id_pessoa
and rot.rotina = 'FOL'
and vba.codigo in (752,753)
and mns.id_cargo = crm.id_cargo
and crm.id_cargo = fun.id
and fun.codigo not in (612,634,635,641,642,643,744,35365)
--and mns.id not in (select mn1.id from rh.servidor_local srl, rh.local_trabalho lcl, rh.lotacao ltc, rh.servidor_mensal mn1
--					where srl.id_local_trabalho = lcl.id and lcl.id_lotacao = ltc.id and srl.id_servidor_mensal = mn1.id and mn1.mes_referencia = mns.mes_referencia and ltc.codigo in (80,800,230,54,40,41,42,43,44,45,46,47,48,49,50,51,52,140,180))
and vra.mes_referencia = 202305

54 - verificar maternidade INSS sem salvar valor no campo maternidade INSS na financeiro base

use Governa

declare

@mesref int = 202305

select * 
--update FinanceiroMensal set previdenciatipo = 'INS', salariomaternidadevalorins = bse.salarioMaternidadeValor
from FinanceiroMensal bse
where mesReferencia=  202305
and previdenciaTipo is null
and salarioMaternidadeValor <> 0
and matricula in (select matricula from FinanceiroMensalVerba vba where vba.mesReferencia = bse.mesReferencia and bse.matricula = vba.matricula and bse.rotina = vba.rotina and codigoVerba = 9)

select * 
--update rh.financeiro_mensal set previ_tipo = 'INS'
from rh.financeiro_mensal bse
where mes_referencia=  202305
and previ_tipo is null
and salario_maternidade_valor <> 0
and matricula in (select matricula from FinanceiroMensalVerba vba where vba.mesReferencia = bse.mes_referencia and bse.matricula = vba.matricula and bse.rotina = vba.rotina and codigoVerba = 9)

55 - VERIFICAR PAGAMENTO EM DUPLICIDADE DE PERICULOSIDADE

use governa

declare
@mesref int = 202305

select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 128
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (132,364,692,698,700,701))
union


select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 132
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (364,692,698,700,701))

union

select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 364
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (692,698,700,701))


union				


select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 692
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (698,700,701))



union


select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 698
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (700,701))


union

select	srv.matricula, bse.salario_bruto_valor
from	rh.financeiro_mensal bse, 
		rh.financeiro_mensal_verba vba, 
		rh.verba inc,
		rh.verba_rotina rot,
		rh.servidor_mensal mns, 
		rh.servidor srv, 
		admin.pessoa_fisica fis
where	bse.id = vba.id_financeiro_mensal
and vba.id_verba_rotina = rot.id
and rot.id_verba = inc.id
and rot.rotina = 'FOL'
and bse.id_servidor_mensal = mns.id
and mns.id_servidor = srv.id
and srv.id_pessoa = fis.id
and mns.mes_referencia = @mesref
and inc.codigo = 700
and srv.matricula in (select	srv.matricula
				from	rh.financeiro_mensal bse, 
						rh.financeiro_mensal_verba vba, 
						rh.verba inc,
						rh.verba_rotina rot,
						rh.servidor_mensal mns, 
						rh.servidor srv, 
						admin.pessoa_fisica fis
				where	bse.id = vba.id_financeiro_mensal
				and vba.id_verba_rotina = rot.id
				and rot.id_verba = inc.id
				and rot.rotina = 'FOL'
				and bse.id_servidor_mensal = mns.id
				and mns.id_servidor = srv.id
				and srv.id_pessoa = fis.id
				and mns.mes_referencia = @mesref
				and inc.codigo in (701))

56 - VERIFICAR SERVIDORES COM FG E CDS COM GAE E HORA EXTRA

use governa

declare 

@mesref int = 202305

drop table #cds
select	srv.matricula, CPF into #cds
from	rh.verba_periodica vfx,
		rh.servidor srv,
		rh.servidor_mensal mns,
		dbtemps.dbo.verbascds cds,
		rh.cargo fun,
		rh.cargo_mensal crm,
		rh.verba inc,
		admin.pessoa_fisica fis
where	vfx.id_servidor = srv.id
	and srv.id = mns.id_servidor
	and mns.id_cargo = fun.id
	and fun.id = crm.id_cargo
	and mns.mes_referencia = crm.mes_referencia
	and crm.id_nivel_salarial not in (select id from rh.nivel_salarial where nivel like 'Sau%')
	and ((vfx.fim is null) or (vfx.fim >= getdate()))
	and mns.situacao in ('ATV', 'AFA')
	and cds.codigo = inc.codigo
	and srv.id_pessoa = fis.id
	and vfx.id_verba = inc.id
	and mns.mes_referencia = @mesref


select	srv.matricula, ltc.codigo, inc.codigo, evt.valor 
--delete rh.verba_eventual
from	rh.servidor srv, 
		rh.servidor_mensal mns, 
		rh.servidor_local lcl, 
		rh.local_trabalho loc, 
		rh.lotacao ltc,
		rh.verba_eventual evt,
		rh.verba_rotina vms,
		rh.verba inc,
		rh.cargo crg,
		rh.cargo_mensal crm,
		rh.nivel_salarial niv,
		admin.pessoa_fisica fis
where srv.id = mns.id_servidor
and mns.id = lcl.id_servidor_mensal
and lcl.id_local_trabalho = loc.id
and loc.id_lotacao = ltc.id
and evt.id_servidor = srv.id
and evt.id_verba_rotina = vms.id
and vms.id_verba = inc.id
and evt.mes_referencia = mns.mes_referencia
and mns.id_cargo = crg.id
and crg.id = crm.id_cargo
and mns.mes_referencia = crm.mes_referencia
and crm.id_nivel_salarial = niv.id 
and inc.codigo in (727,1041,4128,4130,4140,4141,4142,226,227,300,303,363,424,707,709,712,713,909,910,1240,1241,1242,1314,1363,1364)--Adicional Noturno
and vms.rotina = 'FOL'
and mns.mes_referencia = 202305
and srv.id_pessoa = fis.id
and fis.cpf in (select cpf from #cds)
and srv.matricula not in (300148733,300148209,300148957,300148619,300149140)
order by ltc.codigo





select srv.matricula, pes.nome 
--update  rh.verba_periodica set fim = '2018-12-30'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and vba.codigo in (1041,4128,4130,4140,4141,4142,226,227,303,424,707,709,712,713,909,910,1240,1241,1242,1314,1363,1364,4642)--Adicional Noturno
and srv.matricula not in (select matricula from #cds)
and bse.id_lotacao_mensal = lms.id
and lms.id_lotacao = ltc.id
and mns.id_cargo = crg.id
and crg.id = cms.id_cargo
and cms.id_nivel_salarial = niv.id
and niv.nivel like 'Sau%'
and ltc.codigo not in  (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814)
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref
--and srv.matricula not in (300072590)



select srv.matricula, pes.nome 
--update  rh.verba_periodica set fim = '2018-10-30'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and vba.codigo in (1041,4128,4130,4140,4141,4142,226,227,303,424,707,709,712,713,909,910,1240,1241,1242,1314,1363,1364,4642)--Adicional Noturno
and srv.matricula not in (select matricula from #cds)
and bse.id_lotacao_mensal = lms.id
and lms.id_lotacao = ltc.id
and crg.id = cms.id_cargo
and cms.id_nivel_salarial = niv.id
and niv.nivel like 'Sau%'
and ltc.codigo not in  (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814)
and vra.inicio <> left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref
--and srv.matricula not in (300072590)


select srv.matricula, pes.nome 
--update  rh.verba_periodica set fim = '2018-10-30'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and vba.codigo in (727,1041,4128,4130,4140,4141,4142,226,227,303,424,707,709,712,713,909,910,1240,1241,1242,1314,1363,1364,4642)--Adicional Noturno
and srv.matricula not in (select matricula from #cds)
and bse.id_lotacao_mensal = lms.id
and lms.id_lotacao = ltc.id
and mns.id_cargo = crg.id
and crg.id = cms.id_cargo
and cms.id_nivel_salarial = niv.id
and niv.nivel not like 'Sau%'
and ltc.codigo not in  (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814)
and vra.inicio = left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref
--and srv.matricula not in (300072590)



select srv.matricula, pes.nome 
--update  rh.verba_periodica set fim = '2018-10-30'
from	rh.verba vba, 
		rh.verba_rotina rot,
		rh.verba_periodica vra, 
		rh.servidor srv,
		rh.servidor_mensal mns,
		rh.financeiro_mensal bse,
		admin.pessoa pes,
		rh.lotacao ltc,
		rh.lotacao_mensal lms,
		rh.cargo crg,
		rh.cargo_mensal cms,
		rh.nivel_salarial niv
where vba.id = rot.id_verba
and vba.id = vra.id_verba
and vra.id_servidor = srv.id
and srv.id = mns.id_servidor
and mns.id = bse.id_servidor_mensal
and pes.id = srv.id_pessoa
and vba.codigo in (2060,2260)
and vba.codigo in (727,1041,4128,4130,4140,4141,4142,226,227,303,424,707,709,712,713,909,910,1240,1241,1242,1314,1363,1364,4642)--Adicional Noturno
and srv.matricula not in (select matricula from #cds)
and bse.id_lotacao_mensal = lms.id
and lms.id_lotacao = ltc.id
and crg.id = cms.id_cargo
and cms.id_nivel_salarial = niv.id
and niv.nivel not like 'Sau%'
and ltc.codigo not in  (290,800,801,802,803,790,791,792,793,809,810,811,812,813,814)
and vra.inicio <> left(rtrim(convert(char(6),mns.mes_referencia)),4)+ '-' + right(rtrim(convert(char(6),mns.mes_referencia)),2) + '-01'
and ((vra.fim is null) or (vra.fim >= getdate()))
and rot.rotina = 'FOL'
and mns.mes_referencia = @mesref
--and srv.matricula not in (300072590)

57 - verificar verba exclusão BB

 use governa
--insert into rh.VERBA_EXCLUSAO_CARTA_REMESSA
select next value for rh.S_VRBA_EXCLUSAO_CARTA_REMESSA,
id_verba, 'PCB' from rh.VERBA_CONSIGNACAO where id_verba not in (1516,1594,1662,2050,2051)
and id_verba not in (select id_verba from rh.VERBA_EXCLUSAO_CARTA_REMESSA
where modelo_carta_remessa = 'PCB')