WebFoPag ~101 min

🛠️ Documentação Técnica: Cadastro de Formulário de Cheque

[!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 tela FuncaoGratificadaContratoCadastro.aspx é utilizada para liberar funções gratificadas por contrato. Ela permite ao usuário vincular funções a contratos (mãe ou filho), pesquisar funções já vinculadas e editar informações como cargo, categoria e faixa salarial. A tela também oferece funcionalidades para copiar funções gratificadas e gerar relatórios.

👁️ 1. Visão Geral

  • Propósito da tela: Vincular funções gratificadas a contratos, permitindo a gestão de cargos e salários para essas funções.
  • Contexto no sistema: Faz parte do módulo de Folha de Pagamento (WebFoPag), especificamente na gestão de funções e contratos.
  • Usuários que utilizam: Usuários com permissão para visualizar, solicitar e salvar funções gratificadas por contrato, geralmente do departamento de RH ou folha de pagamento.

🗂️ 2. Tipos/Modalidades

  • Tipo de Estrutura Gerencial: A tela se adapta conforme o tipo de estrutura gerencial da empresa (Centro de Resultado ou Contrato e Departamento).
  • Se a empresa utiliza “Centro de Resultado”, os campos “Contrato Mãe” e “Contrato Filho” são ocultados e não obrigatórios. O contrato padrão é carregado automaticamente.
  • Se a empresa utiliza “Contrato e Departamento”, os campos “Contrato Mãe” e “Contrato Filho” são exibidos, sendo “Contrato Mãe” obrigatório.
  • Modo de Edição do Grid: O grid de funções gratificadas permite a edição inline de “Cargo”, “Categoria”, “Classe Salarial”, “Valor Piso” e “Valor Teto”.

🖥️ 3. Interface — Campos e Controles

NomeTipoObrigatórioRegra
txtContratoMaeLocalizarContratoSim/NãoObrigatório se a empresa não usa Centro de Resultado. TipoDeContrato=“ContratoMae”. Mensagem de erro: “Campo Inválido.” ou “Campo Obrigatório.”
txtContratoFilhoLocalizarContrato⚪ NãoTipoDeContrato=“ContratoFilho”. Mensagem de erro: “Campo Inválido.” ou “Campo Obrigatório.”
txtFuncaoLocalizarPlataformaFuncao⚪ NãoMensagem de erro: “Campo Inválido.” ou “Campo Obrigatório.”
btnLiberarFuncaoButton⚪ NãoValidações no grupo “Solicitar”.
btnCopiarFuncoesButton⚪ NãoAbre modal mpeCopiarFuncoes.
btnRelatorioButton⚪ NãoRedireciona para GeradorDeRelatoriosAssincronos.aspx.
btnLimparButton⚪ NãoRedireciona para a própria tela (FuncaoGratificadaContratoCadastro.aspx).
btnVoltarButton⚪ NãoRedireciona para MenuMaisOpcoes.aspx?ID=U.
txtPesquisarFuncaoControlAlfaNumerico⚪ NãoCampo de texto para pesquisa no grid.
btnPesquisarFuncaoButton⚪ NãoAciona a pesquisa no grid.
gdvFuncoes.lblContratoLabel⚪ NãoExibe “Cod_Contrato - Ape_Contrato (Des_Tipo_Contrato)“.
gdvFuncoes.lblFuncaoLabel⚪ NãoExibe “Des_Funcao”.
gdvFuncoes.lblCBOLabel⚪ NãoExibe “Cod_Cbo”.
gdvFuncoes.txtCargoControlAlfaNumerico⚪ NãoEditável no grid. Tamanho máximo 40. Mensagem de erro: “Formato Inválido.”, “Campo Obrigatório.”, “Valor Incorreto.”.
gdvFuncoes.txtCategoriaControlAlfaNumerico⚪ NãoEditável no grid. Tamanho máximo 40. Mensagem de erro: “Formato Inválido.”, “Campo Obrigatório.”, “Valor Incorreto.”.
gdvFuncoes.lsClasseSalarialListaSugestoes🔴 SimEditável no grid. TipoSugestao=“Numero”. Mensagem de erro: “Campo Obrigatório.”, “Valor Incorreto.”.
gdvFuncoes.txtValorPisoValorNumericoTextBox🔴 SimEditável no grid. Tamanho 10, 2 casas decimais. Mensagem de erro: “Formato Incorreto.”, “Campo Obrigatório.”.
gdvFuncoes.txtValorTetoValorNumericoTextBox🔴 SimEditável no grid. Tamanho 10, 2 casas decimais. Mensagem de erro: “Formato Incorreto.”, “Campo Obrigatório.”.
gdvFuncoes.imbEditarImageButton⚪ NãoEdita a linha do grid.
gdvFuncoes.imbExcluirImageButton⚪ NãoExclui a linha do grid. Confirmação: “Deseja realmente excluir este registro?“.
gdvFuncoes.imbSalvarImageButton⚪ NãoSalva as alterações da linha do grid.
gdvFuncoes.imbCancelarImageButton⚪ NãoCancela a edição da linha do grid.
ucCopiarFuncaoUserControl⚪ NãoUserControl para copiar funções.
imbFecharHistoricoDesoneracaoImageButton⚪ NãoBotão de fechar da modal de copiar funções.

📑 4. Abas e Seções

  • pnlValidacao: Painel para exibir mensagens de validação.
  • pnlContrato: Painel que agrupa os campos de seleção de contrato e função.
  • divContratoMae: Div para o campo “Contrato Mãe”.
  • divContratoFilho: Div para o campo “Contrato Filho”.
  • pnlBotoes: Painel que contém os botões de ação da tela (Liberar Função, Copiar Funções, Relatório, Limpar, Voltar).
  • pnlGridFuncoes: Painel que contém o grid de funções gratificadas.
  • upnGridFuncoes: UpdatePanel para atualização assíncrona do grid.
  • gdvFuncoes: GridView que exibe as funções gratificadas por contrato. Possui colunas para Contrato, Funções, CBO, Cargo, Categoria, Classe, De (Valor Piso), Até (Valor Teto) e Ação (Editar/Excluir).
  • pnlCopiarFuncoes: Painel que representa a modal de “Copiar Funções”.

🛡️ 5. Regras de Negócio

5.1. Validações de Campos

  • Contrato Mãe/Filho (FuncaoGratificadaContratoCadastro.aspx.cs - btnLiberarFuncao_OnClick):
  • Se nenhum contrato (mãe ou filho) for selecionado ao clicar em “Liberar Função Gratificada”, exibe a mensagem de erro MensagemErro._310405.
  • Função Gratificada (FuncaoGratificadaContratoCadastro.aspx.cs - btnLiberarFuncao_OnClick):
  • Se nenhuma função for selecionada ao clicar em “Liberar Função Gratificada”, exibe a mensagem de erro MensagemErro._310402.
  • gdvFuncoes.txtCargo (FuncaoGratificadaContratoCadastro.aspx):
  • Tamanho máximo de 40 caracteres.
  • Mensagens de erro: “Formato Inválido.”, “Campo Obrigatório.”, “Valor Incorreto.”.
  • gdvFuncoes.txtCategoria (FuncaoGratificadaContratoCadastro.aspx):
  • Tamanho máximo de 40 caracteres.
  • Mensagens de erro: “Formato Inválido.”, “Campo Obrigatório.”, “Valor Incorreto.”.
  • gdvFuncoes.lsClasseSalarial (FuncaoGratificadaContratoCadastro.aspx):
  • Campo obrigatório.
  • Mensagens de erro: “Campo Obrigatório.”, “Valor Incorreto.”.
  • gdvFuncoes.txtValorPiso (FuncaoGratificadaContratoCadastro.aspx):
  • Campo obrigatório.
  • Mensagens de erro: “Formato Incorreto.”, “Campo Obrigatório.”.
  • gdvFuncoes.txtValorTeto (FuncaoGratificadaContratoCadastro.aspx):
  • Campo obrigatório.
  • Mensagens de erro: “Formato Incorreto.”, “Campo Obrigatório.”.
  • Exclusão de Função Gratificada (FuncaoGratificadaContratoCadastro.aspx.cs - gdvFuncoes_OnRowDeleting):
  • Antes de inativar uma função exclusiva, verifica se há funcionários ativos para a função (FuncaoExclusiva.VerificarEmpregadosFuncaoExclusiva(id, false)). Se houver, exibe a mensagem de erro MensagemErro._310403.

5.2. Regras de Habilitação/Desabilitação e Visibilidade

  • Configuração por Tipo de Estrutura Gerencial (FuncaoGratificadaContratoCadastro.aspx.cs - ConfigurarPorTipoEstruturaGerencial):
  • Se a empresa utiliza “Centro de Resultado” (objEmpresa.TipoEstruturaGerencial.IdTipoEstruturaGerencial igual a BLL.Enumeradores.TipoEstruturaGerencial.CentroResultado.GetHashCode()):
  • A propriedade UtilizaCentroResultado é definida como true.
  • A divContratoMae e divContratoFilho são ocultadas (display: none).
  • Os campos txtContratoMae.Obrigatorio e txtContratoFilho.Obrigatorio são definidos como false.
  • O contrato default da empresa por centro de resultado é carregado (Contrato.CarregarContratoCentroResultado).
  • Caso contrário (Contrato e Departamento):
  • A propriedade UtilizaCentroResultado é definida como false.
  • A divContratoMae e divContratoFilho são exibidas (display: block).
  • O campo txtContratoMae.Obrigatorio é definido como true.
  • O campo txtContratoFilho.Obrigatorio é definido como false.
  • Permissões de Tela (FuncaoGratificadaContratoCadastro.aspx.cs - ConfigurarPermissoesTela):
  • Se o usuário não possuir a permissão FuncaoGratificadaContrato.VisualizarFuncaoContrato, é redirecionado para a página de acesso negado (Configuracao.UrlAcessoNegado).
  • Se o usuário não possuir a permissão FuncaoGratificadaContrato.SolicitarFuncao, o campo txtFuncao é desabilitado (txtFuncao.Enabled = false).
  • Se o usuário não possuir a permissão FuncaoGratificadaContrato.SalvarFuncaoContrato, o campo txtFuncao é definido como ReadOnly e desabilitado (txtFuncao.ReadOnly = true; txtFuncao.Enabled = false;).

5.3. Regras de Inativação e Exclusão

  • Inativação de Função Gratificada (FuncaoGratificadaContratoCadastro.aspx.cs - gdvFuncoes_OnRowDeleting):
  • Uma função gratificada é inativada (não excluída fisicamente) se não houver funcionários ativos vinculados a ela (FuncaoExclusiva.VerificarEmpregadosFuncaoExclusiva(id, false) retorna false).
  • Após a inativação, a mensagem MensagemAviso._100008 é exibida.

5.4. Regras de Salvar e Fluxo de Configuração

  • Liberar Função Gratificada (FuncaoGratificadaContratoCadastro.aspx.cs - btnLiberarFuncao_OnClick):
  • Carrega o objeto Contrato (seja txtContratoMae.IdContratoSelecionado ou txtContratoFilho.IdContratoSelecionado). Se for contrato filho, completa o objeto ContratoMae e FilialGestora.
  • Carrega o objeto Funcao (Funcao.LoadObject(txtFuncao.IdFuncaoSelecionada.Value)).
  • Verifica a existência de uma FuncaoEspecifica para a IdFuncao selecionada (FuncaoEspecifica.CarregarPorFuncao).
  • Se a FuncaoEspecifica não for encontrada, uma requisição é feita à FolhaWebApi (FolhaWebApi.PostFolhaWebApi) para criar a função específica.
  • Após a requisição, tenta-se novamente carregar a FuncaoEspecifica. Se ainda não for encontrada, exibe MensagemErro._310406.
  • Se a FuncaoEspecifica for encontrada:
  • Se o contrato selecionado for um contrato mãe (ou seja, txtContratoFilho.IdContratoSelecionado não tem valor), chama FuncaoExclusiva.SalvarParaContratoMae(objContrato, objFuncaoEspecifica, new Usuario(CodigoUsuarioLogado)).
  • Caso contrário (contrato filho), chama FuncaoExclusiva.Salvar(objContrato, objFuncaoEspecifica, new Usuario(CodigoUsuarioLogado)).
  • Após salvar, o método EnviarEmail() é chamado.
  • A mensagem MensagemAviso._100001 é exibida.
  • O campo txtFuncao é limpo e o foco é definido nele.
  • O grid gdvFuncoes é recarregado e atualizado.
  • Atualização de Função Gratificada no Grid (FuncaoGratificadaContratoCadastro.aspx.cs - gdvFuncoes_OnRowUpdating):
  • Recupera os valores dos campos editáveis do grid: txtCargo.Text, txtCategoria.Text, lsClasse.Valor (para ClasseSalarial), txtValorPiso.ValorDecimal.Value, txtValorTeto.ValorDecimal.Value.
  • Carrega o objeto FuncaoExclusiva correspondente à linha editada (FuncaoExclusiva.LoadObject).
  • Atualiza as propriedades DescricaoCargo, DescricaoCategoria, ClasseSalarial, ValorPiso e ValorTeto do objeto FuncaoExclusiva.
  • Chama objFuncaoExclusiva.Save() para persistir as alterações.
  • A mensagem MensagemAviso._100001 é exibida.
  • O grid gdvFuncoes sai do modo de edição (EditIndex = -1), é recarregado e atualizado.

5.5. Outras Regras Específicas da Tela

  • Montagem de Mensagem de E-mail (FuncaoGratificadaContratoCadastro.aspx.cs - MontarMensagemSolicitado):
  • Constrói uma string HTML com informações detalhadas sobre a função vinculada ao contrato, incluindo: Ambiente, Centro de Serviço, Empresa, Filial, Pessoa Responsável no RH do Cliente, E-mail Cliente, Contrato, Nome Função e CBO.
  • O valor do “Ambiente” é recuperado da configuração da aplicação (ConfigurationManager.AppSettings["Ambiente"]).
  • As informações do usuário responsável são obtidas via Usuario.LoadObject(CodigoUsuarioLogado) e LoginWS.loginws.CarregarPorLogin.
  • O e-mail de destino é recuperado do dicionário (Dicionario.RecuperaValorDicionario(Enumeradores.ItemDicionario.EmailCadastroFuncao)).
  • Ordenação do Grid (FuncaoGratificadaContratoCadastro.aspx.cs - gdvFuncoes_OnRowCreated):
  • Na criação do cabeçalho do grid, adiciona uma imagem de ordenação à coluna que está sendo ordenada, indicando a direção (ASC/DESC).
  • Cria um cabeçalho agrupado com as seções “Contrato”, “Função”, “Plano Cargos Salários”, “Faixa Salarial” e “Ação”.
  • Preenchimento de Contrato Filho (FuncaoGratificadaContratoCadastro.aspx.cs - txtContratoMae_OnClick):
  • Se um IdContratoSelecionado for definido para txtContratoMae, este valor é automaticamente atribuído a txtContratoFilho.IdContratoMae.
  • Preenchimento de Contrato Mãe (FuncaoGratificadaContratoCadastro.aspx.cs - txtContratoFilho_OnClick):
  • Se um IdContratoSelecionado for definido para txtContratoFilho, o objeto Contrato correspondente é carregado e, se o ContratoMae existir, seu IdContrato é atribuído a txtContratoMae.IdContratoSelecionado.

🔄 6. Fluxos Principais

6.1. Inicialização da Tela

  1. Page_Load(object sender, EventArgs e):
  • Verifica se a página é um postback.
  • Se não for postback, chama Inicializar().
  1. Inicializar():
  • Chama ConfigurarPermissoesTela().
  • Chama ConfigurarPorTipoEstruturaGerencial().
  • Define IdEmpresa para txtContratoMae e txtContratoFilho com CodigoEmpresa.
  • Define MockColunaOrdenada e MockDirecaoOrdenacao para gdvFuncoes.

6.2. Liberar Função Gratificada

  1. btnLiberarFuncao_OnClick(object sender, EventArgs e):
  • Validação: Verifica se txtContratoMae.IdContratoSelecionado ou txtContratoFilho.IdContratoSelecionado possuem valor. Se ambos forem nulos, exibe MensagemErro._310405.
  • Validação: Verifica se txtFuncao.IdFuncaoSelecionada possui valor. Se for nulo, exibe MensagemErro._310402.
  • Carregar Contrato: Carrega o objeto Contrato usando Contrato.LoadObject(), priorizando txtContratoFilho.IdContratoSelecionado. Se for contrato filho, completa ContratoMae e FilialGestora.
  • Carregar Função: Carrega o objeto Funcao usando Funcao.LoadObject(txtFuncao.IdFuncaoSelecionada.Value).
  • Verificar/Criar Função Específica:
  • Chama FuncaoEspecifica.CarregarPorFuncao(objFuncao.IdFuncao, out objFuncaoEspecifica).
  • Se objFuncaoEspecifica for nulo (não encontrada):
  • Constrói parâmetros para a API: key={0}&gratificada={1}&centroServico={2}.
  • Chama FolhaWebApi.PostFolhaWebApi(Employer.Plataforma.BLL.Enumeradores.EnumFolhaWebApi.Funcao, vParametros).
  • Tenta novamente FuncaoEspecifica.CarregarPorFuncao().
  • Se ainda for nulo, exibe MensagemErro._310406.
  • Salvar Função Exclusiva:
  • Se txtContratoFilho.IdContratoSelecionado não tiver valor, chama FuncaoExclusiva.SalvarParaContratoMae(objContrato, objFuncaoEspecifica, new Usuario(CodigoUsuarioLogado)).
  • Caso contrário, chama FuncaoExclusiva.Salvar(objContrato, objFuncaoEspecifica, new Usuario(CodigoUsuarioLogado)).
  • Notificação: Chama EnviarEmail().
  • Feedback: Exibe MensagemAviso._100001.
  • Limpeza e Atualização: Limpa txtFuncao, define o foco, ajusta a ordenação do grid e chama CarregarGrid() e upnGridFuncoes.Update().
  • Tratamento de Erro: Captura Exception e chama ExibirMensagemErro(ex).

6.3. Pesquisar Funções

  1. btnPesquisarFuncao_OnClick(object sender, EventArgs e):
  • Chama CarregarGrid().

6.4. Edição de Linha no Grid

  1. gdvFuncoes_OnRowEditing(object sender, GridViewEditEventArgs e):
  • Define gdvFuncoes.EditIndex = e.NewEditIndex.
  • Chama CarregarGrid().
  • Encontra o controle lsClasseSalarial na linha editada.
  • Chama ListaSugestoesExtensions.CarregarListaSugestoes(lsClasseSalarial, ClasseSalarial.Listar()).
  • Carrega FuncaoExclusiva pelo DataKey da linha.
  • Se objFuncaoExclusiva.ClasseSalarial não for nulo, preenche lsClasseSalarial.Valor.
  1. gdvFuncoes_OnRowUpdating(object sender, GridViewUpdateEventArgs e):
  • Recuperar Controles: Encontra os controles txtCargo, txtCategoria, lsClasse, txtValorPiso, txtValorTeto na linha editada.
  • Carregar Objeto: Carrega o objeto FuncaoExclusiva usando FuncaoExclusiva.LoadObject() com o DataKey da linha.
  • Atualizar Propriedades: Atribui os valores dos controles às propriedades DescricaoCargo, DescricaoCategoria, ClasseSalarial, ValorPiso, ValorTeto do objFuncaoExclusiva.
  • Salvar: Chama objFuncaoExclusiva.Save().
  • Feedback: Exibe MensagemAviso._100001.
  • Atualização: Define gdvFuncoes.EditIndex = -1, chama CarregarGrid() e upnGridFuncoes.Update().
  • Tratamento de Erro: Captura Exception e chama ExibirMensagemErro(ex).
  1. gdvFuncoes_OnRowCancelingEdit(object sender, GridViewCancelEditEventArgs e):
  • Define gdvFuncoes.EditIndex = -1.
  • Chama CarregarGrid().

6.5. Excluir Função Gratificada

  1. gdvFuncoes_OnRowDeleting(object sender, GridViewDeleteEventArgs e):
  • Obtém o id da função exclusiva do DataKey da linha.
  • Validação: Chama FuncaoExclusiva.VerificarEmpregadosFuncaoExclusiva(id, false).
  • Se houver empregados ativos, exibe MensagemErro._310403.
  • Caso contrário, chama FuncaoExclusiva.Inativar(id).
  • Feedback: Exibe MensagemAviso._100008.
  • Atualização: Chama CarregarGrid().
  • Tratamento de Erro: Captura Exception e chama ExibirMensagemErro(ex).

6.6. Copiar Funções

  1. btnCopiarFuncoes_OnClick(object sender, EventArgs e):
  • Chama mpeCopiarFuncoes.Show() para exibir a modal.
  1. imbFecharCopiarFuncoes_OnClick(object sender, EventArgs e):
  • Chama ucCopiarFuncao.LimparCampos().
  • Chama mpeCopiarFuncoes.Hide() para ocultar a modal.

6.7. Limpar Campos

  1. btnLimpar_OnClick(object sender, EventArgs e):
  • Redireciona para a própria tela (~/FuncaoGratificadaContratoCadastro.aspx), efetivamente limpando todos os campos e redefinindo o estado.

6.8. Voltar

  1. btnVoltar_OnClick(object sender, EventArgs e):
  • Redireciona para MenuMaisOpcoes.aspx?ID=U.

6.9. Relatório

  1. btnRelatorio_OnClick(object sender, EventArgs e):
  • Armazena Enumeradores.PluginEntradaRelatorio.RelatorioFuncoesGratificadas.GetHashCode() na Session com a chave Chave.Temporaria.IdRelatorioSelecionado.ToString().
  • Redireciona para ~/GeradorDeRelatoriosAssincronos.aspx.

6.10. Eventos de Alteração de Valor dos Contratos

  1. txtContratoMae_OnClick(object sender, EventArgs e):
  • Se txtContratoMae.IdContratoSelecionado tiver valor, atribui-o a txtContratoFilho.IdContratoMae.
  1. txtContratoFilho_OnClick(object sender, EventArgs e):
  • Se txtContratoFilho.IdContratoSelecionado tiver valor:
  • Carrega o objeto Contrato correspondente.
  • Se objContrato.CompleteObject() for bem-sucedido, atribui objContrato.ContratoMae.IdContrato a txtContratoMae.IdContratoSelecionado.

🔌 7. Integrações e Dependências

7.1. Classes BLL e Service utilizadas

  • Employer.Plataforma.Web.WebFoPag.WebApi.FolhaWebApi

  • Arquivo: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\WebApi\FolhaWebApi.cs

  • Métodos:

  • PostFolhaWebApi(Employer.Plataforma.BLL.Enumeradores.EnumFolhaWebApi enumFolhaWebApi, string parametros): Realiza uma requisição HTTP POST para a API da Folha de Pagamento. Utilizado para criar ou atualizar dados de funções específicas, passando o tipo de enumeração da API e os parâmetros como string.

  • Employer.Plataforma.BLL.CentroServico

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CentroServico_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CentroServico_P2.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CentroServico_P3.cs

  • Métodos:

  • LoadObject(int idfCentroServico): Carrega um objeto CentroServico a partir do seu identificador. Usado para obter a descrição do centro de serviço para compor a mensagem de e-mail.

  • Employer.Plataforma.BLL.ClasseSalarial

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ClasseSalarial_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ClasseSalarial_P2.cs

  • Métodos:

  • Listar(): Retorna uma coleção de objetos ClasseSalarial. Utilizado para popular a lista de sugestões de classe salarial no grid de edição.

  • Employer.Plataforma.BLL.Contrato

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Contrato_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Contrato_P2.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Contrato_P3.cs

  • Métodos:

  • CarregarContratoCentroResultado(int idfEmpresa, out Contrato objContrato): Tenta carregar o contrato associado a um centro de resultado para uma empresa específica. Usado na inicialização da tela para configurar os campos de contrato.

  • LoadObject(int idfContrato): Carrega um objeto Contrato a partir do seu identificador. Utilizado para obter detalhes do contrato selecionado, tanto para a lógica de liberação de função quanto para a montagem do e-mail.

  • CompleteObject(): Preenche propriedades relacionadas do objeto Contrato, como ContratoMae e FilialGestora.

  • Employer.Plataforma.BLL.Dicionario

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Dicionario_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Dicionario_P2.cs

  • Métodos:

  • RecuperaValorDicionario(Enumeradores.ItemDicionario itemDicionario): Recupera um valor de configuração do dicionário do sistema. Usado para obter o endereço de e-mail para o qual as notificações de vinculação de função devem ser enviadas.

  • Employer.Plataforma.BLL.Empresa

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Empresa_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Empresa_P2.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Empresa_P3.cs

  • Métodos:

  • LoadObject(int idfEmpresa): Carrega um objeto Empresa a partir do seu identificador. Utilizado para determinar o tipo de estrutura gerencial da empresa e configurar a visibilidade dos campos de contrato.

  • CompleteObject(): Preenche propriedades relacionadas do objeto Empresa.

  • Employer.Plataforma.BLL.Funcao

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Funcao_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Funcao_P2.cs

  • Métodos:

  • LoadObject(int idfFuncao): Carrega um objeto Funcao a partir do seu identificador. Usado para obter detalhes da função selecionada para a lógica de liberação e montagem do e-mail.

  • CompleteObject(): Preenche propriedades relacionadas do objeto Funcao, como CBO.

  • Employer.Plataforma.BLL.FuncaoEspecifica

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoEspecifica_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoEspecifica_P2.cs

  • Métodos:

  • CarregarPorFuncao(int idfFuncao, out FuncaoEspecifica objFuncaoEspecifica): Tenta carregar um objeto FuncaoEspecifica associado a um idfFuncao. Essencial para verificar se uma função já possui uma especificação antes de tentar criá-la via API.

  • Employer.Plataforma.BLL.FuncaoExclusiva

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoExclusiva_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoExclusiva_P2.cs

  • Métodos:

  • Inativar(int idfFuncaoExclusiva): Inativa logicamente uma função exclusiva. Chamado ao excluir uma linha do grid.

  • ListarGratificadasPorContratoDt(string desPesquisa, int? idfFuncao, Contrato objContrato, string desColunaOrdenacao, string desDirecaoOrdenacao, int numPagina, int numRegistrosPagina, out int numTotalRegistros): Retorna um IDataReader com as funções gratificadas vinculadas a um contrato, com opções de filtro, ordenação e paginação. Utilizado para popular o grid.

  • LoadObject(int idfFuncaoExclusiva): Carrega um objeto FuncaoExclusiva a partir do seu identificador. Usado para obter os dados de uma função exclusiva para edição no grid.

  • Salvar(Contrato objContrato, FuncaoEspecifica objFuncaoEspecifica, Usuario objUsuario): Salva uma nova função exclusiva para um contrato filho.

  • SalvarParaContratoMae(Contrato objContrato, FuncaoEspecifica objFuncaoEspecifica, Usuario objUsuario): Salva uma nova função exclusiva para um contrato mãe.

  • VerificarEmpregadosFuncaoExclusiva(int idfFuncaoExclusiva, bool flgAtivo): Verifica se existem empregados vinculados a uma função exclusiva, podendo filtrar por status ativo. Usado como validação antes de inativar uma função.

  • Save(): Persiste as alterações de um objeto FuncaoExclusiva existente.

  • Employer.Plataforma.Web.Code.UIHelper

  • Arquivo: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.Code\UIHelper.cs

  • Métodos:

  • AjustarString(string texto): Realiza ajustes em uma string. Usado para formatar o valor do ambiente na mensagem de e-mail.

  • CarregarGridView(EmployerGrid gridView, IDataReader dataReader, int totalRegistros): Popula um EmployerGrid com dados de um IDataReader e informa o total de registros para paginação. Usado para carregar e limpar o grid.

  • GetIndiceColunaOrdenar(EmployerGrid gridView, string colunaOrdenada): Retorna o índice da coluna que está sendo usada para ordenação no grid.

  • SetImagemOrdenacao(int sortColumnIndex, GridViewRow row, string sortDirection): Adiciona uma imagem indicando a direção da ordenação (ascendente/descendente) no cabeçalho da coluna do grid.

  • Employer.Plataforma.BLL.Usuario

  • Arquivos: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P2.cs

  • Métodos:

  • CarregarPermissoes(Usuario objUsuario, Enumeradores.CategoriaPermissao categoriaPermissao): Retorna uma lista de IDs de permissões que o usuário possui para uma categoria específica. Utilizado para controlar o acesso e a funcionalidade da tela.

  • LoadObject(int idfUsuario): Carrega um objeto Usuario a partir do seu identificador. Usado para obter informações do usuário logado para a montagem do e-mail.

7.2. Stored Procedures chamadas

  • SP_FUNCAO_EXCLUSIVA_LISTAR_GRATIFICADAS_POR_CONTRATO

  • Arquivo BLL: FuncaoExclusiva_P1.cs

  • Parâmetros SQL: @Des_Pesquisa, @Idf_Funcao, @Idf_Contrato, @Des_Coluna_Ordenacao, @Des_Direcao_Ordenacao, @Num_Pagina, @Num_Registros_Pagina, @Num_Total_Registros (output)

  • Propósito: Retorna uma lista paginada e ordenada de funções gratificadas vinculadas a um contrato, permitindo filtros por descrição de pesquisa e ID de função.

  • SP_FUNCAO_ESPECIFICA_CARREGAR_POR_FUNCAO

  • Arquivo BLL: FuncaoEspecifica_P1.cs

  • Parâmetros SQL: @Idf_Funcao

  • Propósito: Carrega os detalhes de uma função específica a partir do ID da função.

  • SP_FUNCAO_EXCLUSIVA_SALVAR_PARA_CONTRATO_MAE

  • Arquivo BLL: FuncaoExclusiva_P1.cs

  • Parâmetros SQL: @Idf_Contrato, @Idf_Funcao_Especifica, @Idf_Usuario_Cadastro

  • Propósito: Insere ou atualiza uma função exclusiva associada a um contrato mãe.

  • SP_FUNCAO_EXCLUSIVA_SALVAR

  • Arquivo BLL: FuncaoExclusiva_P1.cs

  • Parâmetros SQL: @Idf_Contrato, @Idf_Funcao_Especifica, @Idf_Usuario_Cadastro

  • Propósito: Insere ou atualiza uma função exclusiva associada a um contrato (filho).

  • SP_FUNCAO_EXCLUSIVA_INATIVAR

  • Arquivo BLL: FuncaoExclusiva_P1.cs

  • Parâmetros SQL: @Idf_Funcao_Exclusiva

  • Propósito: Altera o status de uma função exclusiva para inativa.

  • SP_FUNCAO_EXCLUSIVA_VERIFICAR_EMPREGADOS

  • Arquivo BLL: FuncaoExclusiva_P1.cs

  • Parâmetros SQL: @Idf_Funcao_Exclusiva, @Flg_Ativo

  • Propósito: Verifica a existência de empregados vinculados a uma função exclusiva, podendo filtrar por status de atividade.

  • SP_FUNCAO_EXCLUSIVA_SAVE

  • Arquivo BLL: FuncaoExclusiva_P1.cs

  • Parâmetros SQL: @Idf_Funcao_Exclusiva, @Des_Cargo, @Des_Categoria, @Idf_Classe_Salarial, @Vlr_Piso, @Vlr_Teto

  • Propósito: Atualiza as informações de cargo, categoria, classe salarial, piso e teto de uma função exclusiva.

  • SP_CLASSE_SALARIAL_LISTAR

  • Arquivo BLL: ClasseSalarial_P1.cs

  • Parâmetros SQL: (Nenhum parâmetro explícito no método Listar(), mas pode haver filtros internos)

  • Propósito: Retorna uma lista de todas as classes salariais cadastradas.

  • SP_EMPRESA_CARREGAR

  • Arquivo BLL: Empresa_P1.cs

  • Parâmetros SQL: @Idf_Empresa

  • Propósito: Carrega os dados de uma empresa específica.

  • SP_CONTRATO_CARREGAR

  • Arquivo BLL: Contrato_P1.cs

  • Parâmetros SQL: @Idf_Contrato

  • Propósito: Carrega os dados de um contrato específico.

  • SP_CONTRATO_CARREGAR_CENTRO_RESULTADO

  • Arquivo BLL: Contrato_P1.cs

  • Parâmetros SQL: @Idf_Empresa

  • Propósito: Carrega o contrato principal associado a um centro de resultado para uma dada empresa.

  • SP_FUNCAO_CARREGAR

  • Arquivo BLL: Funcao_P1.cs

  • Parâmetros SQL: @Idf_Funcao

  • Propósito: Carrega os dados de uma função específica.

  • SP_DICIONARIO_RECUPERA_VALOR

  • Arquivo BLL: Dicionario_P1.cs

  • Parâmetros SQL: @Idf_Item_Dicionario

  • Propósito: Recupera o valor de um item configurável do dicionário do sistema.

  • SP_USUARIO_CARREGAR_PERMISSOES

  • Arquivo BLL: Usuario_P1.cs

  • Parâmetros SQL: @Idf_Usuario, @Idf_Categoria_Permissao

  • Propósito: Retorna as permissões de um usuário para uma categoria de permissão específica.

  • SP_CENTRO_SERVICO_CARREGAR

  • Arquivo BLL: CentroServico_P1.cs

  • Parâmetros SQL: @Idf_Centro_Servico

  • Propósito: Carrega os dados de um centro de serviço específico.

7.3. UserControls incluídos (.ascx)

  • uc:CopiarFuncao
  • Caminho: ~/UserControls/CopiarFuncao.ascx
  • ID: ucCopiarFuncao
  • Tag: <uc:CopiarFuncao>
  • Propriedades expostas: Não explicitamente definidas no markup, mas o code-behind da tela pai interage com ele.
  • Eventos: Não explicitamente definidos no markup.
  • Métodos públicos chamados pela tela pai:
  • LimparCampos(): Chamado no evento imbFecharCopiarFuncoes_OnClick para redefinir os campos internos do UserControl.

7.4. WebServices, APIs externas, filas

  • FolhaWebApi (API Interna)

  • Tipo: API RESTful (chamada via PostFolhaWebApi).

  • Endpoint: Referenciado por Employer.Plataforma.BLL.Enumeradores.EnumFolhaWebApi.Funcao.

  • Propósito: Criar ou atualizar a função específica no sistema da Folha de Pagamento.

  • Parâmetros: key (Id da Função), gratificada (flag indicando se é gratificada), centroServico (Código do Centro de Serviço).

  • WsEnvioEmailPonteAzul.EnviaEmailClient (WebService SOAP)

  • Tipo: WebService SOAP.

  • Propósito: Enviar e-mails de notificação.

  • Método: EnviaListEmail(List<WsEnvioEmailPonteAzul.EmailRequest> lstEmail): Envia uma lista de requisições de e-mail.

  • LoginWS.loginws (WebService SOAP)

  • Tipo: WebService SOAP.

  • Propósito: Obter informações detalhadas do usuário logado (nome, e-mail) para compor a mensagem de notificação.

  • Método: CarregarPorLogin(string numeroCPF, out LoginWS.Usuario objUsuarioWS): Carrega um objeto Usuario do serviço de login com base no CPF.

💬 8. Mensagens ao Usuário

  • "Por favor corrija os seguintes erros:" (Exibido no vsValidacao quando há erros de validação).
  • "Campo Inválido." (Mensagem genérica de formato inválido para LocalizarContrato, LocalizarPlataformaFuncao, ControlAlfaNumerico, ValorNumericoTextBox).
  • "Campo Contrato Mãe é Inválido." (Mensagem de formato inválido específica para txtContratoMae).
  • "Campo Obrigatório." (Mensagem genérica de campo obrigatório para LocalizarContrato, LocalizarPlataformaFuncao, ControlAlfaNumerico, ListaSugestoes, ValorNumericoTextBox).
  • "Campo Contrato Mãe é Obrigatório." (Mensagem de campo obrigatório específica para txtContratoMae).
  • "Campo Contrato Filho é Inválido." (Mensagem de formato inválido específica para txtContratoFilho).
  • "Campo Contrato Filho é Obrigatório." (Mensagem de campo obrigatório específica para txtContratoFilho).
  • "Campo Função Gratificada é Inválido." (Mensagem de formato inválido específica para txtFuncao).
  • "Campo Função gratificada é Obrigatório." (Mensagem de campo obrigatório específica para txtFuncao).
  • "Nenhum registro encontrado." (Exibido no gdvFuncoes quando não há dados).
  • MensagemConfirmacao._200001: "Deseja realmente excluir este registro?" (Mensagem de confirmação para exclusão de item no grid).
  • MensagemErro._310405: Exibida quando nenhum contrato (mãe ou filho) é selecionado ao tentar liberar a função.
  • MensagemErro._310402: Exibida quando nenhuma função é selecionada ao tentar liberar a função.
  • MensagemErro._310406: Exibida se a função específica não puder ser carregada após a tentativa de criação via API.
  • MensagemAviso._100001: Mensagem de aviso genérica de sucesso (ex: “Operação realizada com sucesso.”).
  • MensagemErro._310403: Exibida quando se tenta inativar uma função exclusiva que possui empregados ativos vinculados.
  • MensagemAviso._100008: Mensagem de aviso de sucesso para inativação de registro.
  • "Erro ao montar mensagem - " + ex.Message: Mensagem de erro exibida se ocorrer uma exceção durante a montagem do corpo do e-mail.

🔐 9. Permissões e Perfis

  • BLL.Enumeradores.Permissoes.FuncaoGratificadaContrato.VisualizarFuncaoContrato:
  • Controle: Acesso à tela.
  • Regra: Se o usuário não possuir esta permissão, ele é redirecionado para a página de acesso negado (Configuracao.UrlAcessoNegado).
  • BLL.Enumeradores.Permissoes.FuncaoGratificadaContrato.SolicitarFuncao:
  • Controle: Habilitação do campo txtFuncao.
  • Regra: Se o usuário não possuir esta permissão, o campo txtFuncao é desabilitado (txtFuncao.Enabled = false).
  • BLL.Enumeradores.Permissoes.FuncaoGratificadaContrato.SalvarFuncaoContrato:
  • Controle: Edição e habilitação do campo txtFuncao.
  • Regra: Se o usuário não possuir esta permissão, o campo txtFuncao é definido como somente leitura (txtFuncao.ReadOnly = true) e desabilitado (txtFuncao.Enabled = false). Esta permissão sobrepõe a SolicitarFuncao em relação ao campo txtFuncao.

🔎 10. Aprofundamento — Detalhes Internos de Métodos

Os arquivos foram lidos. Agora, vou processar o conteúdo para gerar a documentação detalhada para cada classe, focando em métodos públicos, lógica interna, stored procedures e validações.


CentroServico

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CentroServico_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CentroServico_P2.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CentroServico_P3.cs

Métodos

MétodoAssinaturaPropósito
CentroServicopublic CentroServico()Construtor padrão da classe.
CentroServicopublic CentroServico(int idCentroServico)Construtor que inicializa a instância com um ID existente, marcando-a como persistida.
Savepublic void Save()Salva a instância atual de CentroServico no banco de dados (insere se não persistida, atualiza se modificada).
Savepublic void Save(SqlTransaction trans)Salva a instância atual de CentroServico no banco de dados dentro de uma transação.
Deletepublic static void Delete(int idCentroServico)Exclui um registro de CentroServico do banco de dados pelo ID.
Deletepublic static void Delete(int idCentroServico, SqlTransaction trans)Exclui um registro de CentroServico do banco de dados pelo ID, dentro de uma transação.
Deletepublic static void Delete(List<int> idCentroServico)Exclui múltiplos registros de CentroServico do banco de dados por uma lista de IDs.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada e ordenada de CentroServico.
LoadObjectpublic static CentroServico LoadObject(int idCentroServico)Retorna uma instância de CentroServico a partir do banco de dados pelo ID.
LoadObjectpublic static CentroServico LoadObject(int idCentroServico, SqlTransaction trans)Retorna uma instância de CentroServico a partir do banco de dados pelo ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa as propriedades da instância atual de CentroServico a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa as propriedades da instância atual de CentroServico a partir do banco de dados, dentro de uma transação.
VerificaFlagRoboNotificacaopublic static bool VerificaFlagRoboNotificacao(string Des_Centro_Servico, bool Flg_Robo_SMS, bool Flg_Robo_Email)Verifica se as flags de robô SMS ou Email estão ativas para um determinado Centro de Serviço.
ListarTiposEstruturaGerencialpublic static List<int> ListarTiposEstruturaGerencial(int idUsuario)Lista os tipos de estrutura gerencial aos quais um usuário tem acesso.
ListarPorNomeParcialpublic static Dictionary<int, String> ListarPorNomeParcial(string valor, int count)Lista Centros de Serviço por nome parcial, retornando um dicionário com ID e descrição.
Listarpublic static IEnumerable<CentroServico> Listar()Retorna uma coleção de todos os Centros de Serviço que possuem as flags Flg_Robo_SMS ou Flg_Robo_Email ativas.
CarregarPorNomepublic static bool CarregarPorNome(string nome, out CentroServico objCentroServico)Carrega uma instância de CentroServico pelo nome, excluindo inativos.
CarregarCsEmpresaDtpublic static DataTable CarregarCsEmpresaDt(int numCNPJ, string razaoSocial)Carrega um DataTable de Centros de Serviço relacionados a uma empresa por CNPJ e razão social.
CarregarCsPessoaFisicaDtpublic static DataTable CarregarCsPessoaFisicaDt(int numCpf, string nomePessoa)Carrega um DataTable de Centros de Serviço relacionados a uma pessoa física por CPF e nome.
CarregarPorNomeInclusiveInativospublic static bool CarregarPorNomeInclusiveInativos(string nome, out CentroServico objCentroServico)Carrega uma instância de CentroServico pelo nome, incluindo os inativos.
CarregarNomeCentroServicopublic static string CarregarNomeCentroServico()Retorna o nome do Centro de Serviço a partir do nome do banco de dados.

Detalhamento de Métodos Importantes

Save()

  • Lógica: Este método é responsável por persistir o estado do objeto CentroServico no banco de dados.
  1. Verifica a propriedade _persisted.
  2. Se _persisted for false (objeto novo), chama o método Insert().
  3. Se _persisted for true (objeto existente), chama o método Update().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert() ou Update().

Save(SqlTransaction trans)

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

Delete(int idCentroServico)

  • Lógica: Exclui um registro de CentroServico do banco de dados.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Centro_Servico com o valor do idCentroServico fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Centro_Servico WHERE Idf_Centro_Servico = @Idf_Centro_Servico
  • @Idf_Centro_Servico (Int): Identificador do Centro de Serviço a ser excluído.

Delete(int idCentroServico, SqlTransaction trans)

  • Lógica: Exclui um registro de CentroServico do banco de dados dentro de uma transação.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Centro_Servico com o valor do idCentroServico fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery e a transação fornecida.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Centro_Servico WHERE Idf_Centro_Servico = @Idf_Centro_Servico
  • @Idf_Centro_Servico (Int): Identificador do Centro de Serviço a ser excluído.

Delete(List idCentroServico)

  • Lógica: Exclui múltiplos registros de CentroServico do banco de dados.
  1. Cria uma lista de SqlParameter e uma string query inicial.
  2. Itera sobre a lista idCentroServico:
  • Para cada ID, cria um parâmetro @parmX e o adiciona à query e à lista de parâmetros.
  • Adiciona o valor do ID ao respectivo parâmetro.
  1. Completa a query com a cláusula IN.
  2. Executa a query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Centro_Servico WHERE Idf_Centro_Servico IN (@parm0, @parm1, ...)
  • @parmX (Int): Identificadores dos Centros de Serviço a serem excluídos.

LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)

  • Lógica: Prepara e executa uma consulta paginada e ordenada para retornar dados de CentroServico.
  1. Calcula os valores de inicio e fim para a paginação com base em paginaCorrente e tamanhoPagina.
  2. Constrói a string SQL SPSELECTPAG para selecionar os dados com ROW_NUMBER() para ordenação e paginação.
  3. Constrói a string SQL SPSELECTCOUNT para contar o total de registros.
  4. Executa SPSELECTCOUNT para obter o totalRegistros.
  5. Executa SPSELECTPAG para retornar o IDataReader com os dados paginados.
  • Stored Procedures chamadas:
  • SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Cen.Idf_Centro_Servico, ... FROM plataforma.TAB_Centro_Servico Cen) AS temp
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Cen.Idf_Centro_Servico, ... FROM plataforma.TAB_Centro_Servico Cen) AS temp WHERE RowId BETWEEN @inicio AND @fim
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • @inicio (Int): Início do range de linhas para paginação.
  • @fim (Int): Fim do range de linhas para paginação.

