WebFoPag ~37 min

🛠️ 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

NomeTipoObrigatórioRegra
lblConfigurarParaEmployer:Label⚪ NãoRótulo para lsConfigurarPara
lsConfigurarParaEmployer:ListaSugestoes⚪ NãoTipoSugestao: Numero. Deixe em branco para configurar para a empresa logada. Carregado com ConfiguracaoPara.ListarConfigsPara().
lblCodigoInsumoEmployer:Label🔴 SimRótulo para txtCodigoInsumo
txtCodigoInsumoEmployer:LocalizarInsumo🔴 SimLabelVisivel: 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.
lblTipoInsumoEmployer:Label🔴 SimRótulo para txtTipoInsumo
txtTipoInsumoEmployer:LocalizarTipoInsumo🔴 SimSkinID: 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.
lblComplementoInsumoEmployer:Label🔴 SimRótulo para txtComplementoInsumo
txtComplementoInsumoEmployer:LocalizarComplementoInsumo🔴 SimSkinID: 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.
lblNomeInsumoEmployer:Label🔴 SimRótulo para txtNomeInsumo
txtNomeInsumoEmployer:ControlAlfaNumerico🔴 SimWidth: 280px, Tamanho: 50. MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Nome Insumo é Obrigatório.”
lblInativosEmployer:Label🔴 SimRótulo para lsInativo
lsInativoEmployer:ListaSugestoes🔴 SimSkinID: 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.lblFornecedorEmployer:Label🔴 SimRótulo para ucDadosProdutoInsumo.txtFornecedor
ucDadosProdutoInsumo.txtFornecedorEmployer:LocalizarFornecedor🔴 SimSkinID: Obrigatorio, ModalWidth: 700, AutoWidth: 280. MensagemErroFormato: “Campo Inválido.”, MensagemErroFormatoSummary: “Campo Fornecedor é Inválido.”, MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Fornecedor é Obrigatório.”
ucDadosProdutoInsumo.lblCodigoInsumoFornecedorEmployer:Label⚪ NãoRótulo para ucDadosProdutoInsumo.txtCodigoInsumoFornecedor
ucDadosProdutoInsumo.txtCodigoInsumoFornecedorEmployer:ControlAlfaNumerico⚪ NãoTamanho: 30.
ucDadosProdutoInsumo.lblFornecimentoContinuoEmployer:Label🔴 SimRótulo para ucDadosProdutoInsumo.lsFornecimentoContinuo
ucDadosProdutoInsumo.lsFornecimentoContinuoEmployer:ListaSugestoes🔴 SimTipoSugestao: Numero. MensagemErroInvalido: “Campo Inválido.”, MensagemErroInvalidoSummary: “Campo Fornecimento Contínuo é Inválido.”, MensagemErroObrigatorio: “Campo Obrigatório.”, MensagemErroObrigatorioSummary: “Campo Fornecimento Contínuo é Obrigatório.”
ucDadosProdutoInsumo.lblIdInsumoEmployer:Label⚪ NãoRótulo para ucDadosProdutoInsumo.txtIdentificacaoInsumo
ucDadosProdutoInsumo.txtIdentificacaoInsumoasp:TextBox⚪ NãoTextMode: MultiLine, Height: 80, Columns: 100, MaxLength: 255 (definido em código).
btnSalvarEmployer:Button⚪ NãoToolTip: “Avançar” ou “Salvar”, Text: “Avançar” ou “Salvar”. Evento OnClick chama btnSalvar_OnClick.
btnExcluirEmployer:Button⚪ NãoToolTip: “Excluir Produto”, Text: “Excluir”. Evento OnClick chama btnExcluir_OnClick.
btnLimparEmployer:Button⚪ NãoToolTip: “Limpar”, Text: “Limpar”. Evento OnClick chama btnLimpar_OnClick.
btnVoltarEmployer:Button⚪ NãoToolTip: “Voltar”, Text: “Voltar”. Evento OnClick chama btnVoltar_OnClick.
buttonSalvarAvancarEmployer:Button⚪ NãoToolTip: “Avançar”, Text: “Salvar e Avançar”. Evento OnClick chama btnSalvarAvancar_OnClick.
mConfigurarProdutoEmployer:EmployerModalConfirmacao⚪ NãoModal de confirmação genérica. Eventos OnConfirmar, OnCancelar, OnFecharModal.
pnlModalInativacaoEmployer:Panel⚪ NãoModal de confirmação de inativação.
lblTituloModalInativacaoEmployer:Label⚪ NãoRótulo do modal de inativação.
btnModalConfirmarEmployer:Button⚪ NãoBotão de confirmação no modal de inativação. Evento OnClick chama btnModalConfirmar_OnClick.
btnCancelarEmployer:Button⚪ NãoBotão de cancelar no modal de inativação. Evento OnClick chama btnCancelar_OnClick.
pnlModalExclusaoEmployer:Panel⚪ NãoModal de confirmação de exclusão.
lblExclusaoProdutoEmployer:Label⚪ NãoRótulo do modal de exclusão.
btnConfirmarExclusaoEmployer:Button⚪ NãoBotão de confirmação no modal de exclusão. Evento OnClick chama btnConfirmarExclusao_OnClick.
btnCancelarExclusaoEmployer:Button⚪ NãoBotão de cancelar no modal de exclusão. Evento OnClick chama btnCancelarExclusao_OnClick.
btlRegrasInsumosasp:LinkButton⚪ NãoLink para a tela de regras de insumos. Evento OnClick chama btlRegrasInsumos_Click.
btlPermissoesFornecimentoasp:LinkButton⚪ NãoLink 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 o Employer:EmployerValidationSummary para exibir erros de validação.

  • divGvwErros: Exibe erros gerais em um Employer: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 o TabNavigator, inicialmente invisível para novos insumos.

  • tbDadosProdutoInsumo: Employer:TabView que contém o UserControl ucDadosProdutoInsumo.

  • 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 um IdFornecedorSelecionado vá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 o CodigoEmpresa do 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 por ConfiguracaoPara.ListarConfigsPara().
  • O foco inicial da tela é definido para txtTipoInsumo.
  • Se IdInsumo (armazenado na ViewState ou vindo da sessão) tiver um valor, txtCodigoInsumo é preenchido, e CarregarDados() é chamado.
  • Controle de Acesso e Redirecionamento (ConfiguracaoInsumos.aspx.cs - ConfigurarPermissoes()):
  • A tela só é acessível se o parâmetro de sistema UtilizaModuloInsumos for true para a empresa logada E o NomeCentroServico for “employer”. Caso contrário, o usuário é redirecionado para Resources.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:
  • divSituacao e pnlAbas tornam-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:
  • txtTipoInsumo e txtComplementoInsumo são desabilitados.
  • txtCodigoInsumo é desabilitado.
  • divSituacao e pnlAbas sã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) E ExisteRegraVinculada(IdInsumo.Value) for true, o campo lsConfigurarPara é desabilitado. Caso contrário, é habilitado.
  • Se lsInativo.ValorInt for “Sim” (1), o botão buttonSalvarAvancar é desabilitado.
  • Alteração da Situação do Insumo (ConfiguracaoInsumos.aspx.cs - lsInativo_ValorAlterado()):
  • Se o valor selecionado em lsInativo for “Sim” (1), o botão buttonSalvarAvancar é 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()) E ExisteRegraVinculada() for true, o modal mpeModalInativacao é 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 modal mpeModalExclusao é 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 procedure plataforma.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)), uma InvalidOperationException é 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 divSituacao não estiver visível (indicando um novo insumo), o método valida os campos iniciais (Page.Validate("vgSalvar")). Se válidos, divSituacao e pnlAbas tornam-se visíveis, o texto do btnSalvar muda para “Salvar”, a aba tbDadosProdutoInsumo é ativada, e o método retorna false (não persiste ainda, apenas avança no fluxo de UI).
  • Validação de Campos: Chama ValidarCampos() (da tela principal) e ucDadosProdutoInsumo.ValidarCampos() (do UserControl). Se alguma validação falhar, exibe a mensagem de erro correspondente e retorna false.
  • Validação de Inativação: Chama ValidarInativacao(). Se retornar false (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 retorna false.
  • Cria um novo objeto Insumo ou carrega um existente (Insumo.LoadObject(IdInsumo.Value)).
  • Popula as propriedades do objInsumo:
  • ConfiguracaoPara: Carrega ConfiguracaoPara.LoadObject(lsConfigurarPara.ValorInt.Value) se lsConfigurarPara tiver valor, caso contrário, usa ConfiguracaoPara.LoadObject(1) (que representa a configuração para “Empresa”).
  • TipoInsumo: Carrega TipoInsumo.LoadObject(txtTipoInsumo.IdTipoInsumoSelecionado.Value).
  • ComplementoInsumo: Carrega ComplementoInsumo.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 chama Insert ou Update).
  • Atualiza IdInsumo na ViewState com o ID do insumo salvo.
  • Exibe mensagem de sucesso: “Insumo salvo com sucesso.”
  • Retorna true se 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() retorna true):
  • PreencherVariaveisSessao(): Salva IdInsumo, IdTipoInsumo, IdComplementoInsumo, txtNomeInsumo.Text e IdConfiguracaoInsumo na sessão para uso em telas subsequentes.
  • Redireciona para ConfiguracaoRegraInsumos.aspx (via btlRegrasInsumos_Click).
  • Salvar Filtro de Grupo de Insumo (GrupoFiltroInsumo_P2.cs - SalvarFiltro()):
  • Salva o objGrupoFiltroInsumo e seu AlteracaoMaster (se existir) dentro de uma transação.
  • Chama CancelarVinculoInsumo() para ajustar os vínculos de empregados.
  • Se flagInsumoObrigatorio for true, tenta chamar FornecerInsumoAutomatico() 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 RabbitMQ FilaRabbitMQ.Insumos para 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) como true e redireciona o usuário para a tela CadastroTiposComplementos.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, txtTipoInsumo e txtComplementoInsumo.
  • Oculta divSituacao e pnlAbas.
  • Define bNovoInsumo como false.
  • Limpa a tabela de erros (DtErros).
  • Redefine o texto do btnSalvar para “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 mConfigurarProduto for “Recalcular Insumos Mês Vigente”, define a variável de sessão Chave.Temporaria.Variavel5 como true e redireciona para InsumosLote.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 BulkInsert dos empregados na tabela EmpregadoInsumo.
  • Chama InsumoFornecido.ProcessoRecalculoPorGrupoFiltroInsumo e, se houver empregados, envia para a fila RabbitMQ FilaRabbitMQ.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 BulkInsert dos 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

  1. Inicialização da Tela (Page_Load):
  • Page_Load (ConfiguracaoInsumos.aspx.cs)
  • Verifica se é IsPostBack.
  • Se não for PostBack:
  • Verifica AcessoModuloWebEstagio e ajusta ScriptMode do MasterPage se true.
  • Chama Inicializar().
  • ConfigurarPermissoes():
  • Verifica o parâmetro UtilizaModuloInsumos e o NomeCentroServico (deve ser “employer”).
  • Chama Usuario.CarregarPermissoes(new Usuario(CodigoUsuarioLogado), Enum.CategoriaPermissao.Insumos) para obter as permissões do usuário.
  • Redireciona para UrlAcessoNegado, ConfiguracaoRegraInsumos.aspx ou PermissaoFornecimentoInsumos.aspx conforme as permissões.
  • Configura txtCodigoInsumo.IdEmpresa com o CodigoEmpresa do usuário logado.
  • Carrega lsInativo com as opções “Ativo” (0) e “Inativo” (1), selecionando “Ativo” por padrão.
  • Carrega lsConfigurarPara com os dados de ConfiguracaoPara.ListarConfigsPara().
  • Define o foco para txtTipoInsumo.
  • Se IdInsumo (da ViewState ou sessão) tiver valor:
  • Preenche txtCodigoInsumo.IdInsumoSelecionado e txtCodigoInsumo.Texto.
  • Chama CarregarDados().
  1. Carregar Dados de Insumo Existente (txtCodigoInsumo_ValorAlterado ou Inicializar):
  • txtCodigoInsumo_ValorAlterado (ConfiguracaoInsumos.aspx.cs)
  • Se txtCodigoInsumo.IdInsumoSelecionado tiver valor:
  • Define bNovoInsumo = false.
  • Chama ucDadosProdutoInsumo.LimparControles().
  • Define ucDadosProdutoInsumo.IdTipoInsumo com o IdTipoInsumo atual.
  • Atualiza IdInsumo na ViewState com o ID selecionado.
  • Chama CarregarDados().
  • Cria Insumo objInsumo = new Insumo(IdInsumo.Value).
  • Chama objInsumo.CompleteObject() para preencher o objeto Insumo com 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 divSituacao e pnlAbas visíveis.
  • Muda o texto do btnSalvar para “Salvar”.
  • Se objInsumo.ConfiguracaoPara.IdfConfiguracaoPara == 0 (Centro de Serviço) e ExisteRegraVinculada(IdInsumo.Value) for true, desabilita lsConfigurarPara. Caso contrário, habilita.
  • Se txtCodigoInsumo.IdInsumoSelecionado não tiver valor, chama LimparControles().
  • Limpa DtErros e oculta divGvwErrosObrigatoriedadeCodRegul.
  • Define o foco para txtTipoInsumo.
  1. Salvar Insumo (btnSalvar_OnClick):
  • btnSalvar_OnClick (ConfiguracaoInsumos.aspx.cs)
  • Se EhEdicao() for true, verifica PodeSerEditadoOuExcluido(). Se false, exibe aviso e retorna.
  • Chama SalvarDados().
  • Fluxo de Novo Insumo (primeiro clique): Se divSituacao.Visible for false:
  • Valida Page.IsValid para vgSalvar.
  • Se inválido, exibe “Existem valores inválidos, favor verificar.” e retorna false.
  • Torna divSituacao e pnlAbas visíveis.
  • Muda btnSalvar.Text e btnSalvar.ToolTip para “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). Se false, exibe erro e retorna false.
  • Chama ValidarInativacao(). Se false (modal de inativação exibido), retorna false.
  • Chama SalvarControles().
  • Verifica Insumo.VerificarInsumoPorNome() para unicidade do nome do insumo. Se duplicado, exibe erro e retorna false.
  • Cria um novo objeto Insumo ou carrega um existente (Insumo.LoadObject(IdInsumo.Value)).
  • Popula objInsumo.ConfiguracaoPara, objInsumo.TipoInsumo, objInsumo.ComplementoInsumo, objInsumo.NomeInsumo, objInsumo.FlagInativo, objInsumo.Empresa com dados dos controles.
  • Chama ucDadosProdutoInsumo.SalvarDados(ref objInsumo) para preencher as propriedades do UserControl.
  • Chama objInsumo.Save() para persistir os dados no banco.
  • Atualiza IdInsumo na ViewState.
  • Exibe “Insumo salvo com sucesso.”
  • Retorna true.
  1. Salvar e Avançar (btnSalvarAvancar_OnClick):
  • btnSalvarAvancar_OnClick (ConfiguracaoInsumos.aspx.cs)
  • Se EhEdicao() for true, verifica PodeSerEditadoOuExcluido(). Se false, exibe aviso e retorna.
  • Chama SalvarDados().
  • Se SalvarDados() retornar true:
  • PreencherVariaveisSessao(): Salva IdInsumo, IdTipoInsumo, IdComplementoInsumo, txtNomeInsumo.Text e IdConfiguracaoInsumo na sessão.
  • Chama btlRegrasInsumos_Click(null, null) para redirecionar para ConfiguracaoRegraInsumos.aspx.
  1. Excluir Insumo (btnExcluir_OnClick):
  • btnExcluir_OnClick (ConfiguracaoInsumos.aspx.cs)
  • Se IdInsumo tiver valor, verifica PodeSerEditadoOuExcluido(). Se false, exibe aviso e retorna.
  • Chama ValidarExclusao().
  • Se Insumo.ExisteVinculoExclusaoInsumo() for true, exibe mpeModalExclusao e retorna true (para indicar que o modal foi exibido).
  • Se ValidarExclusao() retornar false (nenhum vínculo ou modal não exibido), chama ExcluirInsumo() (da tela principal).
  • ExcluirInsumo() (ConfiguracaoInsumos.aspx.cs)
  • Se IdInsumo tiver valor:
  • Chama Insumo.ExcluirInsumo(CodigoEmpresa, IdInsumo.Value, null, null, out msg).
  • Se sucesso, exibe msg (aviso) e chama LimparControles().
  • Se falha, exibe msg (erro).
  • Se IdInsumo não tiver valor, exibe “Nenhum insumo foi carregado para exclusão.”.
  • Oculta mpeModalExclusao.
  1. 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).
  1. Limpar Tela (btnLimpar_OnClick):
  • btnLimpar_OnClick (ConfiguracaoInsumos.aspx.cs)
  • Redireciona para ConfiguracaoInsumos.aspx (recarrega a página, limpando todos os estados).
  1. Voltar (btnVoltar_OnClick):
  • btnVoltar_OnClick (ConfiguracaoInsumos.aspx.cs)
  • Define IdInsumo = null.
  • Redireciona para MenuMaisOpcoes.aspx?opcao=L.
  1. 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.
  1. 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 para Configuracao.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 objeto ComplementoInsumo pelo seu ID. Utilizado em SalvarControles para associar o complemento de insumo ao objeto Insumo e em CarregarDados para preencher o UserControl.
  • InativarPorTipoInsumo(int idTipoInsumo, SqlTransaction trans): Inativa todos os complementos de insumo associados a um idTipoInsumo específico. Chamado dentro de TipoInsumo.SalvarComDependencias quando 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 um idInsumo. Utilizado em ValidarInativacao e PodeSerEditadoOuExcluido para 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 de TipoInsumo.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 um IDataReader com todas as configurações “Para” (Centro de Serviço, Empresa). Utilizado em Inicializar para popular o lsConfigurarPara.
  • LoadObject(int id): Carrega um objeto ConfiguracaoPara pelo seu ID. Utilizado em SalvarControles para associar a configuração “Para” ao objeto Insumo.
  • 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 objeto Empresa pelo seu ID. Utilizado em SalvarControles para associar a empresa logada ao objeto Insumo.
  • 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 em btnModalConfirmar_OnClick para 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 objeto Insumo pelo seu ID. Utilizado em CarregarDados para preencher a tela e em ProdutoConfiguradoPorCS para verificar a configuração.
  • VerificarInsumoPorNome(int? idfInsumo, string nomeInsumo): Verifica se já existe um insumo com o nomeInsumo fornecido, excluindo o idfInsumo atual (se houver). Utilizado em SalvarControles para validação de unicidade.
  • Save(): Salva o objeto Insumo (insert ou update). Utilizado em SalvarControles para persistir os dados.
  • ExisteVinculoExclusaoInsumo(int idInsumo): Verifica se existem vínculos que impedem a exclusão de um insumo. Utilizado em ValidarExclusao para 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 em ExcluirInsumo (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 em ConfigurarPermissoes para verificar o parâmetro UtilizaModuloInsumos.
  • 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 objeto TipoInsumo pelo seu ID. Utilizado em SalvarControles para associar o tipo de insumo ao objeto Insumo.
  • 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 em ConfigurarPermissoes e btlPermissaoFornecimentoInsumo_Click para controle de acesso.

7.2. Stored Procedures chamadas

  • ComplementoInsumo_P1.cs
  • INSERT 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_Insumo pelo ID.
  • ComplementoInsumo_P2.cs
  • SELECT 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 em VerificarVinculoComInsumoAtivo)
  • Parâmetros: @Idf_Complemento_Insumo.
  • Propósito: Verifica se há vínculo de Tipo de Insumo com algum produto de Insumo Ativo.
  • ConfiguracaoInsumo_P1.cs
  • INSERT 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.cs
  • SELECT * 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.cs
  • INSERT 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.cs
  • SELECT Idf_Configuracao_Para, Nme_Configuracao_Para FROM TAB_Configuracao_Para order by Idf_Configuracao_Para (SQL inline em ListarConfigsPara)
  • Parâmetros: Nenhum.
  • Propósito: Lista todas as configurações “Para” ordenadas pelo ID.
  • Empresa_P1.cs
  • INSERT 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_Empresa pelo ID.
  • Empresa_P3.cs
  • SELECT MAX(TRY_CAST(Cod_Empresa AS INT)) FROM TAB_EMPRESA (SQL inline em RecuperarCodigo)
  • 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.cs
  • select 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 para Idf_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 CTEs Empregados e Insumo):
  • 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 CTEs EmpregadoBase e #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.cs
  • 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();
  • 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_Insumo pelo ID.
  • Insumo_P2.cs
  • 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 )) (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 em ExisteVinculoExclusaoInsumo)
  • Parâmetros: @Idf_Insumo.
  • Propósito: Verifica se existem vínculos de empregados com o insumo para exclusão.
  • Parametro_P1.cs
  • INSERT 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_Parametro pelo ID.
  • Parametro_P2.cs
  • SELECT 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_Parametro sobre plataforma.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.cs
  • INSERT 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_Insumo pelo ID.
  • TipoInsumo_P2.cs
  • SELECT 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.cs
  • INSERT 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_Usuario pelo ID.
  • Usuario_P2.cs
  • SQL inline em CarregarPermissoes: Query complexa com múltiplos UNION e #ACESSOTMP para 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 com CASE para Tipo_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 com UNION para 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 com UNION para 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 em Inicializar e txtTipoInsumo_ValorAlterado.
  • IdComplementoInsumo (int?): Propriedade de leitura/escrita que armazena o ID do complemento de insumo no ViewState. Setado pela tela pai em CarregarDados e txtTipoInsumo_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 em ValidarCampos da tela pai.
  • SalvarDados(ref Insumo objInsumo): Popula as propriedades do objeto Insumo com os dados dos controles internos do UserControl. Chamado em SalvarControles da tela pai.
  • CarregarDados(Insumo objInsumo): Carrega os dados de um objeto Insumo nos controles internos do UserControl. Chamado em CarregarDados da tela pai.
  • LimparControles(): Limpa os campos internos do UserControl e reseta suas propriedades de ViewState. Chamado em LimparControles e txtCodigoInsumo_ValorAlterado da 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étodos CancelarVinculoInsumo e FornecerInsumoAutomatico, 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étodo Update).
  • 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 SalvarDados quando Page.IsValid é false no primeiro salvamento de um novo insumo).
  • “Preencha o campo com o Tipo de Insumo.” (Erro, exibida por ValidarCampos se txtTipoInsumo estiver vazio).
  • “Preencha o campo com o Nome Insumo.” (Erro, exibida por ValidarCampos se txtNomeInsumo estiver vazio).
  • “O campo Inativo não pode estar em branco.” (Erro, exibida por ValidarCampos se lsInativo estiver vazio).
  • “Existem valores inválidos, verifique os campos.” (Erro, exibida por ValidarCampos quando Page.IsValid é false em salvamentos subsequentes ou edições).
  • “Já existe um insumo {0}.” (Erro, exibida por SalvarControles se Insumo.VerificarInsumoPorNome retornar true).
  • “Insumo salvo com sucesso.” (Aviso, exibida por SalvarControles após um salvamento bem-sucedido).
  • “Insumo não encontrado.” (Erro, exibida por CarregarDados se IdInsumo tiver valor, mas Insumo.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_OnClick se PodeSerEditadoOuExcluido retornar false).
  • “Nenhum insumo foi carregado para exclusão.” (Aviso, exibida por ExcluirInsumo se IdInsumo não tiver valor).
  • Mensagens de retorno da stored procedure TAB_SP_Inativar_Arvore_Insumo (Aviso/Erro, exibidas por btnModalConfirmar_OnClick).
  • Mensagens de retorno da stored procedure plataforma.TAB_SP_Excluir_Configuracao_Insumo (Aviso/Erro, exibidas por ExcluirInsumo).
  • “Preencha o campo fornecedor.” (Erro, exibida por ucDadosProdutoInsumo.ValidarCampos()).
  • “Campo Inválido.” (Erros de validação de controles Employer:Localizar... e Employer:ListaSugestoes).
  • “Campo {Nome do Campo} é Inválido.” (Erros de validação de controles Employer:Localizar... e Employer:ListaSugestoes).
  • “Campo Obrigatório.” (Erros de validação de controles Employer:Localizar... e Employer:ListaSugestoes e Employer:ControlAlfaNumerico).
  • “Campo {Nome do Campo} é Obrigatório.” (Erros de validação de controles Employer:Localizar... e Employer:ListaSugestoes e Employer: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.SalvarComDependencias se 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 tela ConfiguracaoInsumos.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 em ConfigurarPermissoes. Se o usuário não tiver VisualizarConfiguracaoInsumos, mas tiver esta, é redirecionado para ConfiguracaoRegraInsumos.aspx.
  • Enum.Permissoes.Insumos.VisualizarPermissaoFornecimentoInsumos: Permissão verificada em ConfigurarPermissoes e btlPermissaoFornecimentoInsumo_Click. Se o usuário não tiver VisualizarConfiguracaoInsumos nem VisualizarRegraInsumo, mas tiver esta, é redirecionado para PermissaoFornecimentoInsumos.aspx.
  • Parâmetro de Sistema UtilizaModuloInsumos: Um parâmetro configurável no sistema (BLL.Enumeradores.NomeParametro.UtilizaModuloInsumos) que, em conjunto com o NomeCentroServico sendo “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.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Insumo_P2.cs

Métodos

MétodoAssinaturaPropó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.
  1. Verifica a propriedade _persisted da instância.
  2. Se _persisted for false (indicando que é um novo insumo), chama o método Insert().
  3. Se _persisted for true (indicando que é um insumo existente), chama o método Update().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert() ou Update(), 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() e Update().

Save(SqlTransaction trans)

  • Lógica: Similar ao Save() sem transação, mas executa as operações dentro de uma transação SQL fornecida.
  1. Verifica a propriedade _persisted da instância.
  2. Se _persisted for false, chama o método Insert(trans).
  3. Se _persisted for true, chama o método Update(trans).
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert(trans) ou Update(trans).

Insert()

  • Lógica: Insere um novo registro de insumo no banco de dados.
  1. Chama GetParameters() para obter uma lista de parâmetros SQL vazia.
  2. Chama SetParameters(parms) para preencher a lista de parâmetros com os valores da instância atual de Insumo. O Idf_Insumo é configurado como Output para receber o ID gerado.
  3. Abre uma nova conexão SQL e inicia uma transação.
  4. Executa a query SPINSERT (INSERT INTO TAB_Insumo ...) usando DataAccessLayer.ExecuteNonQueryCmd.
  5. Recupera o Idf_Insumo gerado pelo banco de dados (usando SCOPE_IDENTITY()) e atribui à propriedade _idInsumo da instância.
  6. Limpa os parâmetros do comando.
  7. Define _persisted = true e _modified = false.
  8. Comita a transação.
  9. 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.
  1. Chama GetParameters() e SetParameters(parms).
  2. Executa a query SPINSERT usando DataAccessLayer.ExecuteNonQueryCmd com a transação fornecida.
  3. Recupera o Idf_Insumo gerado e atribui à propriedade _idInsumo.
  4. Limpa os parâmetros do comando.
  5. Define _persisted = true e _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.
  1. Verifica se _modified é true. Se não houver modificações, o método não faz nada.
  2. Chama GetParameters() e SetParameters(parms).
  3. Executa a query SPUPDATE (UPDATE TAB_Insumo SET ...) usando DataAccessLayer.ExecuteNonQuery.
  4. Define _modified = false.
  5. Chama RecuperarInsumosFornecidosNaoPagosPorInsumo(this._idInsumo) para obter uma DataTable de empregados com insumos fornecidos não pagos.
  6. 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.Insumos para reprocessamento.

Update(SqlTransaction trans)

  • Lógica: Similar ao Update() sem transação, mas executa a atualização dentro de uma transação SQL fornecida.
  1. Verifica se _modified é true.
  2. Chama GetParameters() e SetParameters(parms).
  3. Executa a query SPUPDATE usando DataAccessLayer.ExecuteNonQuery com a transação fornecida.
  4. Define _modified = false.
  5. Chama RecuperarInsumosFornecidosNaoPagosPorInsumo(this._idInsumo, trans) para obter uma DataTable de empregados com insumos fornecidos não pagos, utilizando a transação.
  6. 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.Insumos para reprocessamento.

Delete(int idInsumo)

  • Lógica: Exclui um insumo do banco de dados.
  1. Cria uma lista de parâmetros SQL.
  2. Adiciona @Idf_Insumo e @Idf_Usuario_Gerador à lista de parâmetros.
  3. Define o valor de @Idf_Insumo com o idInsumo fornecido.
  4. Define o valor de @Idf_Usuario_Gerador com o CodigoUsuario da sessão atual.
  5. 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) usando DataAccessLayer.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.
  1. Carrega o período de cálculo aberto para a empresa (PeriodoCalculo.CarregarPeriodoCalculoAbertoPorEmpresa).
  2. Inicializa pResultado como 0 e pMensagem como string vazia.
  3. 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).
  1. Executa a stored procedure plataforma.TAB_SP_Excluir_Configuracao_Insumo usando DataAccessLayer.ExecuteNonQueryCmd.
  2. Recupera os valores dos parâmetros de saída @Resultado e @Msg.
  3. Limpa os parâmetros do comando.
  4. Retorna true se pResultado for igual a decimal.One (indicando sucesso), false caso 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.
  1. Cria uma lista de parâmetros SQL para @Idf_Insumo e @NomeInsumo.
  2. Se idfInsumo tiver um valor, ele é atribuído ao parâmetro @Idf_Insumo; caso contrário, DBNull.Value é usado.
  3. O nomeInsumo é atribuído ao parâmetro @NomeInsumo.
  4. 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 ))) usando DataAccessLayer.ExecuteScalar.
  5. Retorna true se 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), false caso 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.
  1. Define uma query SQL (query) que conta o número de registros na tabela TAB_Empregado_Insumo que estão vinculados ao idInsumo fornecido e possuem um Idf_Status_Beneficio_Beneficiario específico (1, 3 ou 10).
  2. Cria uma lista de parâmetros SQL para @Idf_Insumo.
  3. Define o valor de @Idf_Insumo com o idInsumo fornecido.
  4. Executa a query usando DataAccessLayer.ExecuteScalar.
  5. Retorna true se a contagem for maior que zero (indicando que existem vínculos), false caso 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 DataTable contendo os IDs dos empregados que possuem insumos fornecidos não pagos para um determinado insumo.
  1. Cria uma lista de parâmetros SQL para @Idf_Insumo.
  2. Define o valor de @Idf_Insumo com o idInsumo fornecido.
  3. Executa a query SPSELEMPREGADOPORIDINSUMONAOPAGO (SELECT DISTINCT insf.Idf_Empregado FROM TAB_Insumo_Fornecido insf ...) usando DataAccessLayer.ExecuteReaderDs. Se uma transação (pTrans) for fornecida, a execução ocorre dentro dessa transação.
  4. Retorna a primeira tabela do DataSet resultante.
  • 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

NomeParâmetrosPropó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

Digite para pesquisar...

Scroll para zoom · Esc para fechar

⌨️ Atalhos de teclado
Navegação
Ctrl K Pesquisar na wiki
Ctrl F Buscar na página
? Ver atalhos
Visualização
Ctrl Shift F Modo foco
A+ / A− Tamanho da fonte
Ctrl D Alternar tema
Ações
Ctrl B Favoritar página
Esc Fechar dialogs