Wiki / SuperCalculo ~7 min

739 - Desc. Assist. Odont. Coparticipação Mês Anterior [BN]

Metadados

  • Código: 739
  • Tipo: Desconto
  • INSS: ISE
  • FGTS: ISE
  • IRRF: ISE
  • Natureza eSocial: 9219 - Desconto de assistência médica ou odontológica - Plano coletivo empresarial
  • DSR: Não
  • Médias: Não
  • Impacto Financeiro: Não
  • Impacto Contábil: Sim
  • Sequência: 191

🧮 Regra Geral

  • Lógica de Cálculo:

    1. A verba busca na lista de lançamentos de benefício de saúde do empregado (Empregado.Historico.ListaLancamentoBeneficioSaude) por registros que correspondam ao código da verba atual (codigo) e que sejam do tipo EnumBeneficioSaudeBO.CoparticipacaoMesAnterior.
    2. Para cada lançamento encontrado, verifica se a DataReferencia da solicitação de cálculo está dentro do período de vigência (DataInicioVigencia e DataFimVigencia) do lançamento do benefício.
    3. Se o valor do lançamento (objBeneficioSaude.ValorLancamento) for diferente de zero, prossegue com o processamento.
    4. Busca o complemento da verba associado ao idComplementoVerba do lançamento do benefício.
    5. Verifica se as datas de início e fim de vigência do benefício (DataInicioVigencia, DataFimVigencia) pertencem ao mesmo mês e ano utilizando a função SysFunc_MesmoMesAno.
    6. Se as datas estiverem no mesmo mês e ano, a descrição final do complemento da verba permanece como a descrição original do complemento.
    7. Caso contrário (datas em meses/anos diferentes), a descrição final do complemento é formatada como “Descrição Original - Parcelado”.
    8. Cria um objeto HoleriteVerbaBO para a verba 739, atribui a descrição final formatada (Descrição da Verba - Complemento da Verba) e o IdComplementoSistemaOrigem.
    9. O ValorTotal da verba é definido como o valor do lançamento do benefício, garantindo que seja negativo através da função Negativo(), pois se trata de um desconto.
    10. A verba é adicionada à lista de verbas do holerite.
  • Variáveis Utilizadas:

    • codigo
    • descricao
    • Empregado.Historico.ListaLancamentoBeneficioSaude
    • objBeneficioSaude.CodVerba
    • objBeneficioSaude.TipoLancamento
    • EnumBeneficioSaudeBO.CoparticipacaoMesAnterior
    • Solicitacao.DataReferencia
    • objBeneficioSaude.DataInicioVigencia
    • objBeneficioSaude.DataFimVigencia
    • objBeneficioSaude.ValorLancamento
    • ExecucaoCalculo.ListaVerba
    • objVerba.ListaComplementoVerba
    • objBeneficioSaude.idComplementoVerba
    • objComplemento.Descricao
    • complementoVerba
    • objHoleriteVerba.DescricaoFinal
    • objHoleriteVerba.IdComplementoSistemaOrigem
    • objHoleriteVerba.ValorTotal.
  • Condições Especiais:

    • r.CodVerba.ToString() == codigo && r.TipoLancamento == EnumBeneficioSaudeBO.CoparticipacaoMesAnterior: Filtra lançamentos de benefício de saúde.
    • Solicitacao.DataReferencia >= objBeneficioSaude.DataInicioVigencia && Solicitacao.DataReferencia <= objBeneficioSaude.DataFimVigencia: Valida a vigência do lançamento.
    • objBeneficioSaude.ValorLancamento != 0M: 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 pertencem ao mesmo mês e ano. CriarVerbaHoleriteVerbaBO(int codigo, string descricao): Função auxiliar para criar um objeto de verba de holerite.
  • Negativo(decimal valor): Função auxiliar para garantir que o valor seja negativo, apropriado para descontos.

💡 Proposta de Novo Cálculo