LoadObject(int idCentroServico)

  • Lógica: Carrega um objeto CentroServico pelo seu ID.
  1. Chama o método LoadDataReader(idCentroServico) para obter um IDataReader.
  2. Cria uma nova instância de CentroServico.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idCentroServico).

LoadObject(int idCentroServico, SqlTransaction trans)

  • Lógica: Similar ao LoadObject(int idCentroServico), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama o método LoadDataReader(idCentroServico, trans) para obter um IDataReader.
  2. Cria uma nova instância de CentroServico.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idCentroServico, SqlTransaction trans).

CompleteObject()

  • Lógica: Preenche as propriedades da instância atual de CentroServico a partir do banco de dados, usando o _idCentroServico já existente na instância.
  1. Chama LoadDataReader(this._idCentroServico) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idCentroServico).

CompleteObject(SqlTransaction trans)

  • Lógica: Similar ao CompleteObject(), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama LoadDataReader(this._idCentroServico, trans) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idCentroServico, SqlTransaction trans).

VerificaFlagRoboNotificacao(string Des_Centro_Servico, bool Flg_Robo_SMS, bool Flg_Robo_Email)

  • Lógica: Verifica se as flags de robô SMS ou Email estão ativas para um Centro de Serviço específico.
  1. Cria uma lista de SqlParameter e adiciona @Des_Centro_Servico.
  2. Executa a query SPCONSULTAFLAGNOTIFICACAO.
  3. Itera sobre os resultados do SqlDataReader:
  • Se Flg_Robo_SMS for true e a coluna Flg_Robo_SMS do resultado for true, define retorno como true.
  • Se Flg_Robo_Email for true e a coluna Flg_Robo_Email do resultado for true, define retorno como true.
  1. Retorna retorno.
  • Stored Procedures chamadas: SELECT Flg_Robo_SMS, Flg_Robo_Email FROM plataforma.TAB_Centro_Servico cs WHERE cs.Des_Centro_Servico = @Des_Centro_Servico
  • @Des_Centro_Servico (VarChar): Descrição do Centro de Serviço.

ListarTiposEstruturaGerencial(int idUsuario)

  • Lógica: Retorna uma lista de IDs de tipos de estrutura gerencial associados a um usuário.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Usuario.
  2. Define uma query SQL que utiliza a função de tabela TAB_SF_Usuario_Acesso para filtrar empresas e filiais, e então seleciona os Idf_Tipo_Estrutura_Gerencial.
  3. Executa a query e preenche uma List<int> com os IDs encontrados.
  4. Retorna a lista.
  • Stored Procedures chamadas: SELECT DISTINCT ISNULL(Idf_Tipo_Estrutura_Gerencial, 1) FROM (SELECT DISTINCT Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL)) AS UA INNER JOIN TAB_Filial F ON UA.Idf_Empresa = F.Idf_Empresa AND F.flg_Matriz = 1 INNER JOIN TAB_Empresa E ON E.Idf_Empresa = F.Idf_Empresa WHERE F.Flg_Inativo = 0 AND E.Flg_Inativo = 0
  • @Idf_Usuario (Int): Identificador do usuário.

ListarPorNomeParcial(string valor, int count)

  • Lógica: Lista Centros de Serviço que correspondem a um nome parcial, limitando o número de resultados.
  1. Cria uma lista de SqlParameter e adiciona @Valor (para o nome parcial) e @Count (para o limite de resultados).
  2. Executa a query SPSELNOMEPARCIALCOUNT.
  3. Itera sobre o IDataReader e preenche um Dictionary<int, string> com Idf_Centro_Servico e Des_Centro_Servico.
  4. Retorna o dicionário.
  • Stored Procedures chamadas: SELECT TOP (@Count) * FROM plataforma.TAB_Centro_Servico Cse WHERE Cse.Flg_Inativo = 0 AND Des_Centro_Servico LIKE '%' + @Valor + '%' ORDER BY Des_Centro_Servico
  • @Count (Int): Número máximo de registros a retornar.
  • @Valor (VarChar): Valor parcial para pesquisa na descrição do Centro de Serviço.

Listar()

  • Lógica: Retorna uma coleção de CentroServico que possuem as flags de robô SMS ou Email ativas.
  1. Cria uma lista vazia de SqlParameter.
  2. Executa a query SPSELNOMENOTIFICACAO.
  3. Itera sobre o IDataReader:
  • Para cada registro, cria uma nova instância de CentroServico.
  • Preenche os atributos da instância diretamente do IDataReader.
  • Define _persisted como true e _modified como false.
  • Retorna a instância usando yield return.
  • Stored Procedures chamadas: SELECT * FROM plataforma.TAB_Centro_Servico WHERE Flg_Robo_SMS = 1 OR Flg_Robo_Email = 1 (em ambiente de produção) ou SELECT * FROM plataforma.TAB_Centro_Servico (em DEBUG).

CarregarPorNome(string nome, out CentroServico objCentroServico)

  • Lógica: Tenta carregar um objeto CentroServico pelo nome, considerando apenas os ativos.
  1. Chama o método ListarPorNome(nome) (privado) para obter um IDataReader.
  2. Cria uma nova instância de CentroServico.
  3. Chama SetInstance para preencher a instância.
  4. Se SetInstance retornar true, define objCentroServico e retorna true.
  5. Caso contrário, define objCentroServico como null e retorna false.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama ListarPorNome(string nome).

CarregarCsEmpresaDt(int numCNPJ, string razaoSocial)

  • Lógica: Carrega um DataTable com Centros de Serviço associados a uma empresa.
  1. Cria uma lista de SqlParameter e adiciona @Num_cnpj e @raz_social.
  2. Define os valores dos parâmetros.
  3. Adiciona “Plataforma” à sessão com a chave “CentroServico”.
  4. Executa a stored procedure SPEMPRESACENTROSERVICO e retorna a primeira tabela do DataSet resultante.
  • Stored Procedures chamadas: TAB_SP_Empresa_Centro_Servico
  • @Num_cnpj (Int): CNPJ da empresa.
  • @raz_social (VarChar): Razão social da empresa.

CarregarCsPessoaFisicaDt(int numCpf, string nomePessoa)

  • Lógica: Carrega um DataTable com Centros de Serviço associados a uma pessoa física.
  1. Cria uma lista de SqlParameter e adiciona @num_cpf e @nme_pessoa.
  2. Define os valores dos parâmetros.
  3. Adiciona “Plataforma” à sessão com a chave “CentroServico”.
  4. Executa a stored procedure SPPESSOAFISICACENTROSERVICO e retorna a primeira tabela do DataSet resultante.
  • Stored Procedures chamadas: TAB_SP_Pessoa_Fisica_Centro_Servico
  • @num_cpf (Int): CPF da pessoa física.
  • @nme_pessoa (VarChar): Nome da pessoa.

CarregarPorNomeInclusiveInativos(string nome, out CentroServico objCentroServico)

  • Lógica: Tenta carregar um objeto CentroServico pelo nome, incluindo os inativos.
  1. Cria uma lista de SqlParameter e adiciona @Des_Centro_Servico.
  2. Define o valor do parâmetro.
  3. Executa a query SPSELNOMETODOS.
  4. Cria uma nova instância de CentroServico.
  5. Chama SetInstance para preencher a instância.
  6. Se SetInstance retornar true, define objCentroServico e retorna true.
  7. Caso contrário, define objCentroServico como null e retorna false.
  • Stored Procedures chamadas: SELECT * FROM plataforma.TAB_Centro_Servico Cse WHERE Des_Centro_Servico LIKE @Des_Centro_Servico
  • @Des_Centro_Servico (VarChar): Descrição do Centro de Serviço.

CarregarNomeCentroServico()

  • Lógica: Recupera o nome do Centro de Serviço a partir do nome do banco de dados.
  1. Define uma query SQL que extrai o nome do banco de dados e remove prefixos como “plataforma_”, “_hom”, “_new”.
  2. Executa a query usando DataAccessLayer.ExecuteScalar.
  3. Retorna o nome do Centro de Serviço como string.
  • Stored Procedures chamadas: SELECT (REPLACE(REPLACE(REPLACE(DB_NAME(), 'plataforma_', ''), '_hom', ''),'_new','')) AS CentroServico

Stored Procedures

NomeParâmetrosPropósito
INSERT INTO plataforma.TAB_Centro_Servico@Idf_Centro_Servico, @Des_Centro_Servico, @Flg_Inativo, @Dta_Cadastro, @Flg_Robo_SMS, @Flg_Robo_Email, @Des_String_Conexao, @Flg_Alerta, @Flg_Integrar_BNEInsere um novo registro na tabela plataforma.TAB_Centro_Servico.
UPDATE plataforma.TAB_Centro_Servico@Des_Centro_Servico, @Flg_Inativo, @Dta_Cadastro, @Flg_Robo_SMS, @Flg_Robo_Email, @Des_String_Conexao, @Flg_Alerta, @Flg_Integrar_BNE, @Idf_Centro_ServicoAtualiza um registro existente na tabela plataforma.TAB_Centro_Servico.
DELETE FROM plataforma.TAB_Centro_Servico@Idf_Centro_ServicoExclui um registro da tabela plataforma.TAB_Centro_Servico pelo ID.
SELECT * FROM plataforma.TAB_Centro_Servico@Idf_Centro_ServicoSeleciona um registro da tabela plataforma.TAB_Centro_Servico pelo ID.
SELECT Flg_Robo_SMS, Flg_Robo_Email FROM plataforma.TAB_Centro_Servico@Des_Centro_ServicoSeleciona as flags de robô SMS e Email para um Centro de Serviço específico.
SELECT DISTINCT ISNULL(Idf_Tipo_Estrutura_Gerencial, 1) FROM (SELECT DISTINCT Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL)) AS UA INNER JOIN TAB_Filial F ON UA.Idf_Empresa = F.Idf_Empresa AND F.flg_Matriz = 1 INNER JOIN TAB_Empresa E ON E.Idf_Empresa = F.Idf_Empresa WHERE F.Flg_Inativo = 0 AND E.Flg_Inativo = 0@Idf_UsuarioRetorna os tipos de estrutura gerencial que um usuário pode acessar.
SELECT TOP (@Count) * FROM plataforma.TAB_Centro_Servico@Count, @ValorSeleciona Centros de Serviço por nome parcial, limitado por count.
SELECT * FROM plataforma.TAB_Centro_Servico@Des_Centro_ServicoSeleciona Centros de Serviço por nome exato ou parcial (usado em ListarPorNome e CarregarPorNomeInclusiveInativos).
SELECT * FROM plataforma.TAB_Centro_Servico(Nenhum)Seleciona todos os Centros de Serviço (usado em Listar()).
TAB_SP_Empresa_Centro_Servico@Num_cnpj, @raz_socialStored procedure para carregar Centros de Serviço por empresa.
TAB_SP_Pessoa_Fisica_Centro_Servico@num_cpf, @nme_pessoaStored procedure para carregar Centros de Serviço por pessoa física.
SELECT (REPLACE(REPLACE(REPLACE(DB_NAME(), 'plataforma_', ''), '_hom', ''),'_new','')) AS CentroServico(Nenhum)Retorna o nome do Centro de Serviço a partir do nome do banco de dados.

ClasseSalarial

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ClasseSalarial_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ClasseSalarial_P2.cs

Métodos

MétodoAssinaturaPropósito
ClasseSalarialpublic ClasseSalarial()Construtor padrão da classe.
ClasseSalarialpublic ClasseSalarial(int idClasseSalarial)Construtor que inicializa a instância com um ID existente, marcando-a como persistida.
Savepublic void Save()Salva a instância atual de ClasseSalarial no banco de dados (insere se não persistida, atualiza se modificada).
Savepublic void Save(SqlTransaction trans)Salva a instância atual de ClasseSalarial no banco de dados dentro de uma transação.
Deletepublic static void Delete(int idClasseSalarial)Exclui um registro de ClasseSalarial do banco de dados pelo ID.
Deletepublic static void Delete(int idClasseSalarial, SqlTransaction trans)Exclui um registro de ClasseSalarial do banco de dados pelo ID, dentro de uma transação.
Deletepublic static void Delete(List<int> idClasseSalarial)Exclui múltiplos registros de ClasseSalarial do banco de dados por uma lista de IDs.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada e ordenada de ClasseSalarial.
LoadObjectpublic static ClasseSalarial LoadObject(int idClasseSalarial)Retorna uma instância de ClasseSalarial a partir do banco de dados pelo ID.
LoadObjectpublic static ClasseSalarial LoadObject(int idClasseSalarial, SqlTransaction trans)Retorna uma instância de ClasseSalarial a partir do banco de dados pelo ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa as propriedades da instância atual de ClasseSalarial a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa as propriedades da instância atual de ClasseSalarial a partir do banco de dados, dentro de uma transação.
Listarpublic static Dictionary<string, string> Listar()Retorna um dicionário de classes salariais, onde a chave é o ID e o valor é a faixa salarial formatada (Piso - Teto).
AjustarFatorConversaopublic static void AjustarFatorConversao(SqlTransaction trans, decimal fatorConversao)Recalcula e atualiza os valores de piso, teto e salário médio para todas as classes salariais com base em um fator de conversão.
ListarDictionaryIntpublic static Dictionary<int, string> ListarDictionaryInt()Retorna um dicionário de classes salariais, onde a chave é o ID (int) e o valor é a faixa salarial formatada (Piso - Teto) com símbolo monetário.

Detalhamento de Métodos Importantes

Save()

  • Lógica: Este método é responsável por persistir o estado do objeto ClasseSalarial no banco de dados.
  1. Verifica a propriedade _persisted.
  2. Se _persisted for false (objeto novo), chama o método Insert().
  3. Se _persisted for true (objeto existente), chama o método Update().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert() ou Update().

Save(SqlTransaction trans)

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

Delete(int idClasseSalarial)

  • Lógica: Exclui um registro de ClasseSalarial do banco de dados.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Classe_Salarial com o valor do idClasseSalarial fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Classe_Salarial WHERE Idf_Classe_Salarial = @Idf_Classe_Salarial
  • @Idf_Classe_Salarial (Int): Identificador da Classe Salarial a ser excluída.

