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:
- 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 cujoTipoLancamentosejaEnumBeneficioSaudeBO.ReembolsoCoparticipacao. - Para cada lançamento encontrado, verifica se a
DataReferenciada solicitação está dentro do período deDataInicioVigenciaeDataFimVigenciado lançamento. - Se o valor do lançamento (
objBeneficioSaude.ValorLancamento) for diferente de zero:- Busca o complemento da verba (
ComplementoVerbaBO) associado aoidComplementoVerbado 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
ValorLancamentodo benefício saúde. - A verba de holerite é adicionada à lista de verbas do holerite.
- Busca o complemento da verba (
- A verba busca na lista de lançamentos de benefício saúde do empregado (
-
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 objetoHoleriteVerbaBOcom 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