Fórmula proposta (padronizada):

ValorTotalRubrica = Negativo(Arredondar(Minimo(ObterValorLancamentoOdonto(Tipo = CoparticipacaoMesAnterior, Vigente) + ObterValorLancamentoManual(), Maximo(0, TotalProventos - TotalOutrosDescontos))))


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

Se (Configuracao.RubricaInativa == Verdadeiro OU Solicitacao.HoleriteSimulado == Verdadeiro OU Solicitacao.TipoProcesso == EnumTipoProcessoBO.Provisoes) { HoleriteVerba = null; InterromperCalculo(); }

Restrição de Tipos de Folha Permitidos para Processamento Se (Nao Configuracao.TiposFolhaPermitidos.Contem(Solicitacao.TipoFolha)) { EscreverMemoria(“[DESC_AODONT_COPAR_MA]”, “Cálculo ignorado: Tipo de folha (” + Solicitacao.TipoFolha + ”) não habilitado para a verba 739.”); HoleriteVerba = null; InterromperCalculo(); }

2. Apuração e Varredura no Módulo de Benefícios de Saúde (Com Fallback de Movimento)

Definir ListaCoparProcessar = NovaLista();

Definir LancamentosCoparBD = Empregado.Historico.ListaLancamentoBeneficioSaude .Filtrar(b => b.CodVerba == Configuracao.CodigoRubricaDestino E b.TipoLancamento == EnumBeneficioSaudeBO.CoparticipacaoMesAnterior E b.ValorLancamento != 0.00 E (Solicitacao.DataReferencia >= b.DataInicioVigencia E Solicitacao.DataReferencia <= b.DataFimVigencia));

Se (LancamentosCoparBD != null E LancamentosCoparBD.Tamanho > 0) { Para Cada item Em LancamentosCoparBD { ListaCoparProcessar.Adicionar(item); } EscreverMemoria(“[DESC_AODONT_COPAR_MA]”, “Lançamentos de Coparticipação Odontológica Mês Anterior recuperados do módulo de saúde: ” + ListaCoparProcessar.Tamanho + ” registro(s).”); } Senao Se (Solicitacao.PossuiLancamentoManual(Configuracao.CodigoRubricaDestino)) { // Fallback via Lançamento Manual no Movimento da Folha Definir ItemManual = CriarObjetoBeneficioSaudeManual(); ItemManual.ValorLancamento = Positivo(Solicitacao.ObterValorLancamentoManual(Configuracao.CodigoRubricaDestino)); ItemManual.DataInicioVigencia = Solicitacao.DataReferencia; ItemManual.DataFimVigencia = Solicitacao.DataReferencia; ItemManual.idComplementoVerba = null;

ListaCoparProcessar.Adicionar(ItemManual); EscreverMemoria(“[DESC_AODONT_COPAR_MA]”, “Nenhum histórico ativo no módulo de saúde. Utilizando Lançamento Manual de Movimento: R$ ” + ItemManual.ValorLancamento); }

Se (ListaCoparProcessar.Tamanho == 0) { EscreverMemoria(“[DESC_AODONT_COPAR_MA]”, “Cálculo cancelado: Nenhum desconto de coparticipação odontológica do mês anterior ativo para a competência.”); HoleriteVerba = null; InterromperCalculo(); }

3. Iteração, Formatação de Descrição e Processamento dos Descontos

Definir ProventoLiquidoDisponivel = Positivo(Holerite.ObterTotalProventos()) - Positivo(Holerite.ObterTotalDescontosExceto(Configuracao.CodigoRubricaDestino)); Definir ValorDescontoTotalApurado = 0.00;

