Wiki / SuperCalculo ~5 min

279 - Reemb. Seguro Saúde Coparticipação [BN]

⚙️ Metadados

  • Código: 279
  • Tipo: Provento
  • INSS: ISE
  • FGTS: ISE
  • IRRF: ISE
  • Natureza eSocial: 1405 - Assistência médica
  • DSR: Não
  • Médias: Não
  • Impacto Financeiro: Não
  • Impacto Contábil: Sim
  • Sequência: 190

🧮 Regra Geral

  • Lógica de Cálculo:

    1. A verba busca na lista de lançamentos de benefício saúde do empregado (Empregado.Historico.ListaLancamentoBeneficioSaude) por registros que correspondam ao código da verba (279) e cujo TipoLancamento seja EnumBeneficioSaudeBO.ReembolsoCoparticipacao.
    2. Para cada lançamento encontrado, verifica se a DataReferencia da solicitação está dentro do período de DataInicioVigencia e DataFimVigencia do lançamento.
    3. Se o valor do lançamento (objBeneficioSaude.ValorLancamento) for diferente de zero:
      • Busca o complemento da verba (ComplementoVerbaBO) associado ao idComplementoVerba do lançamento.
      • Se a data de início e fim da vigência do lançamento estiverem no mesmo mês e ano (SysFunc_MesmoMesAno), o complemento da verba é mantido como está.
      • Caso contrário, o complemento da verba é formatado com a descrição original e a palavra “Parcelado” (ex: “Descrição Original - Parcelado”).
      • É criada uma nova verba de holerite (HoleriteVerbaBO) com o código e descrição da verba 279.
      • A descrição final da verba no holerite é formatada com a descrição original da verba e o complemento (ex: “Reemb. Seguro Saúde Coparticipação [BN] - Complemento”).
      • O IdComplementoSistemaOrigem é preenchido com o ID do complemento original.
      • O valor total da verba é definido como o ValorLancamento do benefício saúde.
      • A verba de holerite é adicionada à lista de verbas do holerite.
  • Fórmula matemática:

    • ValorTotal = objBeneficioSaude.ValorLancamento
  • Variáveis Utilizadas:

    • codigo: Código da verba (279).
    • descricao: Descrição da verba (“Reemb. Seguro Saúde Coparticipação [BN]”).
    • lstBeneficioSaude: Lista de lançamentos de benefício saúde do empregado.
    • objBeneficioSaude: Objeto individual de lançamento de benefício saúde.
    • objVerba: Objeto da verba 279.
    • objComplemento: Objeto de complemento da verba.
    • complementoVerba: String que armazena a descrição final do complemento.
    • objHoleriteVerba: Objeto da verba a ser adicionada ao holerite.
  • Condições Especiais:

    • r.CodVerba.ToString() == codigo && r.TipoLancamento == EnumBeneficioSaudeBO.ReembolsoCoparticipacao: Filtra lançamentos de benefício saúde.
    • Solicitacao.DataReferencia >= objBeneficioSaude.DataInicioVigencia && Solicitacao.DataReferencia <= objBeneficioSaude.DataFimVigencia: Valida se o lançamento está vigente na data de referência.
    • objBeneficioSaude.ValorLancamento != decimal.Zero: Garante que apenas lançamentos com valor diferente de zero sejam processados.
    • SysFunc_MesmoMesAno(objBeneficioSaude.DataInicioVigencia, objBeneficioSaude.DataFimVigencia): Condição para determinar se o complemento da verba deve incluir “Parcelado”.

🧩 Funções

  • SysFunc_MesmoMesAno(DateTime data1, DateTime data2): Verifica se duas datas estão no mesmo mês e ano.
  • CriarVerbaHoleriteVerbaBO(string codigo, string descricao): Função interna para instanciar um objeto HoleriteVerbaBO com o código e descrição da verba.

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

ValorItem = MAX(PisoMinimo, MIN(ValorLancamentoSaude, SE(PossuiTeto == Verdadeiro, TetoMaximo, ValorLancamentoSaude)))

ValorTotal279 = SUM(ValorItem_i)


1. Filtros de Elegibilidade e Isenções (Piso Seguro)

SE Config.PossuiDataVigenciaInicio E Solicitacao.DataReferencia < Config.DataVigenciaInicio ENTÃO RETORNAR NULO FIM_SE

SE Solicitacao.TipoProcesso == PROVISOES E NAO Config.PermitirCalculoEmProvisoes ENTÃO RETORNAR NULO FIM_SE

SE NAO Config.TiposFolhaPermitidos.Contem(Solicitacao.TipoFolha) ENTÃO RETORNAR NULO FIM_SE

