WebFoPag / WebFoPag ~37 min

🛠️ Documentação Técnica: Cadastrar Serviços de Campo

[!NOTE] Documentação Gerada Automaticamente As informações técnicas, regras de negócio e fluxos abaixo devem ser preenchidos após a análise do código-fonte.

A análise dos arquivos foi concluída. A classe NomeCentroServico não teve um arquivo de definição encontrado, o que é esperado, pois ela é usada apenas para chamar o método ToLower() em uma string, não sendo uma BLL ou entidade de domínio.

Aqui está a documentação base da tela ServicoCampoCadastro.aspx:

Documentação Base — C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\ServicoCampoCadastro.aspx

1. Visão Geral

A tela “Cadastro de Serviços de Campo” permite o registro e gerenciamento de serviços de campo, que podem ser de dois tipos: “Atividade” ou “Ocorrência”. Ela suporta a criação de serviços de campo superiores (macros) e seus respectivos serviços de campo filhos (micros). A tela também gerencia a permissão de avaliação, tipo de avaliação, percentual de avaliação, número de ordem, utilização de BAG, utilização de área cultivada, solicitação de observação, desconto de bônus, divisão de bônus, recebimento de hora in itinere e necessidade de aprovação. Além disso, a tela exibe uma listagem paginada e pesquisável dos serviços de campo já cadastrados, com opções de edição e exclusão.

2. Tipos/Modalidades

A tela possui as seguintes variações de comportamento:

  • Modo de Operação (Cadastro/Edição): A tela pode ser utilizada para cadastrar um novo serviço de campo ou editar um serviço de campo existente, dependendo se o IdServicoCampo está preenchido.
  • Tipo de Serviço (Atividade/Ocorrência): O campo “Tipo Serviço” define se o serviço de campo é uma “Atividade” ou uma “Ocorrência”, impactando a visibilidade e habilitação de outros campos como “Solicitar Observação”, “Descontar Bônus” e “Divisão Bônus”.
  • Permite Avaliação (Sim/Não): O campo “Permite Avaliação” controla a visibilidade e obrigatoriedade dos campos “Tipo Avaliação”, “Número Ordem Cálculo Avaliação” e “Percentual Avaliação”.
  • Serviço de Campo Superior (Macro/Micro): A lógica de alguns campos, como “Número Ordem Cálculo Avaliação”, “Percentual Avaliação”, “Utiliza BAG” e “Utiliza Área Cultivada”, muda se o serviço de campo é um serviço superior (macro) ou um serviço filho (micro).
  • Módulo Safra Misto: A tela adapta sua interface e mensagens de erro com base no parâmetro UtilizaModuloSafraMisto. Se este módulo estiver habilitado, os campos “Tipo Avaliação” e “Utiliza BAG” são ocultados, e a descrição do “Tipo Serviço” muda de “Serviço” para “Atividade” na grid.
  • Habilita Campo Necessita Aprovação: A visibilidade do campo “Necessita Aprovação?” é controlada pelo parâmetro HabilitaCampoNecessitaAprovacao.

3. Interface — Campos e Controles

NomeTipoObrigatórioRegra
hTituloh1NãoTítulo da tela, formatado como “Cadastro de [Nome do Serviço de Campo]“.
lblCulturaLabelNãoRótulo para o campo lsCultura.
lsCulturaListaSugestoesSimCampo de seleção para a cultura do campo. Mensagem de erro: “Campo Cultura inválido.” / “Campo Cultura é obrigatório.”
lblServicoCampoLabelNãoRótulo para o campo txtServicoCampo.
txtServicoCampoControlAlfaNumericoSimNome do serviço de campo. Mensagem de erro: “Campo Serviço Campo inválido.” / “Campo Serviço Campo é obrigatório.”
lblServicoCampoSuperiorLabelNãoRótulo para o campo txtServicoCampoSuperior.
txtServicoCampoSuperiorLocalizarServicoCampoNãoCampo de seleção para o serviço de campo superior. Configurado como “Sintetico”. Mensagem de erro: “Campo Serviço Campo Superior inválido.” / “Campo Serviço Campo Superior é obrigatório.”
lblCodigoServicoCampoLabelNãoRótulo para o campo txtCodigoServicoCampo.
txtCodigoServicoCampoControlAlfaNumericoSimCódigo do serviço de campo. Mensagem de erro: “Campo Código Serviço Campo inválido.” / “Campo Código Serviço Campo é obrigatório.”
lblTipoServicoLabelNãoRótulo para o campo lsTipoServico.
lsTipoServicoListaSugestoesSimTipo do serviço (Atividade/Ocorrência). Mensagem de erro: “Campo Tipo Serviço inválido.” / “Campo Tipo Serviço é obrigatório.”
lblPermiteAvalicaoLabelNãoRótulo para o campo lsPermiteAvaliacao.
lsPermiteAvaliacaoListaSugestoesSimIndica se o serviço permite avaliação (Sim/Não).
lblTipoAvaliacaoLabelNãoRótulo para o campo lsTipoAvaliacao. Visível apenas se UtilizaModuloSafraMisto for falso.
lsTipoAvaliacaoListaSugestoesNãoTipo de avaliação. Habilitado e obrigatório se lsPermiteAvaliacao for “Sim”. Mensagem de erro: “Campo Tipo Avaliação inválido.” / “Campo Tipo Avaliação é obrigatório.”
lblOrdemLabelNãoRótulo para o campo txtNumeroOrdem.
txtNumeroOrdemValorNumericoTextBoxNãoNúmero de ordem de cálculo da avaliação. Habilitado se lsPermiteAvaliacao for “Sim” e txtServicoCampoSuperior tiver um valor selecionado. Valor mínimo: 1, Valor máximo: 100. Mensagem de erro: “Campo Número Ordem Cálculo Avaliação inválido.” / “Campo Número Ordem Cálculo Avaliação é obrigatório.”
lblUtilizaAreaCultivadaLabelNãoRótulo para o campo lsUtilizaAreaCultivada.
lsUtilizaAreaCultivadaListaSugestoesSimIndica se o serviço utiliza área cultivada (Sim/Não). Habilitado se lsTipoServico for “Atividade” e não houver serviço superior.
lblPercentualAvaliacaoLabelNãoRótulo para o campo txtPercentualAvaliacao.
txtPercentualAvaliacaoValorNumericoTextBoxNãoPercentual de avaliação. Habilitado se lsPermiteAvaliacao for “Sim” e txtServicoCampoSuperior tiver um valor selecionado. Valor mínimo: 0.01, Valor máximo: 100.00.
lblUtilizaBagLabelNãoRótulo para o campo lsUtilizaBag. Visível apenas se UtilizaModuloSafraMisto for falso.
lsUtilizaBagListaSugestoesNãoIndica se o serviço utiliza BAG (Sim/Não). Habilitado se lsTipoServico for “Atividade” e não houver serviço superior.
lblSituacaoLabelNãoRótulo para o campo lsSituacao.
lsSituacaoListaSugestoesSimSituação do serviço (Ativo/Inativo). Mensagem de erro: “Campo Situação inválido.” / “Campo Situação é obrigatório.”
lblSolicitarObservacaoLabelNãoRótulo para o campo lsSolicitarObservacao.
lsSolicitarObservacaoListaSugestoesSimIndica se o serviço solicita observação (Sim/Não). Habilitado se lsTipoServico for “Ocorrência”.
lblDescontarBonusLabelNãoRótulo para o campo lsDescontarBonus.
lsDescontarBonusListaSugestoesSimIndica se o serviço desconta bônus (Sim/Não). Habilitado se lsTipoServico for “Ocorrência”.
lblDivisaoBonusLabelNãoRótulo para o campo lsDivisaoBonus. Visível apenas se o NomeCentroServico for “syngenta”.
lsDivisaoBonusListaSugestoesSimIndica se há divisão de bônus (Sim/Não). Habilitado se lsTipoServico for “Ocorrência”.
Label1LabelNãoRótulo para o campo lsRecebeHoraInItinere.
lsRecebeHoraInItinereListaSugestoesSimIndica se o serviço recebe hora in itinere (Sim/Não). Visível se o parâmetro ServicoCampoRealizadoIndividual for “1”.
lblNecessitaAprovacaoLabelNãoRótulo para o campo lsNecessitaAprovacao. Visível se HabilitaCampoNecessitaAprovacao for verdadeiro.
lsNecessitaAprovacaoListaSugestoesSimIndica se o serviço necessita de aprovação (Sim/Não). Habilitado se lsPermiteAvaliacao for “Não”.
btnSalvarButtonNãoBotão para salvar o serviço de campo.
btnLimparButtonNãoBotão para limpar os campos da tela.
btnVoltarButtonNãoBotão para voltar à tela anterior.
hSubTituloh2NãoSubtítulo da seção da grid, formatado como “[Nome do Serviço de Campo] Cadastrados”.
lblPesquisarLabelNãoRótulo para o campo txtPesquisar.
txtPesquisarControlAlfaNumericoNãoCampo de texto para pesquisa na grid.
btnPesquisarButtonNãoBotão para acionar a pesquisa na grid.
gvwServicoCampoEmployerGridNãoGrid que exibe os serviços de campo cadastrados. Colunas: Cultura, Serviço Campo, Serviço Campo Superior, Tipo Serviço, Permite Avaliação?, Tipo Avaliação, Ordem Avaliação, Percentual Avaliação, BAG, Situação, Ações (Editar, Excluir).

4. Abas e Seções

A tela possui as seguintes seções principais:

  • Dados Cadastrais: Contém os campos de entrada para as informações do serviço de campo.
  • Valores (aba abaValores): Esta aba é visível apenas se o parâmetro ServicoCampoRealizadoIndividual estiver configurado como “1”. O clique no botão btlValores redireciona para a tela ServicoCampoValoresCadastro.aspx.
  • Serviços de Campo Cadastrados: Uma seção que exibe uma grid com os serviços de campo já registrados, juntamente com campos de pesquisa e botões de ação.

5. Regras de Negócio