Delete(int idClasseSalarial, SqlTransaction trans)

  • Lógica: Exclui um registro de ClasseSalarial do banco de dados dentro de uma transação.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Classe_Salarial com o valor do idClasseSalarial fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery e a transação fornecida.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Classe_Salarial WHERE Idf_Classe_Salarial = @Idf_Classe_Salarial
  • @Idf_Classe_Salarial (Int): Identificador da Classe Salarial a ser excluída.

Delete(List idClasseSalarial)

  • Lógica: Exclui múltiplos registros de ClasseSalarial do banco de dados.
  1. Cria uma lista de SqlParameter e uma string query inicial.
  2. Itera sobre a lista idClasseSalarial:
  • Para cada ID, cria um parâmetro @parmX e o adiciona à query e à lista de parâmetros.
  • Adiciona o valor do ID ao respectivo parâmetro.
  1. Completa a query com a cláusula IN.
  2. Executa a query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Classe_Salarial WHERE Idf_Classe_Salarial IN (@parm0, @parm1, ...)
  • @parmX (Int): Identificadores das Classes Salariais a serem excluídas.

LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)

  • Lógica: Prepara e executa uma consulta paginada e ordenada para retornar dados de ClasseSalarial.
  1. Calcula os valores de inicio e fim para a paginação com base em paginaCorrente e tamanhoPagina.
  2. Constrói a string SQL SPSELECTPAG para selecionar os dados com ROW_NUMBER() para ordenação e paginação.
  3. Constrói a string SQL SPSELECTCOUNT para contar o total de registros.
  4. Executa SPSELECTCOUNT para obter o totalRegistros.
  5. Executa SPSELECTPAG para retornar o IDataReader com os dados paginados.
  • Stored Procedures chamadas:
  • SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Cla.Idf_Classe_Salarial, ... FROM plataforma.TAB_Classe_Salarial Cla) AS temp
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Cla.Idf_Classe_Salarial, ... FROM plataforma.TAB_Classe_Salarial Cla) AS temp WHERE RowId BETWEEN @inicio AND @fim
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • @inicio (Int): Início do range de linhas para paginação.
  • @fim (Int): Fim do range de linhas para paginação.

LoadObject(int idClasseSalarial)

  • Lógica: Carrega um objeto ClasseSalarial pelo seu ID.
  1. Chama o método LoadDataReader(idClasseSalarial) para obter um IDataReader.
  2. Cria uma nova instância de ClasseSalarial.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idClasseSalarial).

LoadObject(int idClasseSalarial, SqlTransaction trans)

  • Lógica: Similar ao LoadObject(int idClasseSalarial), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama o método LoadDataReader(idClasseSalarial, trans) para obter um IDataReader.
  2. Cria uma nova instância de ClasseSalarial.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idClasseSalarial, SqlTransaction trans).

CompleteObject()

  • Lógica: Preenche as propriedades da instância atual de ClasseSalarial a partir do banco de dados, usando o _idClasseSalarial já existente na instância.
  1. Chama LoadDataReader(this._idClasseSalarial) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idClasseSalarial).

CompleteObject(SqlTransaction trans)

  • Lógica: Similar ao CompleteObject(), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama LoadDataReader(this._idClasseSalarial, trans) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idClasseSalarial, SqlTransaction trans).

Listar()

  • Lógica: Retorna um dicionário de todas as classes salariais.
  1. Cria um Dictionary<string, string> vazio.
  2. Executa a query SPSELECT para obter todos os registros de ClasseSalarial.
  3. Itera sobre o IDataReader:
  • Adiciona ao dicionário o Idf_Classe_Salarial como chave (string) e a concatenação formatada de Vlr_Piso e Vlr_Teto como valor.
  1. Retorna o dicionário.
  • Stored Procedures chamadas: SELECT * FROM plataforma.TAB_Classe_Salarial

AjustarFatorConversao(SqlTransaction trans, decimal fatorConversao)

  • Lógica: Recalcula e atualiza os valores de piso, teto e salário médio para todas as classes salariais.
  1. Cria um DataTable dtNivelSalarial com colunas para “Faixa” e letras de “A” a “J”.
  2. Preenche o dtNivelSalarial com 20 linhas, simulando faixas salariais.
  • A coluna “A” da primeira linha recebe o fatorConversao arredondado.
  • As demais células são calculadas com base na célula anterior da mesma linha, multiplicando por 1.05.
  • A coluna “A” das linhas subsequentes recebe o valor da coluna “F” da linha anterior.
  1. Itera de 1 a 20 (para cada classe salarial):
  • Carrega o objeto ClasseSalarial correspondente usando ClasseSalarial.LoadObject(i+1).
  • Atualiza ValorPiso com o valor da coluna “A” do dtNivelSalarial.
  • Atualiza ValorTeto com o valor da coluna “J” da linha atual ou da próxima linha do dtNivelSalarial.
  • Calcula ValorSalarioMedio como a média de ValorPiso e ValorTeto.
  • Salva o objeto ClasseSalarial atualizado usando objClasseSalarial.Save(trans).
  • Stored Procedures chamadas: Nenhuma diretamente. Chama ClasseSalarial.LoadObject(int idClasseSalarial) e objClasseSalarial.Save(SqlTransaction trans).

ListarDictionaryInt()

  • Lógica: Retorna um dicionário de todas as classes salariais com IDs inteiros.
  1. Cria um Dictionary<int, string> vazio.
  2. Executa a query SPSELECT para obter todos os registros de ClasseSalarial.
  3. Itera sobre o IDataReader:
  • Adiciona ao dicionário o Idf_Classe_Salarial como chave (int) e a concatenação formatada de Vlr_Piso e Vlr_Teto com símbolo monetário como valor.
  1. Retorna o dicionário.
  • Stored Procedures chamadas: SELECT * FROM plataforma.TAB_Classe_Salarial

Stored Procedures

NomeParâmetrosPropósito
INSERT INTO plataforma.TAB_Classe_Salarial@Idf_Classe_Salarial, @Vlr_Salario_Medio, @Vlr_Piso, @Vlr_Teto, @Dta_CadastroInsere um novo registro na tabela plataforma.TAB_Classe_Salarial.
UPDATE plataforma.TAB_Classe_Salarial@Vlr_Salario_Medio, @Vlr_Piso, @Vlr_Teto, @Dta_Cadastro, @Idf_Classe_SalarialAtualiza um registro existente na tabela plataforma.TAB_Classe_Salarial.
DELETE FROM plataforma.TAB_Classe_Salarial@Idf_Classe_SalarialExclui um registro da tabela plataforma.TAB_Classe_Salarial pelo ID.
SELECT * FROM plataforma.TAB_Classe_Salarial@Idf_Classe_SalarialSeleciona um registro da tabela plataforma.TAB_Classe_Salarial pelo ID.
SELECT * FROM plataforma.TAB_Classe_Salarial(Nenhum)Seleciona todos os registros da tabela plataforma.TAB_Classe_Salarial.
SELECT TOP 1 * FROM plataforma.TAB_Classe_Salarial(Nenhum)Seleciona a classe salarial vigente (com Dta_Inicio_Vigencia mais recente e menor ou igual à data atual).

Dicionario

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Dicionario_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Dicionario_P2.cs

Métodos

MétodoAssinaturaPropósito
Dicionariopublic Dicionario()Construtor padrão da classe.
Dicionariopublic Dicionario(int idDicionario)Construtor que inicializa a instância com um ID existente, marcando-a como persistida.
Savepublic void Save()Salva a instância atual de Dicionario no banco de dados (insere se não persistida, atualiza se modificada).
Savepublic void Save(SqlTransaction trans)Salva a instância atual de Dicionario no banco de dados dentro de uma transação.
Deletepublic static void Delete(int idDicionario)Exclui um registro de Dicionario do banco de dados pelo ID.
Deletepublic static void Delete(int idDicionario, SqlTransaction trans)Exclui um registro de Dicionario do banco de dados pelo ID, dentro de uma transação.
Deletepublic static void Delete(List<int> idDicionario)Exclui múltiplos registros de Dicionario do banco de dados por uma lista de IDs.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada e ordenada de Dicionario.
LoadObjectpublic static Dicionario LoadObject(int idDicionario)Retorna uma instância de Dicionario a partir do banco de dados pelo ID.
LoadObjectpublic static Dicionario LoadObject(int idDicionario, SqlTransaction trans)Retorna uma instância de Dicionario a partir do banco de dados pelo ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa as propriedades da instância atual de Dicionario a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa as propriedades da instância atual de Dicionario a partir do banco de dados, dentro de uma transação.
Listarpublic static List<Dicionario> Listar()Lista todos os itens do dicionário do sistema.
ListarItensDicionariopublic static Dictionary<Enumeradores.ItemDicionario, string> ListarItensDicionario(List<Enumeradores.ItemDicionario> idsItensDicionario)Retorna um dicionário de itens do dicionário de parâmetros do sistema, filtrados por uma lista de IDs.
RecuperaValorDicionariopublic static string RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, SqlTransaction trans)Recupera o valor de um item do dicionário a partir do ID, dentro de uma transação.
RecuperaValorDicionariopublic static string RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, string valorDicionario = default(string))Recupera o valor de um item do dicionário a partir do ID.

Detalhamento de Métodos Importantes

Save()

  • Lógica: Este método é responsável por persistir o estado do objeto Dicionario no banco de dados.
  1. Verifica a propriedade _persisted.
  2. Se _persisted for false (objeto novo), chama o método Insert().
  3. Se _persisted for true (objeto existente), chama o método Update().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert() ou Update().

Save(SqlTransaction trans)

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

Delete(int idDicionario)

  • Lógica: Exclui um registro de Dicionario do banco de dados.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Dicionario com o valor do idDicionario fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Dicionario WHERE Idf_Dicionario = @Idf_Dicionario
  • @Idf_Dicionario (Int): Identificador do item do dicionário a ser excluído.

Delete(int idDicionario, SqlTransaction trans)

  • Lógica: Exclui um registro de Dicionario do banco de dados dentro de uma transação.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Dicionario com o valor do idDicionario fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery e a transação fornecida.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Dicionario WHERE Idf_Dicionario = @Idf_Dicionario
  • @Idf_Dicionario (Int): Identificador do item do dicionário a ser excluído.

Delete(List idDicionario)

  • Lógica: Exclui múltiplos registros de Dicionario do banco de dados.
  1. Cria uma lista de SqlParameter e uma string query inicial.
  2. Itera sobre a lista idDicionario:
  • Para cada ID, cria um parâmetro @parmX e o adiciona à query e à lista de parâmetros.
  • Adiciona o valor do ID ao respectivo parâmetro.
  1. Completa a query com a cláusula IN.
  2. Executa a query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Dicionario WHERE Idf_Dicionario IN (@parm0, @parm1, ...)
  • @parmX (Int): Identificadores dos itens do dicionário a serem excluídos.

LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)

  • Lógica: Prepara e executa uma consulta paginada e ordenada para retornar dados de Dicionario.
  1. Calcula os valores de inicio e fim para a paginação com base em paginaCorrente e tamanhoPagina.
  2. Constrói a string SQL SPSELECTPAG para selecionar os dados com ROW_NUMBER() para ordenação e paginação.
  3. Constrói a string SQL SPSELECTCOUNT para contar o total de registros.
  4. Executa SPSELECTCOUNT para obter o totalRegistros.
  5. Executa SPSELECTPAG para retornar o IDataReader com os dados paginados.
  • Stored Procedures chamadas:
  • SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Dic.Idf_Dicionario, ... FROM plataforma.TAB_Dicionario Dic) AS temp
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Dic.Idf_Dicionario, ... FROM plataforma.TAB_Dicionario Dic) AS temp WHERE RowId BETWEEN @inicio AND @fim
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • @inicio (Int): Início do range de linhas para paginação.
  • @fim (Int): Fim do range de linhas para paginação.

LoadObject(int idDicionario)

  • Lógica: Carrega um objeto Dicionario pelo seu ID.
  1. Chama o método LoadDataReader(idDicionario) para obter um IDataReader.
  2. Cria uma nova instância de Dicionario.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idDicionario).

LoadObject(int idDicionario, SqlTransaction trans)

  • Lógica: Similar ao LoadObject(int idDicionario), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama o método LoadDataReader(idDicionario, trans) para obter um IDataReader.
  2. Cria uma nova instância de Dicionario.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idDicionario, SqlTransaction trans).

CompleteObject()

  • Lógica: Preenche as propriedades da instância atual de Dicionario a partir do banco de dados, usando o _idDicionario já existente na instância.
  1. Chama LoadDataReader(this._idDicionario) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idDicionario).

CompleteObject(SqlTransaction trans)

  • Lógica: Similar ao CompleteObject(), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama LoadDataReader(this._idDicionario, trans) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idDicionario, SqlTransaction trans).

Listar()

  • Lógica: Lista todos os itens do dicionário do sistema.
  1. Cria uma List<Dicionario> vazia.
  2. Executa a query SPSELECT para obter todos os registros de Dicionario.
  3. Itera sobre o IDataReader:
  • Cria uma nova instância de Dicionario.
  • Chama SetInstanceOpenDR (método auxiliar privado) para preencher a instância.
  • Adiciona a instância à lista.
  1. Fecha e descarta o IDataReader.
  2. Retorna a lista de dicionários.
  • Stored Procedures chamadas: SELECT * FROM plataforma.Tab_Dicionario

ListarItensDicionario(List<Enumeradores.ItemDicionario> idsItensDicionario)

  • Lógica: Retorna um dicionário de itens do dicionário de parâmetros do sistema, filtrados por uma lista de IDs.
  1. Cria uma lista de SqlParameter e um Dictionary<Enumeradores.ItemDicionario, string> vazio.
  2. Constrói uma query SQL dinâmica para selecionar Idf_Dicionario, Nme_Dicionario e Vlr_Dicionario da tabela plataforma.TAB_Dicionario, com uma cláusula WHERE IN baseada nos idsItensDicionario fornecidos.
  3. Adiciona os IDs da lista como parâmetros à query.
  4. Executa a query e itera sobre o IDataReader:
  • Para cada registro, converte o Idf_Dicionario para Enumeradores.ItemDicionario e adiciona ao dicionário de retorno junto com o Vlr_Dicionario.
  1. Fecha e descarta o IDataReader.
  2. Retorna o dicionário de itens.
  • Stored Procedures chamadas: SELECT Idf_Dicionario, Nme_Dicionario, Vlr_Dicionario FROM plataforma.TAB_Dicionario WHERE Idf_Dicionario IN (@parm0, @parm1, ...)
  • @parmX (Int): Identificadores dos itens do dicionário a serem recuperados.

RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, SqlTransaction trans)

  • Lógica: Recupera o valor de um item do dicionário a partir do ID, dentro de uma transação.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Dicionario.
  2. Define o valor do parâmetro com o idDicionario fornecido.
  3. Executa a query SPSELECTID usando a transação fornecida.
  4. Se houver um registro, recupera o Vlr_Dicionario.
  5. Fecha e descarta o IDataReader.
  6. Retorna o valor do dicionário.
  • Stored Procedures chamadas: SELECT * FROM plataforma.TAB_Dicionario WHERE Idf_Dicionario = @Idf_Dicionario
  • @Idf_Dicionario (Int): Identificador do item do dicionário.

RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, string valorDicionario = default(string))

  • Lógica: Recupera o valor de um item do dicionário a partir do ID.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Dicionario.
  2. Define o valor do parâmetro com o idDicionario fornecido.
  3. Executa a query SPSELECTID.
  4. Se houver um registro, recupera o Vlr_Dicionario.
  5. Fecha e descarta o IDataReader.
  6. Retorna o valor do dicionário.
  • Stored Procedures chamadas: SELECT * FROM plataforma.TAB_Dicionario WHERE Idf_Dicionario = @Idf_Dicionario
  • @Idf_Dicionario (Int): Identificador do item do dicionário.

Stored Procedures

NomeParâmetrosPropósito
INSERT INTO plataforma.TAB_Dicionario@Idf_Dicionario, @Nme_Dicionario, @Ape_Dicionario, @Idf_Tipo_Valor, @Vlr_Dicionario, @Vlr_Anterior, @Flg_Inativo, @Dta_CadastroInsere um novo registro na tabela plataforma.TAB_Dicionario.
UPDATE plataforma.TAB_Dicionario@Nme_Dicionario, @Ape_Dicionario, @Idf_Tipo_Valor, @Vlr_Dicionario, @Vlr_Anterior, @Flg_Inativo, @Dta_Cadastro, @Idf_DicionarioAtualiza um registro existente na tabela plataforma.TAB_Dicionario.
DELETE FROM plataforma.TAB_Dicionario@Idf_DicionarioExclui um registro da tabela plataforma.TAB_Dicionario pelo ID.
SELECT * FROM plataforma.TAB_Dicionario@Idf_DicionarioSeleciona um registro da tabela plataforma.TAB_Dicionario pelo ID.
SELECT * FROM plataforma.Tab_Dicionario(Nenhum)Seleciona todos os registros da tabela plataforma.Tab_Dicionario.
SELECT Idf_Dicionario, Nme_Dicionario, Vlr_Dicionario FROM plataforma.TAB_Dicionario@parmXSeleciona itens específicos do dicionário por uma lista de IDs.

Empresa

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Empresa_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Empresa_P2.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Empresa_P3.cs

Métodos

MétodoAssinaturaPropósito
Empresapublic Empresa()Construtor padrão da classe.
Empresapublic Empresa(int idEmpresa)Construtor que inicializa a instância com um ID existente, marcando-a como persistida.
Savepublic void Save()Salva a instância atual de Empresa no banco de dados (insere se não persistida, atualiza se modificada).
Savepublic void Save(SqlTransaction trans)Salva a instância atual de Empresa no banco de dados dentro de uma transação.
Deletepublic static void Delete(int idEmpresa)Exclui um registro de Empresa do banco de dados pelo ID.
Deletepublic static void Delete(int idEmpresa, SqlTransaction trans)Exclui um registro de Empresa do banco de dados pelo ID, dentro de uma transação.
Deletepublic static void Delete(List<int> idEmpresa)Exclui múltiplos registros de Empresa do banco de dados por uma lista de IDs.
RecuperarPorIntegracaoFinanceirapublic static int RecuperarPorIntegracaoFinanceira(SqlTransaction trans, Int32 Idf_Empresa)Recupera o ID da empresa matriz para integração financeira.
RecuperarEmpresaMatrizpublic static int RecuperarEmpresaMatriz(SqlTransaction trans, Int32 IdfArquivoGerado)Recupera o ID da empresa matriz associada a um arquivo gerado.
UpdateEmpregadospublic void UpdateEmpregados(int? pIdFilial, SqlTransaction trans)Atualiza os empregados ativos da filial e os insere novamente na fila de cálculo para refletir as alterações geradas na empresa.
AtualizarFichaSementepublic bool AtualizarFichaSemente(SqlTransaction trans, Int64 NumSementeFicha)Atualiza o número da semente de ficha de registro da empresa.
SelecionaInformacoesFilialEmpresapublic static DataTable SelecionaInformacoesFilialEmpresa(int idEmpresa, int? idFilial, int? idBanco)Seleciona informações detalhadas da filial e empresa.
VerificaEmpresaPrestadorapublic static bool VerificaEmpresaPrestadora(int idEmpresa)Verifica se uma empresa é prestadora de serviços.
CarregarProdutorRuralEmpresaPeriodopublic static bool CarregarProdutorRuralEmpresaPeriodo(int idEmpresa, int? mes, int ano, out ProdutorRural objProdutorRural)Carrega informações de produtor rural para uma empresa em um período específico.
SalvarFlagProdutorRuralpublic static void SalvarFlagProdutorRural(int idEmpresa, int? mes, int ano, bool flgProdutorRural)Salva a flag de produtor rural para uma empresa em um período.
CompleteAuditoriapublic bool CompleteAuditoria()Completa a razão social da empresa para fins de auditoria.
AtualizarSementepublic bool AtualizarSemente(SqlTransaction trans, int numSementeReferencia)Atualiza o número da semente de matrícula da empresa se o novo valor for maior.
RecuperarProximaMatriculapublic bool RecuperarProximaMatricula(SqlTransaction trans, out int pNumeroMatricula)Recupera o próximo número de matrícula “livre” para a empresa.
RecuperarProximaFichaRegistropublic bool RecuperarProximaFichaRegistro(SqlTransaction trans, out int pNumeroFichaRegistro)Recupera o próximo número de ficha de registro “livre” para a empresa.

Detalhamento de Métodos Importantes

Save()

  • Lógica: Este método é responsável por persistir o estado do objeto Empresa no banco de dados.
  1. Verifica a propriedade _persisted.
  2. Se _persisted for false (objeto novo), chama o método Insert().
  3. Se _persisted for true (objeto existente), chama o método Update().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert() ou Update().

Save(SqlTransaction trans)

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

Delete(int idEmpresa)

  • Lógica: Exclui um registro de Empresa do banco de dados.
  1. Cria uma lista de SqlParameter.
  2. Adiciona os parâmetros @Idf_Empresa e @Idf_Usuario_Gerador.
  3. Define os valores dos parâmetros, sendo o Idf_Usuario_Gerador obtido da sessão.
  4. Executa uma query SQL que primeiro atualiza o Idf_Usuario_Gerador e depois deleta o registro da tabela TAB_Empresa.
  • Stored Procedures chamadas: UPDATE TAB_Empresa SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Empresa = @Idf_Empresa ; DELETE FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa
  • @Idf_Empresa (Int): Identificador da Empresa a ser excluída.
  • @Idf_Usuario_Gerador (Int): ID do usuário que está realizando a exclusão.

Delete(int idEmpresa, SqlTransaction trans)

  • Lógica: Exclui um registro de Empresa do banco de dados dentro de uma transação.
  1. Cria uma lista de SqlParameter.
  2. Adiciona os parâmetros @Idf_Empresa e @Idf_Usuario_Gerador.
  3. Define os valores dos parâmetros, sendo o Idf_Usuario_Gerador obtido da sessão.
  4. Executa uma query SQL que primeiro atualiza o Idf_Usuario_Gerador e depois deleta o registro da tabela TAB_Empresa, usando a transação fornecida.
  • Stored Procedures chamadas: UPDATE TAB_Empresa SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Empresa = @Idf_Empresa ; DELETE FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa
  • @Idf_Empresa (Int): Identificador da Empresa a ser excluída.
  • @Idf_Usuario_Gerador (Int): ID do usuário que está realizando a exclusão.

Delete(List idEmpresa)

  • Lógica: Exclui múltiplos registros de Empresa do banco de dados.
  1. Cria uma lista de SqlParameter e strings query e queryAux iniciais.
  2. Itera sobre a lista idEmpresa:
  • Para cada ID, cria um parâmetro @parmX e o adiciona às queries e à lista de parâmetros.
  • Adiciona o valor do ID ao respectivo parâmetro.
  1. Adiciona o parâmetro @Idf_Usuario_Gerador (obtido da sessão) à lista de parâmetros.
  2. Completa as queries com a cláusula IN.
  3. Concatena queryAux e query para formar uma única instrução SQL.
  4. Executa a query SQL usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: UPDATE TAB_Empresa SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Empresa IN (@parm0, @parm1, ...) ; DELETE FROM TAB_Empresa WHERE Idf_Empresa IN (@parm0, @parm1, ...)
  • @parmX (Int): Identificadores das Empresas a serem excluídas.
  • @Idf_Usuario_Gerador (Int): ID do usuário que está realizando a exclusão.

RecuperarPorIntegracaoFinanceira(SqlTransaction trans, Int32 Idf_Empresa)

  • Lógica: Recupera o ID da empresa matriz para integração financeira.
  1. Define uma query SQL que seleciona o Idf_Empresa da tabela TAB_Filial onde Idf_Empresa corresponde ao parâmetro e Flg_Matriz é 1.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Empresa.
  3. Executa a query usando DataAccessLayer.ExecuteScalar dentro da transação fornecida.
  4. Retorna o ID da empresa matriz.
  • Stored Procedures chamadas: SELECT Idf_Empresa FROM TAB_Filial WHERE Idf_Empresa = @Idf_Empresa AND Flg_Matriz=1
  • @Idf_Empresa (Int): Identificador da empresa.

RecuperarEmpresaMatriz(SqlTransaction trans, Int32 IdfArquivoGerado)

  • Lógica: Recupera o ID da empresa matriz associada a um arquivo gerado.
  1. Define uma query SQL que seleciona o Idf_Empresa da tabela TAB_Filial onde Flg_Matriz é 1 e o Idf_Empresa é obtido de uma subconsulta que relaciona TAB_Arquivo_Gerado e TAB_Conta_Empresa.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Arquivo_Gerado.
  3. Executa a query usando DataAccessLayer.ExecuteScalar dentro da transação fornecida.
  4. Retorna o ID da empresa matriz.
  • Stored Procedures chamadas: SELECT Idf_Empresa FROM TAB_Filial WHERE Flg_Matriz = 1 AND Idf_Empresa = (SELECT contaEmpresa.Idf_Empresa FROM TAB_Arquivo_Gerado arquivoGerado JOIN TAB_Conta_Empresa contaEmpresa ON arquivoGerado.Idf_Conta_Empresa = contaEmpresa.Idf_Conta_Empresa WHERE Idf_Arquivo_Gerado=@Idf_Arquivo_Gerado)
  • @Idf_Arquivo_Gerado (Int): Identificador do arquivo gerado.

UpdateEmpregados(int? pIdFilial, SqlTransaction trans)

  • Lógica: Busca empregados ativos de uma filial (ou de toda a empresa) e os insere na fila de cálculo para processamento.
  1. Define uma query SQL complexa que utiliza Common Table Expressions (CTEs) para selecionar empregados ativos e inativos com verbas manuais, considerando o tipo de estrutura gerencial da empresa (Contrato/Departamento ou Centro de Resultado).
  2. Cria uma lista de SqlParameter e adiciona @Idf_Empresa, @Idf_Filial e @UtilizaCR.
  3. Define os valores dos parâmetros com base na instância atual da empresa e no pIdFilial fornecido.
  4. Executa a query usando DataAccessLayer.ExecuteReader dentro da transação fornecida.
  5. Chama FilaCalculoV2Helper.SalvarEnviarParaCalculo(dr, trans) para processar os resultados e enviar para a fila de cálculo.
  • Stored Procedures chamadas: A query é construída dinamicamente, mas envolve as seguintes tabelas e lógica:
  • TAB_Empregado, TAB_Contrato, TAB_Periodo_Calculo_Filial, TAB_Lancamento, TAB_Verba_Manual, TAB_Centro_Resultado.
  • Filtra por Idf_Empresa, Idf_Filial_Gestora (ou Idf_Filial para Centro de Resultado), Flg_Inativo, Flg_Fechado.
  • @Idf_Empresa (Int): ID da empresa.
  • @Idf_Filial (Int, opcional): ID da filial.
  • @UtilizaCR (Int): Tipo de estrutura gerencial (1 para Centro de Resultado, outro valor para Contrato/Departamento).

AtualizarFichaSemente(SqlTransaction trans, Int64 NumSementeFicha)

  • Lógica: Atualiza o número da semente de ficha de registro da empresa.
  1. Define uma query SQL de UPDATE para a tabela TAB_Empresa, atualizando Num_Semente_Ficha.
  2. Verifica se _idEmpresa é maior que 0.
  3. Cria uma lista de SqlParameter e adiciona @Num_Semente_Ficha e @Idf_Empresa.
  4. Define os valores dos parâmetros.
  5. Executa a query usando DataAccessLayer.ExecuteScalar dentro da transação fornecida.
  6. Retorna true se a operação foi executada, false caso contrário.
  • Stored Procedures chamadas: UPDATE TAB_Empresa SET Num_Semente_Ficha = @Num_Semente_Ficha WHERE Idf_Empresa = @Idf_Empresa
  • @Num_Semente_Ficha (BigInt): Novo valor para a semente de ficha.
  • @Idf_Empresa (Int): ID da empresa.

SelecionaInformacoesFilialEmpresa(int idEmpresa, int? idFilial, int? idBanco)

  • Lógica: Seleciona informações detalhadas da filial e empresa, como tipo de inscrição, CNPJ, dados bancários, razão social, endereço, etc.
  1. Cria um DataTable vazio.
  2. Chama o método privado LoadDataReaderInfo para obter um IDataReader com as informações.
  3. Carrega os dados do IDataReader no DataTable.
  4. Retorna o DataTable.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReaderInfo(int idEmpresa, int? idFilial, int? idBanco).

VerificaEmpresaPrestadora(int idEmpresa)

  • Lógica: Verifica se a empresa é uma prestadora de serviços.
  1. Define uma query SQL que conta o número de filiais matrizes que são prestadoras para a idEmpresa fornecida.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Empresa.
  3. Executa a query usando DataAccessLayer.ExecuteReader.
  4. Se o resultado da contagem for 0, retorna false. Caso contrário, retorna true.
  • Stored Procedures chamadas: SELECT COUNT(*) AS Total FROM TAB_FILIAL FIL WHERE FIL.Idf_Empresa = @Idf_Empresa AND FIL.Flg_Matriz = 1 AND Flg_Prestadora = 1
  • @Idf_Empresa (Int): ID da empresa.

