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:
- 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 tipoEnumBeneficioSaudeBO.CoparticipacaoMesAnterior. - Para cada lançamento encontrado, verifica se a
DataReferenciada solicitação de cálculo está dentro do período de vigência (DataInicioVigenciaeDataFimVigencia) do lançamento do benefício. - Se o valor do lançamento (
objBeneficioSaude.ValorLancamento) for diferente de zero, prossegue com o processamento. - Busca o complemento da verba associado ao
idComplementoVerbado lançamento do benefício. - 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çãoSysFunc_MesmoMesAno. - 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.
- Caso contrário (datas em meses/anos diferentes), a descrição final do complemento é formatada como “Descrição Original - Parcelado”.
- Cria um objeto
HoleriteVerbaBOpara a verba 739, atribui a descrição final formatada (Descrição da Verba - Complemento da Verba) e oIdComplementoSistemaOrigem. - O
ValorTotalda verba é definido como o valor do lançamento do benefício, garantindo que seja negativo através da funçãoNegativo(), pois se trata de um desconto. - A verba é adicionada à lista de verbas do holerite.
- A verba busca na lista de lançamentos de benefício de saúde do empregado (
-
Variáveis Utilizadas:
codigodescricaoEmpregado.Historico.ListaLancamentoBeneficioSaudeobjBeneficioSaude.CodVerbaobjBeneficioSaude.TipoLancamentoEnumBeneficioSaudeBO.CoparticipacaoMesAnteriorSolicitacao.DataReferenciaobjBeneficioSaude.DataInicioVigenciaobjBeneficioSaude.DataFimVigenciaobjBeneficioSaude.ValorLancamentoExecucaoCalculo.ListaVerbaobjVerba.ListaComplementoVerbaobjBeneficioSaude.idComplementoVerbaobjComplemento.DescricaocomplementoVerbaobjHoleriteVerba.DescricaoFinalobjHoleriteVerba.IdComplementoSistemaOrigemobjHoleriteVerba.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íficoCoparticipacaoMesAnteriore período de vigência, montar a descrição concatenada com a operadora e com a flag ”- Parcelado” viaSysFunc_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