5.1. Validações de Campos

  • Cultura: Obrigatório. (lsCultura)
  • Serviço Campo: Obrigatório. (txtServicoCampo)
  • Código Serviço Campo: Obrigatório. (txtCodigoServicoCampo)
  • Tipo Serviço: Obrigatório. (lsTipoServico)
  • Permite Avaliação?: Obrigatório. (lsPermiteAvaliacao)
  • Situação: Obrigatório. (lsSituacao)
  • Solicitar Observação: Obrigatório se o Tipo Serviço for “Ocorrência”. (lsSolicitarObservacao)
  • Descontar Bônus: Obrigatório se o Tipo Serviço for “Ocorrência”. (lsDescontarBonus)
  • Divisão Bônus: Obrigatório se o Tipo Serviço for “Ocorrência”. (lsDivisaoBonus)
  • Recebe Hora In Itinere: Obrigatório. (lsRecebeHoraInItinere)
  • Necessita Aprovação?: Obrigatório. (lsNecessitaAprovacao)
  • Tipo Avaliação: Obrigatório se “Permite Avaliação?” for “Sim” e o UtilizaModuloSafraMisto for falso. (ServicoCampoCadastro.aspx.cs - ValidarSalvar)
  • Percentual Avaliação: Obrigatório se “Permite Avaliação?” for “Sim” e houver um “Serviço Campo Superior” selecionado. (ServicoCampoCadastro.aspx.cs - ValidarSalvar)
  • Nome do Serviço de Campo Duplicado: Não é permitido cadastrar um serviço de campo com o mesmo nome para a mesma empresa e cultura. (ServicoCampo.ValidarNomeServicoCampoJaCadastrado)
  • Código do Serviço de Campo Duplicado: Não é permitido cadastrar um serviço de campo com o mesmo código para a mesma empresa e cultura. (ServicoCampo.ValidarCodigoServicoCampoJaCadastrado)
  • Número de Ordem Duplicado: Não é permitido cadastrar um serviço de campo com o mesmo número de ordem dentro do mesmo serviço superior. Esta validação ocorre apenas se houver um “Serviço Campo Superior” selecionado e “Permite Avaliação?” for “Sim”. (ServicoCampo.ValidarNumeroOrdemServicoCampoJaCadastrado)
  • Soma dos Percentuais de Avaliação: A soma dos percentuais de avaliação de serviços de campo filhos de um mesmo serviço superior não pode exceder 100%. Esta validação ocorre apenas se houver um “Serviço Campo Superior” selecionado, “Permite Avaliação?” for “Sim” e “Percentual Avaliação” tiver um valor. Se a cultura selecionada for “Todas”, a validação é feita para cada cultura ativa. (ServicoCampo.ValidarPercentualTotalServicoCampoSuperior)
  • Exclusão - Vínculo com Sindicato: Não é possível excluir um serviço de campo se ele estiver vinculado a um sindicato. (ServicoCampo.ValidarServicoCampoJaVinculadoSindicato)
  • Exclusão - Vínculo com Serviço Realizado: Não é possível excluir um serviço de campo se ele já foi realizado. (ServicoCampo.ValidarServicoCampoJaRealizado)
  • Exclusão - Vínculo com Ocorrência Lançada: Não é possível excluir um serviço de campo se ele já possui ocorrências lançadas. (ServicoCampo.ValidarServicoCampoOcorrenciaJaLancado)
  • Exclusão - Vínculo com Avaliação Realizada: Não é possível excluir um serviço de campo se ele já foi avaliado. (ServicoCampo.ValidarServicoCampoJaAvaliado)
  • Exclusão - Vínculo com Outro Serviço de Campo: Não é possível excluir um serviço de campo se ele estiver vinculado a outro serviço de campo (como superior). (ServicoCampo.ValidarServicoCampoJaVinculadoOutroServicoCampo)
  • Exclusão - Vínculo com Serviço Campo Individual Desconsiderado: Não é possível excluir um serviço de campo se ele possui um serviço de campo individual desconsiderado. (ServicoCampoIndividualDesconsiderado.PossuiServicoCampoIndividualDesconsiderado)

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

  • Aba “Valores”: Visível apenas se o parâmetro ServicoCampoRealizadoIndividual for “1”. (ServicoCampoCadastro.aspx.cs - ConfigurarCampos)
  • Campo “Necessita Aprovação?”: Visível se o parâmetro HabilitaCampoNecessitaAprovacao for verdadeiro. (ServicoCampoCadastro.aspx.cs - ConfigurarCampos)
  • Campos “Tipo Avaliação” e “Utiliza BAG”: Ocultos se UtilizaModuloSafraMisto for verdadeiro. (ServicoCampoCadastro.aspx.cs - ConfigurarCampos)
  • Colunas “BAG” e “Tipo Avaliação” na Grid: Ocultas se UtilizaModuloSafraMisto for verdadeiro. (ServicoCampoCadastro.aspx.cs - ConfigurarCampos)
  • Campo “Tipo Avaliação”: Habilitado e obrigatório se “Permite Avaliação?” for “Sim” e UtilizaModuloSafraMisto for falso. Desabilitado e não obrigatório caso contrário. (ServicoCampoCadastro.aspx.cs - ConfigurarCamposPorPermiteAvaliacao)
  • Campos “Percentual Avaliação” e “Número Ordem Cálculo Avaliação”: Habilitados e obrigatórios se “Permite Avaliação?” for “Sim” e txtServicoCampoSuperior tiver um valor selecionado. Desabilitados e não obrigatórios caso contrário. (ServicoCampoCadastro.aspx.cs - ConfigurarCamposPorPermiteAvaliacao)
  • Campo “Utiliza BAG”:
  • Se o “Tipo Serviço” não for “Atividade”, o campo é desabilitado e seu valor é nulo.
  • Se o “Tipo Serviço” for “Atividade” e não houver “Serviço Campo Superior”, o campo é habilitado e obrigatório.
  • Se o “Tipo Serviço” for “Atividade” e houver um “Serviço Campo Superior”, o campo é desabilitado e seu valor é preenchido com a informação do serviço macro (FlagUtilizaBag do serviço superior). (ServicoCampoCadastro.aspx.cs - ConfiguracaoCampoUtilizaBag)
  • Campo “Utiliza Área Cultivada”: Habilitado e obrigatório se o “Tipo Serviço” for “Atividade” e não houver “Serviço Campo Superior”. (ServicoCampoCadastro.aspx.cs - ConfiguracaoCampoUtilizaAreaCultivada)
  • Campos “Solicitar Observação”, “Descontar Bônus”, “Divisão Bônus”: Habilitados se o “Tipo Serviço” for “Ocorrência”. (ServicoCampoCadastro.aspx.cs - lsTipoServico_ValueChanged)
  • Campo “Divisão Bônus”: Visível se o NomeCentroServico for “syngenta`. (ServicoCampoCadastro.aspx.cs - ConfigurarCampos)
  • Campo “Necessita Aprovação?”: Se “Permite Avaliação?” for “Sim”, o campo é preenchido com “Sim” e desabilitado. Caso contrário, é habilitado. (ServicoCampoCadastro.aspx.cs - ConfigurarCampoNecessitaAvaliacao)
  • Botão “Salvar”: Desabilitado se o usuário não tiver a permissão ServicoCampo.SalvarServicoCampo. (ServicoCampoCadastro.aspx.cs - ConfigurarPermissoesTela)
  • Botão “Excluir” na Grid: Desabilitado se o usuário não tiver a permissão ServicoCampo.ExcluirServicoCampo. (ServicoCampoCadastro.aspx.cs - gvwServicoCampo_RowDataBound)
  • Campo Cultura: Desabilitado quando a tela está em modo de edição (IdServicoCampo.HasValue). (ServicoCampoCadastro.aspx.cs - PreencherCampos)

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

  • A exclusão de um serviço de campo é precedida por diversas validações de vínculo (sindicato, realizado, ocorrência, avaliação, outro serviço de campo, serviço individual desconsiderado). Se qualquer uma dessas validações falhar, a exclusão é impedida e uma mensagem de erro é exibida. (ServicoCampoCadastro.aspx.cs - ValidarExcluir)
  • Ao excluir, o Idf_Usuario_Gerador é atualizado antes da exclusão lógica do registro na tabela TAB_Servico_Campo. (ServicoCampo_P1.cs - Delete)

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

  • Ao salvar um serviço de campo, se lsCultura.ValorInt for 0 (Todas), o serviço é cadastrado para todas as culturas ativas (onde FlagInativo é falso e IdCulturaCampo > 0). Caso contrário, é cadastrado apenas para a cultura selecionada. (ServicoCampoCadastro.aspx.cs - Salvar)
  • Se o serviço de campo for um serviço superior (macro) e tiver serviços micros associados, ao salvar, as propriedades FlagUtilizaBag e FlagUtilizaAreaCultivada dos serviços micros são atualizadas com os valores do serviço macro. (ServicoCampo_P2.cs - AtualizaServicosCamposMicro, Save)
  • O Idf_Usuario_Gerador e Dta_Cadastro (para inserção) ou Dta_Alteracao (para atualização) são preenchidos automaticamente com o usuário logado e a data/hora atual. (ServicoCampo_P1.cs - SetParameters)
  • A lógica de salvar envolve transações de banco de dados para garantir a integridade dos dados. Em caso de erro, a transação é revertida. (ServicoCampo_P1.cs - Insert, Update, Save)
  • Ao salvar, se o IdServicoCampo não tiver valor, um novo objeto ServicoCampo é instanciado. Caso contrário, o objeto existente é carregado. (ServicoCampoCadastro.aspx.cs - Salvar)

5.5. Outras Regras Específicas da Tela

  • Nomenclatura de Campos e Grid: Os rótulos de alguns campos e os cabeçalhos de colunas da grid são configurados dinamicamente com base em recursos de texto e no NomeCentroServico (ex: “syngenta”). (ServicoCampoCadastro.aspx.cs - ConfigurarLabel)
  • Valor Padrão para “Utiliza Área Cultivada” (Módulo Safra Misto): Se o “Módulo Safra Misto” estiver habilitado e o serviço for macro (!txtServicoCampoSuperior.IdServicoCampoSelecionado.HasValue) e do tipo “Atividade” (lsTipoServico.ValorInt == 1), o valor padrão de “Utiliza Área Cultivada” é definido como “Não” para culturas com IdCulturaCampo 1, 2, 3 e “Sim” para as demais. Se for um serviço micro, o valor é herdado do serviço superior. (ServicoCampoCadastro.aspx.cs - ConfiguraValorDefaultCampoAreaMedidaModuloMisto)
  • Redirecionamento para “Valores”: O clique na aba “Valores” redireciona o usuário para a tela ServicoCampoValoresCadastro.aspx. (ServicoCampoCadastro.aspx.cs - btlValores_Click)
  • Mensagens de Erro Personalizadas: As mensagens de erro são definidas dinamicamente com base no UtilizaModuloSafraMisto e no tipo de validação, buscando os textos em arquivos de recursos específicos (MensagemErroModuloSafraMisto ou MensagemErroModuloSafra). (ServicoCampoCadastro.aspx.cs - DefinirMensagemErroModuloSafra)
  • Redirecionamento de Sessão Inválida: Se houver inconsistência no Centro de Serviço, Empresa ou Usuário logados (verificado no OnLoad da BasePageWebFoPag), o usuário é redirecionado para Default.aspx. (BasePageWebFoPag.cs - OnLoad)
  • Proteção contra ViewState MAC Failed: A BasePageWebFoPag inclui tratamento para HttpException com “Validation of viewstate MAC failed”, redirecionando para uma página de erro configurada. (BasePageWebFoPag.cs - OnError)
  • Registro Automático de JS/CSS: A BasePageWebFoPag tenta registrar automaticamente arquivos .js e .css correspondentes à página atual, se existirem. (BasePageWebFoPag.cs - RegistrarJsAutomatico, RegistrarCssAutomatico)

6. Fluxos Principais

6.1. Inicialização da Tela

  1. Page_Load:
  • Verifica se é um PostBack. Se não for, chama Inicializar().
  1. Inicializar():
  • ConfigurarPermissoesTela(): Carrega as permissões do usuário logado para a categoria ServicoCampo e desabilita o botão “Salvar” se a permissão SalvarServicoCampo não estiver presente. Redireciona para UrlAcessoNegado se a permissão VisualizarServicoCampo não estiver presente.
  • ConfigurarPropriedadesPorParametroSessaoComponenteCadastro(): Verifica se há um IdServicoCampo passado via ViewState (parâmetro de redirecionamento de componente) e o atribui à propriedade IdServicoCampo da tela.
  • CarregarParametros(): Carrega os valores dos parâmetros ServicoCampoRealizadoIndividual, HabilitaCampoNecessitaAprovacao e UtilizaModuloSafraMisto do BLL Parametro e ParametroEspecifico.
  • txtServicoCampoSuperior.IdEmpresa = BasePageWebFoPag.IdEmpresaLogada(): Define a empresa para o componente de localização de serviço de campo superior.
  • ConfigurarLabel(): Ajusta os textos dos rótulos e cabeçalhos da grid com base em recursos e no NomeCentroServico.
  • ConfigurarCampos(): Define a visibilidade de abas e campos com base nos parâmetros carregados (ex: abaValores, divNecessitaAprovacao, divTipoAvaliacao, divUtilizaBag).
  • CarregarListasSugestoes(): Preenche os ListaSugestoes com dados de CulturaCampo, TipoServicoCampo, Flag e TipoAvaliacaoCampo.
  • CarregaGridServicos(): Carrega a grid de serviços de campo.
  • PreencherCampos(): Se IdServicoCampo estiver preenchido, carrega os dados do serviço de campo para edição. Caso contrário, chama LimparCampos().

6.2. Salvar Serviço de Campo

  1. btnSalvar_Click:
  • Verifica a permissão ServicoCampo.SalvarServicoCampo. Se o usuário não tiver, exibe mensagem de aviso.
  • Chama ValidarSalvar(). Se a validação for bem-sucedida, chama Salvar().
  • Se Salvar() for bem-sucedido, chama LimparCampos(), CarregaGridServicos() e exibe mensagem de sucesso.
  1. ValidarSalvar():
  • Executa todas as validações de campos e regras de negócio descritas na seção 5.1.
  • Retorna true se todas as validações passarem, false caso contrário, exibindo a mensagem de erro apropriada.
  1. Salvar():
  • Cria ou carrega um objeto ServicoCampo.
  • Popula as propriedades do objServicoCampo com os valores dos campos da tela.
  • Se lsCultura.ValorInt for 0 (Todas), itera sobre todas as culturas ativas e salva um ServicoCampo para cada uma.
  • Se houver ServicoCampoSuperior e serviços micros, atualiza FlagUtilizaBag e FlagUtilizaAreaCultivada dos micros.
  • Chama objServicoCampo.Save(), que internamente gerencia a inserção ou atualização no banco de dados, incluindo o tratamento de transações.
  • Em caso de exceção, exibe mensagem de erro.

6.3. Excluir Serviço de Campo

  1. gvwServicoCampo_RowCommand (para CommandName == "Excluir"):
  • Obtém o IdServicoCampo do CommandArgument.
  • Chama Excluir(IdfServicoCampo).
  • Se a exclusão for bem-sucedida, chama LimparCampos(), CarregaGridServicos() e exibe mensagem de sucesso.
  1. Excluir(int IdfServicoCampo):
  • Chama ValidarExcluir(IdfServicoCampo). Se a validação falhar, retorna false.
  • Chama ServicoCampo.Delete(IdfServicoCampo).
  • Em caso de exceção, exibe mensagem de erro.
  1. ValidarExcluir(int pIdServicoCampo):
  • Executa todas as validações de exclusão descritas na seção 5.1 (vínculos com sindicato, realizado, ocorrência, avaliação, outro serviço de campo, serviço individual desconsiderado).
  • Retorna true se todas as validações passarem, false caso contrário, exibindo a mensagem de erro apropriada.

6.4. Limpar Campos

  1. btnLimpar_Click:
  • Redireciona para a própria tela ServicoCampoCadastro.aspx, efetivamente limpando todos os campos.
  1. LimparCampos():
  • Define IdServicoCampo como nulo.
  • Limpa o texto ou valor de todos os campos de entrada e ListaSugestoes.
  • Chama ConfigurarCamposPorPermiteAvaliacao() e ConfiguracaoCampoUtilizaAreaCultivada() para redefinir o estado inicial dos campos.

6.5. Pesquisar na Grid

  1. btnPesquisar_Click:
  • Chama CarregaGridServicos().
  1. gvwServicoCampo_CarregarGrid:
  • Chama CarregaGridServicos().
  1. CarregaGridServicos():
  • Obtém os parâmetros de pesquisa (CodigoEmpresa, txtPesquisar.Text, ordenação e paginação da grid).
  • Chama ServicoCampo.Listar() para obter os dados paginados.
  • Chama UIHelper.CarregarGridView() para preencher a grid.

6.6. Navegação para Aba Valores

  1. btlValores_Click:
  • Redireciona para a tela ServicoCampoValoresCadastro.aspx.

7. Integrações e Dependências

7.1. Classes BLL e Service utilizadas

  • Employer.Plataforma.Web.WebFoPag.Code.BasePageWebFoPag (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\Code\BasePageWebFoPag.cs)
  • Propriedades Relevantes:
  • IdEmpresaLogada: Retorna o ID da empresa logada na sessão.
  • CodigoUsuarioLogado: Retorna o código do usuário logado na sessão.
  • CodigoEmpresa: Retorna o código da empresa selecionada pelo usuário.
  • NomeCentroServico: Retorna o nome do centro de serviço selecionado pelo usuário.
  • Cultura: Propriedade que acessa a cultura definida na MasterPage.
  • UtilizarLotacaoTomador: Indica se a empresa utiliza lotação e tomador, recuperando o valor do parâmetro HabilitarLotacao.
  • UtilizaRateio: Indica se a empresa utiliza rateio, recuperando o valor do parâmetro CentroServicoUtilizaRateio.
  • NomeNivelGenerico: Recupera o nome do parâmetro NivelGenerico do ParametroEspecifico.
  • NumeroCNPJ: Retorna o CNPJ da empresa logada, carregando o objeto Empresa se necessário.
  • EsocialHabilitado: Retorna um objeto EmpregadorDTO indicando se o eSocial está habilitado para a empresa, buscando o parâmetro eSocialSimplificado e chamando um serviço externo.
  • Métodos Chamados:
  • IdEmpresaLogada(): Utilizado para obter o ID da empresa logada.
  • ExibirMensagem(string mensagem, TipoMensagem tipo): Exibe mensagens ao usuário através da MasterPage.
  • ExibirMensagem(string mensagem, TipoMensagem tipo, int tempoOcultar): Exibe mensagens ao usuário com tempo de ocultação.
  • GetLabelTextResource(string Label): Recupera textos de recursos de acordo com a cultura e o centro de serviço.
  • RecuperarMensagemErroSql(SqlException ex, out string mensagem): Recupera mensagens de erro SQL.
  • IdUsuario(): Retorna o ID do usuário logado via AJAX.
  • IdEmpresa(): Retorna o ID da empresa logada via AJAX.
  • RecuperarNomeUsuarioLogado(): Recupera o nome completo do usuário logado.
  • RecuperarLogoRelatorioEmpresaLogada(): Retorna o caminho da logo da empresa para relatórios.
  • AtualizarStatusPeriodoFilial(): Atualiza o status do período da filial na MasterPage.
  • IdUsuarioLogado(): Retorna o ID do usuário logado (estático).
  • IdEmpresaLogada(): Retorna o ID da empresa logada (estático).
  • RedirecionarRecalculoPeriodoAquisitivo(Empregado objEmpregado, string url, bool aux): Recalcula períodos aquisitivos e redireciona.
  • PrevenirDuploClick(WebControl control, Page page): Previne duplo clique em controles.
  • CarregarListaEnum<t>(): Carrega um dicionário com base em um enum.
  • FormatarHora(object pMinutos, bool retirarPontos): Formata minutos para HH:mm.
  • ConverterMinutos(string pHora): Converte HH:mm para minutos.
  • CalcularDuracaoIntervalo(string horaInicio, string horaFim, bool retirarPontos): Calcula duração de intervalo.
  • FormatarDiaSemana(object diaSemana): Formata o dia da semana.
  • ConcatParamEmployerPrintDesktop(string pFileName): Concatena parâmetros para impressão.
  • Base64Encode(string key): Codifica string em Base64.
  • Base64Decode(string key): Decodifica string de Base64.
  • eSocialGambiarraIEGE(Dictionary<TipoLayout, string> identificadores): Lógica específica para eSocial IEGE.
  • MostrarModalEsocial(Dictionary<TipoLayout, string> identificadores): Exibe modal do eSocial.
  • MostrarModalEsocialImportacao(): Exibe modal de importação do eSocial.
  • MostrarModalEsocialConfiguracao(): Exibe modal de configuração do eSocial.
  • MostrarModalEsocialEventos(): Exibe modal de eventos do eSocial.
  • MostrarModalEsocialRelatorios(): Exibe modal de relatórios do eSocial.
  • RetornarNrInscricaoCompleto(string nrInscricaoEmpregador, TipoInscricaoEmpregador tpInsc): Formata número de inscrição do eSocial.
  • Employer.Plataforma.BLL.CulturaCampo (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CulturaCampo_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\CulturaCampo_P2.cs)
  • Propriedades Relevantes:
  • IdCulturaCampo: Identificador da cultura do campo.
  • DescricaoCulturaCampo: Descrição da cultura do campo.
  • FlagInativo: Indica se a cultura está inativa.
  • Métodos Chamados:
  • Listar(): Retorna uma lista de todas as culturas de campo.
  • ListarAtivos(): Retorna um IDataReader com as culturas de campo ativas.
  • Save(): Salva (insere ou atualiza) uma instância de CulturaCampo.
  • Delete(int idCulturaCampo): Exclui uma cultura de campo pelo ID.
  • LoadObject(int idCulturaCampo): Carrega uma instância de CulturaCampo pelo ID.
  • CompleteObject(): Completa os dados da instância atual de CulturaCampo.
  • Employer.Plataforma.BLL.Parametro (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Parametro_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Parametro_P2.cs)
  • Propriedades Relevantes:
  • IdParametro: Identificador do parâmetro.
  • ValorParametro: Valor do parâmetro.
  • Métodos Chamados:
  • RecuperaValorParametro(Enumeradores.NomeParametro idParametro): Recupera o valor de um parâmetro pelo seu enumerador.
  • RecuperaValorParametro(Enumeradores.NomeParametro pIdParametro, int pIdEmpresa, int? pIdFilial, int? pIdContrato, int? pIdSindicato, int? pIdCentroResultado, SqlTransaction trans = null): Recupera o valor de um parâmetro específico por empresa, filial, contrato, sindicato e centro de resultado.
  • ListarParametros(List<Enumeradores.NomeParametro> idsParametros): Retorna um dicionário de parâmetros.
  • Save(): Salva (insere ou atualiza) uma instância de Parametro.
  • Employer.Plataforma.BLL.ParametroEspecifico (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ParametroEspecifico_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ParametroEspecifico_P2.cs)
  • Propriedades Relevantes:
  • IdParametroEspecifico: Identificador do parâmetro específico.
  • Parametro: Objeto Parametro associado.
  • ValorParametro: Valor do parâmetro específico.
  • Empresa: Objeto Empresa associado.
  • Filial: Objeto Filial associado.
  • Contrato: Objeto Contrato associado.
  • Sindicato: Objeto Sindicato associado.
  • CentroResultado: Objeto CentroResultado associado.
  • Métodos Chamados:
  • RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, CentroResultado objCentroResultado): Recupera o valor de um parâmetro específico.
  • RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, Sindicato objSindicato, CentroResultado objCentroResultado, SqlTransaction trans): Recupera o valor de um parâmetro específico com transação.
  • ExisteParametroEspecificoCadastrado(...): Verifica se um parâmetro específico já está cadastrado.
  • Save(): Salva (insere ou atualiza) uma instância de ParametroEspecifico.
  • Employer.Plataforma.BLL.ServicoCampo (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ServicoCampo_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ServicoCampo_P2.cs)
  • Propriedades Relevantes:
  • IdServicoCampo: Identificador do serviço de campo.
  • Empresa: Objeto Empresa associado.
  • ServicoCampoSuperior: Objeto ServicoCampo pai.
  • NomeServicoCampo: Nome do serviço de campo.
  • CodigoServicoCampo: Código do serviço de campo.
  • FlagPermiteAvaliacao: Indica se permite avaliação.
  • TipoAvaliacaoCampo: Objeto TipoAvaliacaoCampo associado.
  • PercentualAvaliacao: Percentual de avaliação.
  • FlagInativo: Indica se o serviço está inativo.
  • NumeroOrdem: Número de ordem.
  • CulturaCampo: Objeto CulturaCampo associado.
  • TipoServicoCampo: Objeto TipoServicoCampo associado.
  • FlagUtilizaBag: Indica se utiliza BAG.
  • FlagSolicitaObservacao: Indica se solicita observação.
  • FlagUtilizaAreaCultivada: Indica se utiliza área cultivada.
  • FlagDescontarBonus: Indica se desconta bônus.
  • FlagDivisaoBonus: Indica se há divisão de bônus.
  • FlagPagaHoraInItinere: Indica se paga hora in itinere.
  • FlagNecessitaAprovacao: Indica se necessita aprovação.
  • Métodos Chamados:
  • Listar(int pIdEmpresa, string pDescricao, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros): Lista serviços de campo paginados e filtrados.
  • LoadObject(int idServicoCampo): Carrega uma instância de ServicoCampo pelo ID.
  • ValidarNomeServicoCampoJaCadastrado(...): Verifica se o nome do serviço de campo já está cadastrado.
  • ValidarCodigoServicoCampoJaCadastrado(...): Verifica se o código do serviço de campo já está cadastrado.
  • ValidarNumeroOrdemServicoCampoJaCadastrado(...): Verifica se o número de ordem já está cadastrado para o serviço superior.
  • ValidarPercentualTotalServicoCampoSuperior(...): Verifica se a soma dos percentuais de avaliação excede 100%.
  • ValidarServicoCampoJaVinculadoSindicato(...): Verifica se o serviço de campo está vinculado a um sindicato.
  • ValidarServicoCampoJaAvaliado(...): Verifica se o serviço de campo já foi avaliado.
  • ValidarServicoCampoJaRealizado(...): Verifica se o serviço de campo já foi realizado.
  • ValidarServicoCampoOcorrenciaJaLancado(...): Verifica se o serviço de campo já possui ocorrências lançadas.
  • ValidarServicoCampoJaVinculadoOutroServicoCampo(...): Verifica se o serviço de campo está vinculado a outro serviço de campo.
  • Delete(int idServicoCampo): Exclui um serviço de campo.
  • Save(): Salva (insere ou atualiza) uma instância de ServicoCampo.
  • ListarPorServicoCampoSuperior(int IdfServicoCampoSuperior): Lista serviços de campo por serviço superior.
  • ListarServicoCamposMicros(int IdfServicoCampo): Lista serviços de campo micros.
  • Employer.Plataforma.BLL.ServicoCampoIndividualDesconsiderado (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ServicoCampoIndividualDesconsiderado.cs)
  • Métodos Chamados:
  • PossuiServicoCampoIndividualDesconsiderado(int? idContratoCooperante, int? idContratoCooperanteSetor, int? idServicoCampo, int? idServicoCampoValor): Verifica se existe um serviço de campo individual desconsiderado para os parâmetros fornecidos.
  • Employer.Plataforma.BLL.TipoAvaliacaoCampo (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\TipoAvaliacaoCampo_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\TipoAvaliacaoCampo_P2.cs)
  • Propriedades Relevantes:
  • IdTipoAvaliacaoCampo: Identificador do tipo de avaliação de campo.
  • DescricaoTipoAvaliacaoCampo: Descrição do tipo de avaliação de campo.
  • FlagInativo: Indica se o tipo de avaliação está inativo.
  • Métodos Chamados:
  • ListarAtivos(): Retorna um IDataReader com os tipos de avaliação de campo ativos.
  • Listar(): Retorna uma lista de todos os tipos de avaliação de campo.
  • Save(): Salva (insere ou atualiza) uma instância de TipoAvaliacaoCampo.
  • Delete(int idTipoAvaliacaoCampo): Exclui um tipo de avaliação de campo pelo ID.
  • LoadObject(int idTipoAvaliacaoCampo): Carrega uma instância de TipoAvaliacaoCampo pelo ID.
  • CompleteObject(): Completa os dados da instância atual de TipoAvaliacaoCampo.
  • Employer.Plataforma.Web.Code.UIHelper (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.Code\UIHelper.cs)
  • Métodos Chamados:
  • CarregarGridView(EmployerGrid gv, DataTable dataSource, int itemCount): Carrega um EmployerGrid com um DataTable.
  • ConfiguraNomenclaturaCampo(Control control, string nomeCampo, bool bMensagensErro): Configura o texto de rótulos e mensagens de erro para controles.
  • ConfiguraNomenclaturaGrid(EmployerGrid grid, string nomePesquisa, string nomeCampo): Configura o cabeçalho de colunas de um EmployerGrid.
  • LimparSession(HttpSessionState session, StateBag viewState, Type EnumType): Limpa variáveis de sessão temporárias e as move para o ViewState.
  • CarregarListaSugestao(...): Métodos sobrecarregados para carregar o componente ListaSugestoes.
  • RecuperarMensagemErroSql(...): Recupera mensagens de erro SQL.
  • RetornarMensagem(ResourceManager resource, string idMsg): Retorna mensagens de recursos.
  • AjustarString(string entrada): Ajusta strings (trim, remove espaços duplos, capitaliza primeira letra, trata preposições e siglas, números romanos).
  • SetImagemOrdenacao(...): Adiciona imagem de ordenação a colunas de GridView.
  • GetIndiceColunaOrdenar(...): Retorna o índice da coluna de ordenação.
  • RedimensionaFormataTextoString(...): Redimensiona e formata strings.
  • RemoveCaracteresEspeciais(string str): Remove caracteres especiais de uma string.
  • RemoverAcentos(string texto): Remove acentos de uma string.
  • ValidateFocus(WebControl controle): Adiciona script para focar no primeiro campo inválido.
  • PrevenirDuploClick(WebControl control, Page page, String validationGroup = null): Previne duplo clique em botões, com validação de grupo opcional.
  • LoadListaSugestoes(...): Métodos sobrecarregados para carregar e manter o estado de ListaSugestoes.
  • ValidaChavesSession(): Valida chaves de sessão.
  • TrataErroReportViewer(HttpContext ctx): Trata erros de sessão expirada no ReportViewer.
  • Employer.Plataforma.BLL.Usuario (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P2.cs)
  • Propriedades Relevantes:
  • IdUsuario: Identificador do usuário.
  • NumeroCPF: CPF do usuário.
  • NumeroCPFFormatado: CPF formatado.
  • Métodos Chamados:
  • CarregarPermissoes(Usuario objUsuario, CategoriaPermissao categoriaPermissao): Carrega as permissões de um usuário para uma categoria específica.
  • LoadObject(int usuario): Carrega uma instância de Usuario pelo ID.
  • CompleteObject(): Completa os dados da instância atual de Usuario.
  • Employer.Plataforma.BLL.Util (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Util.cs)
  • Métodos Chamados:
  • ValidaPermissaoUsuario(List<int> lstPermissoes, int idPermissao): Verifica se o usuário possui uma permissão específica.
  • CamelCase(string texto): Converte uma string para o formato CamelCase, tratando preposições e siglas.
  • ProximoDiaUtil(...): Métodos sobrecarregados para calcular o próximo dia útil.
  • Weekend(DateTime Date): Verifica se uma data é fim de semana.
  • MesAnoCompetencia(DateTime dtaCompetencia, string connectionString): Retorna o mês/ano de competência formatado.
  • QuantidadeDiasUteisNaoUteisMes(DateTime dtaCompetencia, bool flgUteis, string connectionString): Retorna a quantidade de dias úteis ou não úteis no mês.
  • AliquotasInss(DateTime dta, string connectionString): Retorna as alíquotas de INSS.
  • FaixaInss(DateTime dta, string connectionString): Retorna as faixas de INSS.
  • MapearPropriedadesObjeto(...): Mapeia propriedades entre objetos.
  • SalarioMinimoNacional(string connectionString): Retorna o salário mínimo nacional.
  • RecuperarCentroResultadoAnalitico(...): Recupera centros de resultado analíticos.
  • DataTablePivot(...): Pivoteia uma DataTable.
  • ValorPorExtenso(...): Converte valores numéricos para extenso.
  • Employer.Plataforma.BLL.Empresa (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)
  • Propriedades Relevantes:
  • IdEmpresa: Identificador da empresa.
  • GrupoEconomico: Objeto GrupoEconomico associado.
  • NumeroCNPJ: CNPJ da empresa.
  • NumeroCPF: CPF da empresa.
  • RazaoSocial: Razão social da empresa.
  • FlagInativo: Indica se a empresa está inativa.
  • CodigoEmpresa: Código da empresa.
  • TipoEstruturaGerencial: Tipo de estrutura gerencial.
  • CNPJ: CNPJ formatado.
  • DescricaoCompleta: Descrição completa da empresa (CNPJ/CEI - Razão Social).
  • EntidadeFilantropica: Indica se é entidade filantrópica.
  • Métodos Chamados:
  • LoadObject(int idEmpresa): Carrega uma instância de Empresa pelo ID.
  • Save(): Salva (insere ou atualiza) uma instância de Empresa.
  • Delete(int idEmpresa): Exclui uma empresa.
  • RecuperarProximaMatricula(SqlTransaction trans, out int pNumeroMatricula): Recupera o próximo número de matrícula disponível.
  • RecuperarProximaFichaRegistro(SqlTransaction trans, out int pNumeroFichaRegistro): Recupera o próximo número de ficha de registro disponível.
  • AtualizarFichaSemente(SqlTransaction trans, Int64 NumSementeFicha): Atualiza a semente da ficha de registro.
  • SelecionaInformacoesFilialEmpresa(int idEmpresa, int? idFilial, int? idBanco): Seleciona informações de filial e empresa.
  • VerificaEmpresaPrestadora(int idEmpresa): Verifica se a empresa é prestadora.
  • CarregarProdutorRuralEmpresaPeriodo(...): Carrega informações de produtor rural.
  • SalvarFlagProdutorRural(...): Salva a flag de produtor rural.
  • CompleteAuditoria(): Completa dados para auditoria.
  • AtualizarSemente(SqlTransaction trans, int numSementeReferencia): Atualiza a semente de matrícula.
  • UpdateEmpregados(int? pIdFilial, SqlTransaction trans): Atualiza empregados da filial alterada.
  • Employer.Plataforma.BLL.TipoServicoCampo (C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\TipoServicoCampo_P1.cs, C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\TipoServicoCampo_P2.cs)
  • Propriedades Relevantes:
  • IdTipoServicoCampo: Identificador do tipo de serviço de campo.
  • DescricaoTipoServicoCampo: Descrição do tipo de serviço de campo.
  • FlagInativo: Indica se o tipo de serviço está inativo.
  • Métodos Chamados:
  • ListarAtivos(): Retorna um IDataReader com os tipos de serviço de campo ativos.
  • Listar(): Retorna uma lista de todos os tipos de serviço de campo.
  • Save(): Salva (insere ou atualiza) uma instância de TipoServicoCampo.
  • Delete(int idTipoServicoCampo): Exclui um tipo de serviço de campo pelo ID.
  • LoadObject(int idTipoServicoCampo): Carrega uma instância de TipoServicoCampo pelo ID.
  • CompleteObject(): Completa os dados da instância atual de TipoServicoCampo.

7.2. Stored Procedures chamadas

  • SPRECUPERARLOGORELATORIOEMPRESALOGADA (Employer.Plataforma.Web.WebFoPag.Code.BasePageWebFoPag.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Recupera o identificador da imagem da logo da empresa para relatórios.
  • INSERT INTO plataforma.TAB_Cultura_Campo (CulturaCampo_P1.cs)
  • Parâmetros: @Idf_Cultura_Campo, @Des_Cultura_Campo, @Dta_Cadastro, @Flg_Inativo
  • Propósito: Insere um novo registro na tabela plataforma.TAB_Cultura_Campo.
  • UPDATE plataforma.TAB_Cultura_Campo (CulturaCampo_P1.cs)
  • Parâmetros: @Des_Cultura_Campo, @Dta_Cadastro, @Flg_Inativo, @Idf_Cultura_Campo
  • Propósito: Atualiza um registro existente na tabela plataforma.TAB_Cultura_Campo.
  • DELETE FROM plataforma.TAB_Cultura_Campo (CulturaCampo_P1.cs)
  • Parâmetros: @Idf_Cultura_Campo
  • Propósito: Exclui um registro da tabela plataforma.TAB_Cultura_Campo.
  • SELECT * FROM plataforma.TAB_Cultura_Campo (CulturaCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Seleciona todos os registros da tabela plataforma.TAB_Cultura_Campo.
  • SELECT * FROM plataforma.TAB_Cultura_Campo WHERE Idf_Cultura_Campo = @Idf_Cultura_Campo (CulturaCampo_P1.cs)
  • Parâmetros: @Idf_Cultura_Campo
  • Propósito: Seleciona um registro da tabela plataforma.TAB_Cultura_Campo pelo seu identificador.
  • SQL inline para paginação de CulturaCampo (CulturaCampo_P1.cs)
  • Parâmetros: @colunaOrdenacao, @direcaoOrdenacao, @paginaCorrente, @tamanhoPagina
  • Propósito: Retorna uma consulta paginada de culturas de campo.
  • SELECT COUNT(*) FROM (…) AS temp (CulturaCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o total de registros para a paginação de culturas de campo.
  • SELECT * FROM plataforma.TAB_Cultura_Campo WHERE Flg_Inativo = 0 (CulturaCampo_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Lista todas as culturas de campo que estão ativas.
  • INSERT INTO TAB_Parametro (Parametro_P1.cs)
  • Parâmetros: @Idf_Parametro, @Vlr_Parametro
  • Propósito: Insere um novo registro na tabela TAB_Parametro.
  • UPDATE TAB_Parametro (Parametro_P1.cs)
  • Parâmetros: @Vlr_Parametro, @Idf_Parametro
  • Propósito: Atualiza um registro existente na tabela TAB_Parametro.
  • DELETE FROM TAB_Parametro (Parametro_P1.cs)
  • Parâmetros: @Idf_Parametro
  • Propósito: Exclui um registro da tabela TAB_Parametro.
  • SELECT * FROM TAB_Parametro WHERE Idf_Parametro = @Idf_Parametro (Parametro_P1.cs)
  • Parâmetros: @Idf_Parametro
  • Propósito: Seleciona um registro da tabela TAB_Parametro pelo seu identificador.
  • SQL inline para paginação de Parametro (Parametro_P1.cs)
  • Parâmetros: @colunaOrdenacao, @direcaoOrdenacao, @paginaCorrente, @tamanhoPagina
  • Propósito: Retorna uma consulta paginada de parâmetros.
  • SELECT COUNT(*) FROM (…) AS temp (Parametro_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o total de registros para a paginação de parâmetros.
  • SPSELECTPAG (Parametro_P2.cs)
  • Parâmetros: @CurrentPage, @PageSize, @SortExpression, @WhereExpression
  • Propósito: Consulta paginada de parâmetros.
  • SPSELECTPENDENTE (Parametro_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o número de parâmetros pendentes.
  • SELVALORPARAMETROPORID (Parametro_P2.cs)
  • Parâmetros: @Idf_Parametro
  • Propósito: Recupera o valor de um parâmetro, priorizando TAB_Parametro sobre plataforma.TAB_Parametro_Plataforma.
  • SELVALORPARAMETROPLATAFORMAPORID (Parametro_P2.cs)
  • Parâmetros: @Idf_Parametro
  • Propósito: Recupera o valor de um parâmetro da tabela plataforma.TAB_Parametro_Plataforma.
  • TAB_SF_Parametro_Especifico (Parametro_P2.cs)
  • Parâmetros: @pIdParametro, @pIdEmpresa, @pIdFilial, @pIdContrato, @pIdSindicato, @pIdCentroResultado
  • Propósito: Função de tabela que retorna o valor de um parâmetro específico com base em diversos filtros.
  • TAB_SF_Parametros_Especificos (Parametro_P2.cs)
  • Parâmetros: @ListaIdParametros, @pIdEmpresa, @pIdFilial, @pIdContrato, @pIdSindicato, @pIdCentroResultado
  • Propósito: Função de tabela que retorna múltiplos parâmetros específicos.
  • INSERT INTO TAB_Parametro_Especifico (ParametroEspecifico_P1.cs)
  • Parâmetros: @Idf_Parametro_Especifico (OUTPUT), @Idf_Parametro, @Idf_Tipo_Valor, @Vlr_Parametro, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Flg_Validado, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Sindicato, @Idf_Centro_Resultado, @Des_Verbas_Informacao
  • Propósito: Insere um novo registro na tabela TAB_Parametro_Especifico.
  • UPDATE TAB_Parametro_Especifico (ParametroEspecifico_P1.cs)
  • Parâmetros: @Idf_Parametro, @Idf_Tipo_Valor, @Vlr_Parametro, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Flg_Validado, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Sindicato, @Idf_Centro_Resultado, @Des_Verbas_Informacao, @Idf_Parametro_Especifico
  • Propósito: Atualiza um registro existente na tabela TAB_Parametro_Especifico.
  • UPDATE TAB_Parametro_Especifico SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Parametro_Especifico = @Idf_Parametro_Especifico ; DELETE FROM TAB_Parametro_Especifico (ParametroEspecifico_P1.cs)
  • Parâmetros: @Idf_Usuario_Gerador, @Idf_Parametro_Especifico
  • Propósito: Atualiza o usuário gerador e exclui um registro da tabela TAB_Parametro_Especifico.
  • SELECT * FROM TAB_Parametro_Especifico WHERE Idf_Parametro_Especifico = @Idf_Parametro_Especifico (ParametroEspecifico_P1.cs)
  • Parâmetros: @Idf_Parametro_Especifico
  • Propósito: Seleciona um registro da tabela TAB_Parametro_Especifico pelo seu identificador.
  • SQL inline para paginação de ParametroEspecifico (ParametroEspecifico_P1.cs)
  • Parâmetros: @colunaOrdenacao, @direcaoOrdenacao, @paginaCorrente, @tamanhoPagina
  • Propósito: Retorna uma consulta paginada de parâmetros específicos.
  • SELECT COUNT(*) FROM (…) AS temp (ParametroEspecifico_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o total de registros para a paginação de parâmetros específicos.
  • SELNATUREZASPERMITIDASINSS15E16 (ParametroEspecifico_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Seleciona as descrições de verbas de informação para naturezas permitidas INSS 15 e 16.
  • SPEXISTEPARAMETROESPECIFICOCADASTRADO (ParametroEspecifico_P2.cs)
  • Parâmetros: @Idf_Parametro, @Idf_Parametro_Especifico, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Centro_Resultado, @Idf_Sindicato
  • Propósito: Verifica se já existe um parâmetro específico cadastrado com os valores fornecidos.
  • SPSELPARAMENTROESPECIFICO (ParametroEspecifico_P2.cs)
  • Parâmetros: @Idf_Parametro, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Sindicato, @Idf_Centro_Resultado
  • Propósito: Seleciona um parâmetro específico com base em diversos filtros.
  • SQL inline para RecuperarParametroEspecificoEmpresa (ParametroEspecifico_P2.cs)
  • Parâmetros: @Idf_Parametro, @Idf_Empresa
  • Propósito: Recupera um parâmetro específico considerando somente a empresa.
  • SQL inline para RecuperarParametroEspecificoEmpregado (ParametroEspecifico_P2.cs)
  • Parâmetros: @Idf_Parametro, @Idf_Empresa, @Idf_Filial, @Idf_Contrato
  • Propósito: Recupera um parâmetro específico considerando empregado (empresa, filial, contrato).
  • INSERT INTO TAB_Servico_Campo (ServicoCampo_P1.cs)
  • Parâmetros: @Idf_Servico_Campo (OUTPUT), @Idf_Empresa, @Idf_Servico_Campo_Superior, @Nme_Servico_Campo, @Cod_Servico_Campo, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Prc_Avaliacao, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Num_Ordem, @Idf_Cultura_Campo, @Idf_Tipo_Servico_Campo, @Flg_Utiliza_Bag, @Flg_SolicitaObservacao, @Flg_Utiliza_Area_Cultivada, @Flg_Descontar_Bonus, @Flg_Divisao_Bonus, @Flg_Paga_Hora_In_Itinere, @Flg_Necessita_Aprovacao
  • Propósito: Insere um novo registro na tabela TAB_Servico_Campo.
  • UPDATE TAB_Servico_Campo (ServicoCampo_P1.cs)
  • Parâmetros: @Idf_Empresa, @Idf_Servico_Campo_Superior, @Nme_Servico_Campo, @Cod_Servico_Campo, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Prc_Avaliacao, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Num_Ordem, @Idf_Cultura_Campo, @Idf_Tipo_Servico_Campo, @Flg_Utiliza_Bag, @Flg_SolicitaObservacao, @Flg_Utiliza_Area_Cultivada, @Flg_Descontar_Bonus, @Flg_Divisao_Bonus, @Flg_Paga_Hora_In_Itinere, @Flg_Necessita_Aprovacao, @Idf_Servico_Campo
  • Propósito: Atualiza um registro existente na tabela TAB_Servico_Campo.
  • UPDATE TAB_Servico_Campo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Servico_Campo = @Idf_Servico_Campo ; DELETE FROM TAB_Servico_Campo (ServicoCampo_P1.cs)
  • Parâmetros: @Idf_Usuario_Gerador, @Idf_Servico_Campo
  • Propósito: Atualiza o usuário gerador e exclui um registro da tabela TAB_Servico_Campo.
  • SELECT * FROM TAB_Servico_Campo (ServicoCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Seleciona todos os registros da tabela TAB_Servico_Campo.
  • SELECT * FROM TAB_Servico_Campo WHERE Idf_Servico_Campo = @Idf_Servico_Campo (ServicoCampo_P1.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Seleciona um registro da tabela TAB_Servico_Campo pelo seu identificador.
  • SQL inline para paginação de ServicoCampo (ServicoCampo_P1.cs)
  • Parâmetros: @colunaOrdenacao, @direcaoOrdenacao, @paginaCorrente, @tamanhoPagina
  • Propósito: Retorna uma consulta paginada de serviços de campo.
  • SELECT COUNT(*) FROM (…) AS temp (ServicoCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o total de registros para a paginação de serviços de campo.
  • SELSERVICOCAMPOPOREMPRESA (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Empresa, @Descricao
  • Propósito: Seleciona serviços de campo por empresa e descrição, incluindo informações de cultura, tipo de serviço e avaliação.
  • SPVALIDARNOMESERVICOCAMPOJACADASTRADO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo, @Idf_Empresa, @Idf_Cultura_Campo, @Nme_Servico_Campo
  • Propósito: Valida se o nome do serviço de campo já está cadastrado para a empresa e cultura.
  • SPVALIDARCODIGOSERVICOCAMPOJACADASTRADO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo, @Idf_Empresa, @Idf_Cultura_Campo, @Cod_Servico_Campo
  • Propósito: Valida se o código do serviço de campo já está cadastrado para a empresa e cultura.
  • SPVALIDARNUMEROORDEMSERVICOCAMPOJACADASTRADO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Empresa, @Idf_Servico_Campo, @Idf_Servico_Campo_Superior, @Num_Ordem
  • Propósito: Valida se o número de ordem já está cadastrado para outro serviço dentro do mesmo serviço superior.
  • SPCARREGARPERCENTUALAVALIACAOSERVICOSUPERIOR (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo, @Idf_Empresa, @Idf_Servico_Campo_Superior, @Idf_Cultura_Campo
  • Propósito: Calcula a soma dos percentuais de avaliação dos serviços de campo filhos de um serviço superior.
  • SPVALIDARSERVICOCAMPOJAVINCULADOSINDICATO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Valida se o serviço de campo está vinculado a um sindicato.
  • SPVALIDARSERVICOCAMPOJAAVALIADO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Valida se o serviço de campo já foi avaliado.
  • SPVALIDARSERVICOCAMPOJAREALIZADO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Valida se o serviço de campo já foi realizado.
  • SPVALIDARSERVICOCAMPOOCORRENCIAJALANCADO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Valida se o serviço de campo já possui ocorrências lançadas.
  • SPVALIDARSERVICOCAMPOJAVINCULADOOUTROSERVICOCAMPO (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Valida se o serviço de campo está vinculado a outro serviço de campo (como superior).
  • SQL inline para ListarParaImportacao (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Lista serviços de campo para importação dinâmica.
  • SQL inline para BuscarServicoCampoPorCodigoEmpresa (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Empresa, @Cod_Servico_Campo, @CulturaCampo
  • Propósito: Busca um serviço de campo pelo código, cultura e empresa.
  • SQL inline para ListarPorEmpresa (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Retorna os serviços de campo de uma empresa, opcionalmente filtrando por ativos/inativos.
  • SQL inline para ListarPorServicoCampoSuperior (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Lista serviços de campo que possuem o mesmo nome de um serviço superior.
  • SQL inline para ListarServicoCampos (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Lista serviços de campo que são filhos de um serviço superior.
  • SQL inline para ListarServicoCamposMicros (ServicoCampo_P2.cs)
  • Parâmetros: @Idf_Servico_Campo
  • Propósito: Lista serviços de campo que são filhos de um serviço superior.
  • SQL inline para BuscaComponentePaginado (ServicoCampo_P2.cs)
  • Parâmetros: @BuscaTexto, @Idf_Empresa, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Idf_Servico_Campo_Superior, @Idf_Cultura_Campo, @Idf_Tipo_Servico_Campo
  • Propósito: Busca serviços de campo paginados para um componente.
  • SQL inline para ListarAutocomplete (ServicoCampo_P2.cs)
  • Parâmetros: @TOP, @BuscaTexto, @Idf_Empresa, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Idf_Servico_Campo_Superior, @Idf_Cultura_Campo, @Idf_Tipo_Servico_Campo
  • Propósito: Lista serviços de campo para autocomplete.
  • SELECT COUNT(Idf_Servico_Campo_Individual_Desconsiderado) FROM TAB_Servico_Campo_Individual_Desconsiderado (ServicoCampoIndividualDesconsiderado.cs)
  • Parâmetros: Nenhum (WHERE clause é construída dinamicamente)
  • Propósito: Conta o número de serviços de campo individuais desconsiderados com base em filtros.
  • INSERT INTO plataforma.TAB_Tipo_Avaliacao_Campo (TipoAvaliacaoCampo_P1.cs)
  • Parâmetros: @Idf_Tipo_Avaliacao_Campo, @Des_Tipo_Avaliacao_Campo, @Dta_Cadastro, @Flg_Inativo
  • Propósito: Insere um novo registro na tabela plataforma.TAB_Tipo_Avaliacao_Campo.
  • UPDATE plataforma.TAB_Tipo_Avaliacao_Campo (TipoAvaliacaoCampo_P1.cs)
  • Parâmetros: @Des_Tipo_Avaliacao_Campo, @Dta_Cadastro, @Flg_Inativo, @Idf_Tipo_Avaliacao_Campo
  • Propósito: Atualiza um registro existente na tabela plataforma.TAB_Tipo_Avaliacao_Campo.
  • DELETE FROM plataforma.TAB_Tipo_Avaliacao_Campo (TipoAvaliacaoCampo_P1.cs)
  • Parâmetros: @Idf_Tipo_Avaliacao_Campo
  • Propósito: Exclui um registro da tabela plataforma.TAB_Tipo_Avaliacao_Campo.
  • SELECT * FROM plataforma.TAB_Tipo_Avaliacao_Campo (TipoAvaliacaoCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Seleciona todos os registros da tabela plataforma.TAB_Tipo_Avaliacao_Campo.
  • SELECT * FROM plataforma.TAB_Tipo_Avaliacao_Campo WHERE Idf_Tipo_Avaliacao_Campo = @Idf_Tipo_Avaliacao_Campo (TipoAvaliacaoCampo_P1.cs)
  • Parâmetros: @Idf_Tipo_Avaliacao_Campo
  • Propósito: Seleciona um registro da tabela plataforma.TAB_Tipo_Avaliacao_Campo pelo seu identificador.
  • SQL inline para paginação de TipoAvaliacaoCampo (TipoAvaliacaoCampo_P1.cs)
  • Parâmetros: @colunaOrdenacao, @direcaoOrdenacao, @paginaCorrente, @tamanhoPagina
  • Propósito: Retorna uma consulta paginada de tipos de avaliação de campo.
  • SELECT COUNT(*) FROM (…) AS temp (TipoAvaliacaoCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o total de registros para a paginação de tipos de avaliação de campo.
  • SELECT * FROM plataforma.TAB_Tipo_Avaliacao_Campo WHERE Flg_Inativo = 0 (TipoAvaliacaoCampo_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Lista todos os tipos de avaliação de campo que estão ativos.
  • SPSELPERMISSOES (Usuario_P2.cs)
  • Parâmetros: @IdF_Usuario, @Pesquisa, @CurrentPage, @PageSize, @SortExpression
  • Propósito: Consulta permissões do usuário em diferentes níveis (grupo econômico, empresa, filial, contrato, centro de resultado), incluindo exceções, com paginação e pesquisa.
  • SPSELPERMISSOESVISUALIZACAOESOCIAL (Usuario_P2.cs)
  • Parâmetros: @IdF_Usuario
  • Propósito: Consulta permissões de visualização do eSocial para o usuário.
  • SPSELECTPAG (Usuario_P2.cs)
  • Parâmetros: @CurrentPage, @PageSize, @SortExpression, @WhereExpression
  • Propósito: Consulta paginada de usuários, incluindo informações da pessoa física associada.
  • SPSELECTUSU (Usuario_P2.cs)
  • Parâmetros: @Nome, @Status
  • Propósito: Seleciona usuários por nome da pessoa física e status de inatividade.
  • CARREGARCPF (Usuario_P2.cs)
  • Parâmetros: @N_CPF, @Status
  • Propósito: Seleciona usuários por CPF e status de inatividade.
  • SELRELATORIOUSUARIOSPORPERFIL (Usuario_P2.cs)
  • Parâmetros: @Idf_Perfil
  • Propósito: Gera um relatório de usuários por perfil, incluindo nome, CPF formatado, e-mail e celular.
  • SPSELECTCPF (Usuario_P2.cs)
  • Parâmetros: @Num_CPF
  • Propósito: Seleciona um usuário pelo número do CPF.
  • SPSELECTCPFS (Usuario_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Seleciona todos os CPFs distintos de usuários.
  • SPSELPERFIL (Usuario_P2.cs)
  • Parâmetros: @Idf_Usuario, @Dta_Periodo
  • Propósito: Seleciona os perfis de um usuário, indicando se o perfil é principal e o período de permissão.
  • SPSELPERFILSISTEMA (Usuario_P2.cs)
  • Parâmetros: @Idf_Usuario, @Dta_Periodo, @Idf_Sistema
  • Propósito: Seleciona os perfis de um usuário para um sistema específico, com período de permissão e indicação de perfil principal.
  • SPSELECTPERMISSOESUSUARIO (Usuario_P2.cs)
  • Parâmetros: @idf_usuario, @Idf_Categoria_Permissao
  • Propósito: Seleciona as permissões de um usuário para uma categoria de permissão específica.
  • SPSELECTCODNOME (Usuario_P2.cs)
  • Parâmetros: @Nme_Pessoa, @Num_CPF
  • Propósito: Seleciona usuários por nome da pessoa física ou CPF.
  • SPSELECTPORNOME (Usuario_P2.cs)
  • Parâmetros: @Nme_Pessoa
  • Propósito: Seleciona usuários por nome da pessoa física.
  • SPCARREGARUSUARIOSFILAATUALIZACAOPONTO (Usuario_P2.cs)
  • Parâmetros: @Num_Tentativas
  • Propósito: Carrega usuários para a fila de integração de ponto, com filtros de tentativas e inatividade.
  • SPVERIFICARFILIAISPONTO (Usuario_P2.cs)
  • Parâmetros: @Num_CPF
  • Propósito: Verifica as filiais de ponto que um usuário tem acesso, considerando diferentes níveis de permissão.
  • SELECTUSUARIOCONTAPAGAR (Usuario_P2.cs)
  • Parâmetros: @Idf_Usuario
  • Propósito: Seleciona informações de usuário para contas a pagar, incluindo CPF formatado e nome.
  • SPRECUPERARFILIAISQUEUSUARIOTEMACESSO (Usuario_P2.cs)
  • Parâmetros: @Idf_Usuario, @Idf_Empresa
  • Propósito: Recupera as filiais que um usuário tem acesso para uma empresa específica.
  • SPSELPERFILSISTEMASENHAMASTER (Usuario_P2.cs)
  • Parâmetros: @Idf_Usuario, @Dta_Periodo, @Idf_Sistema
  • Propósito: Seleciona perfis de sistema com senha master para o usuário.
  • SPSELECTAGRUPAMENTOUSUARIO (Usuario_P2.cs)
  • Parâmetros: @Num_CPF (lista de CPFs)
  • Propósito: Seleciona agrupamento de usuário por CPF, incluindo informações de perfil, grupo econômico, empresa, filial, contrato e centro de resultado.
  • TAB_SF_ProximoDiaUtil (Util.cs)
  • Parâmetros: @Data, @Incremento, @Idf_Estado, @Idf_Cidade
  • Propósito: Função de tabela que calcula o próximo dia útil.
  • TAB_SF_ProximoDiaUtilEspecifico (Util.cs)
  • Parâmetros: @Data, @Incremento, @Idf_Estado, @Idf_Cidade, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Centro_Resultado
  • Propósito: Função de tabela que calcula o próximo dia útil específico com base em diversos filtros.
  • TAB_SF_ProximoDiaUtilEspecificoFDS (Util.cs)
  • Parâmetros: @Data, @Incremento, @Idf_Estado, @Idf_Cidade, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Centro_Resultado, @ContemplaFDS
  • Propósito: Função de tabela que calcula o próximo dia útil específico, com opção de contemplar fins de semana.
  • SQL inline para Weekend (Util.cs)
  • Parâmetros: @PayDay
  • Propósito: Retorna o dia da semana de uma data.
  • SQL inline para ProximoDiaUtilPorEmpregados (Util.cs)
  • Parâmetros: @Lst_Num_Matricula
  • Propósito: Seleciona informações de cidade e estado de empregados.
  • TAB_SF_Split (Util.cs)
  • Parâmetros: @Lst_Num_Matricula, ,
  • Propósito: Função de tabela que divide uma string em uma tabela de valores.
  • SELMESANOCOMPETENCIA (Util.cs)
  • Parâmetros: @Dta
  • Propósito: Retorna o mês e ano de competência formatados.
  • SELDIASUTEIS (Util.cs)
  • Parâmetros: @Dta, @DiasUteis
  • Propósito: Conta a quantidade de dias úteis ou não úteis em um mês.
  • SELALIQUOTASINSS (Util.cs)
  • Parâmetros: @Dta
  • Propósito: Seleciona as alíquotas de INSS vigentes para uma data.
  • SELSALMINNACIONAL (Util.cs)
  • Parâmetros: Nenhum
  • Propósito: Seleciona o valor do salário mínimo nacional vigente.
  • INSERT INTO TAB_Empresa (Empresa_P1.cs)
  • Parâmetros: @Idf_Grupo_Economico, @Num_CNPJ, @Num_CPF, @Raz_Social, @Dta_Fundacao, @Idf_Porte_Empresa, @Idf_Simples, @Vlr_Isencao_Filantropica, @Qtd_Socios, @Idf_Pessoa_Fisica, @Flg_Inativo, @Dta_Cadastro, @Dta_Alteracao, @Num_Semente, @Num_Semente_Ficha, @Cod_Empresa, @Idf_Usuario_Gerador, @Flg_Audita_Fatura, @Flg_Horario_Limite_Faturamento, @Num_Hora_Limite_Faturamento, @Num_Minuto_Limite_Faturamento, @Idf_Tipo_Estrutura_Gerencial, @Dta_Inativacao, @Sig_Empresa, @Idf_Situacao_Cadastral_Fisica, @Idf_Situacao_Cadastral_Juridica, @Idf_Tipo_Acordo_Internacional, @Idf_Tipo_Indicativo_Construtora, @Idf_Tipo_Registro_Eletronico_Empregados, @Idf_Processo_Administrativo_Judicial, @Idf_Tipo_Clafissicacao_Tributaria, @Idf_Tipo_Cooperativa, @Num_SIAFI, @Idf_Classificacao_Economica, @Idf_Indicador_Contribuicao_Substituida, @Vlr_Contribuicao_Mes, @Vlr_Contribuicao_13, @Idf_Empresa (OUTPUT)
  • Propósito: Insere um novo registro na tabela TAB_Empresa.
  • UPDATE TAB_Empresa (Empresa_P1.cs)
  • Parâmetros: @Idf_Grupo_Economico, @Num_CNPJ, @Num_CPF, @Raz_Social, @Dta_Fundacao, @Idf_Porte_Empresa, @Idf_Simples, @Vlr_Isencao_Filantropica, @Qtd_Socios, @Idf_Pessoa_Fisica, @Flg_Inativo, @Dta_Cadastro, @Dta_Alteracao, @Num_Semente, @Num_Semente_Ficha, @Cod_Empresa, @Idf_Usuario_Gerador, @Flg_Audita_Fatura, @Flg_Horario_Limite_Faturamento, @Num_Hora_Limite_Faturamento, @Num_Minuto_Limite_Faturamento, @Idf_Tipo_Estrutura_Gerencial, @Dta_Inativacao, @Sig_Empresa, @Idf_Situacao_Cadastral_Fisica, @Idf_Situacao_Cadastral_Juridica, @Idf_Tipo_Acordo_Internacional, @Idf_Tipo_Indicativo_Construtora, @Idf_Tipo_Registro_Eletronico_Empregados, @Idf_Processo_Administrativo_Judicial, @Idf_Tipo_Clafissicacao_Tributaria, @Idf_Tipo_Cooperativa, @Num_SIAFI, @Idf_Classificacao_Economica, @Idf_Indicador_Contribuicao_Substituida, @Vlr_Contribuicao_Mes, @Vlr_Contribuicao_13, @Idf_Empresa
  • Propósito: Atualiza um registro existente na tabela TAB_Empresa.
  • UPDATE TAB_Empresa SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Empresa = @Idf_Empresa ; DELETE FROM TAB_Empresa (Empresa_P1.cs)
  • Parâmetros: @Idf_Usuario_Gerador, @Idf_Empresa
  • Propósito: Atualiza o usuário gerador e exclui um registro da tabela TAB_Empresa.
  • SELECT * FROM TAB_Empresa WHERE Idf_Empresa = @Idf_Empresa (Empresa_P1.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Seleciona um registro da tabela TAB_Empresa pelo seu identificador.
  • SQL inline para paginação de Empresa (Empresa_P1.cs)
  • Parâmetros: @colunaOrdenacao, @direcaoOrdenacao, @paginaCorrente, @tamanhoPagina
  • Propósito: Retorna uma consulta paginada de empresas.
  • SELECT COUNT(*) FROM (…) AS temp (Empresa_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o total de registros para a paginação de empresas.
  • SPSELECTNOMEPARCIALCOUNT (Empresa_P2.cs)
  • Parâmetros: @Count, @Idf_Grupo_Economico, @Valor
  • Propósito: Seleciona empresas por grupo econômico e nome/CNPJ/CPF parcial, limitado por TOP.
  • SPSELECTNOME (Empresa_P2.cs)
  • Parâmetros: @Raz_Social
  • Propósito: Seleciona empresas por razão social parcial.
  • SPSELECTCNPJ (Empresa_P2.cs)
  • Parâmetros: @Num_CNPJ
  • Propósito: Seleciona empresas por CNPJ.
  • SPSELECTCPF (Empresa_P2.cs)
  • Parâmetros: @Num_CPF
  • Propósito: Seleciona empresas por CPF.
  • SPSELECTPORIDEMPRESA (Empresa_P2.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Seleciona empresa por ID.
  • SPSELECTNOMEEXATO (Empresa_P2.cs)
  • Parâmetros: @Raz_Social
  • Propósito: Seleciona empresa por razão social exata.
  • SELECTPORNOMECNPJ (Empresa_P2.cs)
  • Parâmetros: @Raz_Social, @Num_CNPJ
  • Propósito: Seleciona empresas por razão social ou CNPJ.
  • SPSELECTPORCEI (Empresa_P2.cs)
  • Parâmetros: @Num_CEI
  • Propósito: Seleciona empresas por CEI da filial.
  • SPSELECTPORCNPJCEI (Empresa_P2.cs)
  • Parâmetros: @CNPJCEI
  • Propósito: Seleciona empresas por CNPJ, CEI ou CPF.
  • SELECTPORNOMECNPJCEI (Empresa_P2.cs)
  • Parâmetros: @Raz_Social, @Num_CNPJ, @Num_CEI
  • Propósito: Seleciona empresas por razão social, CNPJ ou CEI.
  • SELECTEMPRESAPORMOVIMENTACAO (Empresa_P2.cs)
  • Parâmetros: @numCNPJ, @dtaInicial, @dtaFinal
  • Propósito: Seleciona informações da empresa para movimentação de empregados (admissão/demissão).
  • SPSELECTFILIALCOMCNPJ (Empresa_P2.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Conta o número de filiais com CNPJ para uma empresa.
  • SPSELECTFILIALRAISSEMEMPREGADO (Empresa_P2.cs)
  • Parâmetros: {0} (lista de Idf_Filial), @Idf_Empresa, @Idf_Filial
  • Propósito: Seleciona filiais para RAIS sem empregados.
  • SPSELECTFILIALRAIS (Empresa_P2.cs)
  • Parâmetros: @ano_base, @Idf_Filial
  • Propósito: Seleciona informações detalhadas da filial para RAIS.
  • LISTARPORUSUGRUEMPPARCIAL (Empresa_P2.cs)
  • Parâmetros: @Idf_Grupo_Economico, @Raz_Social, @Idf_Usuario
  • Propósito: Lista empresas por grupo econômico e razão social parcial, considerando acesso do usuário.
  • LISTARPORUSUGRUEMPEXATO (Empresa_P2.cs)
  • Parâmetros: @Idf_Grupo_Economico, @Raz_Social, @Idf_Usuario
  • Propósito: Lista empresas por grupo econômico e razão social exata, considerando acesso do usuário.
  • LISTARPORUSUEMPEXATO (Empresa_P2.cs)
  • Parâmetros: @Raz_Social, @Idf_Usuario
  • Propósito: Lista empresas por razão social exata, considerando acesso do usuário.
  • SplistarPorUsuEmpExato (Empresa_P2.cs)
  • Parâmetros: @Raz_Social, @Idf_Usuario
  • Propósito: Lista empresas ativas por razão social exata, considerando acesso do usuário.
  • SPSELECTAUTOCOMPLETE (Empresa_P2.cs)
  • Parâmetros: @Count, @Raz_Social, @Idf_Usuario
  • Propósito: Seleciona empresas para autocomplete por razão social, considerando acesso do usuário.
  • SELBYGECTEXT (Empresa_P2.cs)
  • Parâmetros: @Idf_Grupo_Economico, @Num_CNPJ, @text
  • Propósito: Seleciona empresas por grupo econômico e CNPJ ou texto.
  • SELBYGECTEXT2 (Empresa_P2.cs)
  • Parâmetros: @Idf_Grupo_Economico, @Num_CNPJ, @text
  • Propósito: Seleciona empresas por grupo econômico e CNPJ ou texto exato.
  • SPVERIFICABLOQUEIOEMPRESA (Empresa_P2.cs)
  • Parâmetros: @Idf_Empresa, @Idf_Usuario
  • Propósito: Verifica se a empresa possui bloqueio de folha por outro usuário.
  • SELPORGRUPOECONOMICO (Empresa_P2.cs)
  • Parâmetros: @Idf_Grupo_Economico
  • Propósito: Seleciona empresas ativas por grupo econômico.
  • SPCONSULTAINTEGRACAOFINANCEIRO (Empresa_P2.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Verifica se a empresa possui integração financeira.
  • SPSELECTEMPRESASPORUSUARIO (Empresa_P2.cs)
  • Parâmetros: @Idf_Usuario
  • Propósito: Seleciona empresas que o usuário tem acesso.
  • SELVERIFICACODIGOJACADASTRADO (Empresa_P2.cs)
  • Parâmetros: @Cod_Empresa, @Num_CNPJ, @Idf_Grupo_Economico
  • Propósito: Verifica se o código da empresa já está cadastrado.
  • SELVERIFICASIGLAJACADASTRADA (Empresa_P2.cs)
  • Parâmetros: @Idf_Empresa, @Sig_Empresa
  • Propósito: Verifica se a sigla da empresa já está cadastrada.
  • SplistarAtiva (Empresa_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Lista empresas ativas.
  • SplistarEmpresasFiltro (Empresa_P2.cs)
  • Parâmetros: @Idf_Usuario
  • Propósito: Lista empresas filtradas por acesso do usuário.
  • SplistarContribuicaoSubstituida (Empresa_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Lista indicadores de contribuição substituída.
  • SQL inline para RecuperarPorIntegracaoFinanceira (Empresa_P3.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Recupera empresa por integração financeira.
  • SQL inline para RecuperarEmpresaMatriz (Empresa_P3.cs)
  • Parâmetros: @Idf_Arquivo_Gerado
  • Propósito: Recupera a empresa matriz a partir de um arquivo gerado.
  • SQL inline para RecuperarCodigo (Empresa_P3.cs)
  • Parâmetros: Nenhum
  • Propósito: Recupera o próximo código de empresa disponível.
  • SELUPDMATRICULA (Empresa_P3.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Atualiza a semente de matrícula e retorna a próxima matrícula disponível.
  • SELUPDFICHA (Empresa_P3.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Atualiza a semente da ficha de registro e retorna a próxima ficha disponível.
  • ATUALIZASEMENTEFICHA (Empresa_P3.cs)
  • Parâmetros: @Num_Semente_Ficha, @Idf_Empresa
  • Propósito: Atualiza o número da semente da ficha de registro para uma empresa.
  • SELINFOFILIALEMPRESA (Empresa_P3.cs)
  • Parâmetros: @idfEmpresa, @idfFilial, @idfBanco
  • Propósito: Seleciona informações detalhadas de filial e empresa, incluindo dados bancários e de endereço.
  • SQL inline para VerificaEmpresaPrestadora (Empresa_P3.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Verifica se a empresa é uma filial matriz prestadora.
  • SQL inline para CarregarProdutorRuralEmpresaPeriodo (Empresa_P3.cs)
  • Parâmetros: @Idf_Empresa, @Num_Mes, @Num_Ano
  • Propósito: Carrega informações de produtor rural para uma empresa e período.
  • SQL inline para CompleteAuditoria (Empresa_P3.cs)
  • Parâmetros: @Idf_Empresa
  • Propósito: Seleciona a razão social de uma empresa para fins de auditoria.
  • ATUALIZASEMENTE (Empresa_P3.cs)
  • Parâmetros: @Num_Semente_Referencia, @Idf_Empresa
  • Propósito: Atualiza o número da semente de matrícula se o valor de referência for maior.
  • INSERT INTO plataforma.TAB_Tipo_Servico_Campo (TipoServicoCampo_P1.cs)
  • Parâmetros: @Idf_Tipo_Servico_Campo, @Des_Tipo_Servico_Campo, @Dta_Cadastro, @Flg_Inativo
  • Propósito: Insere um novo registro na tabela plataforma.TAB_Tipo_Servico_Campo.
  • UPDATE plataforma.TAB_Tipo_Servico_Campo (TipoServicoCampo_P1.cs)
  • Parâmetros: @Des_Tipo_Servico_Campo, @Dta_Cadastro, @Flg_Inativo, @Idf_Tipo_Servico_Campo
  • Propósito: Atualiza um registro existente na tabela plataforma.TAB_Tipo_Servico_Campo.
  • DELETE FROM plataforma.TAB_Tipo_Servico_Campo (TipoServicoCampo_P1.cs)
  • Parâmetros: @Idf_Tipo_Servico_Campo
  • Propósito: Exclui um registro da tabela plataforma.TAB_Tipo_Servico_Campo.
  • SELECT * FROM plataforma.TAB_Tipo_Servico_Campo (TipoServicoCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Seleciona todos os registros da tabela plataforma.TAB_Tipo_Servico_Campo.
  • SELECT * FROM plataforma.TAB_Tipo_Servico_Campo WHERE Idf_Tipo_Servico_Campo = @Idf_Tipo_Servico_Campo (TipoServicoCampo_P1.cs)
  • Parâmetros: @Idf_Tipo_Servico_Campo
  • Propósito: Seleciona um registro da tabela plataforma.TAB_Tipo_Servico_Campo pelo seu identificador.
  • SQL inline para paginação de TipoServicoCampo (TipoServicoCampo_P1.cs)
  • Parâmetros: @colunaOrdenacao, @direcaoOrdenacao, @paginaCorrente, @tamanhoPagina
  • Propósito: Retorna uma consulta paginada de tipos de serviço de campo.
  • SELECT COUNT(*) FROM (…) AS temp (TipoServicoCampo_P1.cs)
  • Parâmetros: Nenhum
  • Propósito: Conta o total de registros para a paginação de tipos de serviço de campo.
  • SELECT * FROM plataforma.TAB_Tipo_Servico_Campo WHERE Flg_Inativo = 0 (TipoServicoCampo_P2.cs)
  • Parâmetros: Nenhum
  • Propósito: Lista todos os tipos de serviço de campo que estão ativos.

7.3. UserControls incluídos (.ascx)

  • Employer:ListaSugestoes (ID: lsCultura, lsTipoServico, lsPermiteAvaliacao, lsTipoAvaliacao, lsUtilizaAreaCultivada, lsUtilizaBag, lsSituacao, lsSolicitarObservacao, lsDescontarBonus, lsDivisaoBonus, lsRecebeHoraInItinere, lsNecessitaAprovacao)
  • Propriedades expostas/utilizadas: Obrigatorio, ValidationGroup, MensagemErroInvalidoSummary, MensagemErroFormatoSummary, MensagemErroObrigatorioSummary, Valor, ValorInt, ValorBooleano, Enabled, Dicionario.
  • Eventos: OnValueChanged (para lsCultura, lsTipoServico, lsPermiteAvaliacao).
  • Propósito: Componente genérico para seleção de itens de uma lista, com suporte a validação e preenchimento dinâmico.
  • Employer:ControlAlfaNumerico (ID: txtServicoCampo, txtCodigoServicoCampo, txtPesquisar)
  • Propriedades expostas/utilizadas: Obrigatorio, ValidationGroup, Width, MensagemErroInvalidoSummary, MensagemErroFormatoSummary, MensagemErroObrigatorioSummary, Text, CssClassTextBox.
  • Propósito: Componente para entrada de texto alfanumérico, com suporte a validação.
  • Employer:LocalizarServicoCampo (ID: txtServicoCampoSuperior)
  • Propriedades expostas/utilizadas: Obrigatorio, ServicoCampoAnaliticoSintetico, ValidationGroup, MensagemErroInvalidoSummary, MensagemErroFormatoSummary, MensagemErroObrigatorioSummary, IdEmpresa, IdCulturaCampo, IdServicoCampoSelecionado, Titulo.
  • Eventos: OnValorAlterado.
  • Propósito: Componente para localizar e selecionar um serviço de campo superior, com filtros e validação.
  • Employer:ValorNumericoTextBox (ID: txtNumeroOrdem, txtPercentualAvaliacao)
  • Propriedades expostas/utilizadas: Obrigatorio, Enabled, Width, CasasDecimais, ValorMinimo, ValorMaximo, ValidationGroup, MensagemErroInvalidoSummary, MensagemErroFormatoSummary, MensagemErroObrigatorioSummary, ValorInteiro, ValorDecimal.
  • Propósito: Componente para entrada de valores numéricos, com validação de formato, casas decimais, valor mínimo e máximo.
  • Employer:EmployerValidationSummary (ID: vsValidacao)
  • Propriedades expostas/utilizadas: DisplayMode, CssClass, HeaderText, ValidationGroup.
  • Propósito: Exibe um resumo de todas as mensagens de validação da página.
  • Employer:Button (ID: btnSalvar, btnLimpar, btnVoltar, btnPesquisar)
  • Propriedades expostas/utilizadas: Text, OnClick, ValidationGroup, CausesValidation, CssClass.
  • Propósito: Botões de ação na tela.
  • Employer:EmployerGrid (ID: gvwServicoCampo)
  • Propriedades expostas/utilizadas: AutoGenerateColumns, DataKeyNames, ShowHeader, AllowPaging, AllowSorting, EmptyDataText, MockColunaOrdenada, MockDirecaoOrdenacao, PageSize, MockItemCount.
  • Eventos: OnRowCommand, OnRowDataBound, OnCarregarGrid.
  • Propósito: Grid para exibir dados paginados e ordenáveis, com colunas configuráveis e botões de ação por linha.

7.4. WebServices, APIs externas, filas

  • eSocial API: A classe BasePageWebFoPag interage com uma API externa do eSocial para verificar o status de habilitação do empregador e exibir modais relacionados.
  • Endpoint: /api/cliente/verificarempregador/{0}/{1}/
  • Método: GET
  • Parâmetros: Tipo de Inscrição do Empregador, Número de Inscrição do Empregador.
  • Propósito: Verifica se o empregador está cadastrado no eSocial.
  • Endpoint: {0}esocial.html?layouts={1}&ids={2}&nrInsc={3}&tpInsc={4}
  • Propósito: Exibe modal do eSocial para layouts e IDs específicos.
  • Endpoint: {0}implantacao.html?nrInsc={1}&tpInsc={2}
  • Propósito: Exibe modal de implantação do eSocial.
  • Endpoint: {0}config.html?nrInsc={1}&tpInsc={2}
  • Propósito: Exibe modal de configuração do eSocial.
  • Endpoint: {0}eventos.html?layouts={1}&ids={2}&nrInsc={3}&tpInsc={4}
  • Propósito: Exibe modal de eventos do eSocial.
  • Endpoint: {0}relatorios.html
  • Propósito: Exibe modal de relatórios do eSocial.
  • Fila de Cálculo (FilaCalculoTransactionSingleton): A classe Empresa (em Empresa_P2.cs) interage com uma fila de cálculo para enviar empregados para recálculo quando há alterações na empresa.
  • Auditoria (AuditoriaEventMapTransaction): A classe Empresa (em Empresa_P2.cs) integra eventos de auditoria.

8. Mensagens ao Usuário

  • “Usuário não tem permissão para executar essa operação!” (TipoMensagem.Aviso)
  • “O campo Tipo Avaliação é obrigatório.” (TipoMensagem.Erro)
  • “O campo Percentual Avaliação é obrigatório.” (TipoMensagem.Erro)
  • Resources.MensagemAviso._100001: Mensagem de sucesso ao salvar.
  • Resources.MensagemAviso._100002: Mensagem de sucesso ao excluir.
  • Resources.MensagemErroModuloSafraMisto._1: “Já existe um serviço de campo cadastrado com este nome para a cultura selecionada.” (se UtilizaModuloSafraMisto for verdadeiro)
  • Resources.MensagemErroModuloSafra._1: “Já existe um serviço de campo cadastrado com este nome para a cultura selecionada.” (se UtilizaModuloSafraMisto for falso)
  • Resources.MensagemErroModuloSafraMisto._2: “Já existe um serviço de campo cadastrado com este código para a cultura selecionada.”
  • Resources.MensagemErroModuloSafra._2: “Já existe um serviço de campo cadastrado com este código para a cultura selecionada.”
  • Resources.MensagemErroModuloSafraMisto._3: “Já existe um serviço de campo cadastrado com este número de ordem para o serviço superior selecionado.”
  • Resources.MensagemErroModuloSafra._3: “Já existe um serviço de campo cadastrado com este número de ordem para o serviço superior selecionado.”
  • Resources.MensagemErroModuloSafraMisto._4: “A soma dos percentuais de avaliação dos serviços de campo filhos não pode ser superior a 100%.”
  • Resources.MensagemErroModuloSafra._4: “A soma dos percentuais de avaliação dos serviços de campo filhos não pode ser superior a 100%.”
  • Resources.MensagemErroModuloSafraMisto._5: “Não é possível excluir o serviço de campo, pois ele está vinculado a um sindicato.”
  • Resources.MensagemErroModuloSafra._5: “Não é possível excluir o serviço de campo, pois ele está vinculado a um sindicato.”
  • Resources.MensagemErroModuloSafraMisto._6: “Não é possível excluir o serviço de campo, pois ele já foi realizado.”
  • Resources.MensagemErroModuloSafra._6: “Não é possível excluir o serviço de campo, pois ele já foi realizado.”
  • Resources.MensagemErroModuloSafraMisto._7: “Não é possível excluir o serviço de campo, pois ele já possui ocorrências lançadas.”
  • Resources.MensagemErroModuloSafra._7: “Não é possível excluir o serviço de campo, pois ele já possui ocorrências lançadas.”
  • Resources.MensagemErroModuloSafraMisto._8: “Não é possível excluir o serviço de campo, pois ele já foi avaliado.”
  • Resources.MensagemErroModuloSafra._8: “Não é possível excluir o serviço de campo, pois ele já foi avaliado.”
  • Resources.MensagemErroModuloSafraMisto._9: “Não é possível excluir o serviço de campo, pois ele está vinculado a outro serviço de campo.”
  • Resources.MensagemErroModuloSafra._9: “Não é possível excluir o serviço de campo, pois ele está vinculado a outro serviço de campo.”
  • Resources.MensagemErroModuloSafraMisto._10: “Não é possível excluir o serviço de campo, pois ele possui um serviço de campo individual desconsiderado.”
  • Resources.MensagemErroModuloSafra._10: “Não é possível excluir o serviço de campo, pois ele possui um serviço de campo individual desconsiderado.”
  • Resources.MensagemErroModuloSafraMisto._11: “Erro ao excluir o serviço de campo.”
  • Resources.MensagemErroModuloSafra._11: “Erro ao excluir o serviço de campo.”
  • Resources.MensagemErroModuloSafraMisto._12: “Erro ao salvar o serviço de campo.”
  • Resources.MensagemErroModuloSafra._12: “Erro ao salvar o serviço de campo.”
  • “Inconsistência no Centro de Serviço, Empresa ou Usuário logados.” (Mensagem de erro de redirecionamento na BasePageWebFoPag)
  • “Erro ao autenticar” (Mensagem de erro ao exibir modal do eSocial na BasePageWebFoPag)
  • “Endereço da Filial não encontrado!” (Erro ao calcular próximo dia útil na Util)

9. Permissões e Perfis

  • Employer.Plataforma.BLL.Enumeradores.Permissoes.ServicoCampo.VisualizarServicoCampo: Controla o acesso à tela. Se o usuário não tiver essa permissão, é redirecionado para a página de acesso negado. (ServicoCampoCadastro.aspx.cs - ConfigurarPermissoesTela)
  • Employer.Plataforma.BLL.Enumeradores.Permissoes.ServicoCampo.SalvarServicoCampo: Controla a habilitação do botão “Salvar”. Se o usuário não tiver essa permissão, o botão é desabilitado e uma mensagem de aviso é exibida ao tentar salvar. (ServicoCampoCadastro.aspx.cs - ConfigurarPermissoesTela, btnSalvar_Click)
  • Employer.Plataforma.BLL.Enumeradores.Permissoes.ServicoCampo.ExcluirServicoCampo: Controla a habilitação do botão “Excluir” na grid. (ServicoCampoCadastro.aspx.cs - gvwServicoCampo_RowDataBound)

10. Aprofundamento — Detalhes Internos de Métodos

Employer.Plataforma.BLL.ServicoCampo

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ServicoCampo_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ServicoCampo_P2.cs

Métodos

MétodoAssinaturaPropósito
ServicoCampo()public ServicoCampo()Construtor padrão da classe.
ServicoCampo(int idServicoCampo)public ServicoCampo(int idServicoCampo)Construtor que inicializa a instância com um ID de serviço de campo.
Save()public void Save()Salva (insere ou atualiza) a instância de ServicoCampo no banco de dados. Se for uma atualização de um serviço superior, atualiza os serviços micro associados.
Save(SqlTransaction trans)public void Save(SqlTransaction trans)Salva (insere ou atualiza) a instância de ServicoCampo no banco de dados, dentro de uma transação. Se for uma atualização de um serviço superior, atualiza os serviços micro associados.
Delete(int idServicoCampo)public static void Delete(int idServicoCampo)Exclui um registro de ServicoCampo pelo ID.
Delete(int idServicoCampo, SqlTransaction trans)public static void Delete(int idServicoCampo, SqlTransaction trans)Exclui um registro de ServicoCampo pelo ID, dentro de uma transação.
Delete(List<int> idServicoCampo)public static void Delete(List<int> idServicoCampo)Exclui múltiplos registros de ServicoCampo por uma lista de IDs.
LoadObject(int idServicoCampo)public static ServicoCampo LoadObject(int idServicoCampo)Carrega e retorna uma instância de ServicoCampo pelo ID.
LoadObject(int idServicoCampo, SqlTransaction trans)public static ServicoCampo LoadObject(int idServicoCampo, SqlTransaction trans)Carrega e retorna uma instância de ServicoCampo pelo ID, dentro de uma transação.
CompleteObject()public bool CompleteObject()Completa os atributos da instância atual de ServicoCampo a partir do banco de dados.
CompleteObject(SqlTransaction trans)public bool CompleteObject(SqlTransaction trans)Completa os atributos da instância atual de ServicoCampo a partir do banco de dados, dentro de uma transação.
Listar()public static List<ServicoCampo> Listar()Retorna uma lista de todas as instâncias de ServicoCampo do banco de dados.
ListarParaImportacao(int? top, params object[] filtros)public static DataTable ListarParaImportacao(int? top, params object[] filtros)Lista serviços de campo para importação dinâmica.
BuscarServicoCampoPorCodigoEmpresa(string Codigo, string vCulturaCampo, int IdEmpresa, SqlTransaction tran = null)public static ServicoCampo BuscarServicoCampoPorCodigoEmpresa(string Codigo, string vCulturaCampo, int IdEmpresa, SqlTransaction tran = null)Busca um serviço de campo pelo código, cultura e empresa.
Listar(int pIdEmpresa, string pDescricao, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)public static SqlDataReader Listar(int pIdEmpresa, string pDescricao, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)Lista serviços de campo paginados e filtrados por empresa e descrição.
ListarPorEmpresa(int IdfEmpresa, bool? Ativas = true)public static List<ServicoCampo> ListarPorEmpresa(int IdfEmpresa, bool? Ativas = true)Retorna os serviços de campo de uma empresa, opcionalmente filtrando por status de inatividade.
ListarPorServicoCampoSuperior(int IdfServicoCampoSuperior)public static List<ServicoCampo> ListarPorServicoCampoSuperior(int IdfServicoCampoSuperior)Lista serviços de campo que são filhos de um serviço superior.
ListarServicoCampos(int IdfServicoCampo)public static IDataReader ListarServicoCampos(int IdfServicoCampo)Lista serviços de campo que são filhos de um serviço superior, retornando um IDataReader.
ListarServicoCamposMicros(int IdfServicoCampo)public static List<ServicoCampo> ListarServicoCamposMicros(int IdfServicoCampo)Lista serviços de campo que são filhos de um serviço superior, retornando uma lista de objetos ServicoCampo.
ValidarNomeServicoCampoJaCadastrado(int? pIdServicoCampo, int pIdEmpresa, int? pIdCulturaCampo, string pNomeServicoCampo)public static bool ValidarNomeServicoCampoJaCadastrado(int? pIdServicoCampo, int pIdEmpresa, int? pIdCulturaCampo, string pNomeServicoCampo)Valida se o nome do serviço já foi cadastrado para a empresa e cultura.
ValidarCodigoServicoCampoJaCadastrado(int? pIdServicoCampo, int pIdEmpresa, int? pIdCulturaCampo, string pCodigoServicoCampo)public static bool ValidarCodigoServicoCampoJaCadastrado(int? pIdServicoCampo, int pIdEmpresa, int? pIdCulturaCampo, string pCodigoServicoCampo)Valida se o código do serviço já foi cadastrado para a empresa e cultura.
ValidarNumeroOrdemServicoCampoJaCadastrado(int idfEmpresa, int? pIdServicoCampo, int? pIdServicoCampoSuperior, int? pNumeroOrdem)public static bool ValidarNumeroOrdemServicoCampoJaCadastrado(int idfEmpresa, int? pIdServicoCampo, int? pIdServicoCampoSuperior, int? pNumeroOrdem)Valida se o número de ordem já foi cadastrado para outro serviço dentro do mesmo serviço superior.
ValidarPercentualTotalServicoCampoSuperior(int? pIdServicoCampo, int pIdEmpresa, int pIdServicoCampoSuperior, decimal pPercentualAvaliacao, int pIdCulturaCampo)public static bool ValidarPercentualTotalServicoCampoSuperior(int? pIdServicoCampo, int pIdEmpresa, int pIdServicoCampoSuperior, decimal pPercentualAvaliacao, int pIdCulturaCampo)Valida se a soma dos percentuais de avaliação excede 100% para os serviços de um mesmo serviço superior.
ValidarServicoCampoJaVinculadoSindicato(int pIdServicoCampo)public static bool ValidarServicoCampoJaVinculadoSindicato(int pIdServicoCampo)Valida se o serviço de campo está vinculado a um sindicato.
ValidarServicoCampoJaAvaliado(int pIdServicoCampo)public static bool ValidarServicoCampoJaAvaliado(int pIdServicoCampo)Valida se o serviço de campo já foi avaliado.
ValidarServicoCampoJaRealizado(int pIdServicoCampo)public static bool ValidarServicoCampoJaRealizado(int pIdServicoCampo)Valida se o serviço de campo já foi realizado.
ValidarServicoCampoOcorrenciaJaLancado(int pIdServicoCampo)public static bool ValidarServicoCampoOcorrenciaJaLancado(int pIdServicoCampo)Valida se o serviço de campo já tem alguma ocorrência lançada.
ValidarServicoCampoJaVinculadoOutroServicoCampo(int pIdServicoCampo)public static bool ValidarServicoCampoJaVinculadoOutroServicoCampo(int pIdServicoCampo)Valida se o serviço de campo está vinculado a algum outro serviço de campo (como superior).
BuscaComponentePaginado(int pInicio, int pFim, string pSortExpression, string pSortDirection, out int pTotalRegistro, string pBuscaTexto, int? pIdEmpresa, bool? pFlagPermiteAvalicao, int? pIdTipoAvaliacaoCampo, int? pIdServicoCampoSuperior, enumServicoCampoAnaliticoSintetico pEnumTipoServicoCampo, bool pFlagConsideraServicoCampoInativo, int? pIdCulturaCampo, int? pIdTipoServicoCampo, bool pFlagSomenteUtilizaBag)public static DataTable BuscaComponentePaginado(...)Busca serviços de campo paginados para um componente, com diversos filtros.
ListarAutocomplete(string pPrefixText, int pCount, int? pIdEmpresa, bool? pFlagPermiteAvalicao, int? pIdTipoAvaliacaoCampo, int? pIdServicoCampoSuperior, enumServicoCampoAnaliticoSintetico pEnumTipoServicoCampo, bool? pFlagConsideraServicoCampoInativo, int? pIdCulturaCampo, int? pIdTipoServicoCampo, bool? pFlagSomenteUtilizaBag)public static DataTable ListarAutocomplete(...)Lista serviços de campo para autocomplete, com diversos filtros e limite de resultados.
AtualizaServicosCamposMicro(SqlTransaction trans)void AtualizaServicosCamposMicro(SqlTransaction trans)Atualiza os flags FlagUtilizaBag e FlagUtilizaAreaCultivada dos serviços de campo micro (filhos) de um serviço superior.

Detalhamento de Métodos Importantes

GetParameters() (Privado)

  • Lógica:
  1. Cria uma nova lista de SqlParameter.
  2. Adiciona vinte e um parâmetros à lista, representando todas as colunas da tabela TAB_Servico_Campo:
  • @Idf_Servico_Campo (Tipo Int, Tamanho 4)
  • @Idf_Empresa (Tipo Int, Tamanho 4)
  • @Idf_Servico_Campo_Superior (Tipo Int, Tamanho 4)
  • @Nme_Servico_Campo (Tipo VarChar, Tamanho 100)
  • @Cod_Servico_Campo (Tipo VarChar, Tamanho 10)
  • @Flg_Permite_Avaliacao (Tipo Bit, Tamanho 1)
  • @Idf_Tipo_Avaliacao_Campo (Tipo Int, Tamanho 4)
  • @Prc_Avaliacao (Tipo Float, Tamanho 8)
  • @Flg_Inativo (Tipo Bit, Tamanho 1)
  • @Dta_Cadastro (Tipo DateTime, Tamanho 8)
  • @Idf_Usuario_Gerador (Tipo Int, Tamanho 4)
  • @Num_Ordem (Tipo Int, Tamanho 4)
  • @Idf_Cultura_Campo (Tipo Int, Tamanho 4)
  • @Idf_Tipo_Servico_Campo (Tipo Int, Tamanho 4)
  • @Flg_Utiliza_Bag (Tipo Bit, Tamanho 1)
  • @Flg_SolicitaObservacao (Tipo Bit, Tamanho 1)
  • @Flg_Utiliza_Area_Cultivada (Tipo Bit, Tamanho 1)
  • @Flg_Descontar_Bonus (Tipo Bit, Tamanho 1)
  • @Flg_Divisao_Bonus (Tipo Bit, Tamanho 1)
  • @Flg_Paga_Hora_In_Itinere (Tipo Bit, Tamanho 1)
  • @Flg_Necessita_Aprovacao (Tipo Bit, Tamanho 1)
  1. Retorna a lista de parâmetros.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma.
  • Regras de negócio: Nenhuma.

SetParameters(List<SqlParameter> parms) (Privado)

  • Lógica:
  1. Atribui os valores das propriedades da instância aos parâmetros correspondentes na lista parms.
  2. Para objetos relacionados (_servicoCampoSuperior, _tipoAvaliacaoCampo): Se o objeto for nulo, atribui DBNull.Value ao ID correspondente. Caso contrário, atribui o Id do objeto.
  3. Para campos opcionais (_codigoServicoCampo, _percentualAvaliacao, _numeroOrdem, _flagUtilizaBag, _flagSolicitaObservacao, _flagUtilizaAreaCultivada, _flagDescontarBonus, _flagDivisaoBonus, _flagPagaHoraInItinere, _flagNecessitaAprovacao): Se o valor for nulo ou vazio, atribui DBNull.Value.
  4. Lógica de inserção/atualização:
  • Se a instância não for persistida (!_persisted):
  • Define o parâmetro @Idf_Servico_Campo como ParameterDirection.Output para receber o ID gerado pelo banco.
  • Define _dataCadastro como a data e hora atuais (DateTime.Now).
  • Caso contrário (instância já persistida):
  • Define o parâmetro @Idf_Servico_Campo como ParameterDirection.Input.
  1. Atribui _dataCadastro ao parâmetro @Dta_Cadastro.
  2. Define _usuarioGerador com base no CodigoUsuario da sessão HTTP atual. Se a sessão for nula, usa um Usuario com ID 1.
  3. Atribui o IdUsuario de _usuarioGerador ao parâmetro @Idf_Usuario_Gerador.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Verifica a nulidade de strings e objetos relacionados para atribuir DBNull.Value.
  • Regras de negócio: Gerencia a atribuição de valores para inserção/atualização, incluindo a geração de Idf_Servico_Campo e Dta_Cadastro em novas inserções, e o registro do UsuarioGerador.

Insert() (Privado)

  • Lógica:
  1. Chama GetParameters() para obter uma lista de parâmetros SQL.
  2. Chama SetParameters(parms) para preencher os parâmetros com os valores da instância atual.
  3. Abre uma nova conexão SQL (SqlConnection) usando DataAccessLayer.CONN_STRING.
  4. Inicia uma transação SQL (SqlTransaction).
  5. Dentro de um bloco try-catch:
  • Executa o comando SQL SPINSERT (insert inline) usando DataAccessLayer.ExecuteNonQueryCmd com a transação e os parâmetros.
  • Recupera o Idf_Servico_Campo gerado pelo banco de dados (usando SCOPE_IDENTITY()) do parâmetro de saída e atribui a _idServicoCampo.
  • Limpa os parâmetros do comando.
  • Define _persisted como true e _modified como false.
  • Confirma a transação (trans.Commit()).
  1. Em caso de exceção, a transação é revertida (trans.Rollback()) e a exceção é relançada.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: INSERT INTO TAB_Servico_Campo (...) VALUES (...);SET @Idf_Servico_Campo = SCOPE_IDENTITY();
  • Validações: Nenhuma explícita.
  • Regras de negócio: Gerencia a persistência de novos registros de ServicoCampo, incluindo a recuperação do ID gerado.

Insert(SqlTransaction trans) (Privado)

  • Lógica:
  1. Similar a Insert(), mas recebe uma transação existente.
  2. Chama GetParameters() e SetParameters(parms).
  3. Executa o comando SQL SPINSERT usando DataAccessLayer.ExecuteNonQueryCmd com a transação fornecida e os parâmetros.
  4. Recupera o Idf_Servico_Campo gerado pelo banco de dados do parâmetro de saída e atribui a _idServicoCampo.
  5. Limpa os parâmetros do comando.
  6. Define _persisted como true e _modified como false.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: INSERT INTO TAB_Servico_Campo (...) VALUES (...);SET @Idf_Servico_Campo = SCOPE_IDENTITY();
  • Validações: Nenhuma explícita.
  • Regras de negócio: Permite a inserção de ServicoCampo como parte de uma transação maior.

Update() (Privado)

  • Lógica:
  1. Verifica se a instância foi modificada (_modified é true).
  2. Se modificada:
  • Chama GetParameters() e SetParameters(parms).
  • Executa o comando SQL SPUPDATE (update inline) usando DataAccessLayer.ExecuteNonQuery com os parâmetros.
  • Define _modified como false.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: UPDATE TAB_Servico_Campo SET ... WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Gerencia a atualização de registros de ServicoCampo.

Update(SqlTransaction trans) (Privado)

  • Lógica:
  1. Similar a Update(), mas recebe uma transação existente.
  2. Verifica se a instância foi modificada (_modified é true).
  3. Se modificada:
  • Chama GetParameters() e SetParameters(parms).
  • Executa o comando SQL SPUPDATE usando DataAccessLayer.ExecuteNonQuery com a transação fornecida e os parâmetros.
  • Define _modified como false.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: UPDATE TAB_Servico_Campo SET ... WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Permite a atualização de ServicoCampo como parte de uma transação maior.

Save() (Público)

  • Lógica:
  1. Se a instância não for persistida (!_persisted), chama this.Insert().
  2. Se a instância já for persistida:
  • Abre uma nova conexão SQL (SqlConnection) e inicia uma transação.
  • Dentro de um bloco try-catch:
  • Chama this.Update(trans) para atualizar o serviço de campo.
  • Chama AtualizaServicosCamposMicro(trans) para atualizar os serviços de campo micro associados.
  • Confirma a transação (trans.Commit()).
  • Em caso de exceção, a transação é revertida (trans.Rollback()) e a exceção é relançada.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert(), Update(trans) e AtualizaServicosCamposMicro(trans).
  • Validações: Nenhuma explícita.
  • Regras de negócio: Orquestra a operação de salvar, decidindo entre inserção e atualização. Em caso de atualização de um serviço superior, propaga certas propriedades para os serviços micro.

Save(SqlTransaction trans) (Público)

  • Lógica:
  1. Se a instância não for persistida (!_persisted), chama this.Insert(trans).
  2. Se a instância já for persistida:
  • Chama this.Update(trans) para atualizar o serviço de campo.
  • Chama AtualizaServicosCamposMicro(trans) para atualizar os serviços de campo micro associados.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama Insert(trans), Update(trans) e AtualizaServicosCamposMicro(trans).
  • Validações: Nenhuma explícita.
  • Regras de negócio: Orquestra a operação de salvar dentro de uma transação, decidindo entre inserção e atualização. Em caso de atualização de um serviço superior, propaga certas propriedades para os serviços micro.

Delete(int idServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter.
  2. Adiciona os parâmetros @Idf_Servico_Campo e @Idf_Usuario_Gerador.
  3. Atribui o idServicoCampo e o CodigoUsuario da sessão atual aos parâmetros.
  4. Executa o comando SQL SPDELETE (delete inline) usando DataAccessLayer.ExecuteNonQuery com os parâmetros.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: UPDATE TAB_Servico_Campo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Servico_Campo = @Idf_Servico_Campo ; DELETE FROM TAB_Servico_Campo WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Exclui um registro de ServicoCampo, mas antes atualiza o Idf_Usuario_Gerador do registro.

Delete(int idServicoCampo, SqlTransaction trans) (Público e Estático)

  • Lógica:
  1. Similar a Delete(int idServicoCampo), mas recebe uma transação existente.
  2. Cria uma lista de SqlParameter.
  3. Adiciona os parâmetros @Idf_Servico_Campo e @Idf_Usuario_Gerador.
  4. Atribui o idServicoCampo e o CodigoUsuario da sessão atual aos parâmetros.
  5. Executa o comando SQL SPDELETE usando DataAccessLayer.ExecuteNonQuery com a transação fornecida e os parâmetros.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: UPDATE TAB_Servico_Campo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Servico_Campo = @Idf_Servico_Campo ; DELETE FROM TAB_Servico_Campo WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Exclui um registro de ServicoCampo dentro de uma transação, atualizando o Idf_Usuario_Gerador antes.

Delete(List<int> idServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter.
  2. Constrói dinamicamente duas strings SQL: uma para UPDATE (para Idf_Usuario_Gerador) e outra para DELETE, ambas com cláusulas IN.
  3. Itera sobre a lista idServicoCampo:
  • Para cada ID, cria um novo parâmetro com um nome único (ex: @parm0, @parm1).
  • Adiciona o nome do parâmetro às strings SQL e o parâmetro à lista de SqlParameter.
  1. Adiciona um parâmetro @Idf_Usuario_Gerador à lista e atribui o CodigoUsuario da sessão atual.
  2. Concatena as strings SQL de UPDATE e DELETE.
  3. Executa o comando SQL construído usando DataAccessLayer.ExecuteNonQuery com os parâmetros.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline dinamicamente construído.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Permite a exclusão em massa de registros de ServicoCampo, atualizando o Idf_Usuario_Gerador antes da exclusão.

LoadDataReader(int idServicoCampo) (Privado e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter.
  2. Adiciona o parâmetro @Idf_Servico_Campo e atribui o idServicoCampo.
  3. Executa o comando SQL SPSELECTID (select inline) usando DataAccessLayer.ExecuteReader com os parâmetros e retorna um IDataReader.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: SELECT * FROM TAB_Servico_Campo WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Recupera um único registro de ServicoCampo para leitura.

LoadDataReader(int idServicoCampo, SqlTransaction trans) (Privado e Estático)

  • Lógica:
  1. Similar a LoadDataReader(int idServicoCampo), mas recebe uma transação existente.
  2. Cria uma lista de SqlParameter.
  3. Adiciona o parâmetro @Idf_Servico_Campo e atribui o idServicoCampo.
  4. Executa o comando SQL SPSELECTID usando DataAccessLayer.ExecuteReader com a transação fornecida e os parâmetros, e retorna um IDataReader.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: SELECT * FROM TAB_Servico_Campo WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Recupera um único registro de ServicoCampo para leitura dentro de uma transação.

LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) (Público e Estático)

  • Lógica:
  1. Calcula os valores de inicio e fim para a paginação.
  2. Constrói dinamicamente duas strings SQL:
  • SPSELECTPAG: Consulta paginada que seleciona as colunas de TAB_Servico_Campo e adiciona um RowID para paginação, ordenando pela colunaOrdenacao e direcaoOrdenacao.
  • SPSELECTCOUNT: Consulta para contar o total de registros, baseada em SPSELECTPAG.
  1. Executa SPSELECTCOUNT usando DataAccessLayer.ExecuteScalar para obter o totalRegistros.
  2. Executa SPSELECTPAG (filtrando por RowId) usando DataAccessLayer.ExecuteReader e retorna um IDataReader.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline dinamicamente construído.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Fornece funcionalidade de paginação e ordenação para a listagem de ServicoCampo.

LoadObject(int idServicoCampo) (Público e Estático)

  • Lógica:
  1. Chama LoadDataReader(idServicoCampo) para obter um IDataReader.
  2. Cria uma nova instância de ServicoCampo.
  3. Chama SetInstance(dr, objServicoCampo) para preencher a instância com os dados do IDataReader.
  4. Se SetInstance retornar true (registro encontrado), retorna a instância preenchida.
  5. Se SetInstance retornar false (registro não encontrado), lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader, que utiliza SQL inline.
  • Validações: Lança RecordNotFoundException se o registro não for encontrado.
  • Regras de negócio: Carrega um objeto ServicoCampo completo pelo ID.

LoadObject(int idServicoCampo, SqlTransaction trans) (Público e Estático)

  • Lógica:
  1. Similar a LoadObject(int idServicoCampo), mas recebe uma transação existente.
  2. Chama LoadDataReader(idServicoCampo, trans) para obter um IDataReader.
  3. Cria uma nova instância de ServicoCampo.
  4. Chama SetInstance(dr, objServicoCampo) para preencher a instância.
  5. Se SetInstance retornar true, retorna a instância.
  6. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader, que utiliza SQL inline.
  • Validações: Lança RecordNotFoundException se o registro não for encontrado.
  • Regras de negócio: Carrega um objeto ServicoCampo completo pelo ID dentro de uma transação.

CompleteObject() (Público)

  • Lógica:
  1. Chama LoadDataReader(this._idServicoCampo) para obter um IDataReader usando o ID da instância atual.
  2. Chama SetInstance(dr, this) para preencher os atributos da própria instância com os dados do IDataReader.
  3. Retorna o resultado de SetInstance.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader, que utiliza SQL inline.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Preenche os atributos de uma instância existente de ServicoCampo.

CompleteObject(SqlTransaction trans) (Público)

  • Lógica:
  1. Similar a CompleteObject(), mas recebe uma transação existente.
  2. Chama LoadDataReader(this._idServicoCampo, trans) para obter um IDataReader.
  3. Chama SetInstance(dr, this) para preencher os atributos da própria instância.
  4. Retorna o resultado de SetInstance.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama LoadDataReader, que utiliza SQL inline.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Preenche os atributos de uma instância existente de ServicoCampo dentro de uma transação.

SetInstance(IDataReader dr, ServicoCampo objServicoCampo, bool bDispose = true) (Privado e Estático)

  • Lógica:
  1. Dentro de um bloco try-finally:
  • Tenta ler a próxima linha do IDataReader (dr.Read()).
  • Se houver uma linha para ler:
  • Atribui o valor da coluna Idf_Servico_Campo a objServicoCampo._idServicoCampo.
  • Cria novas instâncias de Empresa, ServicoCampo (para superior), TipoAvaliacaoCampo, Usuario, CulturaCampo, TipoServicoCampo com base nos IDs das colunas correspondentes.
  • Atribui os valores das colunas Nme_Servico_Campo, Cod_Servico_Campo, Flg_Permite_Avaliacao, Prc_Avaliacao, Flg_Inativo, Dta_Cadastro, Num_Ordem, Flg_Utiliza_Bag, Flg_SolicitaObservacao, Flg_Utiliza_Area_Cultivada, Flg_Descontar_Bonus, Flg_Divisao_Bonus, Flg_Paga_Hora_In_Itinere, Flg_Necessita_Aprovacao aos atributos da instância.
  • Para campos opcionais, verifica DBNull.Value antes de atribuir.
  • Define objServicoCampo._persisted como true e objServicoCampo._modified como false.
  • Retorna true.
  • Se não houver mais linhas para ler, retorna false.
  1. No bloco finally:
  • Se bDispose for true (padrão), descarta o IDataReader (dr.Dispose()).
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Verifica DBNull.Value para campos opcionais.
  • Regras de negócio: Mapeia os dados de um IDataReader para uma instância de ServicoCampo, incluindo a criação de objetos relacionados.

Listar() (Público e Estático)

  • Lógica:
  1. Cria uma nova lista de ServicoCampo (ls).
  2. Executa o comando SQL SPSELECT (select inline) usando DataAccessLayer.ExecuteReader e obtém um IDataReader.
  3. Itera sobre o IDataReader usando um loop while:
  • Cria uma nova instância de ServicoCampo (obj).
  • Chama SetInstance(dr, obj, false) para preencher a instância (o false indica para não descartar o IDataReader após cada instância).
  • Se SetInstance retornar true (registro preenchido), adiciona obj à lista ls.
  • Cria uma nova instância de ServicoCampo para a próxima iteração.
  1. Retorna a lista ls.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: SELECT * FROM TAB_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Retorna todos os registros de ServicoCampo.

ListarParaImportacao(int? top, params object[] filtros) (Público e Estático)

  • Lógica:
  1. Recupera o idEmpresa da sessão HTTP atual.
  2. Cria uma lista de SqlParameter, adicionando @Idf_Empresa.
  3. Define uma string SQL SPSELECTPAG que seleciona todos os serviços de campo ativos (Flg_Inativo = 0) para a empresa especificada.
  4. Executa a consulta SQL usando DataAccessLayer.ExecuteReaderDs e retorna a primeira tabela do DataSet.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline: select * from TAB_Servico_Campo sc where sc.Idf_Empresa = @Idf_Empresa and sc.Flg_Inativo = 0
  • Validações: Nenhuma explícita.
  • Regras de negócio: Fornece uma listagem simplificada de serviços de campo para fins de importação.

BuscarServicoCampoPorCodigoEmpresa(string Codigo, string vCulturaCampo, int IdEmpresa, SqlTransaction tran = null) (Público e Estático)

  • Lógica:
  1. Define uma string SQL sQuery que busca um serviço de campo pelo Cod_Servico_Campo, Idf_Empresa, Flg_Inativo = 0 e opcionalmente por Des_Cultura_Campo.
  2. Cria uma lista de SqlParameter para @Idf_Empresa, @Cod_Servico_Campo e @CulturaCampo.
  3. Atribui os valores dos parâmetros, tratando vCulturaCampo como DBNull.Value se for nulo ou vazio.
  4. Executa a consulta SQL usando DataAccessLayer.ExecuteReader (com ou sem transação).
  5. Cria uma nova instância de ServicoCampo.
  6. Se SetInstance(dr, objTurma) retornar true (registro encontrado), retorna a instância preenchida.
  7. Caso contrário, retorna null.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 select * from TAB_Servico_Campo sc
 LEFT JOIN plataforma.tab_cultura_campo cc on cc.Idf_Cultura_Campo = sc.Idf_Cultura_Campo
 where sc.Idf_Empresa = @Idf_Empresa and sc.Flg_Inativo = 0 and sc.Cod_Servico_Campo = @Cod_Servico_Campo
 AND (@CulturaCampo IS NULL OR cc.Des_Cultura_Campo = @CulturaCampo)
  • Validações: Nenhuma explícita.
  • Regras de negócio: Busca um serviço de campo específico com base em seu código, empresa e, opcionalmente, cultura.

Listar(int pIdEmpresa, string pDescricao, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros) (Público e Estático)

  • Lógica:
  1. Calcula os valores de inicio e fim para a paginação.
  2. Cria uma lista de SqlParameter para @Idf_Empresa e @Descricao.
  3. Define uma string SQL queryPaginada que utiliza ROW_NUMBER() para paginação e string.Format para injetar a ordenação e a consulta base (SELSERVICOCAMPOPOREMPRESA).
  4. Define uma string SQL queryCount para contar o total de registros, também usando SELSERVICOCAMPOPOREMPRESA.
  5. Executa queryCount usando DataAccessLayer.ExecuteScalar para obter pTotalRegistros.
  6. Executa queryPaginada usando DataAccessLayer.ExecuteReader e retorna o SqlDataReader.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline dinamicamente construído, que incorpora SELSERVICOCAMPOPOREMPRESA.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Fornece uma listagem paginada, ordenada e filtrada de serviços de campo para uma empresa.

ListarPorEmpresa(int IdfEmpresa, bool? Ativas = true) (Público e Estático)

  • Lógica:
  1. Define uma string SQL SQL que seleciona todos os serviços de campo para a IdfEmpresa.
  2. Se Ativas tiver um valor, adiciona uma cláusula AND Flg_Inativo = 0 (se Ativas for true) ou AND Flg_Inativo = 1 (se Ativas for false).
  3. Cria uma lista de SqlParameter para @Idf_Empresa.
  4. Executa a consulta SQL usando DataAccessLayer.ExecuteReader.
  5. Itera sobre o IDataReader, preenchendo e adicionando instâncias de ServicoCampo a uma lista.
  6. Retorna a lista de serviços de campo.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline dinamicamente construído.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Lista serviços de campo de uma empresa, com opção de filtrar por status de inatividade.

ListarPorServicoCampoSuperior(int IdfServicoCampoSuperior) (Público e Estático)

  • Lógica:
  1. Define uma string SQL SQL que seleciona serviços de campo onde o Nme_Servico_Campo é igual ao Nme_Servico_Campo do serviço superior especificado por IdfServicoCampoSuperior. Nota: Esta lógica parece incorreta, pois compara o nome do serviço com o nome do serviço superior, em vez de usar Idf_Servico_Campo_Superior.
  2. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  3. Executa a consulta SQL usando DataAccessLayer.ExecuteReader.
  4. Itera sobre o IDataReader, preenchendo e adicionando instâncias de ServicoCampo a uma lista.
  5. Retorna a lista de serviços de campo.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT *
 FROM TAB_Servico_Campo
 WHERE Nme_Servico_Campo = (SELECT Nme_Servico_Campo
 FROM TAB_Servico_Campo
 WHERE Idf_Servico_Campo = @Idf_Servico_Campo)
  • Validações: Nenhuma explícita.
  • Regras de negócio: Pretende listar serviços de campo que são filhos de um serviço superior, mas a lógica SQL pode estar equivocada.

ListarServicoCampos(int IdfServicoCampo) (Público e Estático)

  • Lógica:
  1. Define uma string SQL SQL que seleciona Idf_Servico_Campo, Nme_Servico_Campo e todas as outras colunas da TAB_Servico_Campo onde Idf_Servico_Campo_Superior é igual a IdfServicoCampo.
  2. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  3. Executa a consulta SQL usando DataAccessLayer.ExecuteReader e retorna o IDataReader.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT sc.Idf_Servico_Campo, sc.Nme_Servico_Campo, *
 FROM TAB_Servico_Campo sc
 WHERE Idf_Servico_Campo_Superior = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Lista serviços de campo que são filhos diretos de um serviço superior.

ListarServicoCamposMicros(int IdfServicoCampo) (Público e Estático)

  • Lógica:
  1. Define uma string SQL SQL que seleciona todos os serviços de campo onde Idf_Servico_Campo_Superior é igual a IdfServicoCampo.
  2. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  3. Executa a consulta SQL usando DataAccessLayer.ExecuteReader.
  4. Itera sobre o IDataReader, preenchendo e adicionando instâncias de ServicoCampo a uma lista.
  5. Retorna a lista de serviços de campo.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT *
 FROM TAB_Servico_Campo
 WHERE Idf_Servico_Campo_Superior = @Idf_Servico_Campo
  • Validações: Nenhuma explícita.
  • Regras de negócio: Lista serviços de campo que são filhos diretos de um serviço superior.

ValidarNomeServicoCampoJaCadastrado(int? pIdServicoCampo, int pIdEmpresa, int? pIdCulturaCampo, string pNomeServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo, @Idf_Empresa, @Idf_Cultura_Campo e @Nme_Servico_Campo.
  2. Atribui os valores dos parâmetros, tratando pIdServicoCampo e pIdCulturaCampo como DBNull.Value se forem nulos.
  3. Executa o comando SQL SPVALIDARNOMESERVICOCAMPOJACADASTRADO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se um serviço com o mesmo nome (case insensitive) já estiver cadastrado para a mesma empresa e cultura (excluindo o próprio serviço se pIdServicoCampo for fornecido), false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo),0) AS qtde
 FROM TAB_Servico_Campo
 WHERE (@Idf_Servico_Campo IS NULL OR @Idf_Servico_Campo != Idf_Servico_Campo )
 AND Idf_Empresa = @Idf_Empresa
 AND (@Idf_Cultura_Campo IS NULL OR Idf_Cultura_Campo = @Idf_Cultura_Campo)
 AND Upper(Nme_Servico_Campo) = upper(@Nme_Servico_Campo)
  • Validações: Verifica a existência de nome de serviço de campo duplicado.
  • Regras de negócio: Garante a unicidade do nome do serviço de campo por empresa e cultura.

ValidarCodigoServicoCampoJaCadastrado(int? pIdServicoCampo, int pIdEmpresa, int? pIdCulturaCampo, string pCodigoServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo, @Idf_Empresa, @Idf_Cultura_Campo e @Cod_Servico_Campo.
  2. Atribui os valores dos parâmetros, tratando pIdServicoCampo e pIdCulturaCampo como DBNull.Value se forem nulos.
  3. Executa o comando SQL SPVALIDARCODIGOSERVICOCAMPOJACADASTRADO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se um serviço com o mesmo código (case insensitive) já estiver cadastrado para a mesma empresa e cultura (excluindo o próprio serviço se pIdServicoCampo for fornecido), false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo),0) AS qtde
 FROM TAB_Servico_Campo
 WHERE (@Idf_Servico_Campo IS NULL OR @Idf_Servico_Campo != Idf_Servico_Campo )
 AND Idf_Empresa = @Idf_Empresa
 AND (@Idf_Cultura_Campo IS NULL OR Idf_Cultura_Campo = @Idf_Cultura_Campo)
 AND Upper(Cod_Servico_Campo) = upper(@Cod_Servico_Campo)
  • Validações: Verifica a existência de código de serviço de campo duplicado.
  • Regras de negócio: Garante a unicidade do código do serviço de campo por empresa e cultura.

ValidarNumeroOrdemServicoCampoJaCadastrado(int idfEmpresa, int? pIdServicoCampo, int? pIdServicoCampoSuperior, int? pNumeroOrdem) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Empresa, @Idf_Servico_Campo, @Idf_Servico_Campo_Superior e @Num_Ordem.
  2. Atribui os valores dos parâmetros, tratando os opcionais como DBNull.Value se forem nulos.
  3. Executa o comando SQL SPVALIDARNUMEROORDEMSERVICOCAMPOJACADASTRADO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se um serviço com o mesmo número de ordem já estiver cadastrado para o mesmo serviço superior (excluindo o próprio serviço se pIdServicoCampo for fornecido), false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo),0) AS qtde
 FROM TAB_Servico_Campo
 WHERE 1 = 1
 AND Idf_Empresa = @Idf_Empresa
 AND (@Idf_Servico_Campo IS NULL OR @Idf_Servico_Campo != Idf_Servico_Campo )
 AND ((@Idf_Servico_Campo_Superior IS NULL AND Idf_Servico_Campo_Superior IS NULL)
 OR Idf_Servico_Campo_Superior = @Idf_Servico_Campo_Superior)
 AND ((@Num_Ordem IS NULL AND Num_Ordem IS NULL)
 OR Num_Ordem = @Num_Ordem)
  • Validações: Verifica a existência de número de ordem duplicado para serviços de campo analíticos.
  • Regras de negócio: Garante a unicidade do número de ordem dentro de um serviço de campo superior.

ValidarPercentualTotalServicoCampoSuperior(int? pIdServicoCampo, int pIdEmpresa, int pIdServicoCampoSuperior, decimal pPercentualAvaliacao, int pIdCulturaCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo, @Idf_Empresa, @Idf_Servico_Campo_Superior e @Idf_Cultura_Campo.
  2. Atribui os valores dos parâmetros, tratando pIdServicoCampo como DBNull.Value se for nulo.
  3. Executa o comando SQL SPCARREGARPERCENTUALAVALIACAOSERVICOSUPERIOR (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Tenta converter o resultado para decimal (percentualCadastrado).
  5. Retorna true se a soma de percentualCadastrado e pPercentualAvaliacao for maior que 100, false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(SUM(ISNULL(Prc_Avaliacao,0)), 0) AS Prc_Avaliacao
 FROM TAB_Servico_Campo sc
 WHERE (@Idf_Servico_Campo IS NULL OR @Idf_Servico_Campo != Idf_Servico_Campo )
 AND Idf_Empresa = @Idf_Empresa
 AND Idf_Servico_Campo_Superior = @Idf_Servico_Campo_Superior
 AND Idf_Cultura_Campo = @Idf_Cultura_Campo
  • Validações: Verifica se o percentual total de avaliação dos serviços de campo analíticos de um mesmo serviço superior excede 100%.
  • Regras de negócio: Impede que a soma dos percentuais de avaliação de serviços analíticos ultrapasse 100%.

ValidarServicoCampoJaVinculadoSindicato(int pIdServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  2. Atribui o pIdServicoCampo.
  3. Executa o comando SQL SPVALIDARSERVICOCAMPOJAVINCULADOSINDICATO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se o serviço de campo estiver vinculado a um sindicato, false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo), 0) qtde
 FROM TAB_Servico_Campo_Sindicato
 WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Verifica se o serviço de campo está vinculado a um sindicato.
  • Regras de negócio: Impede a exclusão de serviços de campo vinculados a sindicatos.

ValidarServicoCampoJaAvaliado(int pIdServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  2. Atribui o pIdServicoCampo.
  3. Executa o comando SQL SPVALIDARSERVICOCAMPOJAAVALIADO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se o serviço de campo já foi avaliado, false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo), 0) qtde
 FROM TAB_Avaliacao_Servico_Campo
 WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Verifica se o serviço de campo já foi avaliado.
  • Regras de negócio: Impede a exclusão de serviços de campo que já foram avaliados.

ValidarServicoCampoJaRealizado(int pIdServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  2. Atribui o pIdServicoCampo.
  3. Executa o comando SQL SPVALIDARSERVICOCAMPOJAREALIZADO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se o serviço de campo já foi realizado, false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo), 0) qtde
 FROM TAB_Servico_Campo_Realizado
 WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Verifica se o serviço de campo já foi realizado.
  • Regras de negócio: Impede a exclusão de serviços de campo que já foram realizados.

ValidarServicoCampoOcorrenciaJaLancado(int pIdServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  2. Atribui o pIdServicoCampo.
  3. Executa o comando SQL SPVALIDARSERVICOCAMPOOCORRENCIAJALANCADO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se o serviço de campo já tem alguma ocorrência lançada, false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo), 0) qtde
 FROM TAB_Servico_Campo_Ocorrencia
 WHERE Idf_Servico_Campo = @Idf_Servico_Campo
  • Validações: Verifica se o serviço de campo já tem ocorrências lançadas.
  • Regras de negócio: Impede a exclusão de serviços de campo com ocorrências lançadas.

ValidarServicoCampoJaVinculadoOutroServicoCampo(int pIdServicoCampo) (Público e Estático)

  • Lógica:
  1. Cria uma lista de SqlParameter para @Idf_Servico_Campo.
  2. Atribui o pIdServicoCampo.
  3. Executa o comando SQL SPVALIDARSERVICOCAMPOJAVINCULADOOUTROSERVICOCAMPO (select inline) usando DataAccessLayer.ExecuteScalar.
  4. Converte o resultado para int e verifica se é maior que 0.
  5. Retorna true se o serviço de campo estiver vinculado a outro serviço de campo (como superior), false caso contrário.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline:
 SELECT ISNULL(COUNT(Idf_Servico_Campo), 0) qtde
 FROM TAB_Servico_Campo sc
 WHERE sc.Idf_Servico_Campo_Superior = @Idf_Servico_Campo
  • Validações: Verifica se o serviço de campo é um serviço superior para outros serviços.
  • Regras de negócio: Impede a exclusão de serviços de campo que são superiores a outros serviços.

BuscaComponentePaginado(int pInicio, int pFim, string pSortExpression, string pSortDirection, out int pTotalRegistro, string pBuscaTexto, int? pIdEmpresa, bool? pFlagPermiteAvalicao, int? pIdTipoAvaliacaoCampo, int? pIdServicoCampoSuperior, enumServicoCampoAnaliticoSintetico pEnumTipoServicoCampo, bool pFlagConsideraServicoCampoInativo, int? pIdCulturaCampo, int? pIdTipoServicoCampo, bool pFlagSomenteUtilizaBag) (Público e Estático)

  • Lógica:
  1. Constrói dinamicamente uma string sFiltros com base nos parâmetros de entrada (empresa, permite avaliação, tipo avaliação, serviço superior, tipo de serviço, inativo, utiliza BAG, cultura, tipo serviço).
  2. Constrói uma string TemplateBusca que inclui ROW_NUMBER() para paginação, filtros de busca por Cod_Servico_Campo ou Nme_Servico_Campo, e os filtros dinâmicos sFiltros. Exclui serviços com Cod_Servico_Campo = 'PTES'.
  3. Constrói SPSELECTCOUNT e SPSELECTPAG usando TemplateBusca.
  4. Cria uma lista de SqlParameter para os parâmetros de busca e filtros.
  5. Atribui os valores dos parâmetros, tratando os opcionais como DBNull.Value se forem nulos.
  6. Executa SPSELECTCOUNT usando DataAccessLayer.ExecuteScalar para obter pTotalRegistro.
  7. Executa SPSELECTPAG usando DataAccessLayer.ExecuteReaderDs e retorna a primeira tabela do DataSet.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline dinamicamente construído.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Fornece uma busca paginada e filtrada de serviços de campo para uso em componentes, com diversas opções de filtragem.

ListarAutocomplete(string pPrefixText, int pCount, int? pIdEmpresa, bool? pFlagPermiteAvalicao, int? pIdTipoAvaliacaoCampo, int? pIdServicoCampoSuperior, enumServicoCampoAnaliticoSintetico pEnumTipoServicoCampo, bool? pFlagConsideraServicoCampoInativo, int? pIdCulturaCampo, int? pIdTipoServicoCampo, bool? pFlagSomenteUtilizaBag) (Público e Estático)

  • Lógica:
  1. Constrói dinamicamente uma string sFiltros com base nos parâmetros de entrada (empresa, permite avaliação, utiliza BAG, tipo avaliação, serviço superior, tipo de serviço, inativo, cultura, tipo serviço).
  2. Constrói uma string sQuery que inclui TOP(@TOP) para limitar os resultados, filtros de busca por Cod_Servico_Campo ou Nme_Servico_Campo, e os filtros dinâmicos sFiltros. Exclui serviços com Cod_Servico_Campo = 'PTES'. Ordena por Cod_Servico_Campo e Nme_Servico_Campo.
  3. Cria uma lista de SqlParameter para os parâmetros de busca e filtros.
  4. Atribui os valores dos parâmetros, tratando os opcionais como DBNull.Value se forem nulos.
  5. Executa a consulta SQL usando DataAccessLayer.ExecuteReaderDs e retorna a primeira tabela do DataSet.
  • Stored Procedures chamadas: Nenhuma. Utiliza SQL inline dinamicamente construído.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Fornece uma listagem de serviços de campo para funcionalidade de autocomplete, com diversos filtros e limite de resultados.

AtualizaServicosCamposMicro(SqlTransaction trans) (Privado)

  • Lógica:
  1. Condicional: Se o serviço de campo atual tiver um ServicoCampoSuperior (ou seja, é um serviço micro), o método retorna imediatamente.
  2. Chama ListarServicoCamposMicros(this.IdServicoCampo) para obter uma lista de todos os serviços de campo micro (filhos) associados a este serviço superior.
  3. Condicional: Se a lista de serviços micro for nula ou vazia, o método retorna.
  4. Itera sobre cada item (serviço micro) na lista lstServicosMicros:
  • Atualiza o FlagUtilizaBag do serviço micro com o FlagUtilizaBag do serviço superior atual.
  • Atualiza o FlagUtilizaAreaCultivada do serviço micro com o FlagUtilizaAreaCultivada do serviço superior atual.
  • Chama item.Save(trans) para persistir as alterações no serviço micro dentro da transação fornecida.
  • Stored Procedures chamadas: Nenhuma diretamente. Chama ListarServicoCamposMicros (que usa SQL inline) e item.Save(trans) (que chama Update(trans) e usa SQL inline).
  • Validações: Nenhuma explícita.
  • Regras de negócio: Propaga os valores de FlagUtilizaBag e FlagUtilizaAreaCultivada de um serviço de campo superior para seus serviços de campo micro associados.

Stored Procedures

NomeParâmetrosPropósito
INSERT INTO TAB_Servico_Campo@Idf_Empresa, @Idf_Servico_Campo_Superior, @Nme_Servico_Campo, @Cod_Servico_Campo, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Prc_Avaliacao, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Num_Ordem, @Idf_Cultura_Campo, @Idf_Tipo_Servico_Campo, @Flg_Utiliza_Bag, @Flg_SolicitaObservacao, @Flg_Utiliza_Area_Cultivada, @Flg_Descontar_Bonus, @Flg_Divisao_Bonus, @Flg_Paga_Hora_In_Itinere, @Flg_Necessita_Aprovacao, @Idf_Servico_Campo (OUTPUT)Insere um novo registro na tabela TAB_Servico_Campo e retorna o ID gerado.
UPDATE TAB_Servico_Campo@Idf_Empresa, @Idf_Servico_Campo_Superior, @Nme_Servico_Campo, @Cod_Servico_Campo, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Prc_Avaliacao, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Num_Ordem, @Idf_Cultura_Campo, @Idf_Tipo_Servico_Campo, @Flg_Utiliza_Bag, @Flg_SolicitaObservacao, @Flg_Utiliza_Area_Cultivada, @Flg_Descontar_Bonus, @Flg_Divisao_Bonus, @Flg_Paga_Hora_In_Itinere, @Flg_Necessita_Aprovacao, @Idf_Servico_CampoAtualiza um registro existente na tabela TAB_Servico_Campo com base no Idf_Servico_Campo.
UPDATE TAB_Servico_Campo SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador ; DELETE FROM TAB_Servico_Campo@Idf_Usuario_Gerador, @Idf_Servico_CampoAtualiza o usuário gerador e exclui um registro da tabela TAB_Servico_Campo.
SELECT * FROM TAB_Servico_CampoNenhumSeleciona todos os registros da tabela TAB_Servico_Campo.
SELECT * FROM TAB_Servico_Campo WHERE Idf_Servico_Campo = @Idf_Servico_Campo@Idf_Servico_CampoSeleciona um registro específico da tabela TAB_Servico_Campo com base no Idf_Servico_Campo.
SELECT ROW_NUMBER() OVER (ORDER BY ...) (paginação)Nenhum (parâmetros de ordenação e paginação são concatenados na string)Consulta paginada para TAB_Servico_Campo, incluindo ordenação.
SELECT COUNT(*) FROM (...) (contagem para paginação)NenhumConta o total de registros para a consulta paginada.
SELSERVICOCAMPOPOREMPRESA (SQL inline)@Idf_Empresa, @DescricaoSeleciona serviços de campo por empresa, com filtros de descrição e joins para cultura, tipo de serviço e tipo de avaliação.
select * from TAB_Servico_Campo sc where sc.Idf_Empresa = @Idf_Empresa and sc.Flg_Inativo = 0@Idf_EmpresaSeleciona serviços de campo ativos para uma empresa.
select * from TAB_Servico_Campo sc LEFT JOIN plataforma.tab_cultura_campo cc on cc.Idf_Cultura_Campo = sc.Idf_Cultura_Campo where sc.Idf_Empresa = @Idf_Empresa and sc.Flg_Inativo = 0 and sc.Cod_Servico_Campo = @Cod_Servico_Campo AND (@CulturaCampo IS NULL OR cc.Des_Cultura_Campo = @CulturaCampo)@Idf_Empresa, @Cod_Servico_Campo, @CulturaCampoBusca um serviço de campo pelo código, empresa e cultura.
SELECT * FROM TAB_Servico_Campo WHERE Idf_Empresa = @Idf_Empresa [AND Flg_Inativo = 0/1]@Idf_EmpresaSeleciona serviços de campo por empresa, opcionalmente filtrando por status de inatividade.
SELECT * FROM TAB_Servico_Campo WHERE Nme_Servico_Campo = (SELECT Nme_Servico_Campo FROM TAB_Servico_Campo WHERE Idf_Servico_Campo = @Idf_Servico_Campo)@Idf_Servico_CampoLista serviços de campo com o mesmo nome de um serviço superior (lógica potencialmente incorreta).
SELECT sc.Idf_Servico_Campo, sc.Nme_Servico_Campo, * FROM TAB_Servico_Campo sc WHERE Idf_Servico_Campo_Superior = @Idf_Servico_Campo@Idf_Servico_CampoLista serviços de campo que são filhos diretos de um serviço superior.
SELECT * FROM TAB_Servico_Campo WHERE Idf_Servico_Campo_Superior = @Idf_Servico_Campo@Idf_Servico_CampoLista serviços de campo que são filhos diretos de um serviço superior.
SPVALIDARNOMESERVICOCAMPOJACADASTRADO (SQL inline)@Idf_Servico_Campo, @Idf_Empresa, @Idf_Cultura_Campo, @Nme_Servico_CampoVerifica a existência de nome de serviço de campo duplicado por empresa e cultura.
SPVALIDARCODIGOSERVICOCAMPOJACADASTRADO (SQL inline)@Idf_Servico_Campo, @Idf_Empresa, @Idf_Cultura_Campo, @Cod_Servico_CampoVerifica a existência de código de serviço de campo duplicado por empresa e cultura.
SPVALIDARNUMEROORDEMSERVICOCAMPOJACADASTRADO (SQL inline)@Idf_Empresa, @Idf_Servico_Campo, @Idf_Servico_Campo_Superior, @Num_OrdemVerifica a existência de número de ordem duplicado para serviços de campo analíticos.
SPCARREGARPERCENTUALAVALIACAOSERVICOSUPERIOR (SQL inline)@Idf_Servico_Campo, @Idf_Empresa, @Idf_Servico_Campo_Superior, @Idf_Cultura_CampoCalcula a soma dos percentuais de avaliação de serviços de campo analíticos de um serviço superior.
SPVALIDARSERVICOCAMPOJAVINCULADOSINDICATO (SQL inline)@Idf_Servico_CampoVerifica se o serviço de campo está vinculado a um sindicato.
SPVALIDARSERVICOCAMPOJAAVALIADO (SQL inline)@Idf_Servico_CampoVerifica se o serviço de campo já foi avaliado.
SPVALIDARSERVICOCAMPOJAREALIZADO (SQL inline)@Idf_Servico_CampoVerifica se o serviço de campo já foi realizado.
SPVALIDARSERVICOCAMPOOCORRENCIAJALANCADO (SQL inline)@Idf_Servico_CampoVerifica se o serviço de campo já tem ocorrências lançadas.
SPVALIDARSERVICOCAMPOJAVINCULADOOUTROSERVICOCAMPO (SQL inline)@Idf_Servico_CampoVerifica se o serviço de campo é um serviço superior para outros serviços.
SELECT ROW_NUMBER() OVER (ORDER BY ...) FROM TAB_Servico_Campo sc WHERE 1 = 1 and Cod_Servico_Campo <> 'PTES' AND (sc.Cod_Servico_Campo like '%' + @BuscaTexto + '%' OR sc.Nme_Servico_Campo like '%' + @BuscaTexto + '%') [filtros] (SQL inline dinâmico para componente)@BuscaTexto, @Idf_Empresa, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Idf_Servico_Campo_Superior, @Idf_Cultura_Campo, @Idf_Tipo_Servico_CampoBusca paginada e filtrada de serviços de campo para componentes.
SELECT TOP(@TOP) sc.* FROM TAB_Servico_Campo sc WHERE 1 = 1 and Cod_Servico_Campo <> 'PTES' AND (sc.Cod_Servico_Campo like '%' + @BuscaTexto + '%' OR sc.Nme_Servico_Campo like '%' + @BuscaTexto + '%') [filtros] ORDER BY Cod_Servico_Campo asc, Nme_Servico_Campo asc (SQL inline dinâmico para autocomplete)@TOP, @BuscaTexto, @Idf_Empresa, @Flg_Permite_Avaliacao, @Idf_Tipo_Avaliacao_Campo, @Idf_Servico_Campo_Superior, @Idf_Cultura_Campo, @Idf_Tipo_Servico_CampoLista serviços de campo para autocomplete com filtros e limite.

10. Aprofundamento — Detalhes Internos de Métodos

Employer.Plataforma.BLL.ParametroEspecifico

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ParametroEspecifico_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ParametroEspecifico_P2.cs

Métodos

MétodoAssinaturaPropósito
ParametroEspecificopublic ParametroEspecifico()Construtor padrão da classe.
ParametroEspecificopublic ParametroEspecifico(int idParametroEspecifico)Construtor que inicializa a instância com um ID de parâmetro específico existente.
GetParametersprivate List<SqlParameter> GetParameters()Prepara uma lista de parâmetros SQL para operações de insert e update.
SetParametersprivate void SetParameters(List<SqlParameter> parms)Preenche uma lista de parâmetros SQL com os valores da instância atual de ParametroEspecifico.
Insertprivate void Insert()Insere uma nova instância de ParametroEspecifico no banco de dados, gerenciando sua própria transação.
Insertprivate void Insert(SqlTransaction trans)Insere uma nova instância de ParametroEspecifico no banco de dados, utilizando uma transação existente.
Updateprivate void void Update()Atualiza uma instância existente de ParametroEspecifico no banco de dados.
Updateprivate void Update(SqlTransaction trans)Atualiza uma instância existente de ParametroEspecifico no banco de dados, utilizando uma transação existente.
Savepublic void Save()Salva (insere ou atualiza) a instância de ParametroEspecifico no banco de dados.
Savepublic void Save(SqlTransaction trans)Salva (insere ou atualiza) a instância de ParametroEspecifico no banco de dados, utilizando uma transação existente.
Deletepublic static void Delete(int idParametroEspecifico)Exclui um registro de ParametroEspecifico pelo ID.
Deletepublic static void Delete(int idParametroEspecifico, SqlTransaction trans)Exclui um registro de ParametroEspecifico pelo ID, utilizando uma transação existente.
Deletepublic static void Delete(List<int> idParametroEspecifico)Exclui múltiplos registros de ParametroEspecifico por uma lista de IDs.
LoadDataReaderprivate static IDataReader LoadDataReader(int idParametroEspecifico)Retorna um IDataReader com os dados de um ParametroEspecifico específico.
LoadDataReaderprivate static IDataReader LoadDataReader(int idParametroEspecifico, SqlTransaction trans)Retorna um IDataReader com os dados de um ParametroEspecifico específico, utilizando uma transação existente.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada de ParametroEspecifico.
LoadObjectpublic static ParametroEspecifico LoadObject(int idParametroEspecifico)Retorna uma instância de ParametroEspecifico carregada do banco de dados pelo ID.
LoadObjectpublic static ParametroEspecifico LoadObject(int idParametroEspecifico, SqlTransaction trans)Retorna uma instância de ParametroEspecifico carregada do banco de dados pelo ID, utilizando uma transação existente.
CompleteObjectpublic bool CompleteObject()Completa os atributos da instância atual de ParametroEspecifico com dados do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa os atributos da instância atual de ParametroEspecifico com dados do banco de dados, utilizando uma transação existente.
SetInstanceprivate static bool SetInstance(IDataReader dr, ParametroEspecifico objParametroEspecifico)Método auxiliar para preencher uma instância de ParametroEspecifico a partir de um IDataReader.
ListarNaturezasPermitidasINSS15e16public static List<int> ListarNaturezasPermitidasINSS15e16()Retorna uma lista de IDs de naturezas permitidas para INSS 15 e 16, lendo de um parâmetro específico.
RecuperarParametroEspecificopublic static string RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, CentroResultado objCentroResultado)Recupera o valor de um parâmetro específico, considerando a hierarquia Empresa, Filial, Contrato e Centro de Resultado.
RecuperarParametroEspecificopublic static string RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, CentroResultado objCentroResultado, SqlTransaction trans)Recupera o valor de um parâmetro específico, considerando a hierarquia Empresa, Filial, Contrato e Centro de Resultado, dentro de uma transação.
RecuperarParametroEspecificopublic static string RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, Sindicato objSindicato, CentroResultado objCentroResultado)Recupera o valor de um parâmetro específico, considerando a hierarquia Empresa, Filial, Contrato, Sindicato e Centro de Resultado.
RecuperarParametroEspecificopublic static string RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, Sindicato objSindicato, CentroResultado objCentroResultado, SqlTransaction trans)Recupera o valor de um parâmetro específico, considerando a hierarquia Empresa, Filial, Contrato, Sindicato e Centro de Resultado, dentro de uma transação.
RecuperarParametroEspecificoEmpresapublic static string RecuperarParametroEspecificoEmpresa(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa)Recupera o valor de um parâmetro específico para uma empresa, priorizando o parâmetro específico da empresa e, se não encontrado, o parâmetro geral.
RecuperarParametroEspecificoEmpresapublic static string RecuperarParametroEspecificoEmpresa(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, SqlTransaction trans)Recupera o valor de um parâmetro específico para uma empresa, priorizando o parâmetro específico da empresa e, se não encontrado, o parâmetro geral, dentro de uma transação.
RecuperarParametroEspecificoEmpregadopublic static string RecuperarParametroEspecificoEmpregado(Enumeradores.NomeParametro enumNomeParametro, Empregado objEmpregado)Recupera o valor de um parâmetro específico para um empregado, considerando a hierarquia Empresa, Filial e Contrato do empregado.
RecuperarSomenteParametroEspecificoEmpresapublic static string RecuperarSomenteParametroEspecificoEmpresa(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa)Recupera o valor de um parâmetro específico para uma empresa, considerando somente o parâmetro específico da empresa.
RecuperarSomenteParametroEspecificoEmpresapublic static string RecuperarSomenteParametroEspecificoEmpresa(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, SqlTransaction trans)Recupera o valor de um parâmetro específico para uma empresa, considerando somente o parâmetro específico da empresa, dentro de uma transação.
ExisteParametroEspecificoCadastradopublic static bool ExisteParametroEspecificoCadastrado(int idParametro, int? idParametroEspecifico, int? idEmpresa, int? idFilial, int? idContrato, int? idCentroResultado, int? idSindicato)Verifica se já existe um parâmetro específico cadastrado com os valores fornecidos, considerando a hierarquia.
Salvarpublic static bool Salvar(ParametroEspecifico objParametroEspecifico, Parametro objParametro, AlteracaoMaster objAlteracaoMaster)Salva um objeto ParametroEspecifico e, opcionalmente, um Parametro e um AlteracaoMaster no banco de dados, gerenciando transações.

Detalhamento de Métodos Importantes

GetParameters()

  • Lógica:
    1. Cria uma nova lista de SqlParameter.
    2. Adiciona quatorze parâmetros à lista, definindo seus nomes, tipos SQL e tamanhos:
  • @Idf_Parametro_Especifico (Int, 4 bytes)
  • @Idf_Parametro (Int, 4 bytes)
  • @Idf_Tipo_Valor (Int, 4 bytes)
  • @Vlr_Parametro (VarChar, 200 bytes)
  • @Flg_Inativo (Bit, 1 byte)
  • @Dta_Cadastro (DateTime, 8 bytes)
  • @Idf_Usuario_Gerador (Int, 4 bytes)
  • @Flg_Validado (Bit, 1 byte)
  • @Idf_Empresa (Int, 4 bytes)
  • @Idf_Filial (Int, 4 bytes)
  • @Idf_Contrato (Int, 4 bytes)
  • @Idf_Sindicato (Int, 4 bytes)
  • @Idf_Centro_Resultado (Int, 4 bytes)
  • @Des_Verbas_Informacao (VarChar, 200 bytes)
  1. Retorna a lista de parâmetros.
  • Propósito: Centralizar a criação dos parâmetros SQL para evitar repetição e garantir consistência.

SetParameters(List parms)

  • Lógica:
    1. Atribui o valor de _idParametroEspecifico ao primeiro parâmetro (@Idf_Parametro_Especifico).
    2. Atribui _parametro.IdParametro e _tipoValor.IdTipoValor aos seus respectivos parâmetros.
    3. Se _valorParametro não for nulo ou vazio, atribui seu valor; caso contrário, atribui DBNull.Value.
    4. Atribui _flagInativo e _flagValidado aos seus respectivos parâmetros.
    5. Para _empresa, _filial, _contrato, _sindicato, _centroResultado:
  • Se o objeto não for nulo, atribui seu ID ao parâmetro correspondente; caso contrário, atribui DBNull.Value.
  1. Se _descricaoVerbasInformacao não for nulo ou vazio, atribui seu valor; caso contrário, atribui DBNull.Value.
  2. Se a instância não for persistida (!_persisted):
  • Define a direção do parâmetro @Idf_Parametro_Especifico como Output (para receber o ID gerado).
  • Define _dataCadastro como a data e hora atuais (DateTime.Now).
  1. Caso contrário (se já persistida):
  • Define a direção do parâmetro @Idf_Parametro_Especifico como Input.
  1. Atribui _dataCadastro ao seu parâmetro.
  2. Define _usuarioGerador com base no CodigoUsuario da sessão HTTP atual (se disponível, caso contrário, usa Usuario(1)).
  3. Atribui _usuarioGerador.IdUsuario ao seu parâmetro.
  • Propósito: Preencher os valores dos parâmetros SQL com os dados da instância atual de ParametroEspecifico antes de executar uma query.
  • Regras de negócio:
    • IdParametroEspecifico é um campo auto-numerado, seu parâmetro é configurado como Output na inserção.
    • DataCadastro é preenchido automaticamente na inserção.
    • UsuarioGerador é preenchido com o usuário logado.

Insert()

  • Lógica:
    1. Chama GetParameters() e SetParameters(parms).
    2. Abre uma nova conexão SQL e inicia uma transação.
    3. Dentro de um bloco try:
  • Executa a query SPINSERT (INSERT INTO TAB_Parametro_Especifico) usando DataAccessLayer.ExecuteNonQueryCmd().
  • Recupera o Idf_Parametro_Especifico gerado pelo banco de dados (usando SCOPE_IDENTITY()) do parâmetro de saída.
  • Limpa os parâmetros do comando.
  • Define _persisted como true e _modified como false.
  • Confirma a transação.
  1. Dentro de um bloco catch, reverte a transação e relança a exceção.
  • Stored Procedures chamadas:
    • SPINSERT: INSERT INTO TAB_Parametro_Especifico (Idf_Parametro, Idf_Tipo_Valor, Vlr_Parametro, Flg_Inativo, Dta_Cadastro, Idf_Usuario_Gerador, Flg_Validado, Idf_Empresa, Idf_Filial, Idf_Contrato, Idf_Sindicato, Idf_Centro_Resultado, Des_Verbas_Informacao) VALUES (@Idf_Parametro, @Idf_Tipo_Valor, @Vlr_Parametro, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Flg_Validado, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Sindicato, @Idf_Centro_Resultado, @Des_Verbas_Informacao);SET @Idf_Parametro_Especifico = SCOPE_IDENTITY();
  • Parâmetros: @Idf_Parametro, @Idf_Tipo_Valor, @Vlr_Parametro, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Flg_Validado, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Sindicato, @Idf_Centro_Resultado, @Des_Verbas_Informacao, @Idf_Parametro_Especifico (Output)
  • Propósito: Inserir um novo registro na tabela TAB_Parametro_Especifico e retornar o ID gerado.

Update()

  • Lógica:
    1. Verifica se a instância foi modificada (_modified).
    2. Se foi modificada:
  • Chama GetParameters() e SetParameters(parms).
  • Executa a query SPUPDATE (UPDATE TAB_Parametro_Especifico) usando DataAccessLayer.ExecuteNonQuery().
  • Define _modified como false.
  • Stored Procedures chamadas:
    • SPUPDATE: UPDATE TAB_Parametro_Especifico SET Idf_Parametro = @Idf_Parametro, Idf_Tipo_Valor = @Idf_Tipo_Valor, Vlr_Parametro = @Vlr_Parametro, Flg_Inativo = @Flg_Inativo, Dta_Cadastro = @Dta_Cadastro, Idf_Usuario_Gerador = @Idf_Usuario_Gerador, Flg_Validado = @Flg_Validado, Idf_Empresa = @Idf_Empresa, Idf_Filial = @Idf_Filial, Idf_Contrato = @Idf_Contrato, Idf_Sindicato = @Idf_Sindicato, Idf_Centro_Resultado = @Idf_Centro_Resultado, Des_Verbas_Informacao = @Des_Verbas_Informacao WHERE Idf_Parametro_Especifico = @Idf_Parametro_Especifico
  • Parâmetros: @Idf_Parametro, @Idf_Tipo_Valor, @Vlr_Parametro, @Flg_Inativo, @Dta_Cadastro, @Idf_Usuario_Gerador, @Flg_Validado, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Sindicato, @Idf_Centro_Resultado, @Des_Verbas_Informacao, @Idf_Parametro_Especifico
  • Propósito: Atualizar um registro existente na tabela TAB_Parametro_Especifico.

Save()

  • Lógica:
    1. Se a instância não for persistida (!_persisted):
  • Chama this.Insert().
  1. Caso contrário (se já persistida):
  • Chama this.Update().
  • Propósito: Abstrair a lógica de inserção ou atualização, decidindo qual operação executar com base no estado da instância.

Delete(int idParametroEspecifico)

  • Lógica:
    1. Cria uma lista de SqlParameter.
    2. Adiciona @Idf_Parametro_Especifico e @Idf_Usuario_Gerador (obtido da sessão do usuário logado).
    3. Executa a query SPDELETE (UPDATE para Idf_Usuario_Gerador e DELETE FROM TAB_Parametro_Especifico) usando DataAccessLayer.ExecuteNonQuery().
  • Stored Procedures chamadas:
    • SPDELETE: UPDATE TAB_Parametro_Especifico SET Idf_Usuario_Gerador = @Idf_Usuario_Gerador WHERE Idf_Parametro_Especifico = @Idf_Parametro_Especifico ; DELETE FROM TAB_Parametro_Especifico WHERE Idf_Parametro_Especifico = @Idf_Parametro_Especifico
  • Parâmetros: @Idf_Parametro_Especifico (int), @Idf_Usuario_Gerador (int)
  • Propósito: Atualizar o usuário gerador e, em seguida, excluir o registro da tabela TAB_Parametro_Especifico.
  • Regras de negócio:
    • Antes de excluir fisicamente o registro, o Idf_Usuario_Gerador é atualizado, o que pode indicar uma auditoria ou “exclusão lógica” antes da exclusão física.

Delete(List idParametroEspecifico)

  • Lógica:
    1. Cria uma lista de SqlParameter.
    2. Constrói dinamicamente duas queries SQL: uma para UPDATE do Idf_Usuario_Gerador e outra para DELETE com uma cláusula WHERE IN.
    3. Itera sobre a lista idParametroEspecifico:
  • Para cada ID, cria um nome de parâmetro único (ex: @parm0, @parm1).
  • Adiciona o nome do parâmetro às strings das queries.
  • Adiciona um SqlParameter correspondente à lista de parâmetros com o valor do ID.
  1. Adiciona o parâmetro @Idf_Usuario_Gerador (obtido da sessão do usuário logado) à lista de parâmetros.
  2. Concatena as duas queries (UPDATE + DELETE).
  3. Executa a query SQL construída usando DataAccessLayer.ExecuteNonQuery().
  • Stored Procedures chamadas:
    • Query SQL dinâmica:
 update TAB_Parametro_Especifico set Idf_Usuario_Gerador = @Idf_Usuario_Gerador where Idf_Parametro_Especifico in (@parm0, @parm1, ...) ;
 delete from TAB_Parametro_Especifico where Idf_Parametro_Especifico in (@parm0, @parm1, ...)
  • Parâmetros: @parm0, @parm1, etc. (int), @Idf_Usuario_Gerador (int)
  • Propósito: Atualizar o usuário gerador e, em seguida, excluir múltiplos registros da tabela TAB_Parametro_Especifico por uma lista de IDs.

LoadDataReader(int idParametroEspecifico)

  • Lógica:
    1. Cria uma lista de SqlParameter.
    2. Adiciona um parâmetro @Idf_Parametro_Especifico com o valor idParametroEspecifico.
    3. Executa a query SPSELECTID (SELECT * FROM TAB_Parametro_Especifico WHERE Idf_Parametro_Especifico = @Idf_Parametro_Especifico) usando DataAccessLayer.ExecuteReader().
    4. Retorna o IDataReader.
  • Stored Procedures chamadas:
    • SPSELECTID: SELECT * FROM TAB_Parametro_Especifico WHERE Idf_Parametro_Especifico = @Idf_Parametro_Especifico
  • Parâmetros: @Idf_Parametro_Especifico (int)
  • Propósito: Selecionar um registro específico da tabela TAB_Parametro_Especifico.

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

  • Lógica:
    1. Calcula inicio e fim para a paginação.
    2. Constrói uma query SQL SPSELECTPAG para selecionar os dados da tabela TAB_Parametro_Especifico com uma coluna RowID para ordenação e paginação.
    3. Constrói uma query SQL SPSELECTCOUNT para contar o total de registros.
    4. Atualiza SPSELECTPAG para filtrar os registros pelo RowId entre inicio e fim.
    5. Executa SPSELECTCOUNT usando DataAccessLayer.ExecuteScalar() para obter o totalRegistros.
    6. Executa SPSELECTPAG usando DataAccessLayer.ExecuteReader().
    7. Retorna o IDataReader.
  • Stored Procedures chamadas:
    • Query SQL dinâmica para paginação e contagem:
 SELECT ROW_NUMBER() OVER (ORDER BY [colunaOrdenacao] [direcaoOrdenacao]) AS RowID, Par.Idf_Parametro_Especifico, Par.Idf_Parametro, Par.Idf_Tipo_Valor, Par.Vlr_Parametro, Par.Flg_Inativo, Par.Dta_Cadastro, Par.Idf_Usuario_Gerador, Par.Flg_Validado, Par.Idf_Empresa, Par.Idf_Filial, Par.Idf_Contrato, Par.Idf_Sindicato, Par.Idf_Centro_Resultado, Par.Des_Verbas_Informacao FROM TAB_Parametro_Especifico Par
 SELECT COUNT(*) FROM (SELECT ROW_NUMBER() OVER (ORDER BY [colunaOrdenacao] [direcaoOrdenacao]) AS RowID, Par.Idf_Parametro_Especifico, Par.Idf_Parametro, Par.Idf_Tipo_Valor, Par.Vlr_Parametro, Par.Flg_Inativo, Par.Dta_Cadastro, Par.Idf_Usuario_Gerador, Par.Flg_Validado, Par.Idf_Empresa, Par.Idf_Filial, Par.Idf_Contrato, Par.Idf_Sindicato, Par.Idf_Centro_Resultado, Par.Des_Verbas_Informacao FROM TAB_Parametro_Especifico Par) AS temp
 SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY [colunaOrdenacao] [direcaoOrdenacao]) AS RowID, Par.Idf_Parametro_Especifico, Par.Idf_Parametro, Par.Idf_Tipo_Valor, Par.Vlr_Parametro, Par.Flg_Inativo, Par.Dta_Cadastro, Par.Idf_Usuario_Gerador, Par.Flg_Validado, Par.Idf_Empresa, Par.Idf_Filial, Par.Idf_Contrato, Par.Idf_Sindicato, Par.Idf_Centro_Resultado, Par.Des_Verbas_Informacao FROM TAB_Parametro_Especifico Par) AS temp WHERE RowId BETWEEN [inicio] AND [fim]
  • Parâmetros: Nenhum parâmetro SQL explícito, mas a query é construída com base nos parâmetros de entrada do método.
  • Propósito: Fornecer uma consulta paginada e ordenada dos registros de ParametroEspecifico.

LoadObject(int idParametroEspecifico)

  • Lógica:
    1. Usa um IDataReader obtido de LoadDataReader(idParametroEspecifico).
    2. Cria uma nova instância de ParametroEspecifico.
    3. Chama SetInstance(dr, objParametroEspecifico) para preencher a instância.
    4. Se SetInstance retornar true, retorna a instância preenchida.
    5. Caso contrário, lança uma RecordNotFoundException.
  • Exceções Lançadas:
    • RecordNotFoundException: Se nenhum registro for encontrado para o idParametroEspecifico fornecido.

CompleteObject()

  • Lógica:
    1. Usa um IDataReader obtido de LoadDataReader(this._idParametroEspecifico).
    2. Chama SetInstance(dr, this) para preencher a instância atual.
    3. Retorna o resultado de SetInstance.
  • Propósito: Preencher os atributos da própria instância com dados do banco de dados.

SetInstance(IDataReader dr, ParametroEspecifico objParametroEspecifico)

  • Lógica:
    1. Dentro de um bloco try:
  • Se dr.Read() retornar true (há um registro para ler):
  • Atribui os valores das colunas do IDataReader aos atributos correspondentes de objParametroEspecifico, tratando DBNull.Value e instanciando objetos relacionados (Parametro, TipoValor, Usuario, Empresa, Filial, Contrato, Sindicato, CentroResultado).
  • Define _persisted como true e _modified como false.
  • Retorna true.
  • Caso contrário, retorna false.
  1. Dentro de um bloco catch, relança a exceção.
  2. Dentro de um bloco finally, descarta o IDataReader (dr.Dispose()).
  • Propósito: Mapear os dados de um IDataReader para as propriedades de um objeto ParametroEspecifico, incluindo a criação de objetos de domínio relacionados.

ListarNaturezasPermitidasINSS15e16()

  • Lógica:
    1. Inicializa naturezasStr como string vazia.
    2. Usa um IDataReader obtido de DataAccessLayer.ExecuteReader(CommandType.Text, SELNATUREZASPERMITIDASINSS15E16, null).
    3. Se o reader puder ler um registro:
  • Atribui o valor da coluna “Des_Verbas_Informacao” a naturezasStr.
  1. Divide naturezasStr por vírgulas e converte cada parte para inteiro, retornando uma List<int>.
  • Stored Procedures chamadas:
    • SELNATUREZASPERMITIDASINSS15E16:
 SELECT Des_Verbas_Informacao
 FROM TAB_Parametro_Especifico PES
 WHERE 1 = 1
 AND PES.Idf_Parametro = 1516
 AND PES.Vlr_Parametro = 1
  • Parâmetros: Nenhum.
  • Propósito: Recuperar a descrição das verbas de informação para parâmetros específicos relacionados ao INSS 15 e 16.
  • Regras de negócio:
    • O parâmetro Idf_Parametro = 1516 e Vlr_Parametro = 1 são chaves para identificar as naturezas permitidas.
    • A descrição das verbas é esperada como uma string separada por vírgulas de IDs.

RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, CentroResultado objCentroResultado)

  • Lógica:
    1. Inicializa retorno como string vazia.
    2. Abre uma nova conexão SQL e inicia uma transação.
    3. Dentro de um bloco try:
  • Chama a sobrecarga RecuperarParametroEspecifico(..., SqlTransaction trans) para realizar a busca dentro da transação.
  • Confirma a transação.
  1. Dentro de um bloco catch, reverte a transação.
  2. Retorna retorno.
  • Propósito: Fornecer uma interface para recuperar um parâmetro específico, gerenciando a transação internamente.

RecuperarParametroEspecifico(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, Filial objFilial, Contrato objContrato, Sindicato objSindicato, CentroResultado objCentroResultado, SqlTransaction trans)

  • Lógica:
    1. Cria uma lista de SqlParameter.
    2. Adiciona @Idf_Parametro com o valor do enumNomeParametro.
    3. Para objEmpresa, objFilial, objContrato, objSindicato, objCentroResultado:
  • Se o objeto não for nulo, adiciona o ID ao parâmetro correspondente; caso contrário, adiciona DBNull.Value.
  1. Executa a query SPSELPARAMENTROESPECIFICO (que chama a função de tabela TAB_SF_Parametro_Especifico) usando DataAccessLayer.ExecuteReader(), passando a transação.
  2. Se o IDataReader puder ler um registro:
  • Atribui o valor da coluna “Vlr_Parametro” a resultado.
  1. Retorna resultado.
  • Stored Procedures chamadas:
    • SPSELPARAMENTROESPECIFICO: SELECT * FROM TAB_SF_Parametro_Especifico(@Idf_Parametro, @Idf_Empresa, @Idf_Filial, @Idf_Contrato, @Idf_Sindicato, @Idf_Centro_Resultado)
  • Parâmetros: @Idf_Parametro (int), @Idf_Empresa (int?), @Idf_Filial (int?), @Idf_Contrato (int?), @Idf_Sindicato (int?), @Idf_Centro_Resultado (int?)
  • Propósito: Recuperar o valor de um parâmetro específico, considerando a hierarquia de especificidade.

RecuperarParametroEspecificoEmpresa(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, SqlTransaction trans)

  • Lógica:
    1. Cria uma lista de SqlParameter.
    2. Adiciona @Idf_Parametro com o valor do enumNomeParametro.
    3. Para objEmpresa:
  • Se o objeto não for nulo, adiciona o ID ao parâmetro; caso contrário, adiciona DBNull.Value.
  1. Define uma query SQL dinâmica que busca o Vlr_Parametro da tabela TAB_Parametro_Especifico para a empresa, com Des_Ordem = 2.
  2. Executa a query SQL usando DataAccessLayer.ExecuteReader(), passando a transação.
  3. Se o IDataReader puder ler um registro:
  • Atribui o valor da coluna “Vlr_Parametro” a resultado.
  1. Se resultado ainda for vazio ou nulo:
  • Chama Parametro.RecuperaValorParametro(enumNomeParametro, trans) para tentar recuperar o parâmetro geral (não específico da empresa).
  1. Retorna resultado.
  • Stored Procedures chamadas:
    • Query SQL dinâmica:
 SELECT TOP 1 Vlr_Parametro
 FROM (
 --POR EMPRESA
 SELECT PE.Vlr_Parametro, 2 Des_Ordem
 FROM TAB_Parametro P
 INNER JOIN TAB_Parametro_Especifico PE
 ON PE.Idf_Parametro = P.Idf_Parametro
 WHERE PE.Idf_Parametro = @Idf_Parametro
 AND PE.Idf_Empresa = @Idf_Empresa
 AND PE.Flg_Inativo = 0
 ) AS Parametros
 ORDER BY Des_Ordem DESC
  • Parâmetros: @Idf_Parametro (int), @Idf_Empresa (int?)
  • Propósito: Recuperar o valor de um parâmetro específico para uma empresa, com fallback para o parâmetro geral.

RecuperarParametroEspecificoEmpregado(Enumeradores.NomeParametro enumNomeParametro, Empregado objEmpregado)

  • Lógica:
    1. Completa os objetos Empregado e Contrato do empregado.
    2. Cria uma lista de SqlParameter, adicionando @Idf_Parametro e @Idf_Empresa (do contrato do empregado).
    3. Para FilialGestora e Contrato do empregado:
  • Se o objeto não for nulo, adiciona o ID ao parâmetro correspondente; caso contrário, adiciona DBNull.Value.
  1. Define uma query SQL dinâmica complexa que busca o Vlr_Parametro da tabela TAB_Parametro_Especifico em uma hierarquia de especificidade:
  • Primeiro tenta por contrato (empresa, filial, contrato).
  • Depois por filial (empresa, filial).
  • Por fim, por empresa (apenas empresa).
  • A ordenação Des_Ordem DESC garante que o mais específico seja selecionado (4 para contrato, 3 para filial, 2 para empresa).
  1. Executa a query SQL usando DataAccessLayer.ExecuteReader().
  2. Se o IDataReader puder ler um registro:
  • Atribui o valor da coluna “Vlr_Parametro” a resultado.
  1. Se resultado ainda for vazio ou nulo:
  • Chama Parametro.RecuperaValorParametro(enumNomeParametro) para tentar recuperar o parâmetro geral.
  1. Retorna resultado.
  • Stored Procedures chamadas:
    • Query SQL dinâmica:
 SELECT TOP 1 Vlr_Parametro
 FROM (
 --por empresa
 SELECT PE.Vlr_Parametro, 2 Des_Ordem
 FROM TAB_Parametro P
 INNER JOIN TAB_Parametro_Especifico PE
 ON PE.Idf_Parametro = P.Idf_Parametro
 WHERE PE.Idf_Parametro = @Idf_Parametro
 AND PE.Idf_Empresa = @Idf_Empresa
 AND PE.Idf_Filial IS NULL
 AND PE.Idf_Contrato IS NULL
 AND PE.Flg_Inativo = 0

 UNION ALL
 --por filial
 SELECT PE.Vlr_Parametro, 3 Des_Ordem
 FROM TAB_Parametro P
 INNER JOIN TAB_Parametro_Especifico PE
 ON PE.Idf_Parametro = P.Idf_Parametro
 WHERE PE.Idf_Parametro = @Idf_Parametro
 AND PE.Idf_Empresa = @Idf_Empresa
 AND PE.Idf_Filial = @Idf_Filial
 AND PE.Idf_Contrato IS NULL
 AND PE.Flg_Inativo = 0

 UNION ALL
 --por contrato
 SELECT PE.Vlr_Parametro, 4 Des_Ordem
 FROM TAB_Parametro P
 INNER JOIN TAB_Parametro_Especifico PE
 ON PE.Idf_Parametro = P.Idf_Parametro
 WHERE PE.Idf_Parametro = @Idf_Parametro
 AND PE.Idf_Empresa = @Idf_Empresa
 AND PE.Idf_Filial = @Idf_Filial
 AND PE.Idf_Contrato = @Idf_Contrato
 AND PE.Flg_Inativo = 0
 ) AS Parametros
 ORDER BY Des_Ordem DESC
  • Parâmetros: @Idf_Parametro (int), @Idf_Empresa (int), @Idf_Filial (int?), @Idf_Contrato (int?)
  • Propósito: Recuperar o valor de um parâmetro específico para um empregado, aplicando uma hierarquia de busca (contrato > filial > empresa) e fallback para o parâmetro geral.

RecuperarSomenteParametroEspecificoEmpresa(Enumeradores.NomeParametro enumNomeParametro, Empresa objEmpresa, SqlTransaction trans)

  • Lógica:
    1. Cria uma lista de SqlParameter.
    2. Adiciona @Idf_Parametro com o valor do enumNomeParametro.
    3. Para objEmpresa:
  • Se o objeto não for nulo, adiciona o ID ao parâmetro; caso contrário, adiciona DBNull.Value.
  1. Define uma query SQL dinâmica que busca o Vlr_Parametro da tabela TAB_Parametro_Especifico para a empresa, com Des_Ordem = 2.
  2. Executa a query SQL usando DataAccessLayer.ExecuteReader(), passando a transação.
  3. Se o IDataReader puder ler um registro:
  • Atribui o valor da coluna “Vlr_Parametro” a resultado.
  1. Retorna resultado.
  • Stored Procedures chamadas:
    • Query SQL dinâmica (similar a RecuperarParametroEspecificoEmpresa, mas sem o fallback para Parametro.RecuperaValorParametro):
 SELECT TOP 1 Vlr_Parametro
 FROM (
 --POR EMPRESA
 SELECT PE.Vlr_Parametro, 2 Des_Ordem
 FROM TAB_Parametro P
 INNER JOIN TAB_Parametro_Especifico PE
 ON PE.Idf_Parametro = P.Idf_Parametro
 WHERE PE.Idf_Parametro = @Idf_Parametro
 AND PE.Idf_Empresa = @Idf_Empresa
 AND PE.Flg_Inativo = 0
 ) AS Parametros
 ORDER BY Des_Ordem DESC
  • Parâmetros: @Idf_Parametro (int), @Idf_Empresa (int?)
  • Propósito: Recuperar o valor de um parâmetro específico para uma empresa, sem considerar o parâmetro geral.

ExisteParametroEspecificoCadastrado(int idParametro, int? idParametroEspecifico, int? idEmpresa, int? idFilial, int? idContrato, int? idCentroResultado, int? idSindicato)

  • Lógica:
    1. Cria uma lista de SqlParameter.
    2. Adiciona parâmetros para idParametro, idParametroEspecifico, idEmpresa, idFilial, idContrato, idCentroResultado, idSindicato, tratando valores nulos com DBNull.Value.
    3. Executa a query SPEXISTEPARAMETROESPECIFICOCADASTRADO usando DataAccessLayer.ExecuteScalar().
    4. Converte o resultado para booleano e retorna.
  • Stored Procedures chamadas:
    • SPEXISTEPARAMETROESPECIFICOCADASTRADO:
 SELECT COUNT(*)
 FROM TAB_Parametro_Especifico PES (NOLOCK)
 WHERE PES.Idf_Parametro = @Idf_Parametro
 AND (@Idf_Parametro_Especifico IS NULL OR PES.Idf_Parametro_Especifico <> @Idf_Parametro_Especifico)
 AND (PES.Idf_Empresa = @Idf_Empresa OR (@Idf_Empresa IS NULL AND PES.Idf_Empresa IS NULL))
 AND (PES.Idf_Filial = @Idf_Filial OR (@Idf_Filial IS NULL AND PES.Idf_Filial IS NULL))
 AND (PES.Idf_Contrato = @Idf_Contrato OR (@Idf_Contrato IS NULL AND PES.Idf_Contrato IS NULL))
 AND (PES.Idf_Centro_Resultado = @Idf_Centro_Resultado OR (@Idf_Centro_Resultado IS NULL AND PES.Idf_Centro_Resultado IS NULL))
 AND (PES.Idf_Sindicato = @Idf_Sindicato OR (@Idf_Sindicato IS NULL AND PES.Idf_Sindicato IS NULL))
  • Parâmetros: @Idf_Parametro (int), @Idf_Parametro_Especifico (int?), @Idf_Empresa (int?), @Idf_Filial (int?), @Idf_Contrato (int?), @Idf_Centro_Resultado (int?), @Idf_Sindicato (int?)
  • Propósito: Verificar a existência de um parâmetro específico com base em uma combinação de filtros hierárquicos, excluindo o próprio idParametroEspecifico se fornecido (para validação de duplicidade em edição).
  • Regras de negócio:
    • Validação de unicidade de parâmetros específicos em diferentes níveis da hierarquia (empresa, filial, contrato, centro de resultado, sindicato).

Salvar(ParametroEspecifico objParametroEspecifico, Parametro objParametro, AlteracaoMaster objAlteracaoMaster)

  • Lógica:
    1. Abre uma nova conexão SQL e inicia uma transação.
    2. Dentro de um bloco try:
  • Se objParametroEspecifico não for nulo:
  • Tenta completar o Parametro associado a objParametroEspecifico usando objParametroEspecifico.Parametro.CompleteObject(trans).
  • Se o Parametro não for encontrado (!CompleteObject):
  • Cria um novo objeto Parametro com o ID do parâmetro específico.
  • Salva este novo Parametro (objParametro.Save(trans)).
  • Atribui o objParametro recém-salvo de volta a objParametroEspecifico.Parametro.
  • Salva o objParametroEspecifico (objParametroEspecifico.Save(trans)).
  • Caso contrário (se objParametroEspecifico for nulo):
  • Salva o objParametro fornecido (objParametro.Save(trans)).
  • Se objAlteracaoMaster não for nulo:
  • Salva o objAlteracaoMaster (objAlteracaoMaster.Save(trans)).
  • Confirma a transação.
  • Retorna true.
  1. Dentro de um bloco catch:
  • Reverte a transação.
  • Retorna false.
  • Regras de negócio:
    • Garante a atomicidade das operações de salvar ParametroEspecifico, Parametro e AlteracaoMaster em uma única transação.
    • Lógica para garantir que o Parametro pai exista antes de salvar o ParametroEspecifico. Se o Parametro não existir, ele é criado.

Stored Procedures

NomeParâmetrosPropósito
SPINSERT@Idf_Parametro (int), @Idf_Tipo_Valor (int), @Vlr_Parametro (varchar), @Flg_Inativo (bit), @Dta_Cadastro (datetime), @Idf_Usuario_Gerador (int), @Flg_Validado (bit), @Idf_Empresa (int?), @Idf_Filial (int?), @Idf_Contrato (int?), @Idf_Sindicato (int?), @Idf_Centro_Resultado (int?), @Des_Verbas_Informacao (varchar), @Idf_Parametro_Especifico (output int)Inserir um novo registro na tabela TAB_Parametro_Especifico e retornar o ID gerado.
SPUPDATE@Idf_Parametro (int), @Idf_Tipo_Valor (int), @Vlr_Parametro (varchar), @Flg_Inativo (bit), @Dta_Cadastro (datetime), @Idf_Usuario_Gerador (int), @Flg_Validado (bit), @Idf_Empresa (int?), @Idf_Filial (int?), @Idf_Contrato (int?), @Idf_Sindicato (int?), @Idf_Centro_Resultado (int?), @Des_Verbas_Informacao (varchar), @Idf_Parametro_Especifico (int)Atualizar um registro existente na tabela TAB_Parametro_Especifico.
SPDELETE@Idf_Parametro_Especifico (int), @Idf_Usuario_Gerador (int)Atualizar o usuário gerador e, em seguida, excluir o registro da tabela TAB_Parametro_Especifico.
SPSELECTID@Idf_Parametro_Especifico (int)Selecionar um registro específico da tabela TAB_Parametro_Especifico.
SELNATUREZASPERMITIDASINSS15E16NenhumRecuperar a descrição das verbas de informação para parâmetros específicos relacionados ao INSS 15 e 16.
SPEXISTEPARAMETROESPECIFICOCADASTRADO@Idf_Parametro (int), @Idf_Parametro_Especifico (int?), @Idf_Empresa (int?), @Idf_Filial (int?), @Idf_Contrato (int?), @Idf_Centro_Resultado (int?), @Idf_Sindicato (int?)Verificar a existência de um parâmetro específico com base em uma combinação de filtros hierárquicos.
TAB_SF_Parametro_Especifico (função de tabela)@Idf_Parametro (int), @Idf_Empresa (int?), @Idf_Filial (int?), @Idf_Contrato (int?), @Idf_Sindicato (int?), @Idf_Centro_Resultado (int?)Recuperar o valor de um parâmetro específico, considerando a hierarquia de especificidade.
Query SQL dinâmica para Delete(List<int> idParametroEspecifico)@parm0, @parm1, … (int), @Idf_Usuario_Gerador (int)Atualizar o usuário gerador e, em seguida, excluir múltiplos registros da tabela TAB_Parametro_Especifico por uma lista de IDs.
Query SQL dinâmica para LoadDataReader(string colunaOrdenacao, ...)Nenhum (parâmetros de ordenação e paginação são embutidos na string SQL)Fornecer uma consulta paginada e ordenada dos registros de ParametroEspecifico.
Query SQL dinâmica para RecuperarParametroEspecificoEmpresa(..., SqlTransaction trans) e RecuperarSomenteParametroEspecificoEmpresa(..., SqlTransaction trans)@Idf_Parametro (int), @Idf_Empresa (int?)Recuperar o valor de um parâmetro específico para uma empresa.
Query SQL dinâmica para RecuperarParametroEspecificoEmpregado(...)@Idf_Parametro (int), @Idf_Empresa (int), @Idf_Filial (int?), @Idf_Contrato (int?)Recuperar o valor de um parâmetro específico para um empregado, aplicando uma hierarquia de busca.

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