Para Cada itemCopar Em ListaCoparProcessar { Definir ValorItem = Positivo(itemCopar.ValorLancamento); Definir TextoComplemento = "";

Resolução de Complemento de Verba / Operadora Odontológica Definir ObjetoComplemento = ObterComplementoVerba(itemCopar.idComplementoVerba); Se (ObjetoComplemento != null E NaoVazio(ObjetoComplemento.Descricao)) { TextoComplemento = ObjetoComplemento.Descricao; }

Regra Dinâmica de Sufixo para Parcelamento / Cobertura Multiperíodo Definir IsMesmoMesAno = SysFunc_MesmoMesAno(itemCopar.DataInicioVigencia, itemCopar.DataFimVigencia); Se (Nao IsMesmoMesAno E Configuracao.AnexarSufixoParcelado == Verdadeiro) { Se (NaoVazio(TextoComplemento)) { TextoComplemento = TextoComplemento + ” - ” + Configuracao.TextoSufixoParcelado; } Senao { TextoComplemento = Configuracao.TextoSufixoParcelado; } }

Formatação da Descrição Final conforme padrão: [Descrição da Verba] - [Complemento] Definir DescricaoFinalRubrica = Configuracao.DescricaoRubrica; Se (NaoVazio(TextoComplemento)) { DescricaoFinalRubrica = DescricaoFinalRubrica + ” - ” + TextoComplemento; }

Tratamento de Trava de Margem Líquida por Item Definir ValorItemAjustado = ValorItem; Se (Configuracao.RespeitarMargemLiquida == Verdadeiro E ProventoLiquidoDisponivel < ValorItemAjustado) { Se (Configuracao.AcaoExcessoSaldo == EnumAcaoExcesso.LimitarAoProventoLiquido) { ValorItemAjustado = Maximo(0.00, ProventoLiquidoDisponivel); EscreverMemoria(“[DESC_AODONT_COPAR_MA]”, “Desconto de Coparticipação Odontológica limitado pela margem líquida (Original: R$ ” + ValorItem + ” | Permissível: R$ ” + ValorItemAjustado + ”).”); } Senao Se (Configuracao.AcaoExcessoSaldo == EnumAcaoExcesso.LancarInsuficienciaSaldo) { Definir SaldoDevedor = ValorItemAjustado - ProventoLiquidoDisponivel; ValorItemAjustado = Maximo(0.00, ProventoLiquidoDisponivel); AtualizarOuCriarVerbaInformacao(Configuracao.CodigoRubricaInsuficienciaSaldo, SaldoDevedor); EscreverMemoria(“[DESC_AODONT_COPAR_MA]”, “Insuficiência de Saldo gerada para Coparticipação Odontológica Mês Anterior: R$ ” + SaldoDevedor); } }

Se (ValorItemAjustado > 0.00) { RubricaGerada = CriarInstanciaRubrica(Configuracao.CodigoRubricaDestino); RubricaGerada.Quantidade = 0.00; RubricaGerada.Percentual = 0.00; RubricaGerada.ValorTotal = Negativo(Func_ArredondamentoPadrao(ValorItemAjustado)); RubricaGerada.Descricao = DescricaoFinalRubrica; RubricaGerada.IdComplementoSistemaOrigem = itemCopar.idComplementoVerba;

Enquadramento Fiscal estrito aos Metadados (Natureza eSocial 9219 | INSS: ISE, FGTS: ISE, IRRF: ISE) RubricaGerada.IncideINSS = EnumIncidencia.ISENTO; RubricaGerada.IncideFGTS = EnumIncidencia.ISENTO; RubricaGerada.IncideIRRF = EnumIncidencia.ISENTO;

AdicionarAoHolerite(RubricaGerada);

ProventoLiquidoDisponivel = ProventoLiquidoDisponivel - ValorItemAjustado; ValorDescontoTotalApurado = ValorDescontoTotalApurado + ValorItemAjustado; } }