CarregarProdutorRuralEmpresaPeriodo(int idEmpresa, int? mes, int ano, out ProdutorRural objProdutorRural)

  • Lógica: Carrega um objeto ProdutorRural para uma empresa em um período específico (mês e ano).
  1. Define uma query SQL que seleciona o registro TOP 1 da tabela TAB_Produtor_Rural filtrando por Idf_Empresa, Num_Mes (opcional) e Num_Ano.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Empresa, @Num_Mes e @Num_Ano.
  3. Define os valores dos parâmetros.
  4. Executa a query usando DataAccessLayer.ExecuteReader.
  5. Cria uma nova instância de ProdutorRural.
  6. Chama ProdutorRural.SetInstanceProdutorRural para preencher a instância.
  7. Se a instância for preenchida com sucesso, define objProdutorRural e retorna true.
  8. Caso contrário, define objProdutorRural como null e retorna false.
  • Stored Procedures chamadas: 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
  • @Idf_Empresa (Int): ID da empresa.
  • @Num_Mes (Int, opcional): Mês.
  • @Num_Ano (Int): Ano.

SalvarFlagProdutorRural(int idEmpresa, int? mes, int ano, bool flgProdutorRural)

  • Lógica: Salva a flag de produtor rural para uma empresa em um período.
  1. Inicia uma transação SQL.
  2. Tenta carregar um objeto ProdutorRural existente usando CarregarProdutorRuralEmpresaPeriodo.
  3. Se não encontrar um registro existente:
  • Cria uma nova instância de ProdutorRural.
  • Define suas propriedades (IdEmpresa, NumeroMes, NumeroAno, FlagProdutorRural).
  • Salva o novo objeto usando objProdutorRural.Save().
  1. Se encontrar um registro existente:
  • Atualiza a propriedade FlagProdutorRural do objeto existente.
  • Salva o objeto atualizado usando objProdutorRural.Save().
  1. Comita a transação em caso de sucesso.
  2. Em caso de erro, faz rollback da transação.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama CarregarProdutorRuralEmpresaPeriodo e objProdutorRural.Save().

CompleteAuditoria()

  • Lógica: Completa a razão social da empresa para fins de auditoria.
  1. Define uma query SQL que seleciona Raz_Social da tabela TAB_Empresa pelo Idf_Empresa.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Empresa.
  3. Define o valor do parâmetro com o _idEmpresa da instância atual.
  4. Executa a query usando DataAccessLayer.ExecuteReader.
  5. Se houver um registro, preenche a propriedade _razaoSocial da instância.
  6. Retorna true se a razão social foi encontrada e preenchida, false caso contrário.
  • Stored Procedures chamadas: SELECT Raz_Social FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa
  • @Idf_Empresa (Int): ID da empresa.

AtualizarSemente(SqlTransaction trans, int numSementeReferencia)

  • Lógica: Atualiza o número da semente de matrícula da empresa se o numSementeReferencia fornecido for maior que a semente atual.
  1. Define uma query SQL de UPDATE condicional para a tabela TAB_Empresa, atualizando Num_Semente.
  2. Verifica se _idEmpresa é maior que 0.
  3. Cria uma lista de SqlParameter e adiciona @Num_Semente_Referencia e @Idf_Empresa.
  4. Define os valores dos parâmetros.
  5. Executa a query usando DataAccessLayer.ExecuteScalar dentro da transação fornecida.
  6. Retorna true se a operação foi executada, false caso contrário.
  • Stored Procedures chamadas: 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
  • @Num_Semente_Referencia (BigInt): Valor da semente de referência.
  • @Idf_Empresa (Int): ID da empresa.

RecuperarProximaMatricula(SqlTransaction trans, out int pNumeroMatricula)

  • Lógica: Recupera o próximo número de matrícula “livre” (não vinculado a empregado) a partir da semente configurada na empresa.
  1. Define uma query SQL complexa que utiliza um loop WHILE e uma tabela temporária (@T) para:
  • Incrementar Num_Semente na tabela TAB_Empresa para o Idf_Empresa atual.
  • Verificar se o Num_Semente - 1 (o valor anterior à atualização) já está em uso como Num_Matricula nas tabelas TAB_Empregado ou TAB_Empregado_Admissao_Futura.
  • O loop continua até encontrar um número de matrícula não utilizado.
  1. Verifica se _idEmpresa é maior que 0.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Empresa.
  3. Executa a query usando DataAccessLayer.ExecuteScalar dentro da transação fornecida.
  4. Tenta converter o resultado para int e atribui a pNumeroMatricula.
  5. Retorna true se a conversão for bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: A query é construída dinamicamente, mas envolve as seguintes tabelas e lógica:
  • TAB_Empresa (para atualizar Num_Semente)
  • TAB_Empregado, TAB_Contrato, TAB_Empregado_Admissao_Futura (para verificar matrículas existentes).
  • @Idf_Empresa (Int): ID da empresa.

RecuperarProximaFichaRegistro(SqlTransaction trans, out int pNumeroFichaRegistro)

  • Lógica: Recupera o próximo número de ficha de registro “livre” (não vinculado a empregado) a partir da semente de ficha configurada na empresa.
  1. Define uma query SQL complexa que utiliza um loop WHILE e uma tabela temporária (@T) para:
  • Incrementar Num_Semente_Ficha na tabela TAB_Empresa para o Idf_Empresa atual.
  • Verificar se o Num_Semente - 1 (o valor anterior à atualização) já está em uso como Num_Ficha_Registro nas tabelas TAB_Empregado ou TAB_Empregado_Admissao_Futura.
  • O loop continua até encontrar um número de ficha de registro não utilizado.
  1. Verifica se _idEmpresa é maior que 0.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Empresa.
  3. Executa a query usando DataAccessLayer.ExecuteScalar dentro da transação fornecida.
  4. Tenta converter o resultado para int e atribui a pNumeroFichaRegistro.
  5. Retorna true se a conversão for bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: A query é construída dinamicamente, mas envolve as seguintes tabelas e lógica:
  • TAB_Empresa (para atualizar Num_Semente_Ficha)
  • TAB_Empregado, TAB_Contrato, TAB_Empregado_Admissao_Futura (para verificar fichas de registro existentes).
  • @Idf_Empresa (Int): ID da empresa.

Stored Procedures

NomeParâmetrosPropósito
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, @Idf_Empresa (OUTPUT)Insere um novo registro na tabela TAB_Empresa e retorna o ID gerado.
UPDATE 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, @Idf_EmpresaAtualiza 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@Idf_Empresa, @Idf_Usuario_GeradorAtualiza o usuário gerador e exclui um registro da tabela TAB_Empresa.
SELECT Idf_Empresa FROM TAB_Filial@Idf_EmpresaSeleciona o ID da empresa matriz de uma filial.
SELECT Idf_Empresa FROM TAB_Filial@Idf_Arquivo_GeradoSeleciona o ID da empresa matriz associada a um arquivo gerado.
SELECT MAX(TRY_CAST(Cod_Empresa AS INT)) FROM TAB_EMPRESA(Nenhum)Recupera o código da próxima empresa.
DECLARE @Controle BIT = 1 ... SELECT @Semente - 1@Idf_EmpresaRecupera o próximo número de matrícula “livre” para a empresa.
DECLARE @Controle BIT = 1 ... SELECT @Semente - 1@Idf_EmpresaRecupera o próximo número de ficha de registro “livre” para a empresa.
UPDATE TAB_Empresa SET Num_Semente_Ficha = @Num_Semente_Ficha WHERE Idf_Empresa = @Idf_Empresa@Num_Semente_Ficha, @Idf_EmpresaAtualiza o número da semente de ficha de registro da empresa.
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, ... FROM TAB_Filial FIL ...@idfEmpresa, @idfFilial, @idfBancoSeleciona informações detalhadas da filial e empresa.
SELECT COUNT(*) AS Total FROM TAB_FILIAL FIL WHERE FIL.Idf_Empresa = @Idf_Empresa AND FIL.Flg_Matriz = 1 AND Flg_Prestadora = 1@Idf_EmpresaVerifica se uma empresa é prestadora de serviços.
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@Idf_Empresa, @Num_Mes, @Num_AnoCarrega informações de produtor rural para uma empresa em um período específico.
SELECT Raz_Social FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa@Idf_EmpresaSeleciona a razão social da empresa.
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@Num_Semente_Referencia, @Idf_EmpresaAtualiza o número da semente de matrícula da empresa se o novo valor for maior.
SELECT TOP(@Count) Emp.* FROM TAB_Empresa Emp WHERE Emp.Idf_Grupo_Economico = @Idf_Grupo_Economico AND (Emp.Raz_Social LIKE '%' + @Valor + '%' COLLATE SQL_Latin1_General_CP1_CI_AI OR Emp.Num_CNPJ LIKE '%' + @Valor + '%' COLLATE SQL_Latin1_General_CP1_CI_AI OR Emp.Num_CPF LIKE '%' + @Valor + '%' COLLATE SQL_Latin1_General_CP1_CI_AI) AND Emp.Flg_Inativo = 0 ORDER BY Emp.Raz_Social@Count, @Idf_Grupo_Economico, @ValorSeleciona empresas por nome parcial, CNPJ ou CPF dentro de um grupo econômico.
SELECT * FROM TAB_Empresa Emp WHERE Emp.Raz_Social LIKE '%' + @Raz_Social + '%' COLLATE SQL_Latin1_General_CP1_CI_AI@Raz_SocialSeleciona empresas por razão social parcial.
SELECT * FROM TAB_Empresa Emp WHERE Emp.Num_CNPJ = @Num_CNPJ@Num_CNPJSeleciona empresas por CNPJ.
SELECT * FROM TAB_Empresa Emp WHERE Emp.Num_CPF = @Num_CPF@Num_CPFSeleciona empresas por CPF.
SELECT * FROM TAB_Empresa Emp WHERE Emp.Idf_Empresa = @Idf_Empresa@Idf_EmpresaSeleciona empresa por ID.
SELECT * FROM TAB_Empresa Emp WHERE Emp.Raz_Social = @Raz_Social@Raz_SocialSeleciona empresa por razão social exata.
SELECT Num_CNPJ, Raz_Social FROM TAB_Empresa WHERE (Raz_Social LIKE '%' + @Raz_Social + '%' COLLATE SQL_Latin1_General_CP1_CI_AI OR Num_CNPJ = @Num_CNPJ) AND Flg_Inativo = 0@Raz_Social, @Num_CNPJSeleciona CNPJ e razão social de empresas por razão social parcial ou CNPJ.
SELECT * FROM TAB_Empresa emp JOIN TAB_Filial fil ON emp.Idf_Empresa = Fil.Idf_Empresa WHERE (fil.Num_CEI = @Num_CEI) AND emp.Flg_Inativo = 0@Num_CEISeleciona empresas por CEI.
SELECT * FROM TAB_Empresa emp JOIN TAB_Filial fil ON emp.Idf_Empresa = Fil.Idf_Empresa WHERE emp.Num_CNPJ = @CNPJCEI OR fil.Num_CEI = @CNPJCEI OR emp.NUM_CPF = CONVERT(NUMERIC, @CNPJCEI)@CNPJCEISeleciona empresas por CNPJ, CEI ou CPF.
SELECT DISTINCT emp.Num_CNPJ, fil.Num_CEI, emp.Raz_Social FROM TAB_Empresa emp JOIN TAB_Filial fil ON emp.Idf_Empresa = Fil.Idf_Empresa WHERE (emp.Raz_Social LIKE '%' + @Raz_Social + '%' COLLATE SQL_Latin1_General_CP1_CI_AI OR emp.Num_CNPJ = @Num_CNPJ OR fil.Num_CEI = @Num_CEI) AND emp.Flg_Inativo = 0@Raz_Social, @Num_CNPJ, @Num_CEISeleciona CNPJ, CEI e razão social de empresas por razão social parcial, CNPJ ou CEI.
SELECT top 1 emp.Num_CNPJ, f.Num_CEI, emp.Raz_Social, ... FROM tab_empregado e inner join tab_contrato c on c.idf_contrato = e.idf_contrato inner join tab_filial f on f.idf_filial = c.idf_filial_gestora inner join tab_empresa emp on emp.idf_empresa = f.idf_empresa left join tab_rescisao r on r.idf_empregado = e.idf_empregado where emp.num_cnpj = @numCNPJ and (e.Dta_Admissao between @dtaInicial and @dtaFinal or ((r.idf_rescisao IS NOT NULL) or (r.dta_rescisao between @dtaInicial and @dtaFinal)))@numCNPJ, @dtaInicial, @dtaFinalSeleciona informações de empresa para movimentação de empregados (admissão/rescisão).
SELECT COUNT(*) FROM TAB_Filial WHERE Idf_Empresa=@Idf_Empresa AND Num_CNPJ IS NOT NULL AND Flg_Matriz=0@Idf_EmpresaConta filiais com CNPJ e não matriz.
SELECT Idf_Filial, cod_filial FROM TAB_Filial WHERE Idf_Filial NOT IN({0}) AND Idf_Empresa=@Idf_Empresa AND Num_CNPJ IS NOT NULL AND (@Idf_Filial IS NULL OR Idf_Filial=@Idf_Filial){0} (lista de IDs), @Idf_Empresa, @Idf_FilialSeleciona filiais para RAIS sem empregado.
SELECT F.Num_CNPJ, F.Cod_Filial, F.Raz_Social, ... FROM TAB_Filial F INNER JOIN TAB_Endereco EN ON F.Idf_Endereco = EN.Idf_Endereco LEFT JOIN plataforma.TAB_Cidade C ON EN.Idf_Cidade = C.Idf_Cidade INNER JOIN TAB_Empresa E ON F.Idf_Empresa = E.Idf_Empresa LEFT JOIN plataforma.TAB_CNAE_Sub_Classe CNAE ON F.Idf_CNAE_Principal=CNAE.Idf_CNAE_Sub_Classe LEFT JOIN plataforma.TAB_Natureza_Juridica NJ ON F.Idf_Natureza_Juridica=NJ.Idf_Natureza_Juridica WHERE F.Idf_Filial=@Idf_Filial@ano_base, @Idf_FilialSeleciona informações detalhadas da filial para RAIS.
SELECT DISTINCT Emp.Raz_Social FROM TAB_Filial Fil INNER JOIN TAB_Empresa Emp ON Fil.Idf_Empresa = Emp.Idf_Empresa INNER JOIN TAB_Grupo_Economico Gru ON Emp.Idf_Grupo_Economico = Gru.Idf_Grupo_Economico WHERE Gru.Idf_Grupo_Economico = @Idf_Grupo_Economico AND Emp.Raz_Social LIKE @Raz_Social + '%' COLLATE SQL_Latin1_General_CP1_CI_AI AND (Emp.Idf_Empresa IN (SELECT UA.Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL) UA))@Idf_Grupo_Economico, @Raz_Social, @Idf_UsuarioLista razão social de empresas por grupo econômico e usuário, com nome parcial.
SELECT DISTINCT Emp.Raz_Social FROM TAB_Filial Fil INNER JOIN TAB_Empresa Emp ON Fil.Idf_Empresa = Emp.Idf_Empresa INNER JOIN TAB_Grupo_Economico Gru ON Emp.Idf_Grupo_Economico = Gru.Idf_Grupo_Economico WHERE Gru.Idf_Grupo_Economico = @Idf_Grupo_Economico AND Emp.Raz_Social = @Raz_Social COLLATE SQL_Latin1_General_CP1_CI_AI AND (Emp.Idf_Empresa IN (SELECT UA.Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL) UA))@Idf_Grupo_Economico, @Raz_Social, @Idf_UsuarioLista razão social de empresas por grupo econômico e usuário, com nome exato.
SELECT DISTINCT Emp.Raz_Social FROM TAB_Filial Fil INNER JOIN TAB_Empresa Emp ON Fil.Idf_Empresa = Emp.Idf_Empresa WHERE Emp.Raz_Social = @Raz_Social COLLATE SQL_Latin1_General_CP1_CI_AI AND (Emp.Idf_Empresa IN (SELECT UA.Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL) UA))@Raz_Social, @Idf_UsuarioLista razão social de empresas por usuário, com nome exato.
SELECT DISTINCT Emp.Raz_Social FROM TAB_Empresa Emp INNER JOIN TAB_Filial Fil ON Fil.Idf_Empresa = Emp.Idf_Empresa WHERE Emp.Flg_Inativo = 0 AND Emp.Raz_Social = @Raz_Social COLLATE SQL_Latin1_General_CP1_CI_AI AND (Emp.Idf_Empresa IN (SELECT UA.Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL) UA))@Raz_Social, @Idf_UsuarioLista razão social de empresas ativas por usuário, com nome exato.
SELECT DISTINCT TOP(@Count) Emp.Raz_Social FROM TAB_Empresa Emp LEFT JOIN TAB_Filial Fil ON Fil.Idf_Empresa = Emp.Idf_Empresa WHERE Emp.Flg_Inativo = 0 AND Emp.Raz_Social LIKE '%' + @Raz_Social + '%' COLLATE SQL_Latin1_General_CP1_CI_AI AND (Emp.Idf_Empresa IN (SELECT UA.Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL) UA))@Count, @Raz_Social, @Idf_UsuarioSeleciona razão social de empresas ativas para autocomplete.
SELECT E.Idf_Empresa, E.Num_CNPJ, E.Raz_Social FROM TAB_Empresa E WHERE E.Flg_Inativo = 0 AND E.Idf_Grupo_Economico = @Idf_Grupo_Economico AND (((NOT @Num_CNPJ IS NULL) AND (CONVERT(VARCHAR, E.Num_CNPJ) LIKE CONVERT(VARCHAR, @Num_CNPJ) + '%')) OR (( NOT @text IS NULL) AND ((CONVERT(VARCHAR, E.Num_CNPJ) + ' - ' + E.Raz_Social) LIKE '%' + @text + '%')))@Idf_Grupo_Economico, @Num_CNPJ, @textSeleciona empresas por grupo econômico, CNPJ ou texto.
SELECT E.Idf_Empresa, E.Num_CNPJ, E.Raz_Social FROM TAB_Empresa E WHERE E.Flg_Inativo = 0 AND E.Idf_Grupo_Economico = @Idf_Grupo_Economico AND (((NOT @Num_CNPJ IS NULL) AND (E.Num_CNPJ = @Num_CNPJ)) OR (( NOT @text IS NULL) AND (CONVERT(VARCHAR, E.Num_CNPJ) + ' - ' + E.Raz_Social = @text)))@Idf_Grupo_Economico, @Num_CNPJ, @textSeleciona empresas por grupo econômico, CNPJ exato ou texto exato.
SELECT COUNT(1) FROM TAB_Filial F INNER JOIN TAB_Contrato C ON F.Idf_Filial = C.Idf_Filial_Gestora INNER JOIN FLH_Bloqueio B ON C.Idf_Contrato = B.Idf_Contrato WHERE B.Idf_tipo_Bloqueio = 2 AND F.Idf_Empresa = @Idf_Empresa AND B.Idf_Usuario <> @Idf_Usuario@Idf_Empresa, @Idf_UsuarioVerifica bloqueio de empresa.
SELECT Emp.* FROM TAB_Empresa Emp WHERE 1=1 AND Flg_Inativo = 0 AND Emp.Idf_Grupo_Economico = @Idf_Grupo_Economico@Idf_Grupo_EconomicoSeleciona empresas ativas por grupo econômico.
SELECT COUNT(*) as total FROM TAB_Parametro_Empresa WHERE Idf_Empresa = @Idf_Empresa AND Idf_Pergunta_Parametro_Empresa = 5 AND Idf_Alternativa_Parametro_Empresa = 36 AND Flg_Inativo = 0@Idf_EmpresaConsulta integração financeira da empresa.
SELECT F.Idf_Empresa, F.Num_CEI, F.Num_CNPJ, F.Raz_Social FROM (SELECT DISTINCT Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL)) AS UA INNER JOIN TAB_Filial F ON UA.Idf_Empresa = F.Idf_Empresa AND F.flg_Matriz = 1 inner join TAB_Empresa e on e.Idf_Empresa = f.Idf_Empresa WHERE F.Flg_Inativo = 0 and e.Flg_Inativo = 0@Idf_UsuarioSeleciona empresas por usuário.
SELECT COUNT(0) FROM TAB_Empresa E WHERE (E.Cod_Empresa = @Cod_Empresa OR (@Cod_Empresa IS NULL AND E.Cod_Empresa IS NULL)) AND (E.Num_CNPJ <> @Num_CNPJ OR (@Num_CNPJ IS NULL AND E.Num_CNPJ IS NULL)) AND (E.Idf_Grupo_Economico = @Idf_Grupo_Economico OR (@Idf_Grupo_Economico IS NULL AND E.Idf_Grupo_Economico IS NULL))@Cod_Empresa, @Num_CNPJ, @Idf_Grupo_EconomicoVerifica se o código da empresa já está cadastrado.
SELECT COUNT(0) FROM TAB_Empresa WHERE 1 = 1 AND (@Idf_Empresa IS NULL OR Idf_Empresa <> @Idf_Empresa) AND ((@Sig_Empresa IS NULL AND Sig_Empresa IS NULL) OR LTRIM(RTRIM(ISNULL(Sig_Empresa, ''))) LIKE @Sig_Empresa)@Idf_Empresa, @Sig_EmpresaVerifica se a sigla da empresa já está cadastrada.
SELECT Idf_Empresa, Num_CNPJ, Raz_Social FROM TAB_Empresa WHERE Flg_Inativo = 0(Nenhum)Lista empresas ativas.
SELECT E.Idf_Empresa, E.Num_CNPJ, E.Raz_Social FROM TAB_Empresa E WHERE 1 = 1 AND (E.Idf_Empresa IN (SELECT UA.Idf_Empresa FROM TAB_SF_Usuario_Acesso(@Idf_Usuario, NULL) UA))@Idf_UsuarioLista empresas filtradas por usuário.
SELECT * FROM plataforma.TAB_Indicador_Contribuicao_Substituida(Nenhum)Lista indicadores de contribuição substituída.

FolhaWebApi

Arquivo: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\WebApi\FolhaWebApi.cs

Métodos

MétodoAssinaturaPropósito
FolhaWebApipublic FolhaWebApi()Construtor padrão da classe, inicializa o endereço base da API da Folha.
PostFolhaWebApi<TObjeto>public string PostFolhaWebApi<TObjeto>(EnumFolhaWebApi pEndereco, TObjeto pObjeto)Realiza uma requisição HTTP POST para a API da Folha, autenticando automaticamente e enviando um objeto serializado.
PostFolhaWebApipublic string PostFolhaWebApi(EnumFolhaWebApi pEndereco, string pParametros)Realiza uma requisição HTTP POST para a API da Folha, autenticando automaticamente e enviando parâmetros na URL.
PostFolhaWebApi<TObjeto>public string PostFolhaWebApi<TObjeto>(string pToken, TObjeto pObjeto, EnumFolhaWebApi pEndereco)Realiza uma requisição HTTP POST para a API da Folha, usando um token de autenticação fornecido e enviando um objeto serializado.
PostFolhaWebApipublic string PostFolhaWebApi(string pToken, EnumFolhaWebApi pEndereco, string pParametros)Realiza uma requisição HTTP POST para a API da Folha, usando um token de autenticação fornecido e enviando parâmetros na URL.
AutenticarAPIpublic string AutenticarAPI(string pCentroServico, string pCPFUsuario)Autentica a aplicação na API da Folha, obtendo um token de acesso.

Detalhamento de Métodos Importantes

PostFolhaWebApi(EnumFolhaWebApi pEndereco, TObjeto pObjeto)

  • Lógica: Este método é um wrapper para PostFolhaWebApi(string pToken, TObjeto pObjeto, EnumFolhaWebApi pEndereco).
  1. Primeiro, chama AutenticarAPI para obter um token de autenticação, usando NomeCentroServico e CpfUsuarioLogado.
  2. Em seguida, chama a sobrecarga PostFolhaWebApi(string pToken, TObjeto pObjeto, EnumFolhaWebApi pEndereco) com o token obtido e os parâmetros originais.
  3. Retorna a resposta da API.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma explícita neste método, mas AutenticarAPI possui validação.
  • Regras de negócio: Autenticação automática antes de fazer a requisição POST.

PostFolhaWebApi(EnumFolhaWebApi pEndereco, string pParametros)

  • Lógica: Similar ao método anterior, mas para enviar parâmetros como string na URL.
  1. Chama AutenticarAPI para obter um token de autenticação, usando NomeCentroServico e CpfUsuarioLogado.
  2. Chama a sobrecarga PostFolhaWebApi(string pToken, EnumFolhaWebApi pEndereco, string pParametros) com o token obtido e os parâmetros originais.
  3. Retorna a resposta da API.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma explícita neste método, mas AutenticarAPI possui validação.
  • Regras de negócio: Autenticação automática antes de fazer a requisição POST.

PostFolhaWebApi(string pToken, TObjeto pObjeto, EnumFolhaWebApi pEndereco)

  • Lógica: Realiza a requisição HTTP POST para a API da Folha com um token e um objeto serializado.
  1. Cria uma instância de BetterWebClient.
  2. Configura o Encoding para UTF8.
  3. Define BaseAddress com o _EnderecoBase da API.
  4. Limpa os cabeçalhos e adiciona Content-Type: application/json.
  5. Adiciona o cabeçalho Authorization com o token fornecido (formato “Bearer {token}”).
  6. Serializa o pObjeto para JSON.
  7. Tenta enviar a string serializada para o endpoint da API (obtido de pEndereco.GetDescription()) usando client.UploadString.
  8. Em caso de WebException, lê a resposta de erro e lança uma nova Exception com a mensagem desserializada.
  9. Verifica o StatusCode da resposta. Se não for OK, lança uma Exception vazia.
  10. Retorna a resposta da API como string.
  • Stored Procedures chamadas: Nenhuma.
  • Validações:
  • Verifica se o StatusCode da resposta HTTP é OK.
  • Exceções:
  • WebException: Capturada e relançada como Exception com a mensagem de erro da API.
  • Exception: Lançada se o StatusCode não for OK.

PostFolhaWebApi(string pToken, EnumFolhaWebApi pEndereco, string pParametros)

  • Lógica: Realiza a requisição HTTP POST para a API da Folha com um token e parâmetros na URL.
  1. Cria uma instância de BetterWebClient.
  2. Configura o Encoding para UTF8.
  3. Define BaseAddress com o _EnderecoBase da API.
  4. Limpa os cabeçalhos e adiciona Content-Type: application/json.
  5. Adiciona o cabeçalho Authorization com o token fornecido (formato “Bearer {token}”).
  6. Constrói o link da requisição combinando o endpoint (pEndereco.GetDescription()) e os pParametros.
  7. Tenta enviar a requisição POST para o link construído usando client.UploadString.
  8. Em caso de WebException, lê a resposta de erro e lança uma nova Exception com a mensagem desserializada.
  9. Verifica o StatusCode da resposta. Se não for OK, lança uma Exception vazia.
  10. Retorna a resposta da API como string.
  • Stored Procedures chamadas: Nenhuma.
  • Validações:
  • Verifica se o StatusCode da resposta HTTP é OK.
  • Exceções:
  • WebException: Capturada e relançada como Exception com a mensagem de erro da API.
  • Exception: Lançada se o StatusCode não for OK.

AutenticarAPI(string pCentroServico, string pCPFUsuario)

  • Lógica: Autentica a aplicação na API da Folha para obter um token de acesso.
  1. Validação: Verifica se pCentroServico e pCPFUsuario são nulos ou vazios. Se sim, lança uma Exception.
  2. Define o corpo da requisição para autenticação (username, password, grant_type). Os valores são fixos (“webfopag_app”, “1C6E5736-B4E3-4398-88AC-723AE8BF622F”, “password”).
  3. Cria uma instância de BetterWebClient.
  4. Define BaseAddress com o _EnderecoBase da API.
  5. Adiciona os cabeçalhos “CS” (Centro de Serviço) e “CpfUsuario” com os valores fornecidos.
  6. Envia a requisição POST para o endpoint EnumFolhaWebApi.Token.GetDescription() com o corpo da requisição.
  7. Verifica o StatusCode da resposta. Se não for OK, lança uma Exception vazia.
  8. Desserializa a resposta JSON para um objeto TokenWebAPI.
  9. Retorna o access_token do objeto TokenWebAPI.
  • Stored Procedures chamadas: Nenhuma.
  • Validações:
  • pCentroServico e pCPFUsuario não podem ser nulos ou vazios.
  • Verifica se o StatusCode da resposta HTTP é OK.
  • Exceções:
  • Exception: Lançada se pCentroServico ou pCPFUsuario forem inválidos, ou se o StatusCode da autenticação não for OK.

Stored Procedures

Nenhuma stored procedure é chamada diretamente por esta classe, pois ela interage com uma API RESTful.


FuncaoEspecifica

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoEspecifica_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoEspecifica_P2.cs

Métodos