SE Config.ExigirFiltroElegibilidadeEmpresa E NAO Config.EmpresasHabilitadas.Contem(Empregador.Id) ENTÃO RETORNAR NULO FIM_SE

2. Determinação da Base de Cálculo, Lançamentos e Valoração

LancamentoManual = Holerite.ObterLancamento(“279”) ListaLancamentosBeneficio = Empregado.Historico.ListaLancamentoBeneficioSaude.Filtrar( r => r.CodVerba == “279” E r.TipoLancamento == EnumBeneficioSaudeBO.ReembolsoCoparticipacao E Solicitacao.DataReferencia >= r.DataInicioVigencia E Solicitacao.DataReferencia <= r.DataFimVigencia E r.ValorLancamento != 0.0 )

ValorTotalProcessado = 0.0 QtdVerbasGeradas = 0

Processamento por módulo dinâmico de Benefícios de Saúde SE ListaLancamentosBeneficio.PossuiItens() ENTÃO PARA CADA objBeneficioSaude EM ListaLancamentosBeneficio FAÇA ValorLancamento = ABS(objBeneficioSaude.ValorLancamento)

Formatação dinâmica do complemento da verba objComplemento = ObterComplementoVerba(objBeneficioSaude.IdComplementoVerba) TextoComplemento = objComplemento != NULO ? objComplemento.Descricao : ""

SE Config.IdentificarParcelamentoEspecial E NAO SysFunc_MesmoMesAno(objBeneficioSaude.DataInicioVigencia, objBeneficioSaude.DataFimVigencia) ENTÃO TextoComplemento = String.Format(“{0} - Parcelado”, TextoComplemento) FIM_SE

Aplicação de limites por lançamento individual ValorBrutoItem = ValorLancamento SE Config.PossuiTetoMaximo E ValorBrutoItem > Config.ValorTetoMaximo ENTÃO ValorBrutoItem = Config.ValorTetoMaximo SENÃO SE Config.PossuiPisoMinimo E ValorBrutoItem < Config.ValorPisoMinimo ENTÃO ValorBrutoItem = Config.ValorPisoMinimo FIM_SE

ValorFinalItem = Func_ArredondamentoPadrao(ValorBrutoItem)

SE ValorFinalItem > 0.0 OU Config.GravarVerbaZerada ENTÃO RubricaItem = CriarVerbaHoleriteBO(“279”, “Reemb. Seguro Saúde Coparticipação [BN]”) RubricaItem.TipoVerba = “P” RubricaItem.Quantidade = 1.0 RubricaItem.ValorReferencia = Func_ArredondamentoPadrao(ValorLancamento) RubricaItem.ValorTotal = ValorFinalItem RubricaItem.IdComplementoSistemaOrigem = objBeneficioSaude.IdComplementoVerba

SE NAO String.EhNulaOuVazia(TextoComplemento) ENTÃO RubricaItem.Descricao = String.Format(“{0} - {1}”, RubricaItem.Descricao, TextoComplemento) FIM_SE

Acumuladores Fiscais (Isento para INSS, FGTS e IRRF) AcumularEncargosFiscais279(RubricaItem.ValorTotal)

Holerite.ListaHoleriteVerba.Adicionar(RubricaItem) ValorTotalProcessado = ValorTotalProcessado + ValorFinalItem QtdVerbasGeradas = QtdVerbasGeradas + 1 FIM_SE FIM_PARA

Fallback: Lançamento Manual Direto (caso não utilize a tabela do Histórico de Benefícios) SENÃO SE Config.PermitirFallbackLancamentoManual E Func_ValidarExistenciaLancamento(LancamentoManual) E LancamentoManual.ValorTotal > 0.0 ENTÃO ValorBrutoItem = ABS(LancamentoManual.ValorTotal)

SE Config.PossuiTetoMaximo E ValorBrutoItem > Config.ValorTetoMaximo ENTÃO ValorBrutoItem = Config.ValorTetoMaximo SENÃO SE Config.PossuiPisoMinimo E ValorBrutoItem < Config.ValorPisoMinimo ENTÃO ValorBrutoItem = Config.ValorPisoMinimo FIM_SE

ValorFinalItem = Func_ArredondamentoPadrao(ValorBrutoItem)

SE ValorFinalItem > 0.0 OU Config.GravarVerbaZerada ENTÃO RubricaItem = CriarVerbaHoleriteBO(“279”, “Reemb. Seguro Saúde Coparticipação [BN]”) RubricaItem.TipoVerba = “P” RubricaItem.Quantidade = SE(LancamentoManual.Quantidade > 0.0, LancamentoManual.Quantidade, 1.0) RubricaItem.ValorReferencia = Func_ArredondamentoPadrao(ValorBrutoItem) RubricaItem.ValorTotal = ValorFinalItem