Disparo de Contrapartida Patronal / Benefício em Verba Informativa (se parametrizado) Se (Configuracao.GerarContrapartidaPatronal == Verdadeiro E Configuracao.CodigoRubricaPatronal > 0 E ValorDescontoTotalApurado > 0.00) { Definir ValorPatronal = (ValorDescontoTotalApurado * Configuracao.FatorMultiplicadorPatronal); AtualizarOuCriarVerbaInformacao(Configuracao.CodigoRubricaPatronal, ValorPatronal); }

EscreverMemoria(“[DESC_AODONT_COPAR_MA]”, “Processamento finalizado para Verba 739. Total Descontado: R$ ” + ValorDescontoTotalApurado);


Parametrizações Propostas para Reestruturação

1. REGRAS DE ORIGEM E INTEGRAÇÃO DE BENEFÍCIOS DE SAÚDE/ODONTO

[ ] Inativar Rubrica (Desativa o cálculo globalmente) Origem Primária dos Dados de Benefício: (*) Módulo de Benefícios de Saúde/Odonto (Empregado.Historico.ListaLancamentoBeneficioSaude) [X] Permitir Sobregravação / Fallback via Lançamento Manual no Movimento (Valor)

Filtro do Tipo de Lançamento no Módulo de Benefícios: [X] Coparticipação Odontológica Mês Anterior (EnumBeneficioSaudeBO.CoparticipacaoMesAnterior)

Tipos de Folha Permitidos para Processamento: [X] Regular / Mensal [X] Rescisão / Desligamento [X] Rescisão Complementar [ ] Folha de 13º Salário

2. REGRA DE COMPOSIÇÃO DA DESCRIÇÃO E COMPLEMENTOS

Descrição Base da Rubrica: [ Desc. Assist. Odont. Coparticipação Mês Anterior [BN] ]

Padrão de Composição da Descrição Final: (*) [Descrição da Verba] - [Complemento da Verba] ( ) Somente [Complemento da Verba]

[X] Anexar sufixo ao complemento quando a vigência ultrapassar o mês/ano de referência └─ Texto do Sufixo a Anexar: [ Parcelado ] (Ex: “Desc. Assist. Odont. Copartic… - Bradesco Odonto - Parcelado”)

3. DIRETRIZES DE PROTEÇÃO DE SALDO E MARGEM

[X] Respeitar Margem Limite do Provento Líquido (Impedir Holerite Negativo)

Ação em Caso de Insuficiência de Provento Líquido: (*) Limitar o desconto da coparticipação odontológica até a margem do líquido disponível ( ) Cancelar o desconto e emitir aviso de pendência ( ) Limitar o desconto e gerar Rubrica Informativa de Insuficiência de Saldo

Código da Rubrica Informativa de Insuficiência de Saldo: [ 191 ]

4. CONTRAPARTIDA PATRONAL E ENCARGOS (ESOCIAL)

[ ] Gerar Rubrica Informativa de Subvenção / Custo Patronal de Coparticipação ├─ Código da Rubrica Patronal Informativa: [ ] └─ Fator Multiplicador Patronal: [ 1.0000 ]

Natureza eSocial: [ 9219 - Desconto de assistência médica ou odontológica - Plano coletivo empresarial ]

Incidências Oficiais: INSS: [ ISE - Isento ] FGTS: [ ISE - Isento ] IRRF: [ ISE - Isento ]

Clientes com mesma regra

  • Todos os Clientes (Módulo de Benefícios de Saúde/Odonto e Coparticipação Mês Anterior): A regra geral da verba 739 visa efetuar o desconto de procedimentos e sinistros de coparticipação odontológica incorridos na competência anterior. O mecanismo dynamic cobre na totalidade o fluxo operacional ao realizar a leitura da ListaLancamentoBeneficioSaude, filtrar o tipo específico CoparticipacaoMesAnterior e período de vigência, montar a descrição concatenada com a operadora e com a flag ”- Parcelado” via SysFunc_MesmoMesAno, além de converter o valor apurado em valor negativo (Negativo()).

Status Documental

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

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