MétodoAssinaturaPropósito
FuncaoEspecificapublic FuncaoEspecifica()Construtor padrão da classe.
FuncaoEspecificapublic FuncaoEspecifica(int idFuncaoEspecifica)Construtor que inicializa a instância com um ID existente, marcando-a como persistida.
Savepublic void Save()Salva a instância atual de FuncaoEspecifica no banco de dados (insere se não persistida, atualiza se modificada).
Savepublic void Save(SqlTransaction trans)Salva a instância atual de FuncaoEspecifica no banco de dados dentro de uma transação.
Deletepublic static void Delete(int idFuncaoEspecifica)Exclui um registro de FuncaoEspecifica do banco de dados pelo ID.
Deletepublic static void Delete(int idFuncaoEspecifica, SqlTransaction trans)Exclui um registro de FuncaoEspecifica do banco de dados pelo ID, dentro de uma transação.
Deletepublic static void Delete(List<int> idFuncaoEspecifica)Exclui múltiplos registros de FuncaoEspecifica do banco de dados por uma lista de IDs.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada e ordenada de FuncaoEspecifica.
LoadObjectpublic static FuncaoEspecifica LoadObject(int idFuncaoEspecifica)Retorna uma instância de FuncaoEspecifica a partir do banco de dados pelo ID.
LoadObjectpublic static FuncaoEspecifica LoadObject(int idFuncaoEspecifica, SqlTransaction trans)Retorna uma instância de FuncaoEspecifica a partir do banco de dados pelo ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa as propriedades da instância atual de FuncaoEspecifica a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa as propriedades da instância atual de FuncaoEspecifica a partir do banco de dados, dentro de uma transação.
Listarpublic static List<FuncaoEspecifica> Listar()Retorna uma lista de todas as instâncias de FuncaoEspecifica do banco de dados.
Salvarpublic static void Salvar(bool funcaoMatriz, FuncaoEspecifica objFuncaoEspecifica, FuncaoSolicitacao objFuncaoSolicitacao, List<CNAEDivisao> listCnae)Salva uma função específica e suas associações (CNAE, solicitação, atualização), com lógica para função matriz.
Salvarpublic static void Salvar(bool funcaoMatriz, FuncaoEspecifica objFuncaoEspecifica, FuncaoSolicitacao objFuncaoSolicitacao, List<CNAEDivisao> listCnae, SqlTransaction trans)Salva uma função específica e suas associações dentro de uma transação.
SalvarAtualizacaopublic static void SalvarAtualizacao(FuncaoEspecifica objFuncao, FuncaoSolicitacao objFuncaoSolicitacao, SqlTransaction trans)Salva uma atualização de função específica no sistema.
CarregarPorCBO_Nomepublic static bool CarregarPorCBO_Nome(string valor, out FuncaoEspecifica objFuncao)Carrega uma função específica pelo CBO e nome.
CarregarPorFuncaopublic static bool CarregarPorFuncao(int idFuncao, out FuncaoEspecifica objFuncaoEspecifica)Carrega uma função específica pelo ID da função agrupada.
CarregarPorFuncaoCentroServicoEmpresaContratopublic static FuncaoEspecifica CarregarPorFuncaoCentroServicoEmpresaContrato(int idFuncao, int idCentroServico, decimal? numCNPJEmpresa, string codContrato)Carrega uma função específica por ID da função, Centro de Serviço, CNPJ da empresa e código do contrato.
CarregarPorNomepublic static bool CarregarPorNome(string nome, out FuncaoEspecifica objFuncaoEspecifica)Carrega uma função específica pelo nome.
ListarFuncaoAutoCompletepublic static string[] ListarFuncaoAutoComplete(string valor, int count, bool funcaoAgrupadora)Retorna uma lista de sugestões de funções para autocomplete, filtrando por nome e tipo (agrupadora ou não).
ListarPorCBO_NomeParcialpublic static Dictionary<int, string> ListarPorCBO_NomeParcial(string valor, int count)Lista funções específicas por CBO ou nome parcial, retornando um dicionário com número de linha e CBO - Descrição da Função.
SalvarPorFuncaoOficialpublic static void SalvarPorFuncaoOficial(int idFuncao)Cria um registro de FuncaoEspecifica a partir de um registro de função oficial.
ExisteFuncaoIgualpublic static Boolean ExisteFuncaoIgual(FuncaoEspecifica objFuncaoExclusiva)Verifica se já existe uma função específica igual (com os mesmos atributos de descrição, CBO, centro de serviço, CNPJ da empresa e contrato).
ExisteFuncaoIgual2public static Boolean ExisteFuncaoIgual2(FuncaoEspecifica objFuncaoExclusiva)Verifica se já existe uma função específica igual, incluindo CPF e CEI da empresa.
ListarFuncaoAdicionadapublic static IDataReader ListarFuncaoAdicionada(Dictionary<int, string> pIdFuncao, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)Lista funções adicionadas, paginadas e ordenadas, com base em uma lista de IDs de função.
ListarFuncaoEspecificaCriacaoEmpresapublic static List<int> ListarFuncaoEspecificaCriacaoEmpresa(SqlTransaction trans)Retorna uma lista de IDs de funções específicas sem vínculo com centro de serviço, para replicação em contratos de empresa.
CarregarPorCentroServicoCBONomeFuncaopublic static FuncaoEspecifica CarregarPorCentroServicoCBONomeFuncao(int pIdCentroServico, string pCodigoCBO, string pDescricaoFuncao)Carrega uma função específica pelo centro de serviço, CBO e nome da função.
CarregarPorCBONomeFuncaopublic static FuncaoEspecifica CarregarPorCBONomeFuncao(string pCodigoCBO, string pDescricaoFuncao)Carrega uma função específica pelo CBO e nome da função, sem vínculo com centro de serviço, CNPJ da empresa ou contrato.
CarregarPorCentroServicoCBONomeCNPJCEIEmpresapublic static FuncaoEspecifica CarregarPorCentroServicoCBONomeCNPJCEIEmpresa(int pIdCentroServico, string pCodigoCBO, string pDescricaoFuncao, decimal? pNumCNPJEmpresa, decimal? pNumCEI)Carrega uma função específica pelo centro de serviço, CBO, nome da função, CNPJ da empresa e CEI.
CarregarPorFuncaoCentroServicoContratoCBONomeEscolaridadeSalarialCNPJCEIEmpresapublic static FuncaoEspecifica CarregarPorFuncaoCentroServicoContratoCBONomeEscolaridadeSalarialCNPJCEIEmpresa(int pIdFuncao, int pIdCentroServico, string pCodContrato, string pCodCBO, string pDesFuncao, int pIdEscolaridade, int pIdClasseSalarial, string pCodFuncaoFolha, decimal? pNumCNPJEmpresa, decimal? pNumCEI, decimal? pNumCPFEmpresa)Carrega uma função específica por múltiplos critérios, incluindo ID da função, centro de serviço, contrato, CBO, nome, escolaridade, classe salarial, código da função na folha, CNPJ, CEI e CPF da empresa.

Detalhamento de Métodos Importantes

Save()

  • Lógica: Este método é responsável por persistir o estado do objeto FuncaoEspecifica no banco de dados.
  1. Verifica a propriedade _persisted.
  2. Se _persisted for false (objeto novo), chama o método Insert().
  3. Se _persisted for true (objeto existente), chama o método Update().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert() ou Update().

Save(SqlTransaction trans)

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

Delete(int idFuncaoEspecifica)

  • Lógica: Exclui um registro de FuncaoEspecifica do banco de dados.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Funcao_Especifica com o valor do idFuncaoEspecifica fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Funcao_Especifica WHERE Idf_Funcao_Especifica = @Idf_Funcao_Especifica
  • @Idf_Funcao_Especifica (Int): Identificador da Função Específica a ser excluída.

Delete(int idFuncaoEspecifica, SqlTransaction trans)

  • Lógica: Exclui um registro de FuncaoEspecifica do banco de dados dentro de uma transação.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Funcao_Especifica com o valor do idFuncaoEspecifica fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery e a transação fornecida.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Funcao_Especifica WHERE Idf_Funcao_Especifica = @Idf_Funcao_Especifica
  • @Idf_Funcao_Especifica (Int): Identificador da Função Específica a ser excluída.

Delete(List idFuncaoEspecifica)

  • Lógica: Exclui múltiplos registros de FuncaoEspecifica do banco de dados.
  1. Cria uma lista de SqlParameter e uma string query inicial.
  2. Itera sobre a lista idFuncaoEspecifica:
  • Para cada ID, cria um parâmetro @parmX e o adiciona à query e à lista de parâmetros.
  • Adiciona o valor do ID ao respectivo parâmetro.
  1. Completa a query com a cláusula IN.
  2. Executa a query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM plataforma.TAB_Funcao_Especifica WHERE Idf_Funcao_Especifica IN (@parm0, @parm1, ...)
  • @parmX (Int): Identificadores das Funções Específicas a serem excluídas.

LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)

  • Lógica: Prepara e executa uma consulta paginada e ordenada para retornar dados de FuncaoEspecifica.
  1. Calcula os valores de inicio e fim para a paginação com base em paginaCorrente e tamanhoPagina.
  2. Constrói a string SQL SPSELECTPAG para selecionar os dados com ROW_NUMBER() para ordenação e paginação.
  3. Constrói a string SQL SPSELECTCOUNT para contar o total de registros.
  4. Executa SPSELECTCOUNT para obter o totalRegistros.
  5. Executa SPSELECTPAG para retornar o IDataReader com os dados paginados.
  • Stored Procedures chamadas:
  • SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Fun.Idf_Funcao_Especifica, ... FROM plataforma.TAB_Funcao_Especifica Fun) AS temp
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Fun.Idf_Funcao_Especifica, ... FROM plataforma.TAB_Funcao_Especifica Fun) AS temp WHERE RowId BETWEEN @inicio AND @fim
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • @inicio (Int): Início do range de linhas para paginação.
  • @fim (Int): Fim do range de linhas para paginação.

LoadObject(int idFuncaoEspecifica)

  • Lógica: Carrega um objeto FuncaoEspecifica pelo seu ID.
  1. Chama o método LoadDataReader(idFuncaoEspecifica) para obter um IDataReader.
  2. Cria uma nova instância de FuncaoEspecifica.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoEspecifica).

LoadObject(int idFuncaoEspecifica, SqlTransaction trans)

  • Lógica: Similar ao LoadObject(int idFuncaoEspecifica), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama o método LoadDataReader(idFuncaoEspecifica, trans) para obter um IDataReader.
  2. Cria uma nova instância de FuncaoEspecifica.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoEspecifica, SqlTransaction trans).

CompleteObject()

  • Lógica: Preenche as propriedades da instância atual de FuncaoEspecifica a partir do banco de dados, usando o _idFuncaoEspecifica já existente na instância.
  1. Chama LoadDataReader(this._idFuncaoEspecifica) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoEspecifica).

CompleteObject(SqlTransaction trans)

  • Lógica: Similar ao CompleteObject(), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama LoadDataReader(this._idFuncaoEspecifica, trans) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoEspecifica, SqlTransaction trans).

Listar()

  • Lógica: Retorna uma lista de todas as instâncias de FuncaoEspecifica.
  1. Cria uma List<FuncaoEspecifica> vazia.
  2. Executa a query SPSELECT para obter todos os registros de FuncaoEspecifica.
  3. Itera sobre o IDataReader:
  • Cria uma nova instância de FuncaoEspecifica.
  • Chama SetInstance para preencher a instância (com bDispose = false para não fechar o reader prematuramente).
  • Adiciona a instância à lista.
  1. Retorna a lista.
  • Stored Procedures chamadas: SELECT * FROM plataforma.TAB_Funcao_Especifica

Salvar(bool funcaoMatriz, FuncaoEspecifica objFuncaoEspecifica, FuncaoSolicitacao objFuncaoSolicitacao, List listCnae)

  • Lógica: Salva uma função específica e suas associações (CNAE, solicitação, atualização).
  1. Inicia uma transação SQL.
  2. Chama a sobrecarga Salvar(bool funcaoMatriz, FuncaoEspecifica objFuncaoEspecifica, FuncaoSolicitacao objFuncaoSolicitacao, List<CNAEDivisao> listCnae, SqlTransaction trans) para realizar a lógica de salvamento.
  3. Comita a transação em caso de sucesso.
  4. Em caso de erro, faz rollback da transação e relança a exceção.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama a sobrecarga Salvar com transação.

Salvar(bool funcaoMatriz, FuncaoEspecifica objFuncaoEspecifica, FuncaoSolicitacao objFuncaoSolicitacao, List listCnae, SqlTransaction trans)

  • Lógica: Salva uma função específica e suas associações dentro de uma transação.
  1. Lógica de Função Matriz: Se funcaoMatriz for true:
  • Cria um novo objeto Funcao.
  • Copia as propriedades relevantes de objFuncaoEspecifica para o novo objFuncao.
  • Salva o objFuncao (função oficial) usando objFuncao.Save(trans).
  • Atribui o objFuncao recém-salvo à propriedade Funcao de objFuncaoEspecifica.
  1. Salva objFuncaoEspecifica usando objFuncaoEspecifica.Save(trans).
  2. Exclui os CNAEs existentes para objFuncaoEspecifica usando FuncaoEspecificaCNAE.Delete(objFuncaoEspecifica.IdFuncaoEspecifica, trans).
  3. Itera sobre listCnae:
  • Se funcaoMatriz for true, cria e salva um FuncaoCNAE associado ao objFuncao e objCNAEDivisao.
  • Cria e salva um FuncaoEspecificaCNAE associado a objFuncaoEspecifica e objCNAEDivisao.
  1. Lógica de Solicitação de Função: Se objFuncaoSolicitacao não for null:
  • Cria e preenche um objeto Atualizacao com informações da solicitação e da função específica.
  • Salva o objAtualizacao usando objAtualizacao.Save(trans).
  • Cria e preenche um objeto AtualizacaoFuncao associado à Atualizacao e FuncaoEspecifica.
  • Salva o objAtualizacaoFuncao usando objAtualizacaoFuncao.Save(trans).
  • Atualiza objFuncaoSolicitacao com a FuncaoEspecifica e define DataResolucao e StatusAprovacao.
  • Salva objFuncaoSolicitacao usando objFuncaoSolicitacao.Save(trans).
  • Stored Procedures chamadas: Nenhuma diretamente. Chama objFuncao.Save(trans), objFuncaoEspecifica.Save(trans), FuncaoEspecificaCNAE.Delete(int idFuncaoEspecifica, SqlTransaction trans), objFuncaoCnae.Save(trans), objFuncaoEspecificaCnae.Save(trans), objAtualizacao.Save(trans), objAtualizacaoFuncao.Save(trans), objFuncaoSolicitacao.Save(trans).

SalvarAtualizacao(FuncaoEspecifica objFuncao, FuncaoSolicitacao objFuncaoSolicitacao, SqlTransaction trans)

  • Lógica: Salva uma atualização de função específica no sistema.
  1. Cria e preenche um objeto Atualizacao com informações do centro de serviço, CNPJ da empresa, tipo de atualização e descrição.
  2. Define DataPublicacao como a data e hora atuais.
  3. Salva o objAtualizacao usando objAtualizacao.Save(trans).
  4. Cria e preenche um objeto AtualizacaoFuncao associado à Atualizacao e FuncaoEspecifica.
  5. Salva o objAtualizacaoFuncao usando objAtualizacaoFuncao.Save(trans).
  • Stored Procedures chamadas: Nenhuma diretamente. Chama objAtualizacao.Save(trans) e objAtualizacaoFuncao.Save(trans).

CarregarPorCBO_Nome(string valor, out FuncaoEspecifica objFuncao)

  • Lógica: Carrega uma função específica pelo CBO e nome.
  1. Chama o método privado ListarPorCBO_Nome(valor) para obter um IDataReader.
  2. Cria uma nova instância de FuncaoEspecifica.
  3. Chama SetInstance para preencher a instância.
  4. Se SetInstance retornar true, define objFuncao e retorna true.
  5. Caso contrário, define objFuncao como null e retorna false.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama ListarPorCBO_Nome(string valor).

CarregarPorFuncao(int idFuncao, out FuncaoEspecifica objFuncaoEspecifica)

  • Lógica: Carrega uma função específica pelo ID da função agrupada.
  1. Chama o método privado ListarPorFuncao(idFuncao) para obter um IDataReader.
  2. Cria uma nova instância de FuncaoEspecifica.
  3. Chama SetInstance para preencher a instância.
  4. Se SetInstance retornar true, define objFuncaoEspecifica e retorna true.
  5. Caso contrário, define objFuncaoEspecifica como null e retorna false.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama ListarPorFuncao(int idFuncao).

CarregarPorFuncaoCentroServicoEmpresaContrato(int idFuncao, int idCentroServico, decimal? numCNPJEmpresa, string codContrato)

  • Lógica: Carrega uma função específica por ID da função, Centro de Serviço, CNPJ da empresa e código do contrato.
  1. Cria uma nova instância de FuncaoEspecifica.
  2. Chama o método privado ListarPorFuncaoCentroServicoEmpresaContrato para obter um IDataReader.
  3. Chama SetInstance para preencher a instância.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, retorna null.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama ListarPorFuncaoCentroServicoEmpresaContrato(int pIdFuncao, int pIdCentroServico, decimal? pNumCNPJEmpresa, string pCodigoContrato).

CarregarPorNome(string nome, out FuncaoEspecifica objFuncaoEspecifica)

  • Lógica: Carrega uma função específica pelo nome.
  1. Chama o método privado ListarFuncao(nome) para obter um IDataReader.
  2. Cria uma nova instância de FuncaoEspecifica.
  3. Chama SetInstance para preencher a instância.
  4. Se SetInstance retornar true, define objFuncaoEspecifica e retorna true.
  5. Caso contrário, define objFuncaoEspecifica como null e retorna false.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama ListarFuncao(string nome).

ListarFuncaoAutoComplete(string valor, int count, bool funcaoAgrupadora)

  • Lógica: Retorna uma lista de sugestões de funções para autocomplete.
  1. Cria uma lista de SqlParameter e adiciona @Valor e @Count.
  2. Define os valores dos parâmetros.
  3. Define a query base como SPSELECTAUTOCOMPLETE.
  4. Se funcaoAgrupadora for true, adiciona uma cláusula WHERE Idf_Funcao IS NULL.
  5. Adiciona uma cláusula ORDER BY para priorizar correspondências exatas no início da descrição.
  6. Executa a query e preenche uma List<string> com as descrições das funções.
  7. Retorna a lista como um array de strings.
  • Stored Procedures chamadas: SELECT TOP (@Count) Des_Funcao, Idf_Funcao FROM plataforma.TAB_Funcao_Especifica WHERE Des_Funcao LIKE '%' + @Valor + '%' COLLATE SQL_Latin1_General_CP1_CI_AI ORDER BY CASE WHEN Des_Funcao LIKE @Valor + '%' THEN 0 ELSE 1 END, Des_Funcao
  • @Count (Int): Número máximo de registros a retornar.
  • @Valor (VarChar): Valor parcial para pesquisa na descrição da função.

ListarPorCBO_NomeParcial(string valor, int count)

  • Lógica: Lista funções específicas por CBO ou nome parcial.
  1. Cria uma lista de SqlParameter e adiciona @Valor e @Count.
  2. Define os valores dos parâmetros.
  3. Executa a query SPSELFUNCCBONOMEPARCIAL.
  4. Itera sobre o IDataReader e preenche um Dictionary<int, string> com Row_Number como chave e a concatenação de Cod_CBO e Des_Funcao como valor.
  5. Retorna o dicionário.
  • Stored Procedures chamadas: SELECT TOP (@Count) row_number() OVER (ORDER BY Des_Funcao ASC) AS 'Row_Number', Cod_Cbo, Des_Funcao FROM (SELECT DISTINCT(Cod_Cbo), Des_Funcao FROM plataforma.TAB_Funcao_Especifica FEs WHERE (FEs.Des_Funcao LIKE '%' + @Valor + '%' COLLATE SQL_Latin1_General_CP1_CI_AI OR FEs.Cod_CBO LIKE '%' + @Valor + '%' COLLATE SQL_Latin1_General_CP1_CI_AI) AND FEs.Idf_Funcao IS NOT NULL) as temp
  • @Count (Int): Número máximo de registros a retornar.
  • @Valor (VarChar): Valor parcial para pesquisa no CBO ou descrição da função.

SalvarPorFuncaoOficial(int idFuncao)

  • Lógica: Cria um registro de FuncaoEspecifica a partir de um registro de função oficial.
  1. Cria uma nova instância de FuncaoEspecifica.
  2. Define as propriedades de vínculo (centro de serviço, CNPJ, CPF, CEI, contrato) como null, pois é uma função oficial.
  3. Carrega o objeto Funcao (função oficial) usando Funcao.LoadObject(idFuncao).
  4. Copia as propriedades relevantes do objFuncao para objFuncaoEspecifica.
  5. Salva o objFuncaoEspecifica usando objFuncaoEspecifica.Save().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Funcao.LoadObject(int idFuncao) e objFuncaoEspecifica.Save().

ExisteFuncaoIgual(FuncaoEspecifica objFuncaoExclusiva)

  • Lógica: Verifica se já existe uma função específica com os mesmos atributos principais.
  1. Cria uma lista de SqlParameter e adiciona @Des_Funcao, @Cod_CBO, @Idf_Centro_Servico, @Num_CNPJ_Empresa, @Cod_Contrato, @Idf_Funcao, e @Idf_Funcao_Especifica.
  2. Define os valores dos parâmetros, tratando null ou string.Empty como DBNull.Value.
  3. Executa a query SPVERIFICARFUNCAOIGUAL.
  4. Retorna true se a query retornar algum resultado (ou seja, a função já existe), false caso contrário.
  • Stored Procedures chamadas: SELECT 1 FROM plataforma.TAB_Funcao_Especifica WHERE Des_Funcao = @Des_Funcao AND Cod_CBO = @Cod_CBO AND Idf_Centro_Servico = @Idf_Centro_Servico AND Num_CNPJ_Empresa = @Num_CNPJ_Empresa AND Cod_Contrato = @Cod_Contrato AND Idf_Funcao = @Idf_Funcao AND(@Idf_Funcao_Especifica IS NULL OR Idf_Funcao_Especifica = @Idf_Funcao_Especifica) AND Flg_Funcao_Gratificada
  • @Des_Funcao (VarChar): Descrição da função.
  • @Cod_CBO (VarChar): Código CBO.
  • @Idf_Centro_Servico (Int): ID do Centro de Serviço.
  • @Num_CNPJ_Empresa (Decimal): CNPJ da empresa.
  • @Cod_Contrato (VarChar): Código do contrato.
  • @Idf_Funcao (VarChar): ID da função.
  • @Idf_Funcao_Especifica (VarChar, opcional): ID da função específica (para exclusão da própria função na verificação de duplicidade).

ExisteFuncaoIgual2(FuncaoEspecifica objFuncaoExclusiva)

  • Lógica: Verifica se já existe uma função específica com os mesmos atributos principais, incluindo CPF e CEI da empresa.
  1. Cria uma lista de SqlParameter e adiciona @Des_Funcao, @Cod_CBO, @Idf_Centro_Servico, @Num_CNPJ_Empresa, @Cod_Contrato, @Idf_Funcao, @Idf_Funcao_Especifica, @Num_CPF_Empresa, e @Num_CEI.
  2. Define os valores dos parâmetros, tratando null ou string.Empty como DBNull.Value.
  3. Executa a query SPVERIFICARFUNCAOIGUAL2.
  4. Retorna true se a query retornar algum resultado (ou seja, a função já existe), false caso contrário.
  • Stored Procedures chamadas: SELECT 1 FROM plataforma.TAB_Funcao_Especifica WHERE Des_Funcao = @Des_Funcao AND Cod_CBO = @Cod_CBO AND Idf_Centro_Servico = @Idf_Centro_Servico AND (@Num_CNPJ_Empresa is null or Num_CNPJ_Empresa = @Num_CNPJ_Empresa) AND (@Num_CEI is null or Num_CEI = @Num_CEI) AND (@Num_CPF_Empresa is null or Num_CPF_Empresa = @Num_CPF_Empresa) AND Cod_Contrato = @Cod_Contrato AND Idf_Funcao = @Idf_Funcao AND(@Idf_Funcao_Especifica IS NULL OR Idf_Funcao_Especifica = @Idf_Funcao_Especifica)
  • @Des_Funcao (VarChar): Descrição da função.
  • @Cod_CBO (VarChar): Código CBO.
  • @Idf_Centro_Servico (Int): ID do Centro de Serviço.
  • @Num_CNPJ_Empresa (Decimal, opcional): CNPJ da empresa.
  • @Cod_Contrato (VarChar): Código do contrato.
  • @Idf_Funcao (VarChar): ID da função.
  • @Idf_Funcao_Especifica (VarChar, opcional): ID da função específica.
  • @Num_CPF_Empresa (Decimal, opcional): CPF da empresa.
  • @Num_CEI (Decimal, opcional): CEI da empresa.

ListarFuncaoAdicionada(Dictionary<int, string> pIdFuncao, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)

  • Lógica: Lista funções adicionadas, paginadas e ordenadas, com base em uma lista de IDs de função.
  1. Inicializa variáveis para where, queryPaginada, queryCount, parms, inicio e fim.
  2. Calcula inicio e fim para a paginação.
  3. Se pIdFuncao não for nulo e tiver itens, constrói a cláusula WHERE Idf_Funcao_Especifica IN (...) a partir dos IDs. Caso contrário, define WHERE 1 = 2 para não retornar resultados.
  4. Constrói queryPaginada e queryCount usando a query base SPSELFUNCAO e as cláusulas de paginação e ordenação.
  5. Executa queryCount para obter pTotalRegistros.
  6. Executa queryPaginada e retorna o IDataReader.
  • Stored Procedures chamadas:
  • SELECT COUNT(*) FROM (SELECT Idf_Funcao_Especifica, (Cod_CBO + ' - ' + Des_Funcao)as funcao FROM plataforma.TAB_Funcao_Especifica WHERE Idf_Funcao_Especifica IN (...)) AS temp
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @pNomeColuna @pDirecaoOrdenacao) AS RowID, * FROM (SELECT Idf_Funcao_Especifica, (Cod_CBO + ' - ' + Des_Funcao)as funcao FROM plataforma.TAB_Funcao_Especifica WHERE Idf_Funcao_Especifica IN (...)) AS temp) AS temp WHERE RowId BETWEEN @inicio AND @fim
  • @pNomeColuna (string): Nome da coluna para ordenação.
  • @pDirecaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • @inicio (Int): Início do range de linhas para paginação.
  • @fim (Int): Fim do range de linhas para paginação.

ListarFuncaoEspecificaCriacaoEmpresa(SqlTransaction trans)

  • Lógica: Retorna uma lista de IDs de funções específicas sem vínculo com centro de serviço, para replicação em contratos de empresa.
  1. Cria uma List<int> vazia.
  2. Executa a query SELLISTARFUNCAOESPECIFICACRIACAOEMPRESA dentro da transação fornecida.
  3. Itera sobre o IDataReader e adiciona os Idf_Funcao_Especifica à lista.
  4. Fecha o IDataReader.
  5. Retorna a lista de IDs.
  • Stored Procedures chamadas: SELECT FEs.Idf_Funcao_Especifica FROM plataforma.TAB_Funcao_Especifica FEs (NOLOCK) WHERE Idf_Centro_Servico IS NULL

CarregarPorCentroServicoCBONomeFuncao(int pIdCentroServico, string pCodigoCBO, string pDescricaoFuncao)

  • Lógica: Carrega uma função específica pelo centro de serviço, CBO e nome da função.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Centro_Servico, @Cod_CBO e @Des_Funcao.
  2. Define os valores dos parâmetros.
  3. Executa a query SPSELECTCARREGARPORCENTROSERVICOCBONOME.
  4. Cria uma nova instância de FuncaoEspecifica.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Idf_Centro_Servico = @Idf_Centro_Servico AND fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao_Pesquisa LIKE @Des_Funcao
  • @Idf_Centro_Servico (Int): ID do Centro de Serviço.
  • @Cod_CBO (VarChar): Código CBO.
  • @Des_Funcao (VarChar): Descrição da função.

CarregarPorCBONomeFuncao(string pCodigoCBO, string pDescricaoFuncao)

  • Lógica: Carrega uma função específica pelo CBO e nome da função, sem vínculos com centro de serviço, CNPJ da empresa ou contrato.
  1. Cria uma lista de SqlParameter e adiciona @Cod_CBO e @Des_Funcao.
  2. Define os valores dos parâmetros.
  3. Executa a query SPSELECTCARREGARPORCBONOME.
  4. Cria uma nova instância de FuncaoEspecifica.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao_Pesquisa LIKE @Des_Funcao AND fe.Idf_Centro_Servico IS NULL AND fe.Num_CNPJ_Empresa IS NULL AND fe.Cod_Contrato IS NULL
  • @Cod_CBO (VarChar): Código CBO.
  • @Des_Funcao (VarChar): Descrição da função.

CarregarPorCentroServicoCBONomeCNPJCEIEmpresa(int pIdCentroServico, string pCodigoCBO, string pDescricaoFuncao, decimal? pNumCNPJEmpresa, decimal? pNumCEI)

  • Lógica: Carrega uma função específica pelo centro de serviço, CBO, nome da função, CNPJ da empresa e CEI.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Centro_Servico, @Cod_CBO, @Des_Funcao, @Num_CNPJ_Empresa e @Num_CEI.
  2. Define os valores dos parâmetros, tratando null para CNPJ e CEI.
  3. Executa a query SPSELECTCARREGARPORCENTROSERVICOCBONOMECNPJCEIEMPRESA.
  4. Cria uma nova instância de FuncaoEspecifica.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Idf_Centro_Servico = @Idf_Centro_Servico AND fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao_Pesquisa LIKE @Des_Funcao AND (@Num_CNPJ_Empresa IS NULL OR fe.Num_CNPJ_Empresa = @Num_CNPJ_Empresa) AND (@Num_CEI IS NULL OR fe.Num_CEI = @Num_CEI)
  • @Idf_Centro_Servico (Int): ID do Centro de Serviço.
  • @Cod_CBO (VarChar): Código CBO.
  • @Des_Funcao (VarChar): Descrição da função.
  • @Num_CNPJ_Empresa (Decimal, opcional): CNPJ da empresa.
  • @Num_CEI (Decimal, opcional): CEI da empresa.

