🛠️ Documentação Técnica: Configuração de Insumos
[!NOTE] Documentação Gerada Automaticamente O conteúdo abaixo foi gerado por IA através de engenharia reversa do código-fonte e deve ser validado.
A leitura completa do ConfiguracaoInsumos.aspx.cs foi realizada. Agora tenho todas as informações necessárias para gerar a documentação.
Documentação Base — C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\ConfiguracaoInsumos.aspx
👁️ 1. Visão Geral
A tela ConfiguracaoInsumos.aspx é responsável por permitir a configuração de insumos no sistema WebFopag. Ela permite o cadastro de novos insumos ou a edição de insumos existentes, associando-os a fornecedores, tipos de insumo, complementos de insumo e definindo regras de fornecimento. A tela também gerencia a situação (ativo/inativo) do insumo e lida com a exclusão, incluindo validações de vínculos.
🗂️ 2. Tipos/Modalidades
A tela opera em duas modalidades principais:
- Cadastro de Novo Insumo: Quando nenhum insumo é selecionado, a tela permite a criação de um novo insumo. O botão “Salvar” inicialmente age como “Avançar” para exibir as abas de configuração.
- Edição de Insumo Existente: Quando um insumo é carregado (via ID na sessão ou seleção no campo “Código Insumo”), a tela permite a edição de seus dados. O botão “Salvar” persiste as alterações.
A funcionalidade de “Configurar Para” (lsConfigurarPara) permite definir se o insumo é configurado para a empresa logada ou para um Centro de Serviço. Se configurado para Centro de Serviço e houver regras vinculadas, a edição e exclusão do insumo são restritas.
🖥️ 3. Interface — Campos e Controles
| Nome | Tipo | Obrigatório | Regra |
|---|---|---|---|
| lblConfigurarPara | Employer:Label | ⚪ Não | Rótulo para lsConfigurarPara |
| lsConfigurarPara | Employer:ListaSugestoes | ⚪ Não | TipoSugestao: Numero. Deixe em branco para configurar para a empresa logada. Carregado com ConfiguracaoPara.ListarConfigsPara(). |
| lblCodigoInsumo | Employer:Label | 🔴 Sim | Rótulo para txtCodigoInsumo |
| txtCodigoInsumo | Employer:LocalizarInsumo | 🔴 Sim | LabelVisivel: false, AutoWidth: 280px, MostrarCampo: Codigo, ModalWidth: 700. MensagemErroFormato: “Campo Inválido.”, MensagemErroFormatoSummary: “Campo Código Insumo é Inválido.”, MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Código Insumo é Obrigatório.”, MensagemErroInvalido: “Formato incorreto.”, MensagemErroInvalidoSummary: “Campo Código Insumo é Inválido.”, ConsiderarInsumosInativos: true. Evento OnValorAlterado chama txtCodigoInsumo_ValorAlterado. |
| lblTipoInsumo | Employer:Label | 🔴 Sim | Rótulo para txtTipoInsumo |
| txtTipoInsumo | Employer:LocalizarTipoInsumo | 🔴 Sim | SkinID: Obrigatorio, Width: 280px, LabelVisivel: false, ModalWidth: 700, Obrigatorio: true, ConsiderarTipoInsumoInativos: false. MensagemErroInvalido: “Campo Inválido.”, MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Tipo Insumo é Obrigatório.”, MensagemErroFormato: “Campo Inválido.”, MensagemErroFormatoSummary: “Campo Tipo Insumo é Inválido.”, MensagemErroInvalidoSummary: “Campo Tipo Insumo é Inválido.”, CadastroUrl: ”~/CadastroTiposComplementos.aspx”. Evento OnValorAlterado chama txtTipoInsumo_ValorAlterado. |
| lblComplementoInsumo | Employer:Label | 🔴 Sim | Rótulo para txtComplementoInsumo |
| txtComplementoInsumo | Employer:LocalizarComplementoInsumo | 🔴 Sim | SkinID: Obrigatorio, Width: 280px, LabelVisivel: false, ModalWidth: 700, Obrigatorio: true, ConsiderarComplementoInsumoInativos: false. MensagemErroInvalido: “Campo Inválido.”, MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Complemento Insumo é Obrigatório.”, MensagemErroFormato: “Campo Inválido.”, MensagemErroFormatoSummary: “Campo Complemento Insumo é Inválido.”, MensagemErroInvalidoSummary: “Campo Complemento Insumo é Inválido.”, CadastroUrl: ”~/CadastroTiposComplementos.aspx”. Evento OnCadastroClick chama txtComplementoInsumo_OnCadastroClick. |
| lblNomeInsumo | Employer:Label | 🔴 Sim | Rótulo para txtNomeInsumo |
| txtNomeInsumo | Employer:ControlAlfaNumerico | 🔴 Sim | Width: 280px, Tamanho: 50. MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Nome Insumo é Obrigatório.” |
| lblInativos | Employer:Label | 🔴 Sim | Rótulo para lsInativo |
| lsInativo | Employer:ListaSugestoes | 🔴 Sim | SkinID: Obrigatorio, TipoSugestao: Numero. MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Situação é Obrigatório.”, MensagemErroInvalido: “Campo Inválido.”, MensagemErroInvalidoSummary: “Campo Situação é Inválido.”. Evento OnValueChanged chama lsInativo_ValorAlterado. |
| ucDadosProdutoInsumo.lblFornecedor | Employer:Label | 🔴 Sim | Rótulo para ucDadosProdutoInsumo.txtFornecedor |
| ucDadosProdutoInsumo.txtFornecedor | Employer:LocalizarFornecedor | 🔴 Sim | SkinID: Obrigatorio, ModalWidth: 700, AutoWidth: 280. MensagemErroFormato: “Campo Inválido.”, MensagemErroFormatoSummary: “Campo Fornecedor é Inválido.”, MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Fornecedor é Obrigatório.” |
| ucDadosProdutoInsumo.lblCodigoInsumoFornecedor | Employer:Label | ⚪ Não | Rótulo para ucDadosProdutoInsumo.txtCodigoInsumoFornecedor |
| ucDadosProdutoInsumo.txtCodigoInsumoFornecedor | Employer:ControlAlfaNumerico | ⚪ Não | Tamanho: 30. |
| ucDadosProdutoInsumo.lblFornecimentoContinuo | Employer:Label | 🔴 Sim | Rótulo para ucDadosProdutoInsumo.lsFornecimentoContinuo |
| ucDadosProdutoInsumo.lsFornecimentoContinuo | Employer:ListaSugestoes | 🔴 Sim | TipoSugestao: Numero. MensagemErroInvalido: “Campo Inválido.”, MensagemErroInvalidoSummary: “Campo Fornecimento Contínuo é Inválido.”, MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Fornecimento Contínuo é Obrigatório.” |
| ucDadosProdutoInsumo.lblIdInsumo | Employer:Label | ⚪ Não | Rótulo para ucDadosProdutoInsumo.txtIdentificacaoInsumo |
| ucDadosProdutoInsumo.txtIdentificacaoInsumo | asp:TextBox | ⚪ Não | TextMode: MultiLine, Height: 80, Columns: 100, MaxLength: 255 (definido em código). |
| btnSalvar | Employer:Button | ⚪ Não | ToolTip: “Avançar” ou “Salvar”, Text: “Avançar” ou “Salvar”. Evento OnClick chama btnSalvar_OnClick. |
| btnExcluir | Employer:Button | ⚪ Não | ToolTip: “Excluir Produto”, Text: “Excluir”. Evento OnClick chama btnExcluir_OnClick. |
| btnLimpar | Employer:Button | ⚪ Não | ToolTip: “Limpar”, Text: “Limpar”. Evento OnClick chama btnLimpar_OnClick. |
| btnVoltar | Employer:Button | ⚪ Não | ToolTip: “Voltar”, Text: “Voltar”. Evento OnClick chama btnVoltar_OnClick. |
| buttonSalvarAvancar | Employer:Button | ⚪ Não | ToolTip: “Avançar”, Text: “Salvar e Avançar”. Evento OnClick chama btnSalvarAvancar_OnClick. |
| mConfigurarProduto | Employer:EmployerModalConfirmacao | ⚪ Não | Modal de confirmação genérica. Eventos OnConfirmar, OnCancelar, OnFecharModal. |
| pnlModalInativacao | Employer:Panel | ⚪ Não | Modal de confirmação de inativação. |
| lblTituloModalInativacao | Employer:Label | ⚪ Não | Rótulo do modal de inativação. |
| btnModalConfirmar | Employer:Button | ⚪ Não | Botão de confirmação no modal de inativação. Evento OnClick chama btnModalConfirmar_OnClick. |
| btnCancelar | Employer:Button | ⚪ Não | Botão de cancelar no modal de inativação. Evento OnClick chama btnCancelar_OnClick. |
| pnlModalExclusao | Employer:Panel | ⚪ Não | Modal de confirmação de exclusão. |
| lblExclusaoProduto | Employer:Label | ⚪ Não | Rótulo do modal de exclusão. |
| btnConfirmarExclusao | Employer:Button | ⚪ Não | Botão de confirmação no modal de exclusão. Evento OnClick chama btnConfirmarExclusao_OnClick. |
| btnCancelarExclusao | Employer:Button | ⚪ Não | Botão de cancelar no modal de exclusão. Evento OnClick chama btnCancelarExclusao_OnClick. |
| btlRegrasInsumos | asp:LinkButton | ⚪ Não | Link para a tela de regras de insumos. Evento OnClick chama btlRegrasInsumos_Click. |
| btlPermissoesFornecimento | asp:LinkButton | ⚪ Não | Link para a tela de permissão de fornecimento. Evento OnClick chama btlPermissaoFornecimentoInsumo_Click. |
📑 4. Abas e Seções
A tela é organizada em abas, controladas por um Employer:TabNavigator (tabDadosProdutoInsumo) dentro de um asp:UpdatePanel (upnConteudo).
-
Aba “Cadastro Insumos” (lblDados): É a aba inicial e principal, contendo os campos de cadastro do insumo.
-
divGvwErrosObrigatoriedadeCodRegul: Exibe erros de obrigatoriedade de código regulamentador. -
pnlValidacao: Contém oEmployer:EmployerValidationSummarypara exibir erros de validação. -
divGvwErros: Exibe erros gerais em umEmployer:EmployerGrid. -
painel_padrao: Contém os campos principais de configuração do insumo. -
divSituacao: Painel que contém o campo “Situação”, inicialmente invisível para novos insumos. -
pnlAbas: Painel que contém oTabNavigator, inicialmente invisível para novos insumos. -
tbDadosProdutoInsumo:Employer:TabViewque contém o UserControlucDadosProdutoInsumo. -
Aba “Regras Insumos” (btlRegrasInsumos): Redireciona para a tela
ConfiguracaoRegraInsumos.aspx. -
Aba “Permissão Fornecimento” (btlPermissoesFornecimento): Redireciona para a tela
PermissaoFornecimentoInsumos.aspx.
Modais:
mpeModalInativacao: Modal de confirmação para inativação de insumo.mpeModalExclusao: Modal de confirmação para exclusão de insumo.
🛡️ 5. Regras de Negócio
5.1. Validações de Campos
- Geral (ConfiguracaoInsumos.aspx.cs -
ValidarCampos()): txtTipoInsumo: Campo obrigatório. Se vazio, exibe a mensagem “Preencha o campo com o Tipo de Insumo.” e define o foco no campo.txtNomeInsumo: Campo obrigatório. Se vazio, exibe a mensagem “Preencha o campo com o Nome Insumo.” e define o foco no campo.lsInativo: Campo obrigatório. Se vazio, exibe a mensagem “O campo Inativo não pode estar em branco.” e define o foco no campo.- Validações de Página (
Page.Validate("vgSalvar")): Se houver erros de validação no grupo “vgSalvar”, exibe a mensagem “Existem valores inválidos, verifique os campos.” - UserControl
ucDadosProdutoInsumo(DadosProdutoInsumo.ascx.cs - ValidarCampos()): ucDadosProdutoInsumo.txtFornecedor: Campo obrigatório. Se vazio ou sem umIdFornecedorSelecionadoválido, exibe a mensagem “Preencha o campo fornecedor.”- Validações de Unicidade:
- Nome do Insumo: (
ConfiguracaoInsumos.aspx.cs - SalvarControles()) Antes de salvar, verifica se já existe um insumo com o mesmo nome (Insumo.VerificarInsumoPorNome). Se sim, exibe a mensagem “Já existe um insumo {0}.” (onde {0} é o nome do insumo) e impede o salvamento. - Nome do Complemento de Insumo: (
ComplementoInsumo_P2.cs - VerificarComplementoInsumoPorNome()) Verifica se já existe um complemento de insumo com a mesma descrição para o mesmo tipo de insumo, excluindo o próprio ID do complemento se for uma edição. - Nome do Tipo de Insumo: (
TipoInsumo_P2.cs - VerificarTipoInsumoPorNome()) Verifica se já existe um tipo de insumo com a mesma descrição, excluindo o próprio ID do tipo de insumo se for uma edição. - Descrição da Configuração de Complemento: (
ConfiguracaoInsumo_P2.cs - ExisteDescricaoConfiguracaoComplemento()) Verifica se já existe uma descrição de configuração de complemento para uma configuração de insumo, excluindo o próprio ID da configuração se for uma edição.
5.2. Regras de Habilitação/Desabilitação e Visibilidade
- Inicialização da Tela (
ConfiguracaoInsumos.aspx.cs - Inicializar()): txtCodigoInsumo.IdEmpresaé preenchido com oCodigoEmpresado usuário logado.lsInativoé carregado com as opções “Ativo” (0) e “Inativo” (1), com “Ativo” selecionado por padrão.lsConfigurarParaé carregado com as opções retornadas porConfiguracaoPara.ListarConfigsPara().- O foco inicial da tela é definido para
txtTipoInsumo. - Se
IdInsumo(armazenado naViewStateou vindo da sessão) tiver um valor,txtCodigoInsumoé preenchido, eCarregarDados()é chamado. - Controle de Acesso e Redirecionamento (
ConfiguracaoInsumos.aspx.cs - ConfigurarPermissoes()): - A tela só é acessível se o parâmetro de sistema
UtilizaModuloInsumosfortruepara a empresa logada E oNomeCentroServicofor “employer”. Caso contrário, o usuário é redirecionado paraResources.Configuracao.UrlAcessoNegado. - Se o usuário não possuir a permissão
Enum.Permissoes.Insumos.VisualizarConfiguracaoInsumos: - Se possuir
Enum.Permissoes.Insumos.VisualizarRegraInsumo, é redirecionado para~/ConfiguracaoRegraInsumos.aspx. - Caso contrário, se possuir
Enum.Permissoes.Insumos.VisualizarPermissaoFornecimentoInsumos, é redirecionado para~/PermissaoFornecimentoInsumos.aspx. - Se não possuir nenhuma das permissões acima, é redirecionado para
Configuracao.UrlAcessoNegado. - Fluxo de Novo Insumo (Primeiro Salvar) (
ConfiguracaoInsumos.aspx.cs - SalvarDados()): - Quando um novo insumo está sendo cadastrado (detectado por
!divSituacao.Visible), o primeiro clique no botão “Salvar” (que exibe “Avançar”) realiza validações iniciais. Se bem-sucedidas: divSituacaoepnlAbastornam-se visíveis.- O texto do botão
btnSalvaré alterado para “Salvar”. - A aba
tbDadosProdutoInsumoé ativada. - Carregamento de Dados de Insumo Existente (
ConfiguracaoInsumos.aspx.cs - CarregarDados()): - Se um insumo existente é carregado:
txtTipoInsumoetxtComplementoInsumosão desabilitados.txtCodigoInsumoé desabilitado.divSituacaoepnlAbassão tornados visíveis.- O texto do
btnSalvaré alterado para “Salvar”. - Se o insumo estiver configurado para “Centro de Serviço” (
objInsumo.ConfiguracaoPara.IdfConfiguracaoPara == 0) EExisteRegraVinculada(IdInsumo.Value)fortrue, o campolsConfigurarParaé desabilitado. Caso contrário, é habilitado. - Se
lsInativo.ValorIntfor “Sim” (1), o botãobuttonSalvarAvancaré desabilitado. - Alteração da Situação do Insumo (
ConfiguracaoInsumos.aspx.cs - lsInativo_ValorAlterado()): - Se o valor selecionado em
lsInativofor “Sim” (1), o botãobuttonSalvarAvancaré desabilitado. Caso contrário, é habilitado. - Restrição de Edição/Exclusão para Insumos de Centro de Serviço com Regras (
ConfiguracaoInsumos.aspx.cs - PodeSerEditadoOuExcluido()): - Se o insumo estiver configurado para Centro de Serviço (
ProdutoConfiguradoPorCS(IdInsumo.Value)) E houver regras vinculadas (ExisteRegraVinculada(IdInsumo.Value)), o insumo não pode ser editado ou excluído. Uma mensagem de aviso “Produtos configurados para Centro de Serviço com regras vinculadas não podem ser editados ou excluídos.” é exibida.
5.3. Regras de Inativação e Exclusão
- Validação de Inativação (
ConfiguracaoInsumos.aspx.cs - ValidarInativacao()): - Se um insumo existente (
txtCodigoInsumo.IdInsumoSelecionado.HasValue) for marcado como “Inativo” (lsInativo.ValorInt == Enum.Flag.Sim.GetHashCode()) EExisteRegraVinculada()fortrue, o modalmpeModalInativacaoé exibido com a mensagem “Existem configurações de regras vinculadas ao produto. Deseja inativar?”, impedindo a inativação direta. - Confirmação de Inativação (
ConfiguracaoInsumos.aspx.cs - btnModalConfirmar_OnClick()): - Ao confirmar a inativação no modal, o método
GrupoFiltroInsumo.InativarArvoreInsumo(base.CodigoEmpresa, base.CodigoUsuarioLogado, null, null, IdInsumo.Value, out msg)é chamado. - Se a inativação da árvore for bem-sucedida, uma mensagem de aviso (
msg) é exibida,SalvarControles(true)é chamado para persistir a inativação do insumo, os controles da tela são limpos (LimparControles()) e o modal é ocultado. - Se houver erro na inativação da árvore, a mensagem de erro (
msg) é exibida. - Validação de Exclusão (
ConfiguracaoInsumos.aspx.cs - ValidarExclusao()): - Se um insumo existente (
txtCodigoInsumo.IdInsumoSelecionado.HasValue) tiver vínculos que impedem a exclusão (Insumo.ExisteVinculoExclusaoInsumo(txtCodigoInsumo.IdInsumoSelecionado.Value)), o modalmpeModalExclusaoé exibido com a mensagem “Existem configurações de regras vinculadas ao produto. Deseja excluir?”. - Confirmação de Exclusão (
ConfiguracaoInsumos.aspx.cs - btnConfirmarExclusao_OnClick()): - Ao confirmar a exclusão no modal, o método
ExcluirInsumo()(da tela principal) é chamado. - Lógica de Exclusão (
ConfiguracaoInsumos.aspx.cs - ExcluirInsumo()): - Chama
Insumo.ExcluirInsumo(CodigoEmpresa, IdInsumo.Value, null, null, out msg). Este método BLL, por sua vez, chama a stored procedureplataforma.TAB_SP_Excluir_Configuracao_Insumo. - Se a exclusão for bem-sucedida, a mensagem de sucesso (
msg) é exibida e os controles são limpos. Caso contrário, a mensagem de erro (msg) é exibida. - Se nenhum insumo estiver carregado para exclusão, exibe a mensagem “Nenhum insumo foi carregado para exclusão.”.
- O modal
mpeModalExclusaoé ocultado após a tentativa de exclusão. - Inativação de Tipo de Insumo com Vínculos (
TipoInsumo_P2.cs - SalvarComDependencias()): - Se um tipo de insumo estiver sendo inativado (
!flagInativoAnterior && flagInativoNovo) e possuir vínculos com insumos ativos (TipoInsumo.VerificarVinculoComInsumoAtivo(idTipoInsumo.Value, trans)), umaInvalidOperationExceptioné lançada com a mensagem “Não é possível inativar o registro, pois o mesmo está sendo utilizado.”. - Se a inativação do tipo de insumo for permitida, todos os complementos de insumo associados a ele são inativados (
ComplementoInsumo.InativarPorTipoInsumo(idPersistido, trans)).
5.4. Regras de Salvar e Fluxo de Configuração
- Salvar Dados (
ConfiguracaoInsumos.aspx.cs - SalvarDados()): - Primeiro Salvar (Novo Insumo): Se a
divSituacaonão estiver visível (indicando um novo insumo), o método valida os campos iniciais (Page.Validate("vgSalvar")). Se válidos,divSituacaoepnlAbastornam-se visíveis, o texto dobtnSalvarmuda para “Salvar”, a abatbDadosProdutoInsumoé ativada, e o método retornafalse(não persiste ainda, apenas avança no fluxo de UI). - Validação de Campos: Chama
ValidarCampos()(da tela principal) eucDadosProdutoInsumo.ValidarCampos()(do UserControl). Se alguma validação falhar, exibe a mensagem de erro correspondente e retornafalse. - Validação de Inativação: Chama
ValidarInativacao(). Se retornarfalse(indicando que o modal de inativação foi exibido), interrompe o fluxo de salvamento. - Persistência (
SalvarControles()): - Verifica a unicidade do nome do insumo (
Insumo.VerificarInsumoPorNome). Se duplicado, exibe erro e retornafalse. - Cria um novo objeto
Insumoou carrega um existente (Insumo.LoadObject(IdInsumo.Value)). - Popula as propriedades do
objInsumo: ConfiguracaoPara: CarregaConfiguracaoPara.LoadObject(lsConfigurarPara.ValorInt.Value)selsConfigurarParativer valor, caso contrário, usaConfiguracaoPara.LoadObject(1)(que representa a configuração para “Empresa”).TipoInsumo: CarregaTipoInsumo.LoadObject(txtTipoInsumo.IdTipoInsumoSelecionado.Value).ComplementoInsumo: CarregaComplementoInsumo.LoadObject(txtComplementoInsumo.IdComplementoInsumoSelecionado.Value).NomeInsumo:txtNomeInsumo.Text.FlagInativo:lsInativo.ValorBooleano ?? false.Empresa:Empresa.LoadObject(CodigoEmpresa).- As demais propriedades são preenchidas pelo método
ucDadosProdutoInsumo.SalvarDados(ref objInsumo). - Chama
objInsumo.Save()para persistir os dados no banco de dados (que internamente chamaInsertouUpdate). - Atualiza
IdInsumonaViewStatecom o ID do insumo salvo. - Exibe mensagem de sucesso: “Insumo salvo com sucesso.”
- Retorna
truese o salvamento for bem-sucedido. - Salvar e Avançar (
ConfiguracaoInsumos.aspx.cs - btnSalvarAvancar_OnClick()): - Realiza as mesmas validações e lógica de salvamento de
btnSalvar_OnClick. - Se o salvamento for bem-sucedido (
SalvarDados()retornatrue): PreencherVariaveisSessao(): SalvaIdInsumo,IdTipoInsumo,IdComplementoInsumo,txtNomeInsumo.TexteIdConfiguracaoInsumona sessão para uso em telas subsequentes.- Redireciona para
ConfiguracaoRegraInsumos.aspx(viabtlRegrasInsumos_Click). - Salvar Filtro de Grupo de Insumo (
GrupoFiltroInsumo_P2.cs - SalvarFiltro()): - Salva o
objGrupoFiltroInsumoe seuAlteracaoMaster(se existir) dentro de uma transação. - Chama
CancelarVinculoInsumo()para ajustar os vínculos de empregados. - Se
flagInsumoObrigatoriofortrue, tenta chamarFornecerInsumoAutomatico()para o grupo. - Comita a transação e envia para a fila de cálculo (
FilaCalculoTransactionSingleton.EnviarParaCalculo). - Em caso de erro, faz rollback e loga a exceção.
- Atualização de Insumo (
Insumo_P2.cs - Update()): - Após a atualização do insumo, recupera os insumos fornecidos não pagos (
RecuperarInsumosFornecidosNaoPagosPorInsumo) e os envia para a fila RabbitMQFilaRabbitMQ.Insumospara reprocessamento. - Atualização de Tipo de Insumo com Dependências (
TipoInsumo_P2.cs - SalvarComDependencias()): - Se o nome de um tipo de insumo for alterado, chama
ConfiguracaoInsumo.AtualizarNomeRegrasPorTipoInsumo()para atualizar os nomes das regras vinculadas.
5.5. Outras Regras Específicas da Tela
- Redirecionamento para Cadastro de Tipos/Complementos (
ConfiguracaoInsumos.aspx.cs - txtComplementoInsumo_OnCadastroClick()): - Define uma variável de sessão (
Chave.Temporaria.Variavel5) comotruee redireciona o usuário para a telaCadastroTiposComplementos.aspx. - Limpeza de Controles (
ConfiguracaoInsumos.aspx.cs - LimparControles()): - Reseta todos os campos da tela principal e do UserControl
ucDadosProdutoInsumo. - Limpa os IDs armazenados na
ViewState(IdInsumo,IdTipoInsumo,IdComplementoInsumo). - Habilita
txtCodigoInsumo,txtTipoInsumoetxtComplementoInsumo. - Oculta
divSituacaoepnlAbas. - Define
bNovoInsumocomofalse. - Limpa a tabela de erros (
DtErros). - Redefine o texto do
btnSalvarpara “Avançar”. - Limpa a variável de sessão “IdInsumo”.
- Recálculo de Insumos Mês Vigente (Modal de Confirmação -
mConfigurarProduto_OnCancelar()): - Se o texto do botão “Cancelar” do modal
mConfigurarProdutofor “Recalcular Insumos Mês Vigente”, define a variável de sessãoChave.Temporaria.Variavel5comotruee redireciona paraInsumosLote.aspx. - Integração com Fila de Cálculo (
Empresa_P2.cs - UpdateEmpregados()): - Quando uma empresa é atualizada, o método
UpdateEmpregadosé chamado para identificar empregados ativos e com verbas manuais que precisam ser recalculados e os insere na fila de cálculo (FilaCalculoV2Helper.SalvarEnviarParaCalculo). - Fornecimento Automático de Insumo (
GrupoFiltroInsumo_P2.cs - FornecerInsumoAutomatico()): - Lista empregados para inclusão automática (
EmpregadoInsumo.ListaEmpregadosInclusaoFornecerAutomatico). - Realiza um
BulkInsertdos empregados na tabelaEmpregadoInsumo. - Chama
InsumoFornecido.ProcessoRecalculoPorGrupoFiltroInsumoe, se houver empregados, envia para a fila RabbitMQFilaRabbitMQ.VinculoInsumos. - Fornecimento de Insumo na Admissão (
GrupoFiltroInsumo_P2.cs - FornecerInsumoAdmissaoEmpregado()): - Lista todos os grupos de filtro de insumo obrigatórios para um empregado (
GrupoFiltroInsumo.ListaTodosGruposByEmpregadoTipoInsumo). - Realiza um
BulkInsertdos empregados nos grupos de filtro obrigatórios. - Envia para a fila RabbitMQ
FilaRabbitMQ.VinculoInsumos.
Compreendido. Vou gerar as seções 6, 7, 8 e 9, focando nos detalhes e seguindo as regras de formatação e profundidade.
🔄 6. Fluxos Principais
- Inicialização da Tela (
Page_Load):
Page_Load(ConfiguracaoInsumos.aspx.cs)- Verifica se é
IsPostBack. - Se não for
PostBack: - Verifica
AcessoModuloWebEstagioe ajustaScriptModedo MasterPage setrue. - Chama
Inicializar(). ConfigurarPermissoes():- Verifica o parâmetro
UtilizaModuloInsumose oNomeCentroServico(deve ser “employer”). - Chama
Usuario.CarregarPermissoes(new Usuario(CodigoUsuarioLogado), Enum.CategoriaPermissao.Insumos)para obter as permissões do usuário. - Redireciona para
UrlAcessoNegado,ConfiguracaoRegraInsumos.aspxouPermissaoFornecimentoInsumos.aspxconforme as permissões. - Configura
txtCodigoInsumo.IdEmpresacom oCodigoEmpresado usuário logado. - Carrega
lsInativocom as opções “Ativo” (0) e “Inativo” (1), selecionando “Ativo” por padrão. - Carrega
lsConfigurarParacom os dados deConfiguracaoPara.ListarConfigsPara(). - Define o foco para
txtTipoInsumo. - Se
IdInsumo(daViewStateou sessão) tiver valor: - Preenche
txtCodigoInsumo.IdInsumoSelecionadoetxtCodigoInsumo.Texto. - Chama
CarregarDados().
- Carregar Dados de Insumo Existente (
txtCodigoInsumo_ValorAlteradoouInicializar):
txtCodigoInsumo_ValorAlterado(ConfiguracaoInsumos.aspx.cs)- Se
txtCodigoInsumo.IdInsumoSelecionadotiver valor: - Define
bNovoInsumo = false. - Chama
ucDadosProdutoInsumo.LimparControles(). - Define
ucDadosProdutoInsumo.IdTipoInsumocom oIdTipoInsumoatual. - Atualiza
IdInsumonaViewStatecom o ID selecionado. - Chama
CarregarDados(). - Cria
Insumo objInsumo = new Insumo(IdInsumo.Value). - Chama
objInsumo.CompleteObject()para preencher o objetoInsumocom dados do banco. - Ativa a aba
tbDadosProdutoInsumo. - Preenche
txtTipoInsumo.IdTipoInsumoSelecionado,txtComplementoInsumo.IdComplementoInsumoSelecionado,txtNomeInsumo.Text,lsInativo.ValorInt. - Desabilita
txtTipoInsumo,txtComplementoInsumo,txtCodigoInsumo. - Chama
ucDadosProdutoInsumo.CarregarDados(objInsumo). - Torna
divSituacaoepnlAbasvisíveis. - Muda o texto do
btnSalvarpara “Salvar”. - Se
objInsumo.ConfiguracaoPara.IdfConfiguracaoPara == 0(Centro de Serviço) eExisteRegraVinculada(IdInsumo.Value)fortrue, desabilitalsConfigurarPara. Caso contrário, habilita. - Se
txtCodigoInsumo.IdInsumoSelecionadonão tiver valor, chamaLimparControles(). - Limpa
DtErrose ocultadivGvwErrosObrigatoriedadeCodRegul. - Define o foco para
txtTipoInsumo.
- Salvar Insumo (
btnSalvar_OnClick):
btnSalvar_OnClick(ConfiguracaoInsumos.aspx.cs)- Se
EhEdicao()fortrue, verificaPodeSerEditadoOuExcluido(). Sefalse, exibe aviso e retorna. - Chama
SalvarDados(). - Fluxo de Novo Insumo (primeiro clique): Se
divSituacao.Visibleforfalse: - Valida
Page.IsValidparavgSalvar. - Se inválido, exibe “Existem valores inválidos, favor verificar.” e retorna
false. - Torna
divSituacaoepnlAbasvisíveis. - Muda
btnSalvar.TextebtnSalvar.ToolTippara “Salvar”. - Ativa a aba
tbDadosProdutoInsumo. - Retorna
false(não persiste ainda, apenas avança na UI). - Fluxo de Edição ou Segundo Clique (Novo Insumo):
- Chama
ValidarCampos()(da tela principal). Sefalse, exibe erro e retornafalse. - Chama
ValidarInativacao(). Sefalse(modal de inativação exibido), retornafalse. - Chama
SalvarControles(). - Verifica
Insumo.VerificarInsumoPorNome()para unicidade do nome do insumo. Se duplicado, exibe erro e retornafalse. - Cria um novo objeto
Insumoou carrega um existente (Insumo.LoadObject(IdInsumo.Value)). - Popula
objInsumo.ConfiguracaoPara,objInsumo.TipoInsumo,objInsumo.ComplementoInsumo,objInsumo.NomeInsumo,objInsumo.FlagInativo,objInsumo.Empresacom dados dos controles. - Chama
ucDadosProdutoInsumo.SalvarDados(ref objInsumo)para preencher as propriedades do UserControl. - Chama
objInsumo.Save()para persistir os dados no banco. - Atualiza
IdInsumonaViewState. - Exibe “Insumo salvo com sucesso.”
- Retorna
true.
- Salvar e Avançar (
btnSalvarAvancar_OnClick):
btnSalvarAvancar_OnClick(ConfiguracaoInsumos.aspx.cs)- Se
EhEdicao()fortrue, verificaPodeSerEditadoOuExcluido(). Sefalse, exibe aviso e retorna. - Chama
SalvarDados(). - Se
SalvarDados()retornartrue: PreencherVariaveisSessao(): SalvaIdInsumo,IdTipoInsumo,IdComplementoInsumo,txtNomeInsumo.TexteIdConfiguracaoInsumona sessão.- Chama
btlRegrasInsumos_Click(null, null)para redirecionar paraConfiguracaoRegraInsumos.aspx.
- Excluir Insumo (
btnExcluir_OnClick):
btnExcluir_OnClick(ConfiguracaoInsumos.aspx.cs)- Se
IdInsumotiver valor, verificaPodeSerEditadoOuExcluido(). Sefalse, exibe aviso e retorna. - Chama
ValidarExclusao(). - Se
Insumo.ExisteVinculoExclusaoInsumo()fortrue, exibempeModalExclusaoe retornatrue(para indicar que o modal foi exibido). - Se
ValidarExclusao()retornarfalse(nenhum vínculo ou modal não exibido), chamaExcluirInsumo()(da tela principal). ExcluirInsumo()(ConfiguracaoInsumos.aspx.cs)- Se
IdInsumotiver valor: - Chama
Insumo.ExcluirInsumo(CodigoEmpresa, IdInsumo.Value, null, null, out msg). - Se sucesso, exibe
msg(aviso) e chamaLimparControles(). - Se falha, exibe
msg(erro). - Se
IdInsumonão tiver valor, exibe “Nenhum insumo foi carregado para exclusão.”. - Oculta
mpeModalExclusao.
- Inativar Insumo (via modal de inativação):
btnModalConfirmar_OnClick(ConfiguracaoInsumos.aspx.cs)- Chama
GrupoFiltroInsumo.InativarArvoreInsumo(base.CodigoEmpresa, base.CodigoUsuarioLogado, null, null, IdInsumo.Value, out msg). - Se a inativação da árvore for bem-sucedida:
- Exibe
msg(aviso). - Chama
SalvarControles(true)para persistir a inativação do insumo. - Chama
LimparControles(). - Oculta
mpeModalInativacao. - Define o foco para
txtCodigoInsumo. - Se houver erro na inativação da árvore, exibe
msg(erro).
- Limpar Tela (
btnLimpar_OnClick):
btnLimpar_OnClick(ConfiguracaoInsumos.aspx.cs)- Redireciona para
ConfiguracaoInsumos.aspx(recarrega a página, limpando todos os estados).
- Voltar (
btnVoltar_OnClick):
btnVoltar_OnClick(ConfiguracaoInsumos.aspx.cs)- Define
IdInsumo = null. - Redireciona para
MenuMaisOpcoes.aspx?opcao=L.
- Navegação para Regras de Insumos (
btlRegrasInsumos_Click):
btlRegrasInsumos_Click(ConfiguracaoInsumos.aspx.cs)- Chama
PreencherVariaveisSessao()para salvar IDs relevantes na sessão. - Redireciona para
~/ConfiguracaoRegraInsumos.aspx.
- Navegação para Permissão de Fornecimento (
btlPermissaoFornecimentoInsumo_Click):
btlPermissaoFornecimentoInsumo_Click(ConfiguracaoInsumos.aspx.cs)- Chama
Usuario.CarregarPermissoes(new Usuario(CodigoUsuarioLogado), Enum.CategoriaPermissao.Insumos). - Se o usuário não tiver a permissão
Enum.Permissoes.Insumos.VisualizarPermissaoFornecimentoInsumos, redireciona paraConfiguracao.UrlAcessoNegado. - Caso contrário:
- Chama
PreencherVariaveisSessao(). - Redireciona para
~/PermissaoFornecimentoInsumos.aspx.
🔌 7. Integrações e Dependências
7.1. Classes BLL e Service utilizadas
Employer.Plataforma.BLL.ComplementoInsumo- Arquivos:
Employer.Plataforma.BLL\ComplementoInsumo_P1.cs,Employer.Plataforma.BLL\ComplementoInsumo_P2.cs - Métodos Chamados pela Tela:
LoadObject(int idComplementoInsumo): Carrega um objetoComplementoInsumopelo seu ID. Utilizado emSalvarControlespara associar o complemento de insumo ao objetoInsumoe emCarregarDadospara preencher o UserControl.InativarPorTipoInsumo(int idTipoInsumo, SqlTransaction trans): Inativa todos os complementos de insumo associados a umidTipoInsumoespecífico. Chamado dentro deTipoInsumo.SalvarComDependenciasquando um tipo de insumo é inativado.Employer.Plataforma.BLL.ConfiguracaoInsumo- Arquivos:
Employer.Plataforma.BLL\ConfiguracaoInsumo_P1.cs,Employer.Plataforma.BLL\ConfiguracaoInsumo_P2.cs - Métodos Chamados pela Tela:
ExisteRegraVinculadaPeloIdInsumo(int idInsumo): Verifica se existe alguma regra de configuração de insumo vinculada a umidInsumo. Utilizado emValidarInativacaoePodeSerEditadoOuExcluidopara verificar restrições de inativação/edição/exclusão.AtualizarNomeRegrasPorTipoInsumo(int idTipoInsumo, SqlTransaction trans): Atualiza o nome das regras de insumo quando o nome do tipo de insumo é alterado. Chamado dentro deTipoInsumo.SalvarComDependencias.Employer.Plataforma.BLL.ConfiguracaoPara- Arquivos:
Employer.Plataforma.BLL\ConfiguracaoPara_P1.cs,Employer.Plataforma.BLL\ConfiguracaoPara_P2.cs - Métodos Chamados pela Tela:
ListarConfigsPara(): Retorna umIDataReadercom todas as configurações “Para” (Centro de Serviço, Empresa). Utilizado emInicializarpara popular olsConfigurarPara.LoadObject(int id): Carrega um objetoConfiguracaoParapelo seu ID. Utilizado emSalvarControlespara associar a configuração “Para” ao objetoInsumo.Employer.Plataforma.BLL.Empresa- Arquivos:
Employer.Plataforma.BLL\Empresa_P1.cs,Employer.Plataforma.BLL\Empresa_P2.cs,Employer.Plataforma.BLL\Empresa_P3.cs - Métodos Chamados pela Tela:
LoadObject(int idEmpresa): Carrega um objetoEmpresapelo seu ID. Utilizado emSalvarControlespara associar a empresa logada ao objetoInsumo.Employer.Plataforma.BLL.GrupoFiltroInsumo- Arquivos:
Employer.Plataforma.BLL\GrupoFiltroInsumo_P1.cs,Employer.Plataforma.BLL\GrupoFiltroInsumo_P2.cs - Métodos Chamados pela Tela:
InativarArvoreInsumo(int pIdEmpresa, int pIdUsuario, int? pIdGrupoFiltroInsumo, int? pIdConfiguracaoInsumo, int? pIdInsumo, out string mensagemRetorno): Inativa a árvore de insumos (grupos de filtro, configurações e insumos) para um determinado insumo. Chamado embtnModalConfirmar_OnClickpara processar a inativação.Employer.Plataforma.BLL.Insumo- Arquivos:
Employer.Plataforma.BLL\Insumo_P1.cs,Employer.Plataforma.BLL\Insumo_P2.cs - Métodos Chamados pela Tela:
LoadObject(int idInsumo): Carrega um objetoInsumopelo seu ID. Utilizado emCarregarDadospara preencher a tela e emProdutoConfiguradoPorCSpara verificar a configuração.VerificarInsumoPorNome(int? idfInsumo, string nomeInsumo): Verifica se já existe um insumo com onomeInsumofornecido, excluindo oidfInsumoatual (se houver). Utilizado emSalvarControlespara validação de unicidade.Save(): Salva o objetoInsumo(insert ou update). Utilizado emSalvarControlespara persistir os dados.ExisteVinculoExclusaoInsumo(int idInsumo): Verifica se existem vínculos que impedem a exclusão de um insumo. Utilizado emValidarExclusaopara exibir o modal de exclusão.ExcluirInsumo(int pIdEmpresa, int? pIdInsumo, int? pIdConfiguracaoInsumo, int? pIdGrupoFiltroInsumo, out string pMensagem): Exclui um insumo, realizando validações de período de cálculo e retornando uma mensagem. Chamado emExcluirInsumo(da tela principal) após a confirmação no modal.Employer.Plataforma.BLL.Parametro- Arquivos:
Employer.Plataforma.BLL\Parametro_P1.cs,Employer.Plataforma.BLL\Parametro_P2.cs - Métodos Chamados pela Tela:
RecuperaValorParametro(BLL.Enumeradores.NomeParametro idParametro, int CodigoEmpresa, null, null, null, null): Recupera o valor de um parâmetro do sistema. Utilizado emConfigurarPermissoespara verificar o parâmetroUtilizaModuloInsumos.Employer.Plataforma.BLL.TipoInsumo- Arquivos:
Employer.Plataforma.BLL\TipoInsumo_P1.cs,Employer.Plataforma.BLL\TipoInsumo_P2.cs - Métodos Chamados pela Tela:
LoadObject(int idTipoInsumo): Carrega um objetoTipoInsumopelo seu ID. Utilizado emSalvarControlespara associar o tipo de insumo ao objetoInsumo.Employer.Plataforma.BLL.Usuario- Arquivos:
Employer.Plataforma.BLL\Usuario_P1.cs,Employer.Plataforma.BLL\Usuario_P2.cs - Métodos Chamados pela Tela:
CarregarPermissoes(new Usuario(CodigoUsuarioLogado), Enum.CategoriaPermissao.Insumos): Carrega as permissões do usuário logado para a categoria “Insumos”. Utilizado emConfigurarPermissoesebtlPermissaoFornecimentoInsumo_Clickpara controle de acesso.
7.2. Stored Procedures chamadas
ComplementoInsumo_P1.csINSERT INTO plataforma.TAB_Complemento_Insumo (Idf_Tipo_Insumo, Des_Complemento_Insumo, Flg_Inativo, Dta_Cadastro) VALUES (@Idf_Tipo_Insumo, @Des_Complemento_Insumo, @Flg_Inativo, @Dta_Cadastro);SET @Idf_Complemento_Insumo = SCOPE_IDENTITY();- Parâmetros:
@Idf_Tipo_Insumo,@Des_Complemento_Insumo,@Flg_Inativo,@Dta_Cadastro.@Idf_Complemento_Insumo(OUTPUT). - Propósito: Insere um novo registro na tabela
plataforma.TAB_Complemento_Insumo. UPDATE plataforma.TAB_Complemento_Insumo SET Idf_Tipo_Insumo = @Idf_Tipo_Insumo, Des_Complemento_Insumo = @Des_Complemento_Insumo, Flg_Inativo = @Flg_Inativo, Dta_Cadastro = @Dta_Cadastro WHERE Idf_Complemento_Insumo = @Idf_Complemento_Insumo- Parâmetros:
@Idf_Tipo_Insumo,@Des_Complemento_Insumo,@Flg_Inativo,@Dta_Cadastro,@Idf_Complemento_Insumo. - Propósito: Atualiza um registro existente na tabela
plataforma.TAB_Complemento_Insumo. DELETE FROM plataforma.TAB_Complemento_Insumo WHERE Idf_Complemento_Insumo = @Idf_Complemento_Insumo- Parâmetros:
@Idf_Complemento_Insumo. - Propósito: Exclui um registro da tabela
plataforma.TAB_Complemento_Insumo. SELECT * FROM plataforma.TAB_Complemento_Insumo- Parâmetros: Nenhum.
- Propósito: Retorna todos os registros da tabela
plataforma.TAB_Complemento_Insumo. SELECT * FROM plataforma.TAB_Complemento_Insumo WHERE Idf_Complemento_Insumo = @Idf_Complemento_Insumo- Parâmetros:
@Idf_Complemento_Insumo. - Propósito: Retorna um registro específico da tabela
plataforma.TAB_Complemento_Insumopelo ID. ComplementoInsumo_P2.csSELECT COUNT(1) FROM plataforma.TAB_Complemento_Insumo WHERE Idf_Tipo_Insumo = @Idf_Tipo_Insumo AND Des_Complemento_Insumo = @Des_Complemento_Insumo AND (@Idf_Complemento_Insumo IS NULL OR Idf_Complemento_Insumo <> @Idf_Complemento_Insumo)(SPVERIFICARCOMPLEMENTOINSUMOPORNOME)- Parâmetros:
@Idf_Tipo_Insumo,@Des_Complemento_Insumo,@Idf_Complemento_Insumo. - Propósito: Verifica a existência de um complemento de insumo com o mesmo nome para um tipo de insumo.
SELECT * FROM plataforma.TAB_Complemento_Insumo WHERE Idf_Tipo_Insumo = @Idf_Tipo_Insumo {0} ORDER BY Des_Complemento_Insumo(SplistarPorTipoInsumo)- Parâmetros:
@Idf_Tipo_Insumo. - Propósito: Lista complementos de insumo por tipo de insumo, com filtro opcional de inatividade.
SELECT COUNT(1) FROM TAB_Insumo WHERE Idf_Complemento_Insumo = @Idf_Complemento_Insumo(SPVERIFICARUTILIZACAO)- Parâmetros:
@Idf_Complemento_Insumo. - Propósito: Verifica se um complemento de insumo está sendo utilizado em
TAB_Insumo. UPDATE plataforma.TAB_Complemento_Insumo SET Flg_Inativo = 1 WHERE Idf_Tipo_Insumo = @Idf_Tipo_Insumo(SPINATIVARPORTIPOINSUMO)- Parâmetros:
@Idf_Tipo_Insumo. - Propósito: Inativa todos os complementos de insumo para um determinado tipo de insumo.
SELECT COUNT(1) FROM TAB_Insumo I WHERE 1 = 1 AND I.Idf_Complemento_Insumo = @Idf_Complemento_Insumo AND I.Flg_Inativo = 0(SQL inline emVerificarVinculoComInsumoAtivo)- Parâmetros:
@Idf_Complemento_Insumo. - Propósito: Verifica se há vínculo de Tipo de Insumo com algum produto de Insumo Ativo.
ConfiguracaoInsumo_P1.csINSERT INTO TAB_Configuracao_Insumo (Nme_Configuracao_Insumo, Des_Configuracao_Complemento, Flg_Inativo, Dta_Cadastro, Dta_Alteracao, Idf_Empresa, Idf_Filial, Idf_Usuario_Gerador, Idf_Insumo, Idf_Metodo_Fornecimento, Idf_Forma_Fornecimento_Insumo, Num_Parcelas_Fornecimento, Idf_Periodicidade_Insumo, Vlr_Unitario, Flg_Permite_Alterar_Valor, Qtd_Insumo, Flg_Fornecer_Admissao) VALUES (@Nme_Configuracao_Insumo, @Des_Configuracao_Complemento, @Flg_Inativo, @Dta_Cadastro, @Dta_Alteracao, @Idf_Empresa, @Idf_Filial, @Idf_Usuario_Gerador, @Idf_Insumo, @Idf_Metodo_Fornecimento, @Idf_Forma_Fornecimento_Insumo, @Num_Parcelas_Fornecimento, @Idf_Periodicidade_Insumo, @Vlr_Unitario, @Flg_Permite_Alterar_Valor, @Qtd_Insumo, @Flg_Fornecer_Admissao);SET @Idf_Configuracao_Insumo = SCOPE_IDENTITY();- Parâmetros:
@Nme_Configuracao_Insumo,@Des_Configuracao_Complemento,@Flg_Inativo,@Dta_Cadastro,@Dta_Alteracao,@Idf_Empresa,@Idf_Filial,@Idf_Usuario_Gerador,@Idf_Insumo,@Idf_Metodo_Fornecimento,@Idf_Forma_Fornecimento_Insumo,@Num_Parcelas_Fornecimento,@Idf_Periodicidade_Insumo,@Vlr_Unitario,@Flg_Permite_Alterar_Valor,@Qtd_Insumo,@Flg_Fornecer_Admissao.@Idf_Configuracao_Insumo(OUTPUT). - Propósito: Insere uma nova configuração de insumo.
UPDATE TAB_Configuracao_Insumo SET Nme_Configuracao_Insumo = @Nme_Configuracao_Insumo, Des_Configuracao_Complemento = @Des_Configuracao_Complemento, Flg_Inativo = @Flg_Inativo, Dta_Cadastro = @Dta_Cadastro, Dta_Alteracao = @Dta_Alteracao, Idf_Empresa = @Idf_Empresa, Idf_Filial = @Idf_Filial, Idf_Usuario_Gerador = @Idf_Usuario_Gerador, Idf_Insumo = @Idf_Insumo, Idf_Metodo_Fornecimento = @Idf_Metodo_Fornecimento, Idf_Forma_Fornecimento_Insumo = @Idf_Forma_Fornecimento_Insumo, Num_Parcelas_Fornecimento = @Num_Parcelas_Fornecimento, Idf_Periodicidade_Insumo = @Idf_Periodicidade_Insumo, Vlr_Unitario = @Vlr_Unitario, Flg_Permite_Alterar_Valor = @Flg_Permite_Alterar_Valor, Qtd_Insumo = @Qtd_Insumo, Flg_Fornecer_Admissao = @Flg_Fornecer_Admissao WHERE Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo- Parâmetros:
@Nme_Configuracao_Insumo,@Des_Configuracao_Complemento,@Flg_Inativo,@Dta_Cadastro,@Dta_Alteracao,@Idf_Empresa,@Idf_Filial,@Idf_Usuario_Gerador,@Idf_Insumo,@Idf_Metodo_Fornecimento,@Idf_Forma_Fornecimento_Insumo,@Num_Parcelas_Fornecimento,@Idf_Periodicidade_Insumo,@Vlr_Unitario,@Flg_Permite_Alterar_Valor,@Qtd_Insumo,@Flg_Fornecer_Admissao,@Idf_Configuracao_Insumo. - Propósito: Atualiza uma configuração de insumo existente.
UPDATE TAB_Configuracao_Insumo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo ; DELETE FROM TAB_Configuracao_Insumo WHERE Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo- Parâmetros:
@Idf_Usuario_Gerador,@Idf_Configuracao_Insumo. - Propósito: Exclui uma configuração de insumo, registrando o usuário que a gerou.
SELECT * FROM TAB_Configuracao_Insumo- Parâmetros: Nenhum.
- Propósito: Retorna todas as configurações de insumo.
SELECT * FROM TAB_Configuracao_Insumo WHERE Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo- Parâmetros:
@Idf_Configuracao_Insumo. - Propósito: Retorna uma configuração de insumo específica pelo ID.
ConfiguracaoInsumo_P2.csSELECT * FROM TAB_Configuracao_Insumo WHERE Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo AND Des_Configuracao_Complemento LIKE '%' + @Des_Configuracao_Complemento + '%'(SPVERIFICAAPELIDOREGRA)- Parâmetros:
@Idf_Configuracao_Insumo,@Des_Configuracao_Complemento. - Propósito: Verifica a existência de um apelido de regra para a configuração de insumo.
UPDATE GFI SET GFI.Nme_Grupo_Filtro_Insumo = CI.Nme_Configuracao_Insumo FROM TAB_Grupo_Filtro_Insumo GFI INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo WHERE 1 = 1 AND CI.Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo(SPATUALIZARREGRAINSUMO)- Parâmetros:
@Idf_Configuracao_Insumo. - Propósito: Atualiza o nome da regra de insumo no grupo de filtro.
SELECT COUNT(1) AS Total FROM TAB_Empregado_Insumo EI INNER JOIN TAB_Grupo_Filtro_Insumo GFI ON GFI.Idf_Grupo_Filtro_Insumo = EI.Idf_Grupo_Filtro_Insumo INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo INNER JOIN TAB_Insumo I ON I.Idf_Insumo = CI.Idf_Insumo WHERE 1 = 1 AND EI.Idf_Status_Beneficio_Beneficiario IN ( 1,3 ) AND CI.Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo(SPVERIFICARVINCULOEXCLUSAOPRODUTO)- Parâmetros:
@Idf_Configuracao_Insumo. - Propósito: Verifica se existem vínculos de empregados com o produto para exclusão.
- SQL inline em
ExistePermissaoVinculada:SELECT SUM(X.Total) AS Total FROM (SELECT COUNT(1) AS Total FROM TAB_Empregado_Insumo EI INNER JOIN TAB_Grupo_Filtro_Insumo GFI ON GFI.Idf_Grupo_Filtro_Insumo = EI.Idf_Grupo_Filtro_Insumo INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo WHERE 1=1 AND EI.Idf_Status_Beneficio_Beneficiario IN ( 1,3,10 ) AND CI.Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo AND ( GFI.Flg_Inativo = 0 OR CI.Flg_Inativo = 0 ) UNION ALL SELECT COUNT(1) AS Total FROM TAB_Grupo_Filtro_Insumo GFI INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo WHERE 1=1 AND CI.Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo AND GFI.Flg_Inativo = 0) AS X - Parâmetros:
@Idf_Configuracao_Insumo. - Propósito: Verifica a existência de permissão registrada para a configuração de regra, considerando vínculos de empregados e grupos de filtro.
- SQL inline em
ExisteDescricaoConfiguracaoComplemento:SELECT COUNT(1) FROM TAB_Configuracao_Insumo WHERE Des_Configuracao_Complemento = @Des_Configuracao_Complemento AND (@Idf_Configuracao_Insumo IS NULL OR Idf_Configuracao_Insumo <> @Idf_Configuracao_Insumo) - Parâmetros:
@Des_Configuracao_Complemento,@Idf_Configuracao_Insumo. - Propósito: Verifica se já existe uma descrição de configuração de complemento para um insumo.
- SQL inline em
ExisteRegraVinculadaPeloIdInsumo:SELECT 1 WHERE EXISTS (SELECT 1 FROM TAB_Configuracao_Insumo WHERE Idf_Insumo = @Idf_Insumo) - Parâmetros:
@Idf_Insumo. - Propósito: Verifica se existe alguma regra de configuração de insumo vinculada a um insumo.
- SQL inline em
AtualizarNomeRegrasPorTipoInsumo:UPDATE CI SET CI.Nme_Configuracao_Insumo = TI.Des_Tipo_Insumo + ' - ' + COALESCE(FIL.Ape_Filial, PF.Nme_Pessoa, '') + ' - ' + COALESCE(CI.Des_Configuracao_Complemento, '') FROM TAB_Configuracao_Insumo CI INNER JOIN TAB_Insumo I ON I.Idf_Insumo = CI.Idf_Insumo INNER JOIN plataforma.TAB_Tipo_Insumo TI ON TI.Idf_Tipo_Insumo = I.Idf_Tipo_Insumo LEFT JOIN TAB_Fornecedor FORN ON FORN.Idf_Fornecedor = I.Idf_Fornecedor LEFT JOIN TAB_Filial FIL ON FIL.Idf_Filial = FORN.Idf_Filial LEFT JOIN TAB_Pessoa_Fisica PF ON PF.Idf_Pessoa_Fisica = FORN.Idf_Pessoa_Fisica WHERE TI.Idf_Tipo_Insumo = @Idf_Tipo_Insumo; UPDATE GFI SET GFI.Nme_Grupo_Filtro_Insumo = CI.Nme_Configuracao_Insumo FROM TAB_Grupo_Filtro_Insumo GFI INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo INNER JOIN TAB_Insumo I ON I.Idf_Insumo = CI.Idf_Insumo INNER JOIN plataforma.TAB_Tipo_Insumo TI ON TI.Idf_Tipo_Insumo = I.Idf_Tipo_Insumo WHERE TI.Idf_Tipo_Insumo = @Idf_Tipo_Insumo; - Parâmetros:
@Idf_Tipo_Insumo. - Propósito: Atualiza o nome das regras de insumo e grupos de filtro quando o nome do tipo de insumo é alterado.
ConfiguracaoPara_P1.csINSERT INTO TAB_Configuracao_Para (Idf_Configuracao_Para, Nme_Configuracao_Para) VALUES (@Idf_Configuracao_Para, @Nme_Configuracao_Para);- Parâmetros:
@Idf_Configuracao_Para,@Nme_Configuracao_Para. - Propósito: Insere uma nova configuração “Para”.
UPDATE TAB_Configuracao_Para SET Nme_Configuracao_Para = @Nme_Configuracao_Para WHERE Idf_Configuracao_Para = @Idf_Configuracao_Para- Parâmetros:
@Nme_Configuracao_Para,@Idf_Configuracao_Para. - Propósito: Atualiza uma configuração “Para” existente.
DELETE FROM TAB_Configuracao_Para WHERE Idf_Configuracao_Para = @Idf_Configuracao_Para- Parâmetros:
@Idf_Configuracao_Para. - Propósito: Exclui uma configuração “Para”.
SELECT * FROM TAB_Configuracao_Para WHERE Idf_Configuracao_Para = @Idf_Configuracao_Para- Parâmetros:
@Idf_Configuracao_Para. - Propósito: Retorna uma configuração “Para” específica pelo ID.
ConfiguracaoPara_P2.csSELECT Idf_Configuracao_Para, Nme_Configuracao_Para FROM TAB_Configuracao_Para order by Idf_Configuracao_Para(SQL inline emListarConfigsPara)- Parâmetros: Nenhum.
- Propósito: Lista todas as configurações “Para” ordenadas pelo ID.
Empresa_P1.csINSERT INTO TAB_Empresa (Idf_Grupo_Economico, Num_CNPJ, Num_CPF, Raz_Social, Dta_Fundacao, Idf_Porte_Empresa, Idf_Simples, Vlr_Isencao_Filantropica, Qtd_Socios, Idf_Pessoa_Fisica, Flg_Inativo, Dta_Cadastro, Dta_Alteracao, Num_Semente, Num_Semente_Ficha, Cod_Empresa, Idf_Usuario_Gerador, Flg_Audita_Fatura, Flg_Horario_Limite_Faturamento, Num_Hora_Limite_Faturamento, Num_Minuto_Limite_Faturamento, Idf_Tipo_Estrutura_Gerencial, Dta_Inativacao, Sig_Empresa, Idf_Situacao_Cadastral_Fisica, Idf_Situacao_Cadastral_Juridica, Idf_Tipo_Acordo_Internacional, Idf_Tipo_Indicativo_Construtora, Idf_Tipo_Registro_Eletronico_Empregados, Idf_Processo_Administrativo_Judicial, Idf_Tipo_Clafissicacao_Tributaria, Idf_Tipo_Cooperativa, Num_SIAFI, Idf_Classificacao_Economica, Idf_Indicador_Contribuicao_Substituida,Vlr_Contribuicao_Mes, Vlr_Contribuicao_13) VALUES (@Idf_Grupo_Economico, @Num_CNPJ, @Num_CPF, @Raz_Social, @Dta_Fundacao, @Idf_Porte_Empresa, @Idf_Simples, @Vlr_Isencao_Filantropica, @Qtd_Socios, @Idf_Pessoa_Fisica, @Flg_Inativo, @Dta_Cadastro, @Dta_Alteracao, @Num_Semente, @Num_Semente_Ficha, @Cod_Empresa, @Idf_Usuario_Gerador, @Flg_Audita_Fatura, @Flg_Horario_Limite_Faturamento, @Num_Hora_Limite_Faturamento, @Num_Minuto_Limite_Faturamento, @Idf_Tipo_Estrutura_Gerencial, @Dta_Inativacao, @Sig_Empresa, @Idf_Situacao_Cadastral_Fisica, @Idf_Situacao_Cadastral_Juridica, @Idf_Tipo_Acordo_Internacional, @Idf_Tipo_Indicativo_Construtora, @Idf_Tipo_Registro_Eletronico_Empregados, @Idf_Processo_Administrativo_Judicial, @Idf_Tipo_Clafissicacao_Tributaria, @Idf_Tipo_Cooperativa, @Num_SIAFI, @Idf_Classificacao_Economica, @Idf_Indicador_Contribuicao_Substituida,@Vlr_Contribuicao_Mes, @Vlr_Contribuicao_13);SET @Idf_Empresa = SCOPE_IDENTITY();- Parâmetros:
@Idf_Grupo_Economico,@Num_CNPJ,@Num_CPF,@Raz_Social,@Dta_Fundacao,@Idf_Porte_Empresa,@Idf_Simples,@Vlr_Isencao_Filantropica,@Qtd_Socios,@Idf_Pessoa_Fisica,@Flg_Inativo,@Dta_Cadastro,@Dta_Alteracao,@Num_Semente,@Num_Semente_Ficha,@Cod_Empresa,@Idf_Usuario_Gerador,@Flg_Audita_Fatura,@Flg_Horario_Limite_Faturamento,@Num_Hora_Limite_Faturamento,@Num_Minuto_Limite_Faturamento,@Idf_Tipo_Estrutura_Gerencial,@Dta_Inativacao,@Sig_Empresa,@Idf_Situacao_Cadastral_Fisica,@Idf_Situacao_Cadastral_Juridica,@Idf_Tipo_Acordo_Internacional,@Idf_Tipo_Indicativo_Construtora,@Idf_Tipo_Registro_Eletronico_Empregados,@Idf_Processo_Administrativo_Judicial,@Idf_Tipo_Clafissicacao_Tributaria,@Idf_Tipo_Cooperativa,@Num_SIAFI,@Idf_Classificacao_Economica,@Idf_Indicador_Contribuicao_Substituida,@Vlr_Contribuicao_Mes,@Vlr_Contribuicao_13.@Idf_Empresa(OUTPUT). - Propósito: Insere um novo registro na tabela
TAB_Empresa. UPDATE TAB_Empresa SET Idf_Grupo_Economico = @Idf_Grupo_Economico, Num_CNPJ = @Num_CNPJ, Num_CPF = @Num_CPF, Raz_Social = @Raz_Social, Dta_Fundacao = @Dta_Fundacao, Idf_Porte_Empresa = @Idf_Porte_Empresa, Idf_Simples = @Idf_Simples, Vlr_Isencao_Filantropica = @Vlr_Isencao_Filantropica, Qtd_Socios = @Qtd_Socios, Idf_Pessoa_Fisica = @Idf_Pessoa_Fisica, Flg_Inativo = @Flg_Inativo, Dta_Cadastro = @Dta_Cadastro, Dta_Alteracao = @Dta_Alteracao, Num_Semente = @Num_Semente, Num_Semente_Ficha = @Num_Semente_Ficha, Cod_Empresa = @Cod_Empresa, Idf_Usuario_Gerador = @Idf_Usuario_Gerador, Flg_Audita_Fatura = @Flg_Audita_Fatura, Flg_Horario_Limite_Faturamento = @Flg_Horario_Limite_Faturamento, Num_Hora_Limite_Faturamento = @Num_Hora_Limite_Faturamento, Num_Minuto_Limite_Faturamento = @Num_Minuto_Limite_Faturamento, Idf_Tipo_Estrutura_Gerencial = @Idf_Tipo_Estrutura_Gerencial, Dta_Inativacao = @Dta_Inativacao, Sig_Empresa = @Sig_Empresa, Idf_Situacao_Cadastral_Fisica = @Idf_Situacao_Cadastral_Fisica, Idf_Situacao_Cadastral_Juridica = @Idf_Situacao_Cadastral_Juridica, Idf_Tipo_Acordo_Internacional = @Idf_Tipo_Acordo_Internacional, Idf_Tipo_Indicativo_Construtora = @Idf_Tipo_Indicativo_Construtora, Idf_Tipo_Registro_Eletronico_Empregados = @Idf_Tipo_Registro_Eletronico_Empregados, Idf_Processo_Administrativo_Judicial = @Idf_Processo_Administrativo_Judicial, Idf_Tipo_Clafissicacao_Tributaria = @Idf_Tipo_Clafissicacao_Tributaria, Idf_Tipo_Cooperativa = @Idf_Tipo_Cooperativa, Num_SIAFI = @Num_SIAFI, Idf_Classificacao_Economica = @Idf_Classificacao_Economica, Idf_Indicador_Contribuicao_Substituida = @Idf_Indicador_Contribuicao_Substituida,Vlr_Contribuicao_Mes = @Vlr_Contribuicao_Mes, Vlr_Contribuicao_13 = @Vlr_Contribuicao_13 WHERE Idf_Empresa = @Idf_Empresa- Parâmetros:
@Idf_Grupo_Economico,@Num_CNPJ,@Num_CPF,@Raz_Social,@Dta_Fundacao,@Idf_Porte_Empresa,@Idf_Simples,@Vlr_Isencao_Filantropica,@Qtd_Socios,@Idf_Pessoa_Fisica,@Flg_Inativo,@Dta_Cadastro,@Dta_Alteracao,@Num_Semente,@Num_Semente_Ficha,@Cod_Empresa,@Idf_Usuario_Gerador,@Flg_Audita_Fatura,@Flg_Horario_Limite_Faturamento,@Num_Hora_Limite_Faturamento,@Num_Minuto_Limite_Faturamento,@Idf_Tipo_Estrutura_Gerencial,@Dta_Inativacao,@Sig_Empresa,@Idf_Situacao_Cadastral_Fisica,@Idf_Situacao_Cadastral_Juridica,@Idf_Tipo_Acordo_Internacional,@Idf_Tipo_Indicativo_Construtora,@Idf_Tipo_Registro_Eletronico_Empregados,@Idf_Processo_Administrativo_Judicial,@Idf_Tipo_Clafissicacao_Tributaria,@Idf_Tipo_Cooperativa,@Num_SIAFI,@Idf_Classificacao_Economica,@Idf_Indicador_Contribuicao_Substituida,@Vlr_Contribuicao_Mes,@Vlr_Contribuicao_13,@Idf_Empresa. - Propósito: Atualiza um registro existente na tabela
TAB_Empresa. UPDATE TAB_Empresa SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Empresa = @Idf_Empresa ; DELETE FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa- Parâmetros:
@Idf_Usuario_Gerador,@Idf_Empresa. - Propósito: Exclui um registro da tabela
TAB_Empresa, registrando o usuário que a gerou. SELECT * FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa- Parâmetros:
@Idf_Empresa. - Propósito: Retorna um registro específico da tabela
TAB_Empresapelo ID. Empresa_P3.csSELECT MAX(TRY_CAST(Cod_Empresa AS INT)) FROM TAB_EMPRESA(SQL inline emRecuperarCodigo)- Parâmetros: Nenhum.
- Propósito: Recupera o próximo código de empresa disponível.
- SQL inline em
RecuperarProximaMatricula:DECLARE @Controle BIT = 1 DECLARE @Semente INT DECLARE @T TABLE (Num_Semente INT) WHILE ( @Controle = 1 ) BEGIN UPDATE TAB_Empresa SET Num_Semente = ISNULL(Num_Semente,1) + 1 OUTPUT inserted.Num_Semente INTO @T WHERE Idf_Empresa = @Idf_Empresa SELECT TOP 1 @Semente = Num_Semente FROM @T DELETE FROM @T IF NOT EXISTS (select 1 from (SELECT e.Num_Matricula, ISNUMERIC(e.Num_Matricula) AS ISnUM FROM TAB_Empregado e INNER JOIN TAB_Contrato c ON e.Idf_Contrato = c.Idf_Contrato and c.Idf_Empresa = @Idf_Empresa) AS emp WHERE 1 = 1 AND emp.ISnUM = 1 AND TRY_CONVERT(INT, emp.Num_Matricula) = @Semente - 1 UNION select 1 from (SELECT e.Num_Matricula, ISNUMERIC(e.Num_Matricula) AS ISnUM FROM TAB_Empregado_Admissao_Futura e INNER JOIN TAB_Contrato c ON e.Idf_Contrato = c.Idf_Contrato and c.Idf_Empresa = @Idf_Empresa) AS emp WHERE 1 = 1 AND emp.ISnUM = 1 AND TRY_CONVERT(INT, emp.Num_Matricula) = @Semente - 1) BEGIN SET @Controle = 0 ; END END SELECT @Semente - 1 - Parâmetros:
@Idf_Empresa. - Propósito: Recupera o próximo número de matrícula disponível para a empresa.
- SQL inline em
RecuperarProximaFichaRegistro:DECLARE @Controle BIT = 1 DECLARE @Semente INT DECLARE @T TABLE (Num_Semente INT) WHILE ( @Controle = 1 ) BEGIN UPDATE TAB_Empresa SET Num_Semente_Ficha = ISNULL(Num_Semente_Ficha,1) + 1 OUTPUT inserted.Num_Semente_Ficha INTO @T WHERE Idf_Empresa = @Idf_Empresa SELECT TOP 1 @Semente = Num_Semente FROM @T DELETE FROM @T IF NOT EXISTS (SELECT 1 FROM TAB_Empregado e INNER JOIN TAB_Contrato c ON e.Idf_Contrato = c.Idf_Contrato WHERE c.Idf_Empresa = @Idf_Empresa AND e.Num_Ficha_Registro = @Semente - 1 UNION SELECT 1 FROM TAB_Empregado_Admissao_Futura e INNER JOIN TAB_Contrato c ON e.Idf_Contrato = c.Idf_Contrato WHERE c.Idf_Empresa = @Idf_Empresa AND e.Num_Ficha_Registro = @Semente - 1) BEGIN SET @Controle = 0 ; END END SELECT @Semente - 1 - Parâmetros:
@Idf_Empresa. - Propósito: Recupera o próximo número de ficha de registro disponível para a empresa.
- SQL inline em
AtualizarFichaSemente:UPDATE TAB_Empresa SET Num_Semente_Ficha = @Num_Semente_Ficha WHERE Idf_Empresa = @Idf_Empresa - Parâmetros:
@Num_Semente_Ficha,@Idf_Empresa. - Propósito: Atualiza a semente da ficha de registro para a empresa.
- SQL inline em
SelecionaInformacoesFilialEmpresa:SELECT DISTINCT (CASE WHEN (FIL.Num_CEI IS NOT NULL) THEN 1 WHEN (FIL.Num_CNPJ IS NOT NULL)OR(EM.Num_CNPJ IS NOT NULL) THEN 2 ELSE 0 END) AS TipoInscricao, ISNULL(fil.Num_CNPJ, em.Num_CNPJ) as Num_CNPJ , BCO.Idf_Banco , EM.Num_CPF , FIl.Num_CEI , CB.Num_Convenio , AG.Num_Agencia_Bancaria , AG.Num_DV_Agencia , CTA.Num_Conta , CTA.Num_DV_Conta , EM.Raz_Social , PF.Nme_Pessoa , BCO.Nme_Banco , EM.Cod_Empresa , ISNULL(ende.Des_Logradouro ,'')Des_Logradouro , ISNULL(ende.Num_Endereco ,'')Num_Endereco , ISNULL(ende.Des_Complemento,'')Des_Complemento , CID.Idf_Cidade , ISNULL(cid.Nme_Cidade ,'')Nme_Cidade , ISNULL(ende.Num_CEP ,'')Num_CEP , ISNULL(cid.Sig_Estado ,'')Sig_Estado , ISNULL(ende.Des_Bairro,'')Des_Bairro , Idf_Tipo_Convenio , CTA.Idf_Conta_Empresa FROM TAB_Filial FIL INNER JOIN TAB_Filial MATRIZ ON FIL.IdF_Empresa = MATRIZ.Idf_Empresa AND MATRIZ.flg_Matriz = 1 INNER JOIN TAB_Empresa EM ON FIL.Idf_Empresa = EM.idf_Empresa LEFT JOIN TAB_Filial_Convenio_Bancario FCB ON FIL.Idf_Filial = FCB.Idf_Filial AND FCB.Flg_Inativo = 0 LEFT JOIN TAB_Convenio_Bancario CB ON CB.Idf_Convenio_Bancario = FCB.Idf_Convenio_Bancario AND (CB.Idf_Tipo_Convenio = 2 OR CB.Idf_Tipo_Convenio = 4) AND CB.Flg_Inativo = 0 LEFT JOIN TAB_Conta_Empresa CTA ON CB.Idf_Conta_Empresa = CTA.Idf_Conta_Empresa AND CTA.Flg_Inativo = 0 LEFT JOIN TAB_Agencia_Bancaria AG ON CTA.Idf_Agencia_Bancaria = AG.Idf_Agencia_Bancaria LEFT JOIN plataforma.TAB_Banco BCO ON AG.Idf_Banco = BCO.Idf_Banco INNER JOIN TAB_Endereco ENDE ON ENDE.Idf_Endereco = MATRIZ.Idf_Endereco LEFT JOIN plataforma.TAB_Cidade CID ON CID.Idf_Cidade = ENDE.Idf_Cidade LEFT JOIn TAB_PESSOA_FISICA PF ON em.Num_CPF = PF.Num_CPF WHERE ((@idfEmpresa IS NULL) OR ( EM.Idf_Empresa = @idfEmpresa )) AND ((@idfFilial IS NULL) OR (FIL.idf_Filial = @idfFilial)) AND ((@idfBanco IS NULL) OR (FCB.Idf_Banco = @idfBanco )) - Parâmetros:
@idfEmpresa,@idfFilial,@idfBanco. - Propósito: Seleciona informações detalhadas da filial e empresa, incluindo dados bancários e de endereço.
- SQL inline em
VerificaEmpresaPrestadora:SELECT COUNT(*) AS Total FROM TAB_FILIAL FIL WHERE FIL.Idf_Empresa = @Idf_Empresa AND FIL.Flg_Matriz = 1 AND Flg_Prestadora = 1 - Parâmetros:
@Idf_Empresa. - Propósito: Verifica se a empresa é uma filial matriz prestadora.
- SQL inline em
CarregarProdutorRuralEmpresaPeriodo:SELECT TOP 1 * FROM TAB_Produtor_Rural WHERE Idf_Empresa = @Idf_Empresa AND Num_Mes = @Num_Mes OR Num_Mes IS NULL AND Num_Ano = @Num_Ano - Parâmetros:
@Idf_Empresa,@Num_Mes,@Num_Ano. - Propósito: Carrega informações de produtor rural para a empresa em um período específico.
- SQL inline em
CompleteAuditoria:SELECT Raz_Social FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa - Parâmetros:
@Idf_Empresa. - Propósito: Recupera a razão social da empresa para fins de auditoria.
- SQL inline em
AtualizarSemente:IF (@Num_Semente_Referencia > (SELECT ISNULL(Num_Semente,0) FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa)) BEGIN UPDATE TAB_Empresa SET Num_Semente = @Num_Semente_Referencia WHERE Idf_Empresa = @Idf_Empresa; END - Parâmetros:
@Num_Semente_Referencia,@Idf_Empresa. - Propósito: Atualiza a semente de matrícula da empresa se o novo valor for maior.
GrupoFiltroInsumo_P2.csselect top 1 (Idf_Grupo_Filtro_Insumo) from TAB_Grupo_Filtro_Insumo GFI where GFI.Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo(SPCARREGAIDGRUPOINSUMO)- Parâmetros:
@Idf_Configuracao_Insumo. - Propósito: Recupera o ID do grupo de filtro de insumo associado a uma configuração de insumo.
- SQL inline em
CancelarVinculoInsumo:DELETE TAB_Item_Filtro_Grupo_Insumo WHERE Flg_Cancela_Insumo = 1; UPDATE TAB_Item_Filtro_Grupo_Insumo SET Flg_Temporario = 0 WHERE Idf_Grupo_Filtro_Insumo = {pIdGrupoFiltroInsumo} AND Flg_Temporario = 1(ou a variação paraIdf_Grupo_Filtro_Insumo IS NULL) - Parâmetros:
@Idf_Grupo_Filtro_Insumo. - Propósito: Exclui itens de filtro temporários e atualiza o status de itens de filtro para não temporário.
- SQL inline em
CancelarVinculoInsumo(query complexa com CTEsEmpregadoseInsumo): - Parâmetros:
@Idf_Grupo_Filtro_Insumo,@Idf_Usuario. - Propósito: Identifica e cancela vínculos de insumos com empregados com base em filtros de inclusão e exclusão.
- SQL inline em
ExisteEmpregadoVinculado:SELECT SUM(Total) AS Total FROM (SELECT COUNT(1) AS Total FROM TAB_Empregado_Insumo EI INNER JOIN TAB_Grupo_Filtro_Insumo GFI ON GFI.Idf_Grupo_Filtro_Insumo = EI.Idf_Grupo_Filtro_Insumo INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo INNER JOIN TAB_Insumo I ON I.Idf_Insumo = CI.Idf_Insumo WHERE 1 = 1 AND EI.Idf_Status_Beneficio_Beneficiario IN ( 1,3,10 ) AND GFI.Idf_Grupo_Filtro_Insumo = @Idf_Grupo_Filtro_Insumo AND GFI.Flg_Inativo = 0 UNION ALL SELECT COUNT(1) AS Total FROM TAB_Grupo_Filtro_Insumo GFI WHERE 1 = 1 AND GFI.Idf_Grupo_Filtro_Insumo = @Idf_Grupo_Filtro_Insumo AND GFI.Flg_Inativo = 0) AS X - Parâmetros:
@Idf_Grupo_Filtro_Insumo. - Propósito: Verifica se existem empregados vinculados a um grupo de filtro de insumo.
- SQL inline em
ExisteVinculoExclusaoPermissao:SELECT COUNT(1) AS Total FROM TAB_Empregado_Insumo EI INNER JOIN TAB_Grupo_Filtro_Insumo GFI ON GFI.Idf_Grupo_Filtro_Insumo = EI.Idf_Grupo_Filtro_Insumo WHERE 1 = 1 AND EI.Idf_Status_Beneficio_Beneficiario IN ( 1,3,10 ) AND GFI.Idf_Grupo_Filtro_Insumo = @Idf_Grupo_Filtro_Insumo - Parâmetros:
@Idf_Grupo_Filtro_Insumo. - Propósito: Verifica se existem vínculos de empregados com o grupo de filtro de insumo para exclusão de permissão.
- SQL inline em
VerificaExisteNomeRegraAtiva:SELECT TOP 1 1 FROM TAB_Grupo_Filtro_Insumo WHERE 1 = 1 AND Flg_Inativo = 0 AND Nme_Grupo_Filtro_Insumo = @Nme_Grupo_Filtro_Insumo AND (@Idf_Configuracao_Insumo IS NULL OR Idf_Configuracao_Insumo = @Idf_Configuracao_Insumo) AND (@Idf_Grupo_Filtro_Insumo IS NULL OR (Idf_Grupo_Filtro_Insumo <> @Idf_Grupo_Filtro_Insumo)) - Parâmetros:
@Nme_Grupo_Filtro_Insumo,@Idf_Configuracao_Insumo,@Idf_Grupo_Filtro_Insumo. - Propósito: Verifica se já existe uma regra ativa com o mesmo nome para um grupo de filtro de insumo.
TAB_SP_Inativar_Arvore_Insumo(Stored Procedure)- Parâmetros:
@Idf_Empresa,@Idf_Usuario,@Idf_Grupo_Filtro_Insumo,@Idf_Configuracao_Insumo,@Idf_Insumo,@Resultado(OUTPUT),@MensagemRetorno(OUTPUT). - Propósito: Inativa a árvore de insumos (grupos de filtro, configurações e insumos) e retorna um resultado e mensagem.
- SQL inline em
ListaTodosGruposByEmpregadoTipoInsumo(query complexa com CTEsEmpregadoBasee#Temp): - Parâmetros:
@Idf_Empregado,@Idf_Empresa. - Propósito: Lista todos os grupos de filtro de insumo aplicáveis a um empregado, com base em diversos critérios de filtro.
Insumo_P1.csINSERT INTO TAB_Insumo (Idf_Fornecedor, Idf_Empresa, Idf_Usuario_Gerador, Idf_Tipo_Insumo, Idf_Complemento_Insumo, Nme_Insumo, Cod_Insumo_Fornecedor, Des_Identificacao_Insumo, Flg_Fornecimento_Continuo, Flg_Inativo, Dta_Cadastro, Idf_Configuracao_Para) VALUES (@Idf_Fornecedor, @Idf_Empresa, @Idf_Usuario_Gerador, @Idf_Tipo_Insumo, @Idf_Complemento_Insumo, @Nme_Insumo, @Cod_Insumo_Fornecedor, @Des_Identificacao_Insumo, @Flg_Fornecimento_Continuo, @Flg_Inativo, @Dta_Cadastro, @Idf_Configuracao_Para);SET @Idf_Insumo = SCOPE_IDENTITY();- Parâmetros:
@Idf_Fornecedor,@Idf_Empresa,@Idf_Usuario_Gerador,@Idf_Tipo_Insumo,@Idf_Complemento_Insumo,@Nme_Insumo,@Cod_Insumo_Fornecedor,@Des_Identificacao_Insumo,@Flg_Fornecimento_Continuo,@Flg_Inativo,@Dta_Cadastro,@Idf_Configuracao_Para.@Idf_Insumo(OUTPUT). - Propósito: Insere um novo registro na tabela
TAB_Insumo. UPDATE TAB_Insumo SET Idf_Fornecedor = @Idf_Fornecedor, Idf_Empresa = @Idf_Empresa, Idf_Usuario_Gerador = @Idf_Usuario_Gerador, Idf_Tipo_Insumo = @Idf_Tipo_Insumo, Idf_Complemento_Insumo = @Idf_Complemento_Insumo, Nme_Insumo = @Nme_Insumo, Cod_Insumo_Fornecedor = @Cod_Insumo_Fornecedor, Des_Identificacao_Insumo = @Des_Identificacao_Insumo, Flg_Fornecimento_Continuo = @Flg_Fornecimento_Continuo, Flg_Inativo = @Flg_Inativo, Dta_Cadastro = @Dta_Cadastro, Idf_Configuracao_Para = @Idf_Configuracao_Para WHERE Idf_Insumo = @Idf_Insumo- Parâmetros:
@Idf_Fornecedor,@Idf_Empresa,@Idf_Usuario_Gerador,@Idf_Tipo_Insumo,@Idf_Complemento_Insumo,@Nme_Insumo,@Cod_Insumo_Fornecedor,@Des_Identificacao_Insumo,@Flg_Fornecimento_Continuo,@Flg_Inativo,@Dta_Cadastro,@Idf_Configuracao_Para,@Idf_Insumo. - Propósito: Atualiza um registro existente na tabela
TAB_Insumo. UPDATE TAB_Insumo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Insumo = @Idf_Insumo ; DELETE FROM TAB_Insumo WHERE Idf_Insumo = @Idf_Insumo- Parâmetros:
@Idf_Usuario_Gerador,@Idf_Insumo. - Propósito: Exclui um registro da tabela
TAB_Insumo, registrando o usuário que o gerou. SELECT * FROM TAB_Insumo- Parâmetros: Nenhum.
- Propósito: Retorna todos os registros da tabela
TAB_Insumo. SELECT * FROM TAB_Insumo WHERE Idf_Insumo = @Idf_Insumo- Parâmetros:
@Idf_Insumo. - Propósito: Retorna um registro específico da tabela
TAB_Insumopelo ID. Insumo_P2.csSELECT COUNT(*) FROM TAB_Insumo WHERE Nme_Insumo = @NomeInsumo AND ((@Idf_Insumo IS NOT NULL AND @Idf_Insumo > 0 AND @Idf_Insumo <> Idf_Insumo) OR (@Idf_Insumo IS NULL AND Idf_Insumo > 0 ))(SPSELECTVERIFICARINSUMOPORNOME)- Parâmetros:
@NomeInsumo,@Idf_Insumo. - Propósito: Verifica a existência de um insumo com o mesmo nome, excluindo o ID atual.
SELECT F.Idf_Filial FROM TAB_Insumo I JOIN TAB_Fornecedor F ON I.Idf_Fornecedor = F.Idf_Fornecedor WHERE I.Idf_Insumo = @Idf_Insumo(SPRECUPERARFILIALPORINSUMO)- Parâmetros:
@Idf_Insumo. - Propósito: Recupera o ID da filial associada ao fornecedor de um insumo.
SELECT F.Idf_Pessoa_Fisica FROM TAB_Insumo I JOIN TAB_Fornecedor F ON I.Idf_Fornecedor = F.Idf_Fornecedor WHERE I.Idf_Insumo = @Idf_Insumo(SPRECUPERARPESSOAFISICAPORINSUMO)- Parâmetros:
@Idf_Insumo. - Propósito: Recupera o ID da pessoa física associada ao fornecedor de um insumo.
plataforma.TAB_SP_Excluir_Configuracao_Insumo(Stored Procedure)- Parâmetros:
@Idf_Empresa,@Idf_Periodo_Calculo,@Idf_Grupo_Filtro_Insumo,@Idf_Configuracao_Insumo,@Idf_Insumo,@Resultado(OUTPUT),@Msg(OUTPUT). - Propósito: Exclui uma configuração de insumo, realizando validações de período de cálculo.
SELECT DISTINCT insf.Idf_Empregado FROM TAB_Insumo_Fornecido insf (NOLOCK) INNER JOIN TAB_Empregado e (NOLOCK) ON insf.Idf_Empregado = e.Idf_Empregado INNER JOIN TAB_Contrato c (NOLOCK) ON e.Idf_Contrato = c.idf_Contrato LEFT JOIN TAB_Centro_Resultado cr (NOLOCK) ON e.Idf_Centro_Resultado = cr.Idf_Centro_Resultado INNER JOIN TAB_Periodo_Calculo_Filial pcf (NOLOCK) ON COALESCE(cr.Idf_Filial, c.Idf_Filial_Gestora) = pcf.Idf_Filial AND pcf.Flg_Fechado = 0 INNER JOIN plataforma.TAB_Periodo_Calculo pc ON pcf.Idf_Periodo_Calculo = pc.IDf_Periodo_Calculo INNER JOIN TAB_Holerite h ON e.Idf_Empregado = h.Idf_Empregado AND h.Idf_Periodo_Calculo = pc.Idf_Periodo_Calculo WHERE e.Flg_Inativo = 0 AND insf.Idf_Insumo = @Idf_Insumo AND h.Idf_Tipo_Folha IN (1,5,11,15) AND (h.Dta_Pagamento IS NOT NULL OR h.Idf_Arquivo_Gerado_Empregado IS NOT NULL)(SPSELEMPREGADOPORIDINSUMONAOPAGO)- Parâmetros:
@Idf_Insumo. - Propósito: Recupera empregados com insumos fornecidos não pagos para um determinado insumo.
SELECT COUNT(1) AS Total FROM TAB_Empregado_Insumo EI INNER JOIN TAB_Grupo_Filtro_Insumo GFI ON GFI.Idf_Grupo_Filtro_Insumo = EI.Idf_Grupo_Filtro_Insumo INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo INNER JOIN TAB_Insumo I ON I.Idf_Insumo = CI.Idf_Insumo WHERE 1=1 AND EI.Idf_Status_Beneficio_Beneficiario IN ( 1,3,10 ) AND I.Idf_Insumo = @Idf_Insumo(SQL inline emExisteVinculoExclusaoInsumo)- Parâmetros:
@Idf_Insumo. - Propósito: Verifica se existem vínculos de empregados com o insumo para exclusão.
Parametro_P1.csINSERT INTO TAB_Parametro (Idf_Parametro, Vlr_Parametro) VALUES (@Idf_Parametro, @Vlr_Parametro);- Parâmetros:
@Idf_Parametro,@Vlr_Parametro. - Propósito: Insere um novo registro na tabela
TAB_Parametro. UPDATE TAB_Parametro SET Vlr_Parametro = @Vlr_Parametro WHERE Idf_Parametro = @Idf_Parametro- Parâmetros:
@Vlr_Parametro,@Idf_Parametro. - Propósito: Atualiza um registro existente na tabela
TAB_Parametro. DELETE FROM TAB_Parametro WHERE Idf_Parametro = @Idf_Parametro- Parâmetros:
@Idf_Parametro. - Propósito: Exclui um registro da tabela
TAB_Parametro. SELECT * FROM TAB_Parametro WHERE Idf_Parametro = @Idf_Parametro- Parâmetros:
@Idf_Parametro. - Propósito: Retorna um registro específico da tabela
TAB_Parametropelo ID. Parametro_P2.csSELECT TOP 1 t.Vlr_Parametro FROM ( SELECT Vlr_Parametro , 1 AS especialidade FROM TAB_Parametro WHERE Idf_Parametro = @Idf_Parametro UNION SELECT Vlr_Parametro_Plataforma AS Vlr_Parametro , 2 AS especialidade FROM plataforma.TAB_Parametro_Plataforma WHERE Idf_Parametro_Plataforma = @Idf_Parametro ) t ORDER BY t.especialidade ASC(SELVALORPARAMETROPORID)- Parâmetros:
@Idf_Parametro. - Propósito: Recupera o valor de um parâmetro, priorizando a tabela
TAB_Parametrosobreplataforma.TAB_Parametro_Plataforma. SELECT Vlr_Parametro_Plataforma AS Vlr_Parametro , 2 AS especialidade FROM plataforma.TAB_Parametro_Plataforma WHERE Idf_Parametro_Plataforma = @Idf_Parametro(SELVALORPARAMETROPLATAFORMAPORID)- Parâmetros:
@Idf_Parametro. - Propósito: Recupera o valor de um parâmetro da tabela
plataforma.TAB_Parametro_Plataforma. TAB_SF_Parametro_Especifico(Function)- Parâmetros:
@pIdParametro,@pIdEmpresa,@pIdFilial,@pIdContrato,@pIdSindicato,@pIdCentroResultado. - Propósito: Retorna o valor de um parâmetro específico com base em diversos níveis de configuração (empresa, filial, contrato, etc.).
TAB_SF_Parametros_Especificos(Function)- Parâmetros:
@ListaIdParametros,@pIdEmpresa,@pIdFilial,@pIdContrato,@pIdSindicato,@pIdCentroResultado. - Propósito: Retorna múltiplos valores de parâmetros específicos com base em diversos níveis de configuração.
TipoInsumo_P1.csINSERT INTO plataforma.TAB_Tipo_Insumo (Des_Tipo_Insumo, Flg_Autoproposta, Flg_Inativo, Dta_Cadastro) VALUES (@Des_Tipo_Insumo, @Flg_Autoproposta, @Flg_Inativo, @Dta_Cadastro); SET @Idf_Tipo_Insumo = SCOPE_IDENTITY();- Parâmetros:
@Des_Tipo_Insumo,@Flg_Autoproposta,@Flg_Inativo,@Dta_Cadastro.@Idf_Tipo_Insumo(OUTPUT). - Propósito: Insere um novo registro na tabela
plataforma.TAB_Tipo_Insumo. UPDATE plataforma.TAB_Tipo_Insumo SET Des_Tipo_Insumo = @Des_Tipo_Insumo, Flg_Autoproposta = @Flg_Autoproposta, Flg_Inativo = @Flg_Inativo, Dta_Cadastro = @Dta_Cadastro WHERE Idf_Tipo_Insumo = @Idf_Tipo_Insumo- Parâmetros:
@Des_Tipo_Insumo,@Flg_Autoproposta,@Flg_Inativo,@Dta_Cadastro,@Idf_Tipo_Insumo. - Propósito: Atualiza um registro existente na tabela
plataforma.TAB_Tipo_Insumo. DELETE FROM plataforma.TAB_Tipo_Insumo WHERE Idf_Tipo_Insumo = @Idf_Tipo_Insumo- Parâmetros:
@Idf_Tipo_Insumo. - Propósito: Exclui um registro da tabela
plataforma.TAB_Tipo_Insumo. SELECT * FROM plataforma.TAB_Tipo_Insumo- Parâmetros: Nenhum.
- Propósito: Retorna todos os registros da tabela
plataforma.TAB_Tipo_Insumo. SELECT * FROM plataforma.TAB_Tipo_Insumo WHERE Idf_Tipo_Insumo = @Idf_Tipo_Insumo- Parâmetros:
@Idf_Tipo_Insumo. - Propósito: Retorna um registro específico da tabela
plataforma.TAB_Tipo_Insumopelo ID. TipoInsumo_P2.csSELECT COUNT(1) FROM plataforma.TAB_Tipo_Insumo WHERE Des_Tipo_Insumo = @Des_Tipo_Insumo AND Idf_Tipo_Insumo <> ISNULL(@Idf_Tipo_Insumo, 0)(SPVERIFICARTIPOINSUMO)- Parâmetros:
@Des_Tipo_Insumo,@Idf_Tipo_Insumo. - Propósito: Verifica a existência de um tipo de insumo com o mesmo nome, excluindo o ID atual.
SELECT COUNT(1) FROM plataforma.TAB_Complemento_Insumo WHERE Idf_Tipo_Insumo = @Idf_Tipo_Insumo(SPVERIFICARUTILIZACAO)- Parâmetros:
@Idf_Tipo_Insumo. - Propósito: Verifica se um tipo de insumo está sendo utilizado em
plataforma.TAB_Complemento_Insumo. SELECT * FROM plataforma.TAB_Tipo_Insumo WHERE Flg_Inativo = 0 ORDER BY Des_Tipo_Insumo(SplistarTipoInsumoAtivos)- Parâmetros: Nenhum.
- Propósito: Lista apenas os tipos de insumos ativos.
- SQL inline em
VerificarVinculoComInsumoAtivo:SELECT COUNT (1) FROM TAB_Insumo I INNER JOIN plataforma.TAB_Complemento_Insumo CI ON CI.Idf_Complemento_Insumo = I.Idf_Complemento_Insumo INNER JOIN plataforma.TAB_Tipo_Insumo TI ON TI.Idf_Tipo_Insumo = CI.Idf_Tipo_Insumo WHERE 1 = 1 AND TI.Idf_Tipo_Insumo = @Idf_Tipo_Insumo AND I.Flg_Inativo = 0 - Parâmetros:
@Idf_Tipo_Insumo. - Propósito: Verifica se há vínculo de Tipo de Insumo com algum produto de Insumo Ativo.
Usuario_P1.csINSERT INTO TAB_Usuario (Num_CPF, Idf_Perfil_Principal, Idf_Ultima_Empresa, Idf_Usuario_Gerador, Idf_Sistema_Gerador, Idf_Pessoa_Fisica, Flg_Interno, Dta_Cadastro, Flg_Inativo) VALUES (@Num_CPF, @Idf_Perfil_Principal, @Idf_Ultima_Empresa, @Idf_Usuario_Gerador, @Idf_Sistema_Gerador, @Idf_Pessoa_Fisica, @Flg_Interno, @Dta_Cadastro, @Flg_Inativo);SET @Idf_Usuario = SCOPE_IDENTITY();- Parâmetros:
@Num_CPF,@Idf_Perfil_Principal,@Idf_Ultima_Empresa,@Idf_Usuario_Gerador,@Idf_Sistema_Gerador,@Idf_Pessoa_Fisica,@Flg_Interno,@Dta_Cadastro,@Flg_Inativo.@Idf_Usuario(OUTPUT). - Propósito: Insere um novo registro na tabela
TAB_Usuario. UPDATE TAB_Usuario SET Num_CPF = @Num_CPF, Idf_Perfil_Principal = @Idf_Perfil_Principal, Idf_Ultima_Empresa = @Idf_Ultima_Empresa, Idf_Usuario_Gerador = @Idf_Usuario_Gerador, Idf_Sistema_Gerador = @Idf_Sistema_Gerador, Idf_Pessoa_Fisica = @Idf_Pessoa_Fisica, Flg_Interno = @Flg_Interno, Dta_Cadastro = @Dta_Cadastro, Flg_Inativo = @Flg_Inativo WHERE Idf_Usuario = @Idf_Usuario- Parâmetros:
@Num_CPF,@Idf_Perfil_Principal,@Idf_Ultima_Empresa,@Idf_Usuario_Gerador,@Idf_Sistema_Gerador,@Idf_Pessoa_Fisica,@Flg_Interno,@Dta_Cadastro,@Flg_Inativo,@Idf_Usuario. - Propósito: Atualiza um registro existente na tabela
TAB_Usuario. UPDATE TAB_Usuario SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Usuario = @Idf_Usuario ; DELETE FROM TAB_Usuario WHERE Idf_Usuario = @Idf_Usuario- Parâmetros:
@Idf_Usuario_Gerador,@Idf_Usuario. - Propósito: Exclui um registro da tabela
TAB_Usuario, registrando o usuário que o gerou. SELECT * FROM TAB_Usuario WHERE Idf_Usuario = @Idf_Usuario- Parâmetros:
@Idf_Usuario. - Propósito: Retorna um registro específico da tabela
TAB_Usuariopelo ID. Usuario_P2.cs- SQL inline em
CarregarPermissoes: Query complexa com múltiplosUNIONe#ACESSOTMPpara buscar permissões de acesso por Grupo Econômico, Empresa, Filial, Contrato e Centro de Resultado, e suas exceções. - Parâmetros:
@IdF_Usuario,@Pesquisa,@CurrentPage,@PageSize,@SortExpression,@WhereExpression. - Propósito: Carrega as permissões de acesso de um usuário com base em diversos filtros e paginação.
- SQL inline em
CarregarPermissoesVisualizacaoESocial: Similar à anterior, mas para eSocial. - Parâmetros:
@IdF_Usuario. - Propósito: Carrega as permissões de visualização do eSocial para um usuário.
SELECT * FROM TAB_Filial fil WHERE Flg_Inativo = 0 AND Idf_Empresa = @Idf_Empresa AND (@Idf_Usuario IS NULL OR (Fil.Idf_Filial IN (SELECT UA.Idf_Filial FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, @Idf_Empresa) UA)))(SPRECUPERARFILIAISQUEUSUARIOTEMACESSO)- Parâmetros:
@Idf_Empresa,@Idf_Usuario. - Propósito: Recupera as filiais às quais um usuário tem acesso para uma determinada empresa.
- SQL inline em
VerificaPermissaoSenhaMaster:SELECT CASE WHEN Ppe.Idf_Usuario IS NULL THEN 0 ELSE 1 END AS Upe_Permissao FROM TAB_Perfil Per LEFT JOIN TAB_Usuario Usu ON Usu.Idf_Usuario = @Idf_Usuario LEFT JOIN TAB_Usuario_Perfil Upe ON Upe.Idf_Perfil = Per.Idf_Perfil AND Upe.Idf_Usuario = Usu.Idf_Usuario LEFT JOIN TAB_Periodo_Permissao Ppe ON Ppe.Idf_Usuario = Upe.Idf_Usuario AND Ppe.Idf_Perfil = Upe.Idf_Perfil AND (Ppe.Dta_Fim IS NULL OR Ppe.Dta_Fim >= @Dta_Periodo) WHERE Per.Flg_Inativo = 0 AND Per.Idf_Sistema in (0,@Idf_Sistema) AND Per.Idf_Perfil IN (1013,151)(SPSELPERFILSISTEMASENHAMASTER) - Parâmetros:
@Idf_Usuario,@Idf_Sistema,@Dta_Periodo. - Propósito: Verifica se o usuário possui permissão de senha master para um determinado sistema.
- SQL inline em
CarregarUsuariosFilaAtualizacaoPonto: Query complexa comCASEparaTipo_usuario. - Parâmetros:
@Num_Tentativas. - Propósito: Carrega usuários na fila de integração de ponto com base no número de tentativas.
- SQL inline em
VerificarFiliaisPonto: Query complexa comUNIONpara buscar filiais de ponto. - Parâmetros:
@Num_CPF. - Propósito: Verifica as filiais de ponto associadas a um CPF de usuário.
- SQL inline em
RecuperarUsuarioContaPagar:SELECT Usu.Codigo + ' - ' + Usu.Nome AS Nome, Idf_Usuario from (SELECT DISTINCT Us.Idf_Usuario, SUBSTRING(CAST(REPLICATE('0', 11-LEN(ISNULL(CONVERT(VARCHAR,Pf.Num_CPF), 0))) + CONVERT(VARCHAR,Pf.Num_CPF) As Varchar),1,3) + '.' + SUBSTRING(CAST(REPLICATE('0', 11-LEN(ISNULL(CONVERT(VARCHAR,Pf.Num_CPF), 0))) + CONVERT(VARCHAR,Pf.Num_CPF) As Varchar),4,3) + '.' + SUBSTRING(CAST(REPLICATE('0', 11-LEN(ISNULL(CONVERT(VARCHAR,Pf.Num_CPF), 0))) + CONVERT(VARCHAR,Pf.Num_CPF) As Varchar),7,3) + '-' + SUBSTRING(CAST(REPLICATE('0', 11-LEN(ISNULL(CONVERT(VARCHAR,Pf.Num_CPF), 0))) + CONVERT(VARCHAR,Pf.Num_CPF) As Varchar),10,2) AS Codigo, Pf.Nme_Pessoa Nome FROM TAB_Usuario Us JOIN TAB_Pessoa_Fisica Pf ON Us.Num_CPF = Pf.Num_CPF WHERE Us.Idf_Usuario = @Idf_Usuario ) Usu(SELECTUSUARIOCONTAPAGAR) - Parâmetros:
@Idf_Usuario. - Propósito: Recupera informações formatadas do usuário para contas a pagar.
- SQL inline em
ListarUsuariosAgrupamento: Query complexa comUNIONpara agrupar usuários. - Parâmetros:
@cpfs. - Propósito: Lista usuários agrupados por CPF, nome, perfil e informações de acesso.
7.3. UserControls incluídos (.ascx)
UserControls/DadosProdutoInsumo.ascx- Caminho:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\UserControls\DadosProdutoInsumo.ascx - ID:
ucDadosProdutoInsumo - Tag:
<ucDadosProdutoInsumo:DadosProdutoInsumo ID="ucDadosProdutoInsumo" runat="server" /> - Propriedades Expostas:
IdTipoInsumo(int?): Propriedade de leitura/escrita que armazena o ID do tipo de insumo no ViewState. Setado pela tela pai emInicializaretxtTipoInsumo_ValorAlterado.IdComplementoInsumo(int?): Propriedade de leitura/escrita que armazena o ID do complemento de insumo no ViewState. Setado pela tela pai emCarregarDadosetxtTipoInsumo_ValorAlterado.- Eventos: Nenhum evento exposto diretamente para a tela pai.
- Métodos Públicos Chamados pela Tela Pai:
ValidarCampos(): Valida os campos internos do UserControl. Chamado emValidarCamposda tela pai.SalvarDados(ref Insumo objInsumo): Popula as propriedades do objetoInsumocom os dados dos controles internos do UserControl. Chamado emSalvarControlesda tela pai.CarregarDados(Insumo objInsumo): Carrega os dados de um objetoInsumonos controles internos do UserControl. Chamado emCarregarDadosda tela pai.LimparControles(): Limpa os campos internos do UserControl e reseta suas propriedades de ViewState. Chamado emLimparControlesetxtCodigoInsumo_ValorAlteradoda tela pai.
7.4. WebServices, APIs externas, filas
- RabbitMQ:
FilaRabbitMQ.VinculoInsumos: Utilizada para enviar mensagens relacionadas a vínculos de insumos.- Origem:
GrupoFiltroInsumo_P2.cs(métodosCancelarVinculoInsumoeFornecerInsumoAutomatico,FornecerInsumoAdmissaoEmpregado). - Propósito: Enviar informações para processamento assíncrono de vínculos de insumos, como cancelamento ou fornecimento automático.
FilaRabbitMQ.Insumos: Utilizada para enviar mensagens relacionadas a insumos.- Origem:
Insumo_P2.cs(métodoUpdate). - Propósito: Enviar informações sobre insumos fornecidos não pagos para reprocessamento após uma atualização do insumo.
💬 8. Mensagens ao Usuário
- “Existem valores inválidos, favor verificar.” (Erro, exibida por
SalvarDadosquandoPage.IsValidéfalseno primeiro salvamento de um novo insumo). - “Preencha o campo com o Tipo de Insumo.” (Erro, exibida por
ValidarCampossetxtTipoInsumoestiver vazio). - “Preencha o campo com o Nome Insumo.” (Erro, exibida por
ValidarCampossetxtNomeInsumoestiver vazio). - “O campo Inativo não pode estar em branco.” (Erro, exibida por
ValidarCamposselsInativoestiver vazio). - “Existem valores inválidos, verifique os campos.” (Erro, exibida por
ValidarCamposquandoPage.IsValidéfalseem salvamentos subsequentes ou edições). - “Já existe um insumo {0}.” (Erro, exibida por
SalvarControlesseInsumo.VerificarInsumoPorNomeretornartrue). - “Insumo salvo com sucesso.” (Aviso, exibida por
SalvarControlesapós um salvamento bem-sucedido). - “Insumo não encontrado.” (Erro, exibida por
CarregarDadosseIdInsumotiver valor, masInsumo.CompleteObject()não encontrar o objeto). - “Produtos configurados para Centro de Serviço com regras vinculadas não podem ser editados ou excluídos.” (Aviso, exibida por
btnSalvar_OnClick,btnSalvarAvancar_OnClick,btnExcluir_OnClicksePodeSerEditadoOuExcluidoretornarfalse). - “Nenhum insumo foi carregado para exclusão.” (Aviso, exibida por
ExcluirInsumoseIdInsumonão tiver valor). - Mensagens de retorno da stored procedure
TAB_SP_Inativar_Arvore_Insumo(Aviso/Erro, exibidas porbtnModalConfirmar_OnClick). - Mensagens de retorno da stored procedure
plataforma.TAB_SP_Excluir_Configuracao_Insumo(Aviso/Erro, exibidas porExcluirInsumo). - “Preencha o campo fornecedor.” (Erro, exibida por
ucDadosProdutoInsumo.ValidarCampos()). - “Campo Inválido.” (Erros de validação de controles
Employer:Localizar...eEmployer:ListaSugestoes). - “Campo {Nome do Campo} é Inválido.” (Erros de validação de controles
Employer:Localizar...eEmployer:ListaSugestoes). - “Campo Obrigatório.” (Erros de validação de controles
Employer:Localizar...eEmployer:ListaSugestoeseEmployer:ControlAlfaNumerico). - “Campo {Nome do Campo} é Obrigatório.” (Erros de validação de controles
Employer:Localizar...eEmployer:ListaSugestoeseEmployer:ControlAlfaNumerico). - “Formato incorreto.” (Erro de validação de
txtCodigoInsumo). - “Não é possível inativar o registro, pois o mesmo está sendo utilizado.” (Erro, lançada por
TipoInsumo.SalvarComDependenciasse um tipo de insumo com vínculos ativos for inativado). - “Existem configurações de regras vinculadas ao produto. Deseja inativar?” (Texto exibido no modal
mpeModalInativacao). - “Existem configurações de regras vinculadas ao produto. Deseja excluir?” (Texto exibido no modal
mpeModalExclusao).
🔐 9. Permissões e Perfis
Enum.Permissoes.Insumos.VisualizarConfiguracaoInsumos: Permissão necessária para acessar a telaConfiguracaoInsumos.aspx. Se o usuário não a possuir, é redirecionado para outra tela ou para a página de acesso negado.Enum.Permissoes.Insumos.VisualizarRegraInsumo: Permissão verificada emConfigurarPermissoes. Se o usuário não tiverVisualizarConfiguracaoInsumos, mas tiver esta, é redirecionado paraConfiguracaoRegraInsumos.aspx.Enum.Permissoes.Insumos.VisualizarPermissaoFornecimentoInsumos: Permissão verificada emConfigurarPermissoesebtlPermissaoFornecimentoInsumo_Click. Se o usuário não tiverVisualizarConfiguracaoInsumosnemVisualizarRegraInsumo, mas tiver esta, é redirecionado paraPermissaoFornecimentoInsumos.aspx.- Parâmetro de Sistema
UtilizaModuloInsumos: Um parâmetro configurável no sistema (BLL.Enumeradores.NomeParametro.UtilizaModuloInsumos) que, em conjunto com oNomeCentroServicosendo “employer”, determina se o módulo de insumos está ativo para a empresa. Se não estiver ativo, o acesso à tela é negado.
🔎 10. Aprofundamento — Detalhes Internos de Métodos
Insumo
Arquivos:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Insumo_P1.csC:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Insumo_P2.cs
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
Insumo() | public Insumo() | Construtor padrão. |
Insumo(int idInsumo) | public Insumo(int idInsumo) | Construtor que inicializa o objeto com um ID de insumo existente, marcando-o como persistido. |
Save() | public void Save() | Salva a instância do insumo no banco de dados (insere se novo, atualiza se existente). |
Save(SqlTransaction trans) | public void Save(SqlTransaction trans) | Salva a instância do insumo no banco de dados dentro de uma transação. |
Delete(int idInsumo) | public static void Delete(int idInsumo) | Exclui um insumo do banco de dados pelo ID. |
Delete(int idInsumo, SqlTransaction trans) | public static void Delete(int idInsumo, SqlTransaction trans) | Exclui um insumo do banco de dados pelo ID, dentro de uma transação. |
Delete(List<int> idInsumo) | public static void Delete(List<int> idInsumo) | Exclui uma lista de insumos do banco de dados pelos IDs. |
LoadObject(int idInsumo) | public static Insumo LoadObject(int idInsumo) | Carrega e retorna uma instância de Insumo a partir do banco de dados pelo ID. |
LoadObject(int idInsumo, SqlTransaction trans) | public static Insumo LoadObject(int idInsumo, SqlTransaction trans) | Carrega e retorna uma instância de Insumo a partir do banco de dados pelo ID, dentro de uma transação. |
CompleteObject() | public bool CompleteObject() | Completa os atributos da instância atual de Insumo com dados do banco de dados. |
CompleteObject(SqlTransaction trans) | public bool CompleteObject(SqlTransaction trans) | Completa os atributos da instância atual de Insumo com dados do banco de dados, dentro de uma transação. |
Listar() | public static List<Insumo> Listar() | Retorna uma lista de todos os insumos cadastrados no banco de dados. |
VerificarInsumoPorNome(int? idfInsumo, string nomeInsumo) | public static bool VerificarInsumoPorNome(int? idfInsumo, string nomeInsumo) | Verifica se já existe um insumo com o nome fornecido, excluindo o próprio ID do insumo se for uma edição. |
ExcluirInsumo(int idfInsumo) | public static bool ExcluirInsumo(int idfInsumo) | Exclui um insumo do banco de dados. |
RecuperarFilialPorInsumo(int idfInsumo) | public static Filial RecuperarFilialPorInsumo(int idfInsumo) | Recupera a filial associada a um insumo. |
RecuperarPessoaFisicaPorInsumo(int idfInsumo) | public static PessoaFisica RecuperarPessoaFisicaPorInsumo(int idfInsumo) | Recupera a pessoa física associada a um insumo. |
ExcluirInsumo(int pIdEmpresa, int? pIdInsumo, int? pIdConfiguracaoInsumo, int? pIdGrupoFiltroInsumo, out string pMensagem) | public static bool ExcluirInsumo(int pIdEmpresa, int? pIdInsumo, int? pIdConfiguracaoInsumo, int? pIdGrupoFiltroInsumo, out string pMensagem) | Exclui um insumo, configuração de insumo ou grupo de filtro de insumo, utilizando uma stored procedure. |
ExisteVinculoExclusaoInsumo(int idInsumo) | public static bool ExisteVinculoExclusaoInsumo(int idInsumo) | Verifica se existem vínculos que impedem a exclusão de um insumo. |
GetParameters() | private List<SqlParameter> GetParameters() | Método auxiliar para preparar a lista de parâmetros SQL para insert/update. |
SetParameters(List<SqlParameter> parms) | private void SetParameters(List<SqlParameter> parms) | Método auxiliar para preencher a lista de parâmetros SQL com os valores da instância. |
Insert() | private void Insert() | Insere uma nova instância de Insumo no banco de dados. |
Insert(SqlTransaction trans) | private void Insert(SqlTransaction trans) | Insere uma nova instância de Insumo no banco de dados, dentro de uma transação. |
Update() | private void Update() | Atualiza uma instância existente de Insumo no banco de dados. |
Update(SqlTransaction trans) | private void Update(SqlTransaction trans) | Atualiza uma instância existente de Insumo no banco de dados, dentro de uma transação. |
LoadDataReader(int idInsumo) | private static IDataReader LoadDataReader(int idInsumo) | Retorna um IDataReader para um insumo específico. |
LoadDataReader(int idInsumo, SqlTransaction trans) | private static IDataReader LoadDataReader(int idInsumo, SqlTransaction trans) | Retorna um IDataReader para um insumo específico, dentro de uma transação. |
LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | public static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | Retorna um IDataReader para uma consulta paginada de insumos. |
SetInstance(IDataReader dr, Insumo objInsumo, bool bDispose = true) | private static bool SetInstance(IDataReader dr, Insumo objInsumo, bool bDispose = true) | Método auxiliar para preencher uma instância de Insumo a partir de um IDataReader. |
RecuperarInsumosFornecidosNaoPagosPorInsumo(int idInsumo, SqlTransaction pTrans = null) | private DataTable RecuperarInsumosFornecidosNaoPagosPorInsumo(int idInsumo, SqlTransaction pTrans = null) | Recupera uma DataTable de empregados com insumos fornecidos não pagos para um insumo específico. |
Detalhamento de Métodos Importantes
Save()
- Lógica: Este método é o ponto de entrada para persistir um objeto
Insumo.
- Verifica a propriedade
_persistedda instância. - Se
_persistedforfalse(indicando que é um novo insumo), chama o métodoInsert(). - Se
_persistedfortrue(indicando que é um insumo existente), chama o métodoUpdate().
- Stored Procedures chamadas: Nenhuma diretamente. Chama
Insert()ouUpdate(), que por sua vez chamam as queries SQL. - Validações: Nenhuma diretamente. As validações de campos são esperadas na camada de UI ou antes de chamar
Save(). - Regras de negócio: Nenhuma diretamente. A lógica de negócio é delegada para
Insert()eUpdate().
Save(SqlTransaction trans)
- Lógica: Similar ao
Save()sem transação, mas executa as operações dentro de uma transação SQL fornecida.
- Verifica a propriedade
_persistedda instância. - Se
_persistedforfalse, chama o métodoInsert(trans). - Se
_persistedfortrue, chama o métodoUpdate(trans).
- Stored Procedures chamadas: Nenhuma diretamente. Chama
Insert(trans)ouUpdate(trans).
Insert()
- Lógica: Insere um novo registro de insumo no banco de dados.
- Chama
GetParameters()para obter uma lista de parâmetros SQL vazia. - Chama
SetParameters(parms)para preencher a lista de parâmetros com os valores da instância atual deInsumo. OIdf_Insumoé configurado comoOutputpara receber o ID gerado. - Abre uma nova conexão SQL e inicia uma transação.
- Executa a query
SPINSERT(INSERT INTO TAB_Insumo ...) usandoDataAccessLayer.ExecuteNonQueryCmd. - Recupera o
Idf_Insumogerado pelo banco de dados (usandoSCOPE_IDENTITY()) e atribui à propriedade_idInsumoda instância. - Limpa os parâmetros do comando.
- Define
_persisted = truee_modified = false. - Comita a transação.
- Em caso de exceção, faz rollback da transação e relança a exceção.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
SPINSERT. SPINSERT:INSERT INTO TAB_Insumo (Idf_Fornecedor, Idf_Empresa, Idf_Usuario_Gerador, Idf_Tipo_Insumo, Idf_Complemento_Insumo, Nme_Insumo, Cod_Insumo_Fornecedor, Des_Identificacao_Insumo, Flg_Fornecimento_Continuo, Flg_Inativo, Dta_Cadastro, Idf_Configuracao_Para) VALUES (@Idf_Fornecedor, @Idf_Empresa, @Idf_Usuario_Gerador, @Idf_Tipo_Insumo, @Idf_Complemento_Insumo, @Nme_Insumo, @Cod_Insumo_Fornecedor, @Des_Identificacao_Insumo, @Flg_Fornecimento_Continuo, @Flg_Inativo, @Dta_Cadastro, @Idf_Configuracao_Para);SET @Idf_Insumo = SCOPE_IDENTITY();@Idf_Fornecedor: ID do fornecedor.@Idf_Empresa: ID da empresa (pode ser nulo).@Idf_Usuario_Gerador: ID do usuário que gerou o registro.@Idf_Tipo_Insumo: ID do tipo de insumo.@Idf_Complemento_Insumo: ID do complemento de insumo.@Nme_Insumo: Nome do insumo.@Cod_Insumo_Fornecedor: Código do insumo no fornecedor (pode ser nulo).@Des_Identificacao_Insumo: Descrição de identificação do insumo (pode ser nulo).@Flg_Fornecimento_Continuo: Flag de fornecimento contínuo.@Flg_Inativo: Flag de inativo.@Dta_Cadastro: Data de cadastro.@Idf_Configuracao_Para: ID da configuração “para” (Empresa/Centro de Serviço, pode ser nulo).@Idf_Insumo: Parâmetro de saída para o ID do insumo gerado.- Validações: Nenhuma interna. Depende das validações na camada de UI ou antes da chamada.
- Exceções: Lança exceções de banco de dados em caso de falha na inserção.
Insert(SqlTransaction trans)
- Lógica: Similar ao
Insert()sem transação, mas executa a inserção dentro de uma transação SQL fornecida.
- Chama
GetParameters()eSetParameters(parms). - Executa a query
SPINSERTusandoDataAccessLayer.ExecuteNonQueryCmdcom a transação fornecida. - Recupera o
Idf_Insumogerado e atribui à propriedade_idInsumo. - Limpa os parâmetros do comando.
- Define
_persisted = truee_modified = false.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
SPINSERT. - Validações: Nenhuma interna.
- Exceções: Propaga exceções de banco de dados.
Update()
- Lógica: Atualiza um registro de insumo existente no banco de dados.
- Verifica se
_modifiedétrue. Se não houver modificações, o método não faz nada. - Chama
GetParameters()eSetParameters(parms). - Executa a query
SPUPDATE(UPDATE TAB_Insumo SET ...) usandoDataAccessLayer.ExecuteNonQuery. - Define
_modified = false. - Chama
RecuperarInsumosFornecidosNaoPagosPorInsumo(this._idInsumo)para obter umaDataTablede empregados com insumos fornecidos não pagos. - Chama
BeneficioControle.SalvarEnviarParaFornecimento(dtInsumosFornecidos, FilaRabbitMQ.Insumos, null, this.UsuarioGerador.IdUsuario)para enviar esses insumos para a fila RabbitMQ para reprocessamento.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
SPUPDATE. SPUPDATE:UPDATE TAB_Insumo SET Idf_Fornecedor = @Idf_Fornecedor, Idf_Empresa = @Idf_Empresa, Idf_Usuario_Gerador = @Idf_Usuario_Gerador, Idf_Tipo_Insumo = @Idf_Tipo_Insumo, Idf_Complemento_Insumo = @Idf_Complemento_Insumo, Nme_Insumo = @Nme_Insumo, Cod_Insumo_Fornecedor = @Cod_Insumo_Fornecedor, Des_Identificacao_Insumo = @Des_Identificacao_Insumo, Flg_Fornecimento_Continuo = @Flg_Fornecimento_Continuo, Flg_Inativo = @Flg_Inativo, Dta_Cadastro = @Dta_Cadastro, Idf_Configuracao_Para = @Idf_Configuracao_Para WHERE Idf_Insumo = @Idf_Insumo@Idf_Fornecedor: ID do fornecedor.@Idf_Empresa: ID da empresa (pode ser nulo).@Idf_Usuario_Gerador: ID do usuário que gerou o registro.@Idf_Tipo_Insumo: ID do tipo de insumo.@Idf_Complemento_Insumo: ID do complemento de insumo.@Nme_Insumo: Nome do insumo.@Cod_Insumo_Fornecedor: Código do insumo no fornecedor (pode ser nulo).@Des_Identificacao_Insumo: Descrição de identificação do insumo (pode ser nulo).@Flg_Fornecimento_Continuo: Flag de fornecimento contínuo.@Flg_Inativo: Flag de inativo.@Dta_Cadastro: Data de cadastro.@Idf_Configuracao_Para: ID da configuração “para” (Empresa/Centro de Serviço, pode ser nulo).@Idf_Insumo: ID do insumo a ser atualizado.- Validações: Nenhuma interna.
- Regras de negócio: Após a atualização, os insumos fornecidos não pagos são enviados para a fila RabbitMQ
FilaRabbitMQ.Insumospara reprocessamento.
Update(SqlTransaction trans)
- Lógica: Similar ao
Update()sem transação, mas executa a atualização dentro de uma transação SQL fornecida.
- Verifica se
_modifiedétrue. - Chama
GetParameters()eSetParameters(parms). - Executa a query
SPUPDATEusandoDataAccessLayer.ExecuteNonQuerycom a transação fornecida. - Define
_modified = false. - Chama
RecuperarInsumosFornecidosNaoPagosPorInsumo(this._idInsumo, trans)para obter umaDataTablede empregados com insumos fornecidos não pagos, utilizando a transação. - Chama
BeneficioControle.SalvarEnviarParaFornecimento(dtInsumosFornecidos, FilaRabbitMQ.Insumos, trans, this.UsuarioGerador.IdUsuario)para enviar esses insumos para a fila RabbitMQ para reprocessamento, utilizando a transação.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
SPUPDATE. - Validações: Nenhuma interna.
- Regras de negócio: Após a atualização, os insumos fornecidos não pagos são enviados para a fila RabbitMQ
FilaRabbitMQ.Insumospara reprocessamento.
Delete(int idInsumo)
- Lógica: Exclui um insumo do banco de dados.
- Cria uma lista de parâmetros SQL.
- Adiciona
@Idf_Insumoe@Idf_Usuario_Geradorà lista de parâmetros. - Define o valor de
@Idf_Insumocom oidInsumofornecido. - Define o valor de
@Idf_Usuario_Geradorcom oCodigoUsuarioda sessão atual. - Executa a query
SPDELETE(UPDATE TAB_Insumo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Insumo = @Idf_Insumo ; DELETE FROM TAB_Insumo WHERE Idf_Insumo = @Idf_Insumo) usandoDataAccessLayer.ExecuteNonQuery.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
SPDELETE. SPDELETE:UPDATE TAB_Insumo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Insumo = @Idf_Insumo ; DELETE FROM TAB_Insumo WHERE Idf_Insumo = @Idf_Insumo@Idf_Insumo: ID do insumo a ser excluído.@Idf_Usuario_Gerador: ID do usuário que realizou a exclusão (para fins de auditoria antes da exclusão física).- Validações: Nenhuma interna.
- Regras de negócio: Antes da exclusão física, o campo
Idf_Usuario_Geradoré atualizado no registro do insumo, possivelmente para fins de auditoria.
ExcluirInsumo(int pIdEmpresa, int? pIdInsumo, int? pIdConfiguracaoInsumo, int? pIdGrupoFiltroInsumo, out string pMensagem)
- Lógica: Este método é uma sobrecarga para exclusão mais abrangente, que pode excluir um insumo, uma configuração de insumo ou um grupo de filtro de insumo, e utiliza uma stored procedure.
- Carrega o período de cálculo aberto para a empresa (
PeriodoCalculo.CarregarPeriodoCalculoAbertoPorEmpresa). - Inicializa
pResultadocomo 0 epMensagemcomo string vazia. - Cria uma lista de parâmetros SQL:
@Idf_Empresa: ID da empresa.@Idf_Periodo_Calculo: ID do período de cálculo aberto.@Idf_Grupo_Filtro_Insumo: ID do grupo de filtro de insumo (pode ser nulo).@Idf_Configuracao_Insumo: ID da configuração de insumo (pode ser nulo).@Idf_Insumo: ID do insumo (pode ser nulo).@Resultado: Parâmetro de saída para o resultado da operação (inteiro).@Msg: Parâmetro de saída para a mensagem de retorno (string).
- Executa a stored procedure
plataforma.TAB_SP_Excluir_Configuracao_InsumousandoDataAccessLayer.ExecuteNonQueryCmd. - Recupera os valores dos parâmetros de saída
@Resultadoe@Msg. - Limpa os parâmetros do comando.
- Retorna
truesepResultadofor igual adecimal.One(indicando sucesso),falsecaso contrário.
- Stored Procedures chamadas:
plataforma.TAB_SP_Excluir_Configuracao_Insumo@Idf_Empresa: ID da empresa.@Idf_Periodo_Calculo: ID do período de cálculo.@Idf_Grupo_Filtro_Insumo: ID do grupo de filtro de insumo (opcional).@Idf_Configuracao_Insumo: ID da configuração de insumo (opcional).@Idf_Insumo: ID do insumo (opcional).@Resultado(OUTPUT): Retorna 1 para sucesso, 0 para falha.@Msg(OUTPUT): Mensagem de retorno da stored procedure (sucesso ou erro).- Validações: Nenhuma interna. As validações de exclusão são realizadas pela stored procedure.
- Regras de negócio: A stored procedure
plataforma.TAB_SP_Excluir_Configuracao_Insumoé responsável por toda a lógica de exclusão, incluindo a verificação de vínculos e a exclusão em cascata, se aplicável.
VerificarInsumoPorNome(int? idfInsumo, string nomeInsumo)
- Lógica: Verifica a unicidade do nome de um insumo.
- Cria uma lista de parâmetros SQL para
@Idf_Insumoe@NomeInsumo. - Se
idfInsumotiver um valor, ele é atribuído ao parâmetro@Idf_Insumo; caso contrário,DBNull.Valueé usado. - O
nomeInsumoé atribuído ao parâmetro@NomeInsumo. - Executa a query
SPSELECTVERIFICARINSUMOPORNOME(SELECT COUNT(*) FROM TAB_Insumo WHERE Nme_Insumo = @NomeInsumo AND ((@Idf_Insumo IS NOT NULL AND @Idf_Insumo > 0 AND @Idf_Insumo <> Idf_Insumo) OR (@Idf_Insumo IS NULL AND Idf_Insumo > 0 ))) usandoDataAccessLayer.ExecuteScalar. - Retorna
truese o resultado da contagem for 1 (indicando que um insumo com o mesmo nome já existe e não é o próprio insumo que está sendo editado),falsecaso contrário.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
SPSELECTVERIFICARINSUMOPORNOME. SPSELECTVERIFICARINSUMOPORNOME:SELECT COUNT(*) FROM TAB_Insumo WHERE Nme_Insumo = @NomeInsumo AND ((@Idf_Insumo IS NOT NULL AND @Idf_Insumo > 0 AND @Idf_Insumo <> Idf_Insumo) OR (@Idf_Insumo IS NULL AND Idf_Insumo > 0 ))@NomeInsumo: Nome do insumo a ser verificado.@Idf_Insumo: ID do insumo atual (opcional, usado para exclusão do próprio insumo na verificação de unicidade em edições).- Validações: Regra de unicidade: garante que não existam dois insumos com o mesmo nome, exceto se for o próprio insumo em edição.
ExisteVinculoExclusaoInsumo(int idInsumo)
- Lógica: Verifica se existem vínculos de empregados com o insumo que impediriam sua exclusão.
- Define uma query SQL (
query) que conta o número de registros na tabelaTAB_Empregado_Insumoque estão vinculados aoidInsumofornecido e possuem umIdf_Status_Beneficio_Beneficiarioespecífico (1, 3 ou 10). - Cria uma lista de parâmetros SQL para
@Idf_Insumo. - Define o valor de
@Idf_Insumocom oidInsumofornecido. - Executa a query usando
DataAccessLayer.ExecuteScalar. - Retorna
truese a contagem for maior que zero (indicando que existem vínculos),falsecaso contrário.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
query. query:SELECT COUNT(1) AS Total FROM TAB_Empregado_Insumo EI INNER JOIN TAB_Grupo_Filtro_Insumo GFI ON GFI.Idf_Grupo_Filtro_Insumo = EI.Idf_Grupo_Filtro_Insumo INNER JOIN TAB_Configuracao_Insumo CI ON CI.Idf_Configuracao_Insumo = GFI.Idf_Configuracao_Insumo INNER JOIN TAB_Insumo I ON I.Idf_Insumo = CI.Idf_Insumo WHERE 1=1 AND EI.Idf_Status_Beneficio_Beneficiario IN ( 1,3,10 ) AND I.Idf_Insumo = @Idf_Insumo@Idf_Insumo: ID do insumo a ser verificado.- Regras de negócio: Um insumo não pode ser excluído se houver empregados vinculados a ele com status de benefício específico (1, 3 ou 10), que provavelmente representam status ativos ou pendentes.
RecuperarInsumosFornecidosNaoPagosPorInsumo(int idInsumo, SqlTransaction pTrans = null)
- Lógica: Recupera uma
DataTablecontendo os IDs dos empregados que possuem insumos fornecidos não pagos para um determinado insumo.
- Cria uma lista de parâmetros SQL para
@Idf_Insumo. - Define o valor de
@Idf_Insumocom oidInsumofornecido. - Executa a query
SPSELEMPREGADOPORIDINSUMONAOPAGO(SELECT DISTINCT insf.Idf_Empregado FROM TAB_Insumo_Fornecido insf ...) usandoDataAccessLayer.ExecuteReaderDs. Se uma transação (pTrans) for fornecida, a execução ocorre dentro dessa transação. - Retorna a primeira tabela do
DataSetresultante.
- Stored Procedures chamadas: Nenhuma. Utiliza a query SQL
SPSELEMPREGADOPORIDINSUMONAOPAGO. SPSELEMPREGADOPORIDINSUMONAOPAGO:SELECT DISTINCT insf.Idf_Empregado FROM TAB_Insumo_Fornecido insf (NOLOCK) INNER JOIN TAB_Empregado e (NOLOCK) ON insf.Idf_Empregado = e.Idf_Empregado INNER JOIN TAB_Contrato c (NOLOCK) ON e.Idf_Contrato = c.idf_Contrato LEFT JOIN TAB_Centro_Resultado cr (NOLOCK) ON e.Idf_Centro_Resultado = cr.Idf_Centro_Resultado INNER JOIN TAB_Periodo_Calculo_Filial pcf (NOLOCK) ON COALESCE(cr.Idf_Filial, c.Idf_Filial_Gestora) = pcf.Idf_Filial AND pcf.Flg_Fechado = 0 INNER JOIN plataforma.TAB_Periodo_Calculo pc ON pcf.Idf_Periodo_Calculo = pc.IDf_Periodo_Calculo INNER JOIN TAB_Holerite h ON e.Idf_Empregado = h.Idf_Empregado AND h.Idf_Periodo_Calculo = pc.Idf_Periodo_Calculo WHERE e.Flg_Inativo = 0 AND insf.Idf_Insumo = @Idf_Insumo AND h.Idf_Tipo_Folha IN (1,5,11,15) AND (h.Dta_Pagamento IS NOT NULL OR h.Idf_Arquivo_Gerado_Empregado IS NOT NULL)@Idf_Insumo: ID do insumo.- Regras de negócio: Identifica empregados que têm um insumo fornecido, mas que ainda não foi pago ou processado em holerites específicos (tipos de folha 1, 5, 11, 15) e cujo período de cálculo não está fechado. Esses empregados precisam ter seus insumos reprocessados.
Stored Procedures
| Nome | Parâmetros | Propósito |
|---|---|---|
plataforma.TAB_SP_Excluir_Configuracao_Insumo | @Idf_Empresa, @Idf_Periodo_Calculo, @Idf_Grupo_Filtro_Insumo (opcional), @Idf_Configuracao_Insumo (opcional), @Idf_Insumo (opcional), @Resultado (OUTPUT), @Msg (OUTPUT) | Exclui um insumo, configuração de insumo ou grupo de filtro de insumo, gerenciando a lógica de exclusão e vínculos. |
📌 Status: Concluído 👤 Responsável: Equipe de QA