AcumularEncargosFiscais279(RubricaItem.ValorTotal) Holerite.ListaHoleriteVerba.Adicionar(RubricaItem) ValorTotalProcessado = ValorFinalItem QtdVerbasGeradas = 1 FIM_SE SENÃO RETORNAR NULO FIM_SE

Registro em memória de cálculo detalhada Argumento(“VALOR_TOTAL_REEMB_SAUDE_279”, ValorTotalProcessado) Argumento(“QTD_LANÇAMENTOS_PROCESSADOS_279”, QtdVerbasGeradas)

EscreverMemoria(“REEMB_SEGURO_SAUDE_COPART”, String.Format(“Reemb. Seguro Saúde Coparticipação: Processado {0} item(ns) | Valor Total R$ {1}”, QtdVerbasGeradas, ValorTotalProcessado.ToString(“N2”)))

RETORNAR VERDADEIRO

Função interna de direcionamento de bases fiscais SUB ACUMULAR_ENCARGOS_FISCAIS_279(Valor) SE Config.TributarINSS ENTÃO Holerite.AcumularBase(“BASE_INSS_FOLHA”, Valor) SENÃO Holerite.AcumularBase(“BASE_INSS_ISENTA_FOLHA”, Valor) FIM_SE

SE Config.TributarFGTS ENTÃO Holerite.AcumularBase(“BASE_FGTS_FOLHA”, Valor) SENÃO Holerite.AcumularBase(“BASE_FGTS_ISENTA_FOLHA”, Valor) FIM_SE

SE Config.TributarIRRF ENTÃO Holerite.AcumularBase(“BASE_IRRF_FOLHA”, Valor) SENÃO Holerite.AcumularBase(“BASE_IRRF_ISENTA_FOLHA”, Valor) FIM_SE FIM_SUB

FIM


Parametrizações Propostas para Reestruturação

1. REGRAS DE ENTRADA E FILTROS DE ELEGIBILIDADE

Tipos de Folha Permitidos …: [X] Férias [X] Regular [X] Rescisão [ ] Provisões

Modo Principal de Apuração …: [ Tabela de Benefício Saúde (Historico) v ] [ Tabela de Benefício Saúde (Historico) ] [ Lançamento Manual / Fixo no Holerite ]

[X] Permitir Fallback para Lançamento Manual Direto

[ ] Exigir Filtro de Elegibilidade por Empresa / Cliente

2. DIRETRIZES DE VALORAÇÃO E COMPLEMENTO DIVERSIFICADO

Tipo de Lançamento no Benefício …: [ ReembolsoCoparticipacao v ]

[X] Validar Vigência do Lançamento (DataInicioVigencia até DataFimVigencia)

[X] Formatar Descrição da Verba com Complemento da Origem

[X] Identificar e Anexar Sufixo “Parcelado” quando Vigência Extrapolar o Mês Corrente

Sufixo Personalizado …: [ - Parcelado ]

3. LIMITES E CONTROLE

[ ] Possui Teto Máximo por Reembolso

Valor Teto Máximo R$ …: [ 0,00 ]

[ ] Possui Piso Mínimo por Reembolso

Valor Piso Mínimo R$ …: [ 0,00 ]

[ ] Gravar Verba quando Valor Final for Zero

4. ENCARGOS E NATUREZA ESOCIAL

Natureza eSocial …: [ 1405 - Assistência médica v ]

Incidência INSS …: [ Isento (ISE) ]

Incidência FGTS …: [ Isento (ISE) ]

Incidência IRRF …: [ Isento (ISE) ]

Afeta DSR …: [ ] Sim [X] Não

Incorpora Médias …: [ ] Sim [X] Não

Clientes com mesma regra

  • Padrão Geral (Todos os Clientes): A regra legada mapeia individualmente cada item do histórico de lançamentos de benefício saúde (ListaLancamentoBeneficioSaude), exigindo tipo de reembolso de coparticipação, vigência ativa no mês de referência e tratamento especial para descrições estendidas com indicação de “Parcelado”. A solução reestruturada absorve este fluxo de maneira nativa por meio da integração do motor dinâmico com a tabela de benefícios, preservando o sufixo “Parcelado” via parâmetro de tela e garantindo a correta geração individualizada das verbas de holerite vinculadas aos seus respectivos IDs de complemento.

Status Documental

  • Status: Documentada
  • Origem: export do Notion + catálogo da wiki
  • Fonte rastreável: 30dc75ea2e838139a8f0c114ac6bf45e

Voltar ao catálogo

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