CarregarPorFuncaoCentroServicoContratoCBONomeEscolaridadeSalarialCNPJCEIEmpresa(int pIdFuncao, int pIdCentroServico, string pCodContrato, string pCodCBO, string pDesFuncao, int pIdEscolaridade, int pIdClasseSalarial, string pCodFuncaoFolha, decimal? pNumCNPJEmpresa, decimal? pNumCEI, decimal? pNumCPFEmpresa)

  • Lógica: Carrega uma função específica por múltiplos critérios.
  1. Cria uma lista de SqlParameter e adiciona todos os parâmetros de filtro.
  2. Define os valores dos parâmetros, tratando null para campos opcionais.
  3. Executa a query SPSELECTCARREGARPORFUNCAOCENTROSERVICOCONTRATOCBONOMEESCOLARIDADESALARIALCNPJCEIEMPRESA.
  4. Cria uma nova instância de FuncaoEspecifica.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Idf_Funcao = @Idf_Funcao AND fe.Idf_Centro_Servico = @Idf_Centro_Servico AND fe.Cod_Contrato = @Cod_Contrato AND fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao = @Des_Funcao AND fe.Idf_Escolaridade = @Idf_Escolaridade AND fe.Idf_Classe_Salarial = @Idf_Classe_Salarial AND (@Cod_Funcao_Folha IS NULL OR fe.Cod_Funcao_Folha = @Cod_Funcao_Folha) AND (@Num_CNPJ_Empresa IS NULL OR fe.Num_CNPJ_Empresa = @Num_CNPJ_Empresa) AND (@Num_CEI IS NULL OR fe.Num_CEI = @Num_CEI) AND (@Num_CPF_Empresa IS NULL OR fe.Num_CPF_Empresa = @Num_CPF_Empresa)
  • @Idf_Funcao (Int): ID da função.
  • @Idf_Centro_Servico (Int): ID do Centro de Serviço.
  • @Cod_Contrato (VarChar): Código do contrato.
  • @Cod_CBO (VarChar): Código CBO.
  • @Des_Funcao (VarChar): Descrição da função.
  • @Idf_Escolaridade (Int): ID da escolaridade.
  • @Idf_Classe_Salarial (Int): ID da classe salarial.
  • @Cod_Funcao_Folha (VarChar, opcional): Código da função na folha.
  • @Num_CNPJ_Empresa (Decimal, opcional): CNPJ da empresa.
  • @Num_CEI (Decimal, opcional): CEI da empresa.
  • @Num_CPF_Empresa (Decimal, opcional): CPF da empresa.

Stored Procedures

NomeParâmetrosPropósito
INSERT INTO plataforma.TAB_Funcao_Especifica@Des_Funcao, @Des_Funcao_Pesquisa, @Idf_Funcao_Categoria, @Cod_CBO, @Cod_Funcao_Folha, @Idf_Classe_Salarial, @Idf_Escolaridade, @Idf_Area_BNE, @Flg_Menor_Aprendiz, @Des_Job, @Des_Experiencia, @Flg_RAIS_Analfabeto, @Flg_RAIS_Nivel_Superior, @Flg_Conselho, @Flg_Curso_Especializacao, @Flg_Categoria_Sindical, @Dta_Cadastro, @Flg_Auditada, @Vlr_Piso_Profissional, @Qtd_Carga_Horaria_Diaria, @Des_Local_Trabalho, @Des_EPI, @Des_PPRA, @Des_PCMSO, @Idf_Funcao, @Des_Cursos, @Des_Competencias, @Des_Equipamentos, @Idf_Centro_Servico, @Num_CNPJ_Empresa, @Cod_Contrato, @Num_CPF_Empresa, @Num_CEI, @Flg_Funcao_Gratificada, @Flg_Preenche_Cota_Aprendiz, @Idf_Funcao_Especifica (OUTPUT)Insere um novo registro na tabela plataforma.TAB_Funcao_Especifica e retorna o ID gerado.
UPDATE plataforma.TAB_Funcao_Especifica@Des_Funcao, @Des_Funcao_Pesquisa, @Idf_Funcao_Categoria, @Cod_CBO, @Cod_Funcao_Folha, @Idf_Classe_Salarial, @Idf_Escolaridade, @Idf_Area_BNE, @Flg_Menor_Aprendiz, @Des_Job, @Des_Experiencia, @Flg_RAIS_Analfabeto, @Flg_RAIS_Nivel_Superior, @Flg_Conselho, @Flg_Curso_Especializacao, @Flg_Categoria_Sindical, @Dta_Cadastro, @Flg_Auditada, @Vlr_Piso_Profissional, @Qtd_Carga_Horaria_Diaria, @Des_Local_Trabalho, @Des_EPI, @Des_PPRA, @Des_PCMSO, @Idf_Funcao, @Des_Cursos, @Des_Competencias, @Des_Equipamentos, @Idf_Centro_Servico, @Num_CNPJ_Empresa, @Cod_Contrato, @Num_CPF_Empresa, @Num_CEI, @Flg_Funcao_Gratificada, @Flg_Preenche_Cota_Aprendiz, @Idf_Funcao_EspecificaAtualiza um registro existente na tabela plataforma.TAB_Funcao_Especifica.
DELETE FROM plataforma.TAB_Funcao_Especifica@Idf_Funcao_EspecificaExclui um registro da tabela plataforma.TAB_Funcao_Especifica pelo ID.
SELECT * FROM plataforma.TAB_Funcao_Especifica@Idf_Funcao_EspecificaSeleciona um registro da tabela plataforma.TAB_Funcao_Especifica pelo ID.
SELECT * FROM plataforma.TAB_Funcao_Especifica(Nenhum)Seleciona todos os registros da tabela plataforma.TAB_Funcao_Especifica.
SELECT TOP (@Count) Des_Funcao, Idf_Funcao FROM plataforma.TAB_Funcao_Especifica@Count, @ValorSeleciona funções para autocomplete.
SELECT DISTINCT(Cod_Cbo), Des_Funcao FROM plataforma.TAB_Funcao_Especifica@Count, @ValorSeleciona funções por CBO ou nome parcial.
SELECT FEs.* FROM plataforma.TAB_Funcao_Especifica FEs@Idf_Centro_Servico, @Num_CNPJ_Empresa, @Cod_Contrato, @Idf_FuncaoSeleciona funções específicas por códigos.
SELECT FEs.* FROM plataforma.TAB_Funcao_Especifica FEs@Idf_FuncaoSeleciona funções específicas por ID da função.
SELECT FEs.* FROM plataforma.TAB_Funcao_Especifica FEs@Idf_Funcao, @Idf_Centro_Servico, @Num_CNPJ_Empresa, @Cod_ContratoSeleciona funções específicas por função, centro de serviço, empresa e contrato.
SELECT FEs.* FROM plataforma.TAB_Funcao_Especifica FEs@Idf_Centro_Servico, @Num_CPF_Empresa, @Cod_Contrato, @Idf_FuncaoSeleciona funções específicas por códigos (CPF/CEI).
SELECT FEs.* FROM plataforma.TAB_Funcao_Especifica FEs@ValorSeleciona funções por CBO ou nome.
SELECT 1 FROM plataforma.TAB_Funcao_Especifica@Des_Funcao, @Cod_CBO, @Idf_Centro_Servico, @Num_CNPJ_Empresa, @Cod_Contrato, @Idf_Funcao, @Idf_Funcao_EspecificaVerifica se já existe uma função específica igual.
SELECT 1 FROM plataforma.TAB_Funcao_Especifica@Des_Funcao, @Cod_CBO, @Idf_Centro_Servico, @Num_CNPJ_Empresa, @Num_CEI, @Num_CPF_Empresa, @Cod_Contrato, @Idf_Funcao, @Idf_Funcao_EspecificaVerifica se já existe uma função específica igual (com mais detalhes).
SELECT Idf_Funcao_Especifica, (Cod_CBO + ' - ' + Des_Funcao)as funcao FROM plataforma.TAB_Funcao_Especifica(Nenhum)Seleciona ID e descrição formatada da função específica.
SELECT FEs.Idf_Funcao_Especifica FROM plataforma.TAB_Funcao_Especifica FEs (NOLOCK) WHERE Idf_Centro_Servico IS NULL(Nenhum)Lista funções específicas sem vínculo com centro de serviço.
SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Idf_Centro_Servico = @Idf_Centro_Servico AND fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao_Pesquisa LIKE @Des_Funcao@Idf_Centro_Servico, @Cod_CBO, @Des_FuncaoCarrega função específica por centro de serviço, CBO e nome.
SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao_Pesquisa LIKE @Des_Funcao AND fe.Idf_Centro_Servico IS NULL AND fe.Num_CNPJ_Empresa IS NULL AND fe.Cod_Contrato IS NULL@Cod_CBO, @Des_FuncaoCarrega função específica por CBO e nome (sem vínculos).
SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Idf_Centro_Servico = @Idf_Centro_Servico AND fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao_Pesquisa LIKE @Des_Funcao AND (@Num_CNPJ_Empresa IS NULL OR fe.Num_CNPJ_Empresa = @Num_CNPJ_Empresa) AND (@Num_CEI IS NULL OR fe.Num_CEI = @Num_CEI)@Idf_Centro_Servico, @Cod_CBO, @Des_Funcao, @Num_CNPJ_Empresa, @Num_CEICarrega função específica por centro de serviço, CBO, nome, CNPJ e CEI.
SELECT fe.* FROM plataforma.TAB_Funcao_Especifica fe WHERE fe.Idf_Funcao = @Idf_Funcao AND fe.Idf_Centro_Servico = @Idf_Centro_Servico AND fe.Cod_Contrato = @Cod_Contrato AND fe.Cod_CBO = @Cod_CBO AND fe.Des_Funcao = @Des_Funcao AND fe.Idf_Escolaridade = @Idf_Escolaridade AND fe.Idf_Classe_Salarial = @Idf_Classe_Salarial AND (@Cod_Funcao_Folha IS NULL OR fe.Cod_Funcao_Folha = @Cod_Funcao_Folha) AND (@Num_CNPJ_Empresa IS NULL OR fe.Num_CNPJ_Empresa = @Num_CNPJ_Empresa) AND (@Num_CEI IS NULL OR fe.Num_CEI = @Num_CEI) AND (@Num_CPF_Empresa IS NULL OR fe.Num_CPF_Empresa = @Num_CPF_Empresa)@Idf_Funcao, @Idf_Centro_Servico, @Cod_Contrato, @Cod_CBO, @Des_Funcao, @Idf_Escolaridade, @Idf_Classe_Salarial, @Cod_Funcao_Folha, @Num_CNPJ_Empresa, @Num_CEI, @Num_CPF_EmpresaCarrega função específica por múltiplos critérios.

FuncaoExclusiva

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoExclusiva_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\FuncaoExclusiva_P2.cs

Métodos

MétodoAssinaturaPropósito
FuncaoExclusivapublic FuncaoExclusiva()Construtor padrão da classe.
FuncaoExclusivapublic FuncaoExclusiva(int idFuncaoExclusiva)Construtor que inicializa a instância com um ID existente, marcando-a como persistida.
Savepublic void Save()Salva a instância atual de FuncaoExclusiva no banco de dados (insere se não persistida, atualiza se modificada).
Savepublic void Save(SqlTransaction trans)Salva a instância atual de FuncaoExclusiva no banco de dados dentro de uma transação.
Deletepublic static void Delete(int idFuncaoExclusiva)Exclui um registro de FuncaoExclusiva do banco de dados pelo ID.
Deletepublic static void Delete(int idFuncaoExclusiva, SqlTransaction trans)Exclui um registro de FuncaoExclusiva do banco de dados pelo ID, dentro de uma transação.
Deletepublic static void Delete(List<int> idFuncaoExclusiva)Exclui múltiplos registros de FuncaoExclusiva do banco de dados por uma lista de IDs.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada e ordenada de FuncaoExclusiva.
LoadObjectpublic static FuncaoExclusiva LoadObject(int idFuncaoExclusiva)Retorna uma instância de FuncaoExclusiva a partir do banco de dados pelo ID.
LoadObjectpublic static FuncaoExclusiva LoadObject(int idFuncaoExclusiva, SqlTransaction trans)Retorna uma instância de FuncaoExclusiva a partir do banco de dados pelo ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa as propriedades da instância atual de FuncaoExclusiva a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa as propriedades da instância atual de FuncaoExclusiva a partir do banco de dados, dentro de uma transação.
Listarpublic static List<FuncaoExclusiva> Listar()Retorna uma lista de todas as instâncias de FuncaoExclusiva do banco de dados.
Inativarpublic static void Inativar(int idFuncaoExclusiva)Inativa logicamente uma função exclusiva no banco de dados.
Inativarpublic static void Inativar(int idFuncaoExclusiva, SqlTransaction trans)Inativa logicamente uma função exclusiva no banco de dados, dentro de uma transação.
ListarAutoCompletepublic static string[] ListarAutoComplete(int pNumeroRegistros, int pIdEmpresa, int? pIdContrato, string pDescricaoFuncao)Retorna uma lista de sugestões de funções exclusivas para autocomplete, filtrando por empresa, contrato e descrição da função.
CarregarPorEmpregadoNomeFuncaoCBOpublic static FuncaoExclusiva CarregarPorEmpregadoNomeFuncaoCBO(int pIdEmpregado, string pDesFuncao, string pCodCBO, string pCodFuncaoFolha)Carrega uma função exclusiva por empregado, descrição da função, CBO e código da função na folha.
CarregarPorContratoDescricaopublic static FuncaoExclusiva CarregarPorContratoDescricao(int pIdContrato, string pDesFuncao, bool? pFlgInativo)Carrega uma função exclusiva por contrato e descrição da função, podendo incluir inativos.
CarregarAtivoPorContratoFuncaopublic static FuncaoExclusiva CarregarAtivoPorContratoFuncao(int pIdContrato, int pIdFuncaoEspecifica)Carrega uma função exclusiva ativa por contrato e ID da função específica.
Salvarpublic static void Salvar(Contrato objContrato, FuncaoEspecifica objFuncaoEspecifica, Usuario objUsuario)Salva uma nova função exclusiva para um contrato (filho).
SalvarParaContratoMaepublic static void SalvarParaContratoMae(Contrato objContrato, FuncaoEspecifica objFuncaoEspecifica, Usuario objUsuario)Salva uma nova função exclusiva para um contrato mãe.
VerificarEmpregadosFuncaoExclusivapublic static bool VerificarEmpregadosFuncaoExclusiva(int idfFuncaoExclusiva, bool flgAtivo)Verifica se existem empregados vinculados a uma função exclusiva, podendo filtrar por status ativo.
ListarGratificadasPorContratoDtpublic static IDataReader ListarGratificadasPorContratoDt(string desPesquisa, int? idfFuncao, Contrato objContrato, string desColunaOrdenacao, string desDirecaoOrdenacao, int numPagina, int numRegistrosPagina, out int numTotalRegistros)Retorna um IDataReader com funções gratificadas por contrato, com filtros, ordenação e paginação.
ListarPorContratoDtpublic static IDataReader ListarPorContratoDt(string desPesquisa, int? idfFuncao, Contrato objContrato, string desColunaOrdenacao, string desDirecaoOrdenacao, int numPagina, int numRegistrosPagina, out int numTotalRegistros)Retorna um IDataReader com funções exclusivas por contrato, com filtros, ordenação e paginação.
CarregarPorEmpregadoFuncaoEspecificapublic static FuncaoExclusiva CarregarPorEmpregadoFuncaoEspecifica(int pIdEmpregado, int pIdFuncaoEspecifica)Carrega uma função exclusiva por empregado e ID da função específica.
ListarPorFuncaoEspecificapublic static List<FuncaoExclusiva> ListarPorFuncaoEspecifica(int pIdFuncaoEspecifica)Lista funções exclusivas ativas por ID da função específica.
ListarFuncaoExclusivaPorFuncaoEspecificaContratoCodigoCBOpublic static FuncaoExclusiva ListarFuncaoExclusivaPorFuncaoEspecificaContratoCodigoCBO(int pIdFuncaoEspecifica, int pIdContrato, string pCodCBO)Lista uma função exclusiva por ID da função específica, contrato e CBO.
ListarFuncaoSetorSSTpublic static IDataReader ListarFuncaoSetorSST(int pIdFilial, int? pIdContratoMae, int? pIdContratoFilho, int? pIdFuncao, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)Lista funções para o setor SST, com filtros por filial, contrato, função e pesquisa.
ListarFuncaoSetorSSTLinhapublic static IDataReader ListarFuncaoSetorSSTLinha(int pIdFilial, int? pIdContratoMae, int? pIdContratoFilho, int? pIdFuncao, int? pIdSetorSST, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)Lista funções para o setor SST, incluindo detalhes de setor SST e atribuições, com filtros e paginação.
ListarFuncoesExclusivaspublic static IDataReader ListarFuncoesExclusivas(string pPesquisa, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)Lista funções exclusivas com filtros, ordenação e paginação.
ListarFuncaoSetorSSTPorContratopublic static IDataReader ListarFuncaoSetorSSTPorContrato(int pIdFilial, int? pIdContratoMae, int? pIdContratoFilho, int? pIdFuncao, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)Lista funções para o setor SST por contrato, com filtros e paginação.
ListarFuncaoPorContratoManutencaopublic static IDataReader ListarFuncaoPorContratoManutencao(int? pIdFilial, int pIdContrato, int? pIdFuncao, bool? pFlgInativo, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)Lista funções por contrato para manutenção, com filtros, ordenação e paginação.
CarregarPorNomepublic static FuncaoExclusiva CarregarPorNome(string pDesFuncao, bool? pFlgInativo)Carrega uma função exclusiva por nome, podendo incluir inativos.

Detalhamento de Métodos Importantes

Save()

  • Lógica: Este método é responsável por persistir o estado do objeto FuncaoExclusiva no banco de dados.
  1. Verifica a propriedade _persisted.
  2. Se _persisted for false (objeto novo), chama o método Insert().
  3. Se _persisted for true (objeto existente), chama o método Update().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert() ou Update().

Save(SqlTransaction trans)

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

Delete(int idFuncaoExclusiva)

  • Lógica: Exclui um registro de FuncaoExclusiva do banco de dados.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Funcao_Exclusiva com o valor do idFuncaoExclusiva fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM TAB_Funcao_Exclusiva WHERE Idf_Funcao_Exclusiva = @Idf_Funcao_Exclusiva
  • @Idf_Funcao_Exclusiva (Int): Identificador da Função Exclusiva a ser excluída.

Delete(int idFuncaoExclusiva, SqlTransaction trans)

  • Lógica: Exclui um registro de FuncaoExclusiva do banco de dados dentro de uma transação.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Funcao_Exclusiva com o valor do idFuncaoExclusiva fornecido.
  3. Executa uma query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery e a transação fornecida.
  • Stored Procedures chamadas: DELETE FROM TAB_Funcao_Exclusiva WHERE Idf_Funcao_Exclusiva = @Idf_Funcao_Exclusiva
  • @Idf_Funcao_Exclusiva (Int): Identificador da Função Exclusiva a ser excluída.

Delete(List idFuncaoExclusiva)

  • Lógica: Exclui múltiplos registros de FuncaoExclusiva do banco de dados.
  1. Cria uma lista de SqlParameter e uma string query inicial.
  2. Itera sobre a lista idFuncaoExclusiva:
  • Para cada ID, cria um parâmetro @parmX e o adiciona à query e à lista de parâmetros.
  • Adiciona o valor do ID ao respectivo parâmetro.
  1. Completa a query com a cláusula IN.
  2. Executa a query SQL de DELETE usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: DELETE FROM TAB_Funcao_Exclusiva WHERE Idf_Funcao_Exclusiva IN (@parm0, @parm1, ...)
  • @parmX (Int): Identificadores das Funções Exclusivas a serem excluídas.

LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)

  • Lógica: Prepara e executa uma consulta paginada e ordenada para retornar dados de FuncaoExclusiva.
  1. Calcula os valores de inicio e fim para a paginação com base em paginaCorrente e tamanhoPagina.
  2. Constrói a string SQL SPSELECTPAG para selecionar os dados com ROW_NUMBER() para ordenação e paginação.
  3. Constrói a string SQL SPSELECTCOUNT para contar o total de registros.
  4. Executa SPSELECTCOUNT para obter o totalRegistros.
  5. Executa SPSELECTPAG para retornar o IDataReader com os dados paginados.
  • Stored Procedures chamadas:
  • SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Fun.Idf_Funcao_Exclusiva, ... FROM TAB_Funcao_Exclusiva Fun) AS temp
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Fun.Idf_Funcao_Exclusiva, ... FROM TAB_Funcao_Exclusiva Fun) AS temp WHERE RowId BETWEEN @inicio AND @fim
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • @inicio (Int): Início do range de linhas para paginação.
  • @fim (Int): Fim do range de linhas para paginação.

LoadObject(int idFuncaoExclusiva)

  • Lógica: Carrega um objeto FuncaoExclusiva pelo seu ID.
  1. Chama o método LoadDataReader(idFuncaoExclusiva) para obter um IDataReader.
  2. Cria uma nova instância de FuncaoExclusiva.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoExclusiva).

LoadObject(int idFuncaoExclusiva, SqlTransaction trans)

  • Lógica: Similar ao LoadObject(int idFuncaoExclusiva), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama o método LoadDataReader(idFuncaoExclusiva, trans) para obter um IDataReader.
  2. Cria uma nova instância de FuncaoExclusiva.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoExclusiva, SqlTransaction trans).

CompleteObject()

  • Lógica: Preenche as propriedades da instância atual de FuncaoExclusiva a partir do banco de dados, usando o _idFuncaoExclusiva já existente na instância.
  1. Chama LoadDataReader(this._idFuncaoExclusiva) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoExclusiva).

CompleteObject(SqlTransaction trans)

  • Lógica: Similar ao CompleteObject(), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama LoadDataReader(this._idFuncaoExclusiva, trans) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int idFuncaoExclusiva, SqlTransaction trans).

Listar()

  • Lógica: Retorna uma lista de todas as instâncias de FuncaoExclusiva.
  1. Cria uma List<FuncaoExclusiva> vazia.
  2. Executa a query SPSELECT para obter todos os registros de FuncaoExclusiva.
  3. Itera sobre o IDataReader:
  • Cria uma nova instância de FuncaoExclusiva.
  • Chama SetInstance para preencher a instância (com bDispose = false para não fechar o reader prematuramente).
  • Adiciona a instância à lista.
  1. Retorna a lista.
  • Stored Procedures chamadas: SELECT * FROM TAB_Funcao_Exclusiva

Inativar(int idFuncaoExclusiva)

  • Lógica: Inativa logicamente uma função exclusiva no banco de dados.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Funcao_Exclusiva com o valor do idFuncaoExclusiva fornecido.
  3. Executa a query SPINATIVAR usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: UPDATE TAB_Funcao_Exclusiva SET Flg_Inativo = 1, Dta_Inativacao = getdate() WHERE Idf_Funcao_Exclusiva = @Idf_Funcao_Exclusiva
  • @Idf_Funcao_Exclusiva (Int): Identificador da Função Exclusiva a ser inativada.

Inativar(int idFuncaoExclusiva, SqlTransaction trans)

  • Lógica: Inativa logicamente uma função exclusiva no banco de dados, dentro de uma transação.
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Funcao_Exclusiva com o valor do idFuncaoExclusiva fornecido.
  3. Executa a query SPINATIVAR usando DataAccessLayer.ExecuteNonQuery e a transação fornecida.
  • Stored Procedures chamadas: UPDATE TAB_Funcao_Exclusiva SET Flg_Inativo = 1, Dta_Inativacao = getdate() WHERE Idf_Funcao_Exclusiva = @Idf_Funcao_Exclusiva
  • @Idf_Funcao_Exclusiva (Int): Identificador da Função Exclusiva a ser inativada.

ListarAutoComplete(int pNumeroRegistros, int pIdEmpresa, int? pIdContrato, string pDescricaoFuncao)

  • Lógica: Retorna uma lista de sugestões de funções exclusivas para autocomplete.
  1. Cria uma lista de string para armazenar as funções.
  2. Cria uma lista de SqlParameter e adiciona @Num_Registro, @Idf_Empresa, @Idf_Contrato e @Des_Funcao.
  3. Define os valores dos parâmetros, tratando null para pIdContrato.
  4. Executa a query SplistarAutoComplete.
  5. Itera sobre o IDataReader e adiciona as descrições das funções à lista.
  6. Retorna a lista como um array de strings.
  • Stored Procedures chamadas: SELECT DISTINCT TOP (@Num_Registro) FX.Idf_Funcao_Exclusiva, FS.Des_Funcao FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica=FS.Idf_Funcao_Especifica INNER JOIN TAB_Empregado_Funcao_Exclusiva EF ON EF.Idf_Funcao_Exclusiva = FX.Idf_Funcao_Exclusiva INNER JOIN TAB_Empregado E ON E.Idf_Empregado = EF.Idf_Empregado INNER JOIN TAB_Contrato C ON E.Idf_Contrato = C.Idf_Contrato INNER JOIN TAB_Filial Fil ON C.Idf_Filial_Gestora = Fil.Idf_Filial WHERE 1 = 1 AND FS.Des_Funcao LIKE '%' + @Des_Funcao + '%' COLLATE SQL_Latin1_General_CP1_CI_AI AND Fil.Idf_Empresa = @Idf_Empresa AND C.Idf_Contrato = ISNULL(@Idf_Contrato, C.Idf_Contrato) ORDER BY Des_Funcao ASC
  • @Num_Registro (Int): Número máximo de registros a retornar.
  • @Idf_Empresa (Int): ID da empresa.
  • @Idf_Contrato (Int, opcional): ID do contrato.
  • @Des_Funcao (VarChar): Descrição da função para pesquisa.

CarregarPorEmpregadoNomeFuncaoCBO(int pIdEmpregado, string pDesFuncao, string pCodCBO, string pCodFuncaoFolha)

  • Lógica: Carrega uma função exclusiva por empregado, descrição da função, CBO e código da função na folha.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Empregado, @Des_Funcao_Pesquisa, @Cod_CBO e @Cod_Funcao_Folha.
  2. Define os valores dos parâmetros, tratando null para pCodFuncaoFolha.
  3. Executa a query SPSELPOREMPREGADONOMEFUNCAOCBOCODFUNCAO.
  4. Cria uma nova instância de FuncaoExclusiva.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT FX.* FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica = FS.Idf_Funcao_Especifica INNER JOIN TAB_Empregado E ON E.Idf_Contrato = FX.Idf_Contrato WHERE 1 = 1 AND E.Idf_Empregado = @Idf_Empregado AND FS.Des_Funcao = @Des_Funcao_Pesquisa AND FS.Cod_CBO = @Cod_CBO AND (@Cod_Funcao_Folha IS NULL OR FS.Cod_Funcao_Folha = @Cod_Funcao_Folha) AND FX.Flg_Inativo = 0
  • @Idf_Empregado (Int): ID do empregado.
  • @Des_Funcao_Pesquisa (string): Descrição da função para pesquisa.
  • @Cod_CBO (string): Código CBO.
  • @Cod_Funcao_Folha (string, opcional): Código da função na folha.

CarregarPorContratoDescricao(int pIdContrato, string pDesFuncao, bool? pFlgInativo)

  • Lógica: Carrega uma função exclusiva por contrato e descrição da função, podendo incluir inativos.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Contrato, @Des_Funcao_Pesquisa e @Flg_Inativo.
  2. Define os valores dos parâmetros, tratando null para pFlgInativo.
  3. Executa a query SPSELNOMECONTRATO.
  4. Cria uma nova instância de FuncaoExclusiva.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT * FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica = FS.Idf_Funcao_Especifica WHERE FX.Idf_Contrato=@Idf_Contrato AND FS.Des_Funcao=@Des_Funcao_Pesquisa AND (@Flg_Inativo IS NULL OR @Flg_Inativo = FX.Flg_Inativo)
  • @Idf_Contrato (Int): ID do contrato.
  • @Des_Funcao_Pesquisa (string): Descrição da função para pesquisa.
  • @Flg_Inativo (Bit, opcional): Flag de inativo.

CarregarAtivoPorContratoFuncao(int pIdContrato, int pIdFuncaoEspecifica)

  • Lógica: Carrega uma função exclusiva ativa por contrato e ID da função específica.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Contrato e @Idf_Funcao_Especifica.
  2. Define os valores dos parâmetros.
  3. Executa a query SPSELATIVOCONTRATOFUNC.
  4. Cria uma nova instância de FuncaoExclusiva.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT FEx.* FROM TAB_Funcao_Exclusiva FEx WHERE FEx.Flg_Inativo = 0 AND FEx.Idf_Contrato = @Idf_Contrato AND FEx.Idf_Funcao_Especifica = @Idf_Funcao_Especifica
  • @Idf_Contrato (Int): ID do contrato.
  • @Idf_Funcao_Especifica (Int): ID da função específica.

Salvar(Contrato objContrato, FuncaoEspecifica objFuncaoEspecifica, Usuario objUsuario)

  • Lógica: Salva uma nova função exclusiva para um contrato (filho).
  1. Cria uma nova instância de FuncaoExclusiva.
  2. Preenche as propriedades da nova instância com os objetos objContrato, objFuncaoEspecifica e objUsuario fornecidos.
  3. Define FlagInativo como false e FlagFuncaoGratificada como false.
  4. Define ValorPiso e ValorTeto com base na ClasseSalarial da FuncaoEspecifica.
  5. Define CBO com base no CBO da FuncaoEspecifica.
  6. Salva a nova instância usando this.Save().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama this.Save().

SalvarParaContratoMae(Contrato objContrato, FuncaoEspecifica objFuncaoEspecifica, Usuario objUsuario)

  • Lógica: Salva uma nova função exclusiva para um contrato mãe.
  1. Cria uma nova instância de FuncaoExclusiva.
  2. Preenche as propriedades da nova instância com os objetos objContrato, objFuncaoEspecifica e objUsuario fornecidos.
  3. Define FlagInativo como false e FlagFuncaoGratificada como true.
  4. Define ValorPiso e ValorTeto com base na ClasseSalarial da FuncaoEspecifica.
  5. Define CBO com base no CBO da FuncaoEspecifica.
  6. Salva a nova instância usando this.Save().
  • Stored Procedures chamadas: Nenhuma diretamente. Chama this.Save().

VerificarEmpregadosFuncaoExclusiva(int idfFuncaoExclusiva, bool flgAtivo)

  • Lógica: Verifica se existem empregados vinculados a uma função exclusiva.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Funcao_Exclusiva e @Flg_Ativo.
  2. Define os valores dos parâmetros.
  3. Executa a stored procedure SP_FUNCAO_EXCLUSIVA_VERIFICAR_EMPREGADOS.
  4. Retorna true se a stored procedure retornar 1 (indicando que existem empregados), false caso contrário.
  • Stored Procedures chamadas: SP_FUNCAO_EXCLUSIVA_VERIFICAR_EMPREGADOS
  • @Idf_Funcao_Exclusiva (Int): ID da função exclusiva.
  • @Flg_Ativo (Bit): Flag para filtrar empregados ativos.

ListarGratificadasPorContratoDt(string desPesquisa, int? idfFuncao, Contrato objContrato, string desColunaOrdenacao, string desDirecaoOrdenacao, int numPagina, int numRegistrosPagina, out int numTotalRegistros)

  • Lógica: Retorna um IDataReader com funções gratificadas por contrato, com filtros, ordenação e paginação.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Flg_Inativo, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_Pagina.
  2. Define os valores dos parâmetros com base nos argumentos fornecidos.
  3. Executa a query SELLISTARFUNCAOGRATIFICADAPORCONTRATO. Esta query é complexa e utiliza tabelas temporárias para construir o resultado paginado e ordenado.
  4. O IDataReader retornado contém os dados das funções gratificadas.
  5. numTotalRegistros é preenchido pela query.
  • Stored Procedures chamadas: SELLISTARFUNCAOGRATIFICADAPORCONTRATO (query SQL complexa com tabelas temporárias)
  • @Idf_Empresa (Int): ID da empresa.
  • @Idf_Filial (Int, opcional): ID da filial.
  • @Idf_Contrato (Int, opcional): ID do contrato.
  • @Flg_Inativo (Bit, opcional): Flag de inativo.
  • @Pesquisa (VarChar, opcional): Termo de pesquisa.
  • @Ordenacao (VarChar): Coluna para ordenação.
  • @Direcao (VarChar): Direção da ordenação (ASC/DESC).
  • @Pagina (Int): Número da página.
  • @Qtde_Pagina (Int): Quantidade de registros por página.

ListarPorContratoDt(string desPesquisa, int? idfFuncao, Contrato objContrato, string desColunaOrdenacao, string desDirecaoOrdenacao, int numPagina, int numRegistrosPagina, out int numTotalRegistros)

  • Lógica: Retorna um IDataReader com funções exclusivas por contrato, com filtros, ordenação e paginação.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Funcao_Especifica, @Pesquisa, @SortExpression, @CurrentPage, @PageSize.
  2. Define os valores dos parâmetros com base nos argumentos fornecidos.
  3. A query SPSELECTPAG é executada, que é uma stored procedure dinâmica que constrói a consulta paginada e ordenada.
  4. numTotalRegistros é preenchido pela stored procedure.
  • Stored Procedures chamadas: SPSELECTPAG (stored procedure dinâmica)
  • @Idf_Funcao_Especifica (Int, opcional): ID da função específica.
  • @Pesquisa (VarChar, opcional): Termo de pesquisa.
  • @SortExpression (VarChar): Expressão de ordenação.
  • @CurrentPage (Int): Página atual.
  • @PageSize (Int): Tamanho da página.

CarregarPorEmpregadoFuncaoEspecifica(int pIdEmpregado, int pIdFuncaoEspecifica)

  • Lógica: Carrega uma função exclusiva por empregado e ID da função específica.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Funcao_Especifica e @Idf_Empregado.
  2. Define os valores dos parâmetros.
  3. Executa a query SPCARREGARPOREMPREGADOFUNCAOESPECIFICA.
  4. Cria uma nova instância de FuncaoExclusiva.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT tfe.* FROM TAB_Empregado_Funcao_Exclusiva tefe INNER JOIN TAB_Funcao_Exclusiva tfe ON tefe.Idf_Funcao_Exclusiva = tfe.Idf_Funcao_Exclusiva WHERE tfe.Idf_Funcao_Especifica = @Idf_Funcao_Especifica AND tefe.Idf_Empregado = @Idf_Empregado AND tefe.flg_Inativo = 0
  • @Idf_Funcao_Especifica (Int): ID da função específica.
  • @Idf_Empregado (Int): ID do empregado.

ListarPorFuncaoEspecifica(int pIdFuncaoEspecifica)

  • Lógica: Lista funções exclusivas ativas por ID da função específica.
  1. Cria uma lista de FuncaoExclusiva vazia.
  2. Cria uma lista de SqlParameter e adiciona @Idf_Funcao_Especifica.
  3. Define o valor do parâmetro.
  4. Executa a query SPSELECTPORFUNCAOESPECIFICA.
  5. Itera sobre o IDataReader:
  • Cria uma nova instância de FuncaoExclusiva.
  • Chama SetInstance para preencher a instância (com bDispose = false).
  • Adiciona a instância à lista.
  1. Retorna a lista.
  • Stored Procedures chamadas: SELECT FEx.* FROM TAB_Funcao_Exclusiva FEx WHERE FEx.Flg_Inativo = 0 AND FEx.Idf_Funcao_Especifica = @Idf_Funcao_Especifica
  • @Idf_Funcao_Especifica (Int): ID da função específica.

ListarFuncaoExclusivaPorFuncaoEspecificaContratoCodigoCBO(int pIdFuncaoEspecifica, int pIdContrato, string pCodCBO)

  • Lógica: Lista uma função exclusiva por ID da função específica, contrato e CBO.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Funcao_Especifica, @Idf_Contrato e @Cod_CBO.
  2. Define os valores dos parâmetros.
  3. Executa a query SELLISTARFUNCAOEXCLUSIVAPORFUNCAOESPECIFICACONTRATOCODIGOCBO.
  4. Cria uma nova instância de FuncaoExclusiva.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT * FROM TAB_Funcao_Exclusiva EX WHERE 1=1 AND EX.Idf_Funcao_Especifica = @Idf_Funcao_Especifica AND EX.Idf_Contrato = @Idf_Contrato AND EX.Cod_CBO = @Cod_CBO
  • @Idf_Funcao_Especifica (Int): ID da função específica.
  • @Idf_Contrato (Int): ID do contrato.
  • @Cod_CBO (string): Código CBO.

ListarFuncaoSetorSST(int pIdFilial, int? pIdContratoMae, int? pIdContratoFilho, int? pIdFuncao, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)

  • Lógica: Lista funções para o setor SST, com filtros por filial, contrato, função e pesquisa.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Filial, @Idf_Contrato_Mae, @Idf_Contrato_Filho, @Idf_Funcao, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_Pagina.
  2. Define os valores dos parâmetros, tratando null para campos opcionais.
  3. Executa a query SELLISTARFUNCAOSETORSST. Esta query é complexa e utiliza tabelas temporárias para construir o resultado paginado e ordenado.
  4. O IDataReader retornado contém os dados das funções.
  5. pTotalRegistros é preenchido pela query.
  • Stored Procedures chamadas: SELLISTARFUNCAOSETORSST (query SQL complexa com tabelas temporárias)
  • @Idf_Filial (Int): ID da filial.
  • @Idf_Contrato_Mae (Int, opcional): ID do contrato mãe.
  • @Idf_Contrato_Filho (Int, opcional): ID do contrato filho.
  • @Idf_Funcao (Int, opcional): ID da função.
  • @Pesquisa (VarChar, opcional): Termo de pesquisa.
  • @Ordenacao (VarChar): Coluna para ordenação.
  • @Direcao (VarChar): Direção da ordenação (ASC/DESC).
  • @Pagina (Int): Número da página.
  • @Qtde_Pagina (Int): Quantidade de registros por página.

ListarFuncaoSetorSSTLinha(int pIdFilial, int? pIdContratoMae, int? pIdContratoFilho, int? pIdFuncao, int? pIdSetorSST, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)

  • Lógica: Lista funções para o setor SST, incluindo detalhes de setor SST e atribuições, com filtros e paginação.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Filial, @Idf_Contrato_Mae, @Idf_Contrato_Filho, @Idf_Funcao, @Idf_Setor_SST, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_Pagina.
  2. Define os valores dos parâmetros, tratando null para campos opcionais.
  3. Executa a query SELLISTARFUNCAOSETORSSTLINHA. Esta query é complexa e utiliza tabelas temporárias para construir o resultado paginado e ordenado.
  4. O IDataReader retornado contém os dados das funções.
  5. pTotalRegistros é preenchido pela query.
  • Stored Procedures chamadas: SELLISTARFUNCAOSETORSSTLINHA (query SQL complexa com tabelas temporárias)
  • @Idf_Filial (Int): ID da filial.
  • @Idf_Contrato_Mae (Int, opcional): ID do contrato mãe.
  • @Idf_Contrato_Filho (Int, opcional): ID do contrato filho.
  • @Idf_Funcao (Int, opcional): ID da função.
  • @Idf_Setor_SST (Int, opcional): ID do setor SST.
  • @Pesquisa (VarChar, opcional): Termo de pesquisa.
  • @Ordenacao (VarChar): Coluna para ordenação.
  • @Direcao (VarChar): Direção da ordenação (ASC/DESC).
  • @Pagina (Int): Número da página.
  • @Qtde_Pagina (Int): Quantidade de registros por página.

ListarFuncoesExclusivas(string pPesquisa, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)

  • Lógica: Lista funções exclusivas com filtros, ordenação e paginação.
  1. Cria uma lista de SqlParameter e adiciona @Des_Funcao, @Cod_CBO, @SortExpression, @CurrentPage, @PageSize.
  2. Define os valores dos parâmetros, tratando null para campos opcionais.
  3. Executa a query SplistarFuncaoExclusiva. Esta query é complexa e utiliza tabelas temporárias para construir o resultado paginado e ordenado.
  4. O IDataReader retornado contém os dados das funções.
  5. pTotalRegistros é preenchido pela query.
  • Stored Procedures chamadas: SplistarFuncaoExclusiva (query SQL complexa com tabelas temporárias)
  • @Des_Funcao (VarChar, opcional): Descrição da função para pesquisa.
  • @Cod_CBO (VarChar, opcional): Código CBO para pesquisa.
  • @SortExpression (VarChar): Expressão de ordenação.
  • @CurrentPage (Int): Página atual.
  • @PageSize (Int): Tamanho da página.

ListarFuncaoSetorSSTPorContrato(int pIdFilial, int? pIdContratoMae, int? pIdContratoFilho, int? pIdFuncao, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)

  • Lógica: Lista funções para o setor SST por contrato, com filtros e paginação.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Filial, @Idf_Contrato_Mae, @Idf_Contrato_Filho, @Idf_Funcao, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_Pagina.
  2. Define os valores dos parâmetros, tratando null para campos opcionais.
  3. Executa a query SELLISTARFUNCAOSETORSSTPORCONTRATO. Esta query é complexa e utiliza tabelas temporárias para construir o resultado paginado e ordenado.
  4. O IDataReader retornado contém os dados das funções.
  5. pTotalRegistros é preenchido pela query.
  • Stored Procedures chamadas: SELLISTARFUNCAOSETORSSTPORCONTRATO (query SQL complexa com tabelas temporárias)
  • @Idf_Filial (Int): ID da filial.
  • @Idf_Contrato_Mae (Int, opcional): ID do contrato mãe.
  • @Idf_Contrato_Filho (Int, opcional): ID do contrato filho.
  • @Idf_Funcao (Int, opcional): ID da função.
  • @Pesquisa (VarChar, opcional): Termo de pesquisa.
  • @Ordenacao (VarChar): Coluna para ordenação.
  • @Direcao (VarChar): Direção da ordenação (ASC/DESC).
  • @Pagina (Int): Número da página.
  • @Qtde_Pagina (Int): Quantidade de registros por página.

ListarFuncaoPorContratoManutencao(int? pIdFilial, int pIdContrato, int? pIdFuncao, bool? pFlgInativo, string pPesquisa, string pOrdenacao, string pDirecao, int pPagina, int pQtdePagina, out int pTotalRegistros)

  • Lógica: Lista funções por contrato para manutenção, com filtros, ordenação e paginação.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Filial, @Idf_Contrato, @Idf_Funcao, @Flg_Inativo, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_Pagina.
  2. Define os valores dos parâmetros, tratando null para campos opcionais.
  3. Executa a query SELLISTARFUNCAOPORCONTRATOMANUTENCAO. Esta query é complexa e utiliza tabelas temporárias para construir o resultado paginado e ordenado.
  4. O IDataReader retornado contém os dados das funções.
  5. pTotalRegistros é preenchido pela query.
  • Stored Procedures chamadas: SELLISTARFUNCAOPORCONTRATOMANUTENCAO (query SQL complexa com tabelas temporárias)
  • @Idf_Filial (Int, opcional): ID da filial.
  • @Idf_Contrato (Int): ID do contrato.
  • @Idf_Funcao (Int, opcional): ID da função.
  • @Flg_Inativo (Bit, opcional): Flag de inativo.
  • @Pesquisa (VarChar, opcional): Termo de pesquisa.
  • @Ordenacao (VarChar): Coluna para ordenação.
  • @Direcao (VarChar): Direção da ordenação (ASC/DESC).
  • @Pagina (Int): Número da página.
  • @Qtde_Pagina (Int): Quantidade de registros por página.

CarregarPorNome(string pDesFuncao, bool? pFlgInativo)

  • Lógica: Carrega uma função exclusiva por nome, podendo incluir inativos.
  1. Cria uma lista de SqlParameter e adiciona @Des_Funcao_Pesquisa e @Flg_Inativo.
  2. Define os valores dos parâmetros, tratando null para pFlgInativo.
  3. Executa a query SPSELFUNCAOPORNOME.
  4. Cria uma nova instância de FuncaoExclusiva.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT * FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica = FS.Idf_Funcao_Especifica WHERE FS.Des_Funcao = @Des_Funcao_Pesquisa AND (@Flg_Inativo IS NULL OR @Flg_Inativo = FX.Flg_Inativo)
  • @Des_Funcao_Pesquisa (string): Descrição da função para pesquisa.
  • @Flg_Inativo (Bit, opcional): Flag de inativo.

Stored Procedures

NomeParâmetrosPropósito
INSERT INTO TAB_Funcao_Exclusiva@Idf_Funcao_Especifica, @Idf_Contrato, @Dta_Cadastro, @Idf_Usuario, @Flg_Inativo, @Vlr_Teto, @Vlr_Piso, @Cod_CBO, @Des_Cargo, @Des_Categoria, @Idf_Classe_Salarial, @Flg_Funcao_Gratificada, @Dta_Inativacao, @Idf_Funcao_Exclusiva (OUTPUT)Insere um novo registro na tabela TAB_Funcao_Exclusiva e retorna o ID gerado.
UPDATE TAB_Funcao_Exclusiva@Idf_Funcao_Especifica, @Idf_Contrato, @Dta_Cadastro, @Idf_Usuario, @Flg_Inativo, @Vlr_Teto, @Vlr_Piso, @Cod_CBO, @Des_Cargo, @Des_Categoria, @Idf_Classe_Salarial, @Flg_Funcao_Gratificada, @Dta_Inativacao, @Idf_Funcao_ExclusivaAtualiza um registro existente na tabela TAB_Funcao_Exclusiva.
DELETE FROM TAB_Funcao_Exclusiva@Idf_Funcao_ExclusivaExclui um registro da tabela TAB_Funcao_Exclusiva pelo ID.
SELECT * FROM TAB_Funcao_Exclusiva@Idf_Funcao_ExclusivaSeleciona um registro da tabela TAB_Funcao_Exclusiva pelo ID.
SELECT * FROM TAB_Funcao_Exclusiva(Nenhum)Seleciona todos os registros da tabela TAB_Funcao_Exclusiva.
UPDATE TAB_Funcao_Exclusiva SET Flg_Inativo = 1, Dta_Inativacao = getdate() WHERE Idf_Funcao_Exclusiva = @Idf_Funcao_Exclusiva@Idf_Funcao_ExclusivaInativa logicamente uma função exclusiva.
SELECT DISTINCT TOP (@Num_Registro) FX.Idf_Funcao_Exclusiva, FS.Des_Funcao FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica=FS.Idf_Funcao_Especifica INNER JOIN TAB_Empregado_Funcao_Exclusiva EF ON EF.Idf_Funcao_Exclusiva = FX.Idf_Funcao_Exclusiva INNER JOIN TAB_Empregado E ON E.Idf_Empregado = EF.Idf_Empregado INNER JOIN TAB_Contrato C ON E.Idf_Contrato = C.Idf_Contrato INNER JOIN TAB_Filial Fil ON C.Idf_Filial_Gestora = Fil.Idf_Filial WHERE 1 = 1 AND FS.Des_Funcao LIKE '%' + @Des_Funcao + '%' COLLATE SQL_Latin1_General_CP1_CI_AI AND Fil.Idf_Empresa = @Idf_Empresa AND C.Idf_Contrato = ISNULL(@Idf_Contrato, C.Idf_Contrato) ORDER BY Des_Funcao ASC@Num_Registro, @Idf_Empresa, @Idf_Contrato, @Des_FuncaoLista funções exclusivas para autocomplete.
SELECT FX.* FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica = FS.Idf_Funcao_Especifica INNER JOIN TAB_Empregado E ON E.Idf_Contrato = FX.Idf_Contrato WHERE 1 = 1 AND E.Idf_Empregado = @Idf_Empregado AND FS.Des_Funcao = @Des_Funcao_Pesquisa AND FS.Cod_CBO = @Cod_CBO AND (@Cod_Funcao_Folha IS NULL OR FS.Cod_Funcao_Folha = @Cod_Funcao_Folha) AND FX.Flg_Inativo = 0@Idf_Empregado, @Des_Funcao_Pesquisa, @Cod_CBO, @Cod_Funcao_FolhaSeleciona função exclusiva por empregado, nome da função, CBO e código da função na folha.
SELECT * FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica = FS.Idf_Funcao_Especifica WHERE FX.Idf_Contrato=@Idf_Contrato AND FS.Des_Funcao=@Des_Funcao_Pesquisa AND (@Flg_Inativo IS NULL OR @Flg_Inativo = FX.Flg_Inativo)@Idf_Contrato, @Des_Funcao_Pesquisa, @Flg_InativoSeleciona função exclusiva por contrato e descrição da função.
SELECT FEx.* FROM TAB_Funcao_Exclusiva FEx WHERE FEx.Flg_Inativo = 0 AND FEx.Idf_Contrato = @Idf_Contrato AND FEx.Idf_Funcao_Especifica = @Idf_Funcao_Especifica@Idf_Contrato, @Idf_Funcao_EspecificaSeleciona função exclusiva ativa por contrato e ID da função específica.
SP_FUNCAO_EXCLUSIVA_VERIFICAR_EMPREGADOS@Idf_Funcao_Exclusiva, @Flg_AtivoVerifica se existem empregados vinculados a uma função exclusiva.
DECLARE @FirstRec INT ... EXECUTE (@iSelectCount) EXECUTE (@iSelectPag)@Idf_Funcao_Especifica, @Pesquisa, @SortExpression, @CurrentPage, @PageSizeStored procedure dinâmica para listar funções exclusivas paginadas e ordenadas.
DECLARE @TBL_RESULTADO_FUNCAO_EXCLUSIVA TABLE ... SELECT COUNT(*) AS Registros FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA ... SELECT Filial, Contrato, Funcao, CBO, Atribuicoes, Faixa, De, Ate, Idf_Funcao_Exclusiva, Idf_Funcao_Especifica FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA WHERE nrLinha BETWEEN @INICIO_PG AND @FIM_PG@Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Flg_Inativo, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_PaginaQuery complexa para listar funções gratificadas por contrato.
SELECT tfe.* FROM TAB_Empregado_Funcao_Exclusiva tefe INNER JOIN TAB_Funcao_Exclusiva tfe ON tefe.Idf_Funcao_Exclusiva = tfe.Idf_Funcao_Exclusiva WHERE tfe.Idf_Funcao_Especifica = @Idf_Funcao_Especifica AND tefe.Idf_Empregado = @Idf_Empregado AND tefe.flg_Inativo = 0@Idf_Funcao_Especifica, @Idf_EmpregadoSeleciona função exclusiva por empregado e ID da função específica.
SELECT FEx.* FROM TAB_Funcao_Exclusiva FEx WHERE FEx.Flg_Inativo = 0 AND FEx.Idf_Funcao_Especifica = @Idf_Funcao_Especifica@Idf_Funcao_EspecificaSeleciona funções exclusivas ativas por ID da função específica.
SELECT * FROM TAB_Funcao_Exclusiva EX WHERE 1=1 AND EX.Idf_Funcao_Especifica = @Idf_Funcao_Especifica AND EX.Idf_Contrato = @Idf_Contrato AND EX.Cod_CBO = @Cod_CBO@Idf_Funcao_Especifica, @Idf_Contrato, @Cod_CBOSeleciona função exclusiva por ID da função específica, contrato e CBO.
DECLARE @TBL_RESULTADO_FUNCAO_EXCLUSIVA TABLE ... SELECT COUNT(*) AS Registros FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA ... SELECT Contrato, Codigo, Funcao, CBO, Idf_Funcao_Exclusiva, Idf_Contrato_Filho FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA WHERE nrLinha BETWEEN @INICIO_PG AND @FIM_PG@Idf_Filial, @Idf_Contrato_Mae, @Idf_Contrato_Filho, @Idf_Funcao, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_PaginaQuery complexa para listar funções para o setor SST.
DECLARE @TBL_RESULTADO_FUNCAO_EXCLUSIVA TABLE ... SELECT COUNT(*) AS Registros FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA ... SELECT Contrato, Codigo, Funcao, CBO, Setor_SST, Atribuicoes, Idf_Funcao_Exclusiva, Idf_Setor_SST_Funcao_Exclusiva FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA WHERE nrLinha BETWEEN @INICIO_PG AND @FIM_PG@Idf_Filial, @Idf_Contrato_Mae, @Idf_Contrato_Filho, @Idf_Funcao, @Idf_Setor_SST, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_PaginaQuery complexa para listar funções para o setor SST com detalhes de linha.
DECLARE @FirstRec INT ... EXECUTE (@iSelectCount) EXECUTE (@iSelectPag)@Des_Funcao, @Cod_CBO, @SortExpression, @CurrentPage, @PageSizeStored procedure dinâmica para listar funções exclusivas.
DECLARE @TBL_RESULTADO_FUNCAO_EXCLUSIVA TABLE ... SELECT COUNT(*) AS Registros FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA ... SELECT Contrato, Codigo, Funcao, CBO, Setor_SST, Atribuicoes, Idf_Funcao_Exclusiva, Idf_Setor_SST_Funcao_Exclusiva FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA WHERE nrLinha BETWEEN @INICIO_PG AND @FIM_PG@Idf_Filial, @Idf_Contrato_Mae, @Idf_Contrato_Filho, @Idf_Funcao, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_PaginaQuery complexa para listar funções para o setor SST por contrato.
DECLARE @TBL_RESULTADO_FUNCAO_EXCLUSIVA TABLE ... SELECT COUNT(*) AS Registros FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA ... SELECT Filial, Contrato, Codigo, Funcao, CBO, Atribuicoes, Idf_Funcao_Exclusiva , Idf_Funcao_Especifica FROM @TBL_RESULTADO_FUNCAO_EXCLUSIVA_ORDENADA WHERE nrLinha BETWEEN @INICIO_PG AND @FIM_PG@Idf_Filial, @Idf_Contrato, @Idf_Funcao, @Flg_Inativo, @Pesquisa, @Ordenacao, @Direcao, @Pagina, @Qtde_PaginaQuery complexa para listar funções por contrato para manutenção.
SELECT * FROM TAB_Funcao_Exclusiva FX INNER JOIN plataforma.TAB_Funcao_Especifica FS ON FX.Idf_Funcao_Especifica = FS.Idf_Funcao_Especifica WHERE FS.Des_Funcao = @Des_Funcao_Pesquisa AND (@Flg_Inativo IS NULL OR @Flg_Inativo = FX.Flg_Inativo)@Des_Funcao_Pesquisa, @Flg_InativoSeleciona função exclusiva por nome.

UIHelper

Arquivo: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.Code\UIHelper.cs

Métodos

MétodoAssinaturaPropósito
RecuperarMensagemErroSqlpublic static string RecuperarMensagemErroSql(Type Constraints, Type Indexes, Type PrimaryKeys, ResourceManager resource, SqlException ex, out string mensagem)Recupera uma mensagem de erro SQL amigável com base em exceções de banco de dados e recursos de mensagens.
LimparSessionpublic static void LimparSession(HttpSessionState session, StateBag viewState, Type EnumType)Remove valores temporários da sessão e os adiciona ao ViewState.
CarregarListaSugestaopublic static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, IDataReader DataSource, string DataValueField, string DataTextField)Preenche um componente ListaSugestoes com dados de um IDataReader.
CarregarListaSugestaopublic static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, DataTable DataSource, string DataValueField, string DataTextField)Preenche um componente ListaSugestoes com dados de um DataTable.
CarregarListaSugestaopublic static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, Dictionary<string, string> Dicionario)Preenche um componente ListaSugestoes com um dicionário de strings.
CarregarGridViewpublic static void CarregarGridView(GridView gv, IDataReader dataSource)Preenche um GridView com dados de um IDataReader.
CarregarGridViewpublic static void CarregarGridView(GridView gv, DataTable dataSource)Preenche um GridView com dados de um DataTable.
CarregarGridViewpublic static void CarregarGridView(EmployerGrid gv, DataTable dataSource, int itemCount)Preenche um EmployerGrid com dados de um DataTable e o total de itens.
CarregarGridViewpublic static void CarregarGridView(EmployerGrid gv, IDataReader dataSource, int itemCount)Preenche um EmployerGrid com dados de um IDataReader e o total de itens.
CarregarGridViewpublic static void CarregarGridView(GridView gv, Dictionary<string, string> Dicionario)Preenche um GridView com um dicionário de strings.
CarregarGridViewpublic static void CarregarGridView(GridView gv, Dictionary<int, string> Dicionario)Preenche um GridView com um dicionário de inteiros e strings.
CarregarGridViewpublic static void CarregarGridView(EmployerGrid gv, int itemCount, List<object> dados)Preenche um EmployerGrid com uma lista de objetos e o total de itens.
CarregarDataListpublic static void CarregarDataList(DataList dl, IDataReader dataSource)Preenche um DataList com dados de um IDataReader.
CalculaPaginacaopublic static void CalculaPaginacao(out int inicio, out int fim, EmployerGrid grid)Calcula os índices de início e fim para paginação de um EmployerGrid.
CarregarRepeater<T>public static void CarregarRepeater<T>(Repeater rep, T dataSource)Preenche um Repeater com uma fonte de dados genérica.
CarregarDropDownListpublic static void CarregarDropDownList(DropDownList ddl, IDataReader DataSource, string DataValueField, string DataTextField)Preenche um DropDownList com dados de um IDataReader.
AjustarStringpublic static string AjustarString(string entrada)Ajusta uma string removendo espaços extras, formatando a primeira letra para maiúscula e tratando números romanos.
SetImagemOrdenacaopublic static void SetImagemOrdenacao(int indiceColuna, GridViewRow headerRow, string direcaoOrdenacao)Adiciona uma imagem de ordenação (ascendente/descendente) ao cabeçalho de uma coluna do GridView.
GetIndiceColunaOrdenarpublic static int GetIndiceColunaOrdenar(GridView gv, string colunaOrdenacao)Retorna o índice da coluna que está sendo usada para ordenação em um GridView.
RetornarMensagempublic static string RetornarMensagem(ResourceManager resource, string idMsg)Retorna uma mensagem de um ResourceManager com base em um ID.
RedimensionaFormataTextoStringpublic static void RedimensionaFormataTextoString(ref string str, int p)Redimensiona e formata uma string, convertendo para maiúsculas, removendo caracteres especiais e acentos, e completando com espaços se necessário.
RemoveCaracteresEspeciaispublic static string RemoveCaracteresEspeciais(string str)Remove caracteres especiais de uma string, mantendo ”/” e ”@”.
RemoverAcentospublic static string RemoverAcentos(string texto)Remove acentos de uma string.
ValidateFocuspublic static void ValidateFocus(WebControl controle)Registra um script para atribuir o foco ao primeiro campo inválido da página.
PrevenirDuploClickpublic static void PrevenirDuploClick(WebControl control, Page page)Adiciona um atributo onclick a um controle para prevenir duplo clique.
PrevenirDuploClickpublic static void PrevenirDuploClick(WebControl control, Page page, String validationGroup = null)Adiciona um atributo onclick a um controle para prevenir duplo clique, com validação de grupo.
LoadListaSugestoespublic static void LoadListaSugestoes(Page pag, Employer.Plataforma.Web.Componentes.ListaSugestoes ls, Dictionary<string, string> dic, string sDefault)Carrega e mantém o estado de um componente ListaSugestoes em postbacks.
LoadListaSugestoespublic static void LoadListaSugestoes(Page pag, Employer.Plataforma.Web.Componentes.ListaSugestoes ls, IDataReader DataSource, string DataValueField, string DataTextField, string sDefault)Carrega e mantém o estado de um componente ListaSugestoes com dados de um IDataReader.
ValidaChavesSessionpublic static bool ValidaChavesSession()Valida se as chaves “CentroServico” e “CodigoUsuario” existem na sessão HTTP.
TrataErroReportViewerpublic static bool TrataErroReportViewer(HttpContext ctx)Trata erros de sessão expirada no ReportViewer, redirecionando para a página de login.
ConfiguraNomenclaturaCampopublic static void ConfiguraNomenclaturaCampo(Control control, string nomeCampo, bool bMensagensErro)Configura a nomenclatura de um campo de controle, incluindo mensagens de erro.
ConfiguraNomenclaturaGridpublic static void ConfiguraNomenclaturaGrid(EmployerGrid grid, string nomePesquisa, string nomeCampo)Configura a nomenclatura do cabeçalho de uma coluna em um EmployerGrid.

Detalhamento de Métodos Importantes

RecuperarMensagemErroSql(Type Constraints, Type Indexes, Type PrimaryKeys, ResourceManager resource, SqlException ex, out string mensagem)

  • Lógica: Este método tenta mapear uma SqlException para uma mensagem de erro amigável.
  1. Itera sobre os valores dos enums Constraints, Indexes e PrimaryKeys.
  2. Para cada valor, obtém o nome correspondente.
  3. Verifica se a mensagem da SqlException (ex.Message) contém esse nome.
  4. Se encontrar uma correspondência, recupera a mensagem do ResourceManager usando o prefixo _ e o valor do enum.
  5. Define a mensagem de saída e retorna o valor do enum como string.
  6. Se nenhuma correspondência for encontrada, define a mensagem de saída como _300003 (mensagem de erro genérica) e retorna “_3003”.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma explícita, mas o método lida com exceções de banco de dados.
  • Exceções: Nenhuma lançada diretamente, mas processa SqlException.

LimparSession(HttpSessionState session, StateBag viewState, Type EnumType)

  • Lógica: Move valores temporários da sessão para o ViewState.
  1. Obtém os nomes dos membros do EnumType (que representa chaves de sessão).
  2. Itera sobre esses nomes:
  • Se um valor correspondente existir na session, ele é adicionado ao viewState e removido da session.
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Garante que dados temporários da sessão sejam preservados em postbacks, mas não na sessão persistente.

CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, IDataReader DataSource, string DataValueField, string DataTextField)

  • Lógica: Preenche um controle ListaSugestoes com dados de um IDataReader.
  1. Cria um Dictionary<string, string> vazio.
  2. Se DataSource não for nulo, itera sobre ele:
  • Adiciona ao dicionário o valor do DataValueField (trimado) como chave e o valor do DataTextField como valor.
  1. Atribui o dicionário à propriedade Dicionario do controle Lista.
  2. Chama Lista.DataBind().
  3. Descarta o DataSource se não for nulo.
  • Stored Procedures chamadas: Nenhuma.

CarregarGridView(EmployerGrid gv, IDataReader dataSource, int itemCount)

  • Lógica: Preenche um EmployerGrid com dados de um IDataReader e o total de itens.
  1. Cria um novo DataTable.
  2. Carrega os dados do IDataReader para o DataTable.
  3. Define a propriedade MockItemCount do gv com o itemCount.
  4. Atribui o DataTable como DataSource do gv.
  5. Chama gv.DataBind().
  6. Descarta o dataSource se não for nulo.
  • Stored Procedures chamadas: Nenhuma.

AjustarString(string entrada)

  • Lógica: Realiza uma série de ajustes em uma string de entrada.
  1. Remove espaços iniciais e finais (Trim()).
  2. Substitui múltiplos espaços por um único espaço.
  3. Formata a primeira letra de cada palavra para maiúscula (chamando FormatarPrimeiraMaiscula).
  4. Substitui palavras auxiliares (” De ”, ” E ”, ” Do ”, ” Dos ”, ” Da ”, ” Para ”) para suas versões em minúsculas.
  5. Tratativa Números Romanos: Divide a string em palavras e verifica se alguma palavra é um número romano comum (II, III, IV, VI, VII, VIII, IX, XI, XII, XIII, XIV, XV, XVI, XVII, XVIII, XIX, XX). Se for, mantém a capitalização original (ex: “II” permanece “II”, não “Ii”).
  6. Retorna a string ajustada.
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Padronização de strings para exibição ou armazenamento.

SetImagemOrdenacao(int indiceColuna, GridViewRow headerRow, string direcaoOrdenacao)

  • Lógica: Adiciona uma imagem indicando a direção da ordenação (ascendente/descendente) ao cabeçalho de uma coluna do GridView.
  1. Cria um novo controle Image.
  2. Verifica a direcaoOrdenacao:
  • Se for “Asc”, define ImageUrl para ico_ordenar_asc_16x16.gif e AlternateText para “Ordem ascendente”.
  • Caso contrário, define ImageUrl para ico_ordenar_desc_16x16.gif e AlternateText para “Ordem descendente”.
  1. Adiciona a imagem aos controles da célula do cabeçalho (headerRow.Cells[indiceColuna].Controls.Add(imgOrdenacao)).
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Feedback visual para o usuário sobre a ordenação do grid.

GetIndiceColunaOrdenar(GridView gv, string colunaOrdenacao)

  • Lógica: Retorna o índice da coluna que está sendo usada para ordenação em um GridView.
  1. Itera sobre as colunas (DataControlField) do GridView.
  2. Para cada coluna, verifica se a propriedade SortExpression corresponde a colunaOrdenacao.
  3. Se encontrar uma correspondência, retorna o índice da coluna.
  4. Se nenhuma correspondência for encontrada, retorna -1.
  • Stored Procedures chamadas: Nenhuma.

RedimensionaFormataTextoString(ref string str, int p)

  • Lógica: Redimensiona e formata uma string.
  1. Converte a string para maiúsculas.
  2. Remove caracteres especiais (chamando RemoveCaracteresEspeciais).
  3. Remove acentos (chamando RemoverAcentos).
  4. Se o comprimento da string for menor que p, adiciona espaços em branco até atingir o comprimento p.
  5. Trunca a string para o comprimento p.
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Padronização de strings para um tamanho e formato específicos, geralmente para armazenamento em campos de tamanho fixo no banco de dados ou para exibição.

PrevenirDuploClick(WebControl control, Page page, String validationGroup = null)

  • Lógica: Adiciona um script JavaScript ao evento onclick de um controle para prevenir cliques duplos.
  1. Verifica se validationGroup é nulo ou vazio.
  2. Se for nulo, o script if(Page_ClientValidate()) this.disabled = true; é adicionado, que executa a validação do cliente antes de desabilitar o botão.
  3. Se validationGroup for fornecido, o script if(Page_ClientValidate('validationGroup')) this.disabled = true; é adicionado, validando apenas o grupo especificado.
  4. O script também inclui page.ClientScript.GetPostBackEventReference(control, null) para garantir que o postback ocorra após a validação e desabilitação.
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Melhora a usabilidade e evita envios duplicados de formulários.

ValidaChavesSession()

  • Lógica: Verifica se as chaves “CentroServico” e “CodigoUsuario” existem na sessão HTTP.
  1. Obtém o HttpContext.Current.
  2. Tenta acessar ctx.Session["CentroServico"] e ctx.Session["CodigoUsuario"].
  3. Retorna true se ambos existirem e não forem nulos.
  4. Em caso de qualquer exceção (por exemplo, HttpContext.Current ser nulo), retorna false.
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Usado para verificar se o usuário está logado e se o contexto da sessão está válido.

TrataErroReportViewer(HttpContext ctx)

  • Lógica: Trata erros de sessão expirada que ocorrem no ReportViewer, redirecionando para a página de login.
  1. Verifica se ctx ou ctx.Server são nulos. Se sim, retorna false.
  2. Obtém o último erro do servidor (ctx.Server.GetLastError()). Se não houver erro, retorna false.
  3. Tenta obter a exceção base.
  4. Se a exceção base for do tipo Microsoft.Reporting.WebForms.AspNetSessionExpiredException:
  • Limpa o erro do servidor (ctx.Server.ClearError()).
  • Redireciona para a URL de login (FormsAuthentication.LoginUrl) com a URL atual como ReturnUrl.
  • Retorna true.
  1. Em caso de outras exceções durante o tratamento, loga o erro.
  2. Retorna false se o erro não for de sessão expirada do ReportViewer.
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Gerenciamento de sessão e tratamento de erros específicos do ReportViewer.

ConfiguraNomenclaturaCampo(Control control, string nomeCampo, bool bMensagensErro)

  • Lógica: Configura a nomenclatura de um campo de controle, incluindo mensagens de erro.
  1. Se bMensagensErro for true:
  • Tenta definir as propriedades MensagemErroInvalidoSummary, MensagemErroFormatoSummary e MensagemErroObrigatorioSummary do controle com mensagens formatadas usando nomeCampo.
  1. Se bMensagensErro for false:
  • Tenta definir a propriedade Text do controle com nomeCampo.
  1. Chama control.DataBind().
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Personalização da interface do usuário e mensagens de validação.

ConfiguraNomenclaturaGrid(EmployerGrid grid, string nomePesquisa, string nomeCampo)

  • Lógica: Configura a nomenclatura do cabeçalho de uma coluna em um EmployerGrid.
  1. Converte as colunas do grid para DataControlField e busca a primeira coluna cujo HeaderText seja igual a nomePesquisa.
  2. Se uma coluna for encontrada, atualiza seu HeaderText para nomeCampo.
  • Stored Procedures chamadas: Nenhuma.
  • Regras de negócio: Personalização da interface do usuário do grid.

Stored Procedures

Nenhuma stored procedure é chamada diretamente por esta classe, pois ela é uma classe auxiliar de UI.


Usuario

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P2.cs

Métodos

MétodoAssinaturaPropósito
Usuariopublic Usuario()Construtor padrão da classe.
Usuariopublic Usuario(int idUsuario)Construtor que inicializa a instância com um ID existente, marcando-a como persistida.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada e ordenada de Usuario.
LoadObjectpublic static Usuario LoadObject(int usuario)Retorna uma instância de Usuario a partir do banco de dados pelo ID.
LoadObjectpublic static Usuario LoadObject(int usuario, SqlTransaction trans)Retorna uma instância de Usuario a partir do banco de dados pelo ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa as propriedades da instância atual de Usuario a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa as propriedades da instância atual de Usuario a partir do banco de dados, dentro de uma transação.
CarregarPermissoespublic static List<int> CarregarPermissoes(Usuario objUsuario, Enumeradores.CategoriaPermissao categoriaPermissao)Carrega as permissões de um usuário para uma categoria específica.
CarregarPermissoesVisualizacaoESocialpublic static List<int> CarregarPermissoesVisualizacaoESocial(Usuario objUsuario)Carrega as permissões de visualização do eSocial para um usuário.
ListarUsuariospublic static IDataReader ListarUsuarios(string pNome, bool? pStatus, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)Lista usuários com filtros por nome e status, ordenação e paginação.
CarregarPorCPFpublic static IDataReader CarregarPorCPF(decimal pNumCPF, bool? pStatus)Carrega um IDataReader com informações de usuário por CPF e status.
ListarRelatorioUsuariosPorPerfilpublic static IDataReader ListarRelatorioUsuariosPorPerfil(int pIdPerfil)Lista usuários para um relatório por perfil.
CarregarPorCPFpublic static Usuario CarregarPorCPF(decimal pNumCPF)Carrega um objeto Usuario por CPF.
CarregarPerfispublic static IDataReader CarregarPerfis(int pIdUsuario, DateTime pDtaPeriodo)Carrega os perfis de um usuário para um período específico.
CarregarPerfisSistemapublic static IDataReader CarregarPerfisSistema(int pIdUsuario, DateTime pDtaPeriodo, int pIdSistema, string pOrdenacao)Carrega os perfis de um usuário para um sistema e período específicos, com ordenação.
ListarUsuariosAutoCompletepublic static string[] ListarUsuariosAutoComplete(string pMatriculaNomeCpf, int pIdfUsuarioLogado, int pCount)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por matrícula, nome ou CPF.
CarregarUsuariosFilaAtualizacaoPontopublic static IDataReader CarregarUsuariosFilaAtualizacaoPonto(int pNumTentativas)Carrega usuários da fila de integração de ponto que ainda não foram enviados ou falharam.
VerificarFiliaisPontopublic static DataTable VerificarFiliaisPonto(decimal pNumCPF)Verifica as filiais de ponto que um usuário tem acesso.
CarregarUsuarioContaPagarpublic static IDataReader CarregarUsuarioContaPagar(int pIdUsuario)Carrega informações de usuário para contas a pagar.
RecuperarFiliaisQueUsuarioTemAcessopublic static IDataReader RecuperarFiliaisQueUsuarioTemAcesso(int pIdEmpresa, int? pIdUsuario)Recupera as filiais que um usuário tem acesso dentro de uma empresa.
VerificarPerfilSistemaSenhaMasterpublic static bool VerificarPerfilSistemaSenhaMaster(int pIdUsuario, DateTime pDtaPeriodo, int pIdSistema)Verifica se um usuário possui perfil de senha master para um sistema e período.
ListarAgrupamentoUsuariopublic static IDataReader ListarAgrupamentoUsuario(List<decimal> pListaCpf)Lista o agrupamento de usuários por CPF, incluindo informações de perfil, grupo econômico, empresa, filial, contrato e centro de resultado.
ListarUsuariosPorNomepublic static IDataReader ListarUsuariosPorNome(string pNome)Lista usuários por nome.
ListarUsuariosPorCpfpublic static IDataReader ListarUsuariosPorCpf(string pCpf)Lista usuários por CPF.
ListarUsuariosPorNomeCpfpublic static IDataReader ListarUsuariosPorNomeCpf(string pNome, string pCpf)Lista usuários por nome ou CPF.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF e ID do usuário.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário e ID da empresa.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa e ID da filial.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial e ID do contrato.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato e ID do centro de resultado.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado e status de ativo.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo e status de interno.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno e status de exceção.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao, bool pFlgAcesso)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno, status de exceção e status de acesso.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao, bool pFlgAcesso, bool pFlgPermissao)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno, status de exceção, status de acesso e status de permissão.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao, bool pFlgAcesso, bool pFlgPermissao, bool pFlgPermissaoVisualizacaoESocial)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno, status de exceção, status de acesso, status de permissão e status de permissão de visualização do eSocial.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao, bool pFlgAcesso, bool pFlgPermissao, bool pFlgPermissaoVisualizacaoESocial, bool pFlgPermissaoVisualizacaoESocialExcecao)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno, status de exceção, status de acesso, status de permissão, status de permissão de visualização do eSocial e status de permissão de visualização do eSocial de exceção.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao, bool pFlgAcesso, bool pFlgPermissao, bool pFlgPermissaoVisualizacaoESocial, bool pFlgPermissaoVisualizacaoESocialExcecao, bool pFlgPermissaoVisualizacaoESocialExcecaoContrato)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno, status de exceção, status de acesso, status de permissão, status de permissão de visualização do eSocial, status de permissão de visualização do eSocial de exceção e status de permissão de visualização do eSocial de exceção de contrato.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao, bool pFlgAcesso, bool pFlgPermissao, bool pFlgPermissaoVisualizacaoESocial, bool pFlgPermissaoVisualizacaoESocialExcecao, bool pFlgPermissaoVisualizacaoESocialExcecaoContrato, bool pFlgPermissaoVisualizacaoESocialExcecaoCentroResultado)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno, status de exceção, status de acesso, status de permissão, status de permissão de visualização do eSocial, status de permissão de visualização do eSocial de exceção, status de permissão de visualização do eSocial de exceção de contrato e status de permissão de visualização do eSocial de exceção de centro de resultado.
ListarUsuariosPorNomeCpfAutoCompletepublic static string[] ListarUsuariosPorNomeCpfAutoComplete(string pNomeCpf, int pCount, int pIdfUsuario, int pIdfEmpresa, int pIdfFilial, int pIdfContrato, int pIdfCentroResultado, bool pFlgAtivo, bool pFlgInterno, bool pFlgExcecao, bool pFlgAcesso, bool pFlgPermissao, bool pFlgPermissaoVisualizacaoESocial, bool pFlgPermissaoVisualizacaoESocialExcecao, bool pFlgPermissaoVisualizacaoESocialExcecaoContrato, bool pFlgPermissaoVisualizacaoESocialExcecaoCentroResultado, bool pFlgPermissaoVisualizacaoESocialExcecaoGrupoEconomico)Retorna uma lista de sugestões de usuários para autocomplete, filtrando por nome ou CPF, ID do usuário, ID da empresa, ID da filial, ID do contrato, ID do centro de resultado, status de ativo, status de interno, status de exceção, status de acesso, status de permissão, status de permissão de visualização do eSocial, status de permissão de visualização do eSocial de exceção, status de permissão de visualização do eSocial de exceção de contrato, status de permissão de visualização do eSocial de exceção de centro de resultado e status de permissão de visualização do eSocial de exceção de grupo econômico.

Detalhamento de Métodos Importantes

LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)

  • Lógica: Prepara e executa uma consulta paginada e ordenada para retornar dados de Usuario.
  1. Calcula os valores de inicio e fim para a paginação com base em paginaCorrente e tamanhoPagina.
  2. Constrói a string SQL SPSELECTPAG para selecionar os dados com ROW_NUMBER() para ordenação e paginação, incluindo informações da TAB_Pessoa_Fisica.
  3. Constrói a string SQL SPSELECTCOUNT para contar o total de registros.
  4. Executa SPSELECTCOUNT para obter o totalRegistros.
  5. Executa SPSELECTPAG para retornar o IDataReader com os dados paginados.
  • Stored Procedures chamadas:
  • SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Usu.Idf_Usuario, ... FROM TAB_Usuario Usu LEFT JOIN TAB_Pessoa_Fisica Pfi ON Pfi.Num_CPF = Usu.Num_CPF) AS TblTempCount
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @colunaOrdenacao @direcaoOrdenacao) AS RowID, Usu.Idf_Usuario, ... FROM TAB_Usuario Usu LEFT JOIN TAB_Pessoa_Fisica Pfi ON Pfi.Num_CPF = Usu.Num_CPF) AS TblTempPag WHERE RowID > @FirstRec AND RowID < @LastRec
  • @colunaOrdenacao (string): Nome da coluna para ordenação.
  • @direcaoOrdenacao (string): Direção da ordenação (ASC/DESC).
  • @FirstRec (Int): Início do range de linhas para paginação.
  • @LastRec (Int): Fim do range de linhas para paginação.

LoadObject(int usuario)

  • Lógica: Carrega um objeto Usuario pelo seu ID.
  1. Chama o método LoadDataReader(usuario) para obter um IDataReader.
  2. Cria uma nova instância de Usuario.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int usuario).

LoadObject(int usuario, SqlTransaction trans)

  • Lógica: Similar ao LoadObject(int usuario), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama o método LoadDataReader(usuario, trans) para obter um IDataReader.
  2. Cria uma nova instância de Usuario.
  3. Chama SetInstance para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true, retorna o objeto preenchido.
  5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int usuario, SqlTransaction trans).

CompleteObject()

  • Lógica: Preenche as propriedades da instância atual de Usuario a partir do banco de dados, usando o _idUsuario já existente na instância.
  1. Chama LoadDataReader(this._idUsuario) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int usuario).

CompleteObject(SqlTransaction trans)

  • Lógica: Similar ao CompleteObject(), mas executa a operação dentro de uma transação SQL fornecida.
  1. Chama LoadDataReader(this._idUsuario, trans) para obter um IDataReader.
  2. Chama SetInstance(dr, this) para preencher a própria instância com os dados.
  3. Retorna true se a operação foi bem-sucedida, false caso contrário.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader(int usuario, SqlTransaction trans).

CarregarPermissoes(Usuario objUsuario, Enumeradores.CategoriaPermissao categoriaPermissao)

  • Lógica: Carrega as permissões de um usuário para uma categoria específica.
  1. Cria uma lista de SqlParameter e adiciona @idf_usuario e @Idf_Categoria_Permissao.
  2. Define os valores dos parâmetros.
  3. Executa a query SPSELECTPERMISSOESUSUARIO.
  4. Cria uma List<int> vazia.
  5. Itera sobre o IDataReader e adiciona os IDs das permissões à lista.
  6. Retorna a lista de permissões.
  • Stored Procedures chamadas: SELECT DISTINCT p.Idf_Permissao as Permissao FROM TAB_Periodo_Permissao pp INNER JOIN TAB_Perfil_Permissao p ON pp.Idf_Perfil = p.Idf_Perfil INNER JOIN plataforma.TAB_Permissao per ON p.Idf_Permissao = per.Idf_Permissao WHERE Idf_Usuario = @idf_usuario AND Dta_Inicio <= GETDATE() AND (Dta_Fim >= GETDATE() OR Dta_Fim IS NULL) AND per.Idf_Categoria_Permissao = @Idf_Categoria_Permissao
  • @idf_usuario (Int): ID do usuário.
  • @Idf_Categoria_Permissao (Int): ID da categoria de permissão.

CarregarPermissoesVisualizacaoESocial(Usuario objUsuario)

  • Lógica: Carrega as permissões de visualização do eSocial para um usuário.
  1. Cria uma lista de SqlParameter e adiciona @IdF_Usuario.
  2. Define o valor do parâmetro.
  3. Executa a query SPSELPERMISSOESVISUALIZACAOESOCIAL.
  4. Cria uma List<int> vazia.
  5. Itera sobre o IDataReader e adiciona os valores da coluna Vlr_Permissao à lista.
  6. Retorna a lista de permissões.
  • Stored Procedures chamadas: SELECT * FROM (...) AS TAB (query complexa que une dados de acesso de usuário a grupos econômicos, empresas, filiais, contratos e centros de resultado, com flags de permissão).
  • @IdF_Usuario (Int): ID do usuário.

ListarUsuarios(string pNome, bool? pStatus, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)

  • Lógica: Lista usuários com filtros por nome e status, ordenação e paginação.
  1. Calcula FirstRec e LastRec para a paginação.
  2. Constrói a string SQL iSelect para selecionar os dados do usuário e da pessoa física, com ordenação.
  3. Adiciona cláusulas WHERE para filtrar por nome (@Nome) e status (@Status).
  4. Constrói iSelectCount e iSelectPag para a contagem total e a paginação.
  5. Executa iSelectCount para obter pTotalRegistros.
  6. Executa iSelectPag e retorna o IDataReader.
  • Stored Procedures chamadas:
  • DECLARE @FirstRec INT ... SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY @SortExpression) AS RowID, Usu.*, Pfi.Nme_Pessoa, ... FROM TAB_Usuario Usu LEFT JOIN TAB_Pessoa_Fisica Pfi ON Pfi.Num_CPF = Usu.Num_CPF WHERE (@Nome IS NULL OR Pfi.Nme_Pessoa LIKE '%' + @Nome + '%') AND (@Status IS NULL OR usu.Flg_Inativo = @Status)) AS TblTempCount
  • @SortExpression (VarChar): Expressão de ordenação.
  • @Nome (VarChar, opcional): Nome para pesquisa.
  • @Status (Bit, opcional): Status de inativo.
  • DECLARE @FirstRec INT ... SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY @SortExpression) AS RowID, Usu.*, Pfi.Nme_Pessoa, ... FROM TAB_Usuario Usu LEFT JOIN TAB_Pessoa_Fisica Pfi ON Pfi.Num_CPF = Usu.Num_CPF WHERE (@Nome IS NULL OR Pfi.Nme_Pessoa LIKE '%' + @Nome + '%') AND (@Status IS NULL OR usu.Flg_Inativo = @Status)) AS TblTempPag WHERE RowID > @FirstRec AND RowID < @LastRec
  • @FirstRec (Int): Início do range de linhas para paginação.
  • @LastRec (Int): Fim do range de linhas para paginação.
  • @SortExpression (VarChar): Expressão de ordenação.
  • @Nome (VarChar, opcional): Nome para pesquisa.
  • @Status (Bit, opcional): Status de inativo.

CarregarPorCPF(decimal pNumCPF, bool? pStatus)

  • Lógica: Carrega um IDataReader com informações de usuário por CPF e status.
  1. Cria uma lista de SqlParameter e adiciona @N_CPF e @Status.
  2. Define os valores dos parâmetros.
  3. Executa a query CARREGARCPF.
  4. Retorna o IDataReader.
  • Stored Procedures chamadas: SELECT Usu.Flg_Interno, Usu.Num_CPF, Usu.Flg_Inativo, Pfi.Nme_Pessoa, ... FROM TAB_Usuario Usu LEFT JOIN TAB_Pessoa_Fisica Pfi ON Pfi.Num_CPF = Usu.Num_CPF WHERE Usu.Num_CPF = @N_CPF AND (@Status IS NULL OR usu.Flg_Inativo = @Status)
  • @N_CPF (Decimal): CPF do usuário.
  • @Status (Bit, opcional): Status de inativo.

ListarRelatorioUsuariosPorPerfil(int pIdPerfil)

  • Lógica: Lista usuários para um relatório por perfil.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Perfil.
  2. Define o valor do parâmetro.
  3. Executa a query SELRELATORIOUSUARIOSPORPERFIL.
  4. Retorna o IDataReader.
  • Stored Procedures chamadas: SELECT TAB_Perfil.Idf_Perfil, TAB_Perfil.Des_Perfil, TAB_Pessoa_Fisica.Nme_Pessoa, (...) AS Num_CPF, TAB_Pessoa_Fisica.Eml_Pessoa, (...) AS Celular FROM TAB_Usuario INNER JOIN TAB_Pessoa_Fisica ON TAB_Usuario.Num_CPF = TAB_Pessoa_Fisica.Num_CPF INNER JOIN TAB_Usuario_Perfil ON TAB_Usuario.Idf_Usuario = TAB_Usuario_Perfil.Idf_Usuario INNER JOIN TAB_Perfil ON TAB_Usuario_Perfil.Idf_Perfil = TAB_Perfil.Idf_Perfil WHERE 1 = 1 AND TAB_Perfil.Flg_Inativo = 0 AND TAB_Perfil.Idf_Perfil = @Idf_Perfil ORDER BY TAB_Pessoa_Fisica.Nme_Pessoa ASC
  • @Idf_Perfil (Int): ID do perfil.

CarregarPorCPF(decimal pNumCPF)

  • Lógica: Carrega um objeto Usuario por CPF.
  1. Cria uma lista de SqlParameter e adiciona @Num_CPF.
  2. Define o valor do parâmetro.
  3. Executa a query SPSELECTCPF.
  4. Cria uma nova instância de Usuario.
  5. Chama SetInstance para preencher a instância.
  6. Se a instância for preenchida, retorna o objeto. Caso contrário, retorna null.
  • Stored Procedures chamadas: SELECT * FROM TAB_Usuario WHERE Num_CPF = @Num_CPF
  • @Num_CPF (Decimal): CPF do usuário.

CarregarPerfis(int pIdUsuario, DateTime pDtaPeriodo)

  • Lógica: Carrega os perfis de um usuário para um período específico.
  1. Cria uma lista de SqlParameter e adiciona @Idf_Usuario e @Dta_Periodo.
  2. Define os valores dos parâmetros.
  3. Executa a query SPSELPERFIL.
  4. Retorna o IDataReader.
  • Stored Procedures chamadas: SELECT Per.Idf_Perfil, CASE WHEN Ppe.Idf_Usuario IS NULL THEN 0 ELSE 1 END AS Upe_Permissao, Per.Des_Perfil, Ppe.Dta_Inicio, Ppe.Dta_Fim, CASE WHEN Usu.Idf_Perfil_Principal = Per.Idf_Perfil THEN 1 ELSE 0 END AS Upe_Perfil_Principal 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 ORDER BY Per.Des_Perfil
  • @Idf_Usuario (Int): ID do usuário.
  • @Dta_Periodo (DateTime): Data do período

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