743 - Desc. Seguro Saúde Coparticipação Mês Anterior [BN]
⚙️ Metadados
- Código: 743
- 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 no histórico de lançamentos de benefício saúde do empregado todas as entradas que correspondem ao
codigoda verba (743) e que são do tipoEnumBeneficioSaudeBO.CoparticipacaoMesAnterior(tipo 5). - Para cada lançamento encontrado, verifica se a
DataReferenciada folha de pagamento está dentro do período deDataInicioVigenciaeDataFimVigenciado lançamento do benefício. - Se o valor do lançamento (
objBeneficioSaude.ValorLancamento) for diferente de zero, o processo continua. - A verba busca o objeto
VerbaBOcorrespondente aocodigoatual na lista de verbas da execução do cálculo. - Se a verba for encontrada, busca um
ComplementoVerbaBOassociado aoidComplementoVerbado lançamento do benefício. - Se o complemento for encontrado, a
Descricaodo complemento é usada como base paracomplementoVerba. - Verifica se as datas de
DataInicioVigenciaeDataFimVigenciado lançamento do benefício estão no mesmo mês e ano usando a funçãoSysFunc_MesmoMesAno.- Se sim, o
complementoVerbapermanece aDescricaooriginal do complemento. - Se não, o
complementoVerbaé formatado como"{Descricao do Complemento} - Parcelado".
- Se sim, o
- Cria um novo objeto
HoleriteVerbaBOcom ocodigoedescricaoda verba. - A
DescricaoFinalda verba no holerite é definida como"{Descrição da Verba} - {Complemento da Verba}". - O
IdComplementoSistemaOrigemé atribuído. - O
ValorTotalda verba é definido como o valor negativo doValorLancamentodo benefício (Negativo(objBeneficioSaude.ValorLancamento)). - A verba é adicionada à lista de verbas do holerite.
- A verba busca no histórico de lançamentos de benefício saúde do empregado todas as entradas que correspondem ao
-
Variáveis Utilizadas:
codigodescricaoEmpregado.Historico.ListaLancamentoBeneficioSaudeobjBeneficioSaude.CodVerbaobjBeneficioSaude.TipoLancamentoSolicitacao.DataReferenciaobjBeneficioSaude.DataInicioVigenciaobjBeneficioSaude.DataFimVigenciaobjBeneficioSaude.ValorLancamentoExecucaoCalculo.ListaVerbaobjVerba.ListaComplementoVerbaobjBeneficioSaude.idComplementoVerbaobjComplemento.Descricao.
-
Condições Especiais:
- Verifica se o
TipoLancamentodo benefício éEnumBeneficioSaudeBO.CoparticipacaoMesAnterior. - Valida se a
Solicitacao.DataReferenciaestá dentro do período de vigência do lançamento do benefício. - Verifica se o
ValorLancamentodo benefício é diferente de zero. - Verifica a existência da
VerbaBOe doComplementoVerbaBOantes de utilizá-los. - Condiciona a adição de ” - Parcelado” ao complemento da verba se as datas de início e fim de vigência do lançamento não forem do mesmo mês e ano.
- Verifica se o
🧩 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 auxiliar para instanciar um objeto de verba de holerite.Negativo(decimal valor): Retorna o valor de entrada com sinal negativo.
💡 Proposta de Novo Cálculo
Fórmula proposta (padronizada):
ValorCapturado = SE(PermitirSobrescrita E ExisteLancamentoManual(743), ValorLancadoManual, ABSOLUTO(ValorLancamentoCoparticipacao))
ValorDescontoFinal = SE(ProcessoPermitido E VigenciaValida E TipoLancamento == CoparticipacaoMesAnterior E ValorCapturado > 0, ARREDONDAR(LIMITAR(ValorCapturado, PisoMinimo, TetoMaximo)), 0)
1. Filtros de Elegibilidade e Isenções (Piso Seguro)
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
Validação da Existência da Lista de Benefícios de Saúde do Empregado SE Empregado.Historico.ListaLancamentoBeneficioSaude == NULO OU Empregado.Historico.ListaLancamentoBeneficioSaude.EstaVazia() ENTÃO RETORNAR NULO FIM_SE
2. Iteração e Filtragem do Módulo de Benefícios de Saúde
Filtra lançamentos da verba 743 com tipo CoparticipacaoMesAnterior (Tipo 5) dentro da vigência ListaLancamentosFiltrados = Empregado.Historico.ListaLancamentoBeneficioSaude.Filtrar( b => b.CodVerba == “743” E b.TipoLancamento == EnumBeneficioSaudeBO.CoparticipacaoMesAnterior E Solicitacao.DataReferencia >= b.DataInicioVigencia E Solicitacao.DataReferencia <= b.DataFimVigencia E b.ValorLancamento != 0.0 )
SE ListaLancamentosFiltrados.EstaVazia() ENTÃO RETORNAR NULO FIM_SE
PARA CADA LancamentoBeneficio EM ListaLancamentosFiltrados FAÇA
ValorBrutoCalculado = 0.0
Sobrescrita via Lançamento Manual Direto na Folha (se habilitado) VlrLancadoManual = Holerite.ObterValorLancamentoManual(“743”) SE Config.PermitirSobrescritaManual E VlrLancadoManual != NULO E VlrLancadoManual > 0.0 ENTÃO ValorBrutoCalculado = VlrLancadoManual SENÃO ValorBrutoCalculado = Func_Absoluto(LancamentoBeneficio.ValorLancamento) FIM_SE
SE ValorBrutoCalculado <= 0.0 ENTÃO CONTINUAR FIM_SE
3. Aplicação de Limites, Tetos e Arredondamento
ValorAbsoluto = Func_Absoluto(ValorBrutoCalculado)
SE Config.PossuiTetoMaximo E ValorAbsoluto > Config.ValorTetoMaximo ENTÃO ValorAbsoluto = Config.ValorTetoMaximo SENÃO SE Config.PossuiPisoMinimo E ValorAbsoluto < Config.ValorPisoMinimo ENTÃO ValorAbsoluto = Config.ValorPisoMinimo FIM_SE
ValorDescontoFinal = Func_ArredondamentoPadrao(ValorAbsoluto)
SE ValorDescontoFinal <= 0.0 E NAO Config.GravarVerbaZerada ENTÃO CONTINUAR FIM_SE
Determinação do Complemento de Descrição e Regra de Parcelamento TextoComplemento = "" ObjComplemento = VerbaOriginal(“743”).ObterComplemento(LancamentoBeneficio.IdComplementoVerba)
SE ObjComplemento != NULO ENTÃO EhMesmoMesAno = SysFunc_MesmoMesAno(LancamentoBeneficio.DataInicioVigencia, LancamentoBeneficio.DataFimVigencia) SE EhMesmoMesAno ENTÃO TextoComplemento = ObjComplemento.Descricao SENÃO TextoComplemento = String.Format(“{0} - {1}”, ObjComplemento.Descricao, Config.TextoSufixoParcelado) FIM_SE FIM_SE
4. Gravação de Campos, Acumuladores e Registro da Verba (743)
NovaVerba = CriarVerbaHoleriteBO(“743”, Config.DescricaoPadrao) NovaVerba.TipoVerba = “D” // Tipo: Desconto NovaVerba.ValorBase = ValorDescontoFinal NovaVerba.Quantidade = LancamentoBeneficio.QuantidadeParcelas > 0 ? LancamentoBeneficio.QuantidadeParcelas : 1.0 NovaVerba.ValorTotal = ValorDescontoFinal
SE TextoComplemento != "" ENTÃO NovaVerba.DescricaoFinal = String.Format(“{0} - {1}”, Config.DescricaoPadrao.Trim(), TextoComplemento.Trim()) SENÃO NovaVerba.DescricaoFinal = Config.DescricaoPadrao.Trim() FIM_SE
SE ObjComplemento != NULO ENTÃO NovaVerba.IdComplementoSistemaOrigem = ObjComplemento.Id FIM_SE
NovaVerba.TipoIncidenciaINSS = Config.IncidenciaINSS // Padrão: ISE (Isento) NovaVerba.TipoIncidenciaFGTS = Config.IncidenciaFGTS // Padrão: ISE (Isento) NovaVerba.TipoIncidenciaIRRF = Config.IncidenciaIRRF // Padrão: ISE (Isento) NovaVerba.NaturezaeSocial = Config.NaturezaeSocial // Padrão: 9219 - Desconto de assistência médica
CopiarIncidencias(VerbaOriginal(“743”), NovaVerba)
NovaVerba.ImpactoFinanceiro = Config.ImpactoFinanceiro // Conforme ficha técnica: Não NovaVerba.ImpactoContabil = Config.ImpactoContabil // Conforme ficha técnica: Sim
SE Config.AtualizarAcumuladorBeneficios ENTÃO VG_TotalCoparticipacaoSaudeMesAnterior = VG_TotalCoparticipacaoSaudeMesAnterior + ValorDescontoFinal FIM_SE
Registro de Memória de Cálculo Transparente EscreverMemoria(“DESC_COPARTICIPACAO_SAUDE_MA”, String.Format(“Desconto Coparticipação Saúde Mês Anterior: Benefício ID = {0}, Valor Origem = R$ {1}, Desconto Final = R$ {2}”, LancamentoBeneficio.Id, ValorBrutoCalculado.ToString(“N2”), ValorDescontoFinal.ToString(“N2”)))
Holerite.ListaHoleriteVerba.Adicionar(NovaVerba)
FIM_PARA
FIM
Parametrizações Propostas para Reestruturação
1. REGRAS DE ENTRADA E FILTROS DE ELEGIBILIDADE
[ ] Permitir Execução no Processo de Provisões
Tipos de Folha Permitidos …: [X] Regular [X] Rescisão [X] Complementar
[X] Origem Obrigatória do Módulo de Benefícios de Saúde (ListaLancamentoBeneficioSaude)
Tipo de Lançamento Requerido …: [ CoparticipacaoMesAnterior (Tipo 5) v ]
[X] Validar Intervalo de Vigência da Data de Referência (DataInicioVigencia a DataFimVigencia)
2. INTEGRAÇÃO DE BENEFÍCIOS E FORMATO DE COMPLEMENTO
Modo de Captura de Valores …: [ 1. Valor do Lançamento do Benefício v ]
[X] Permitir Sobrescrita por Lançamento Manual na Folha
Sufixo para Lançamentos Parcelados …: [ Parcelado ]
Formatação da Descrição Final …: [ Descrição Padrão + Complemento + Sufixo v ]
3. DIRETRIZES DE PROTEÇÃO, LIMITES E ARREDONDAMENTO
[ ] Aplicar Teto Máximo de Desconto
Valor Teto Máximo …: [ 0,00 ]
[ ] Aplicar Piso Mínimo de Desconto
Valor Piso Mínimo …: [ 0,00 ]
Regra de Arredondamento/Ajuste …: [ Arredondamento Padrão (Func_ArredondamentoPadrao) v ]
[ ] Permitir Gravação da Rubrica com Valor Zerado
4. FORMATAÇÃO E IMPACTOS
Descrição Padrão da Rubrica …: [ Desc. Seguro Saúde Coparticipação Mês Anterior [BN] ]
Tipo da Rubrica …: [ Desconto ]
Impacto Financeiro …: [ ] Sim [X] Não
Impacto Contábil …: [X] Sim [ ] Não
[X] Atualizar Acumulador Global de Benefícios de Saúde
5. TRIBUTAÇÃO E ENVIOS ESOCIAL
Natureza eSocial …: [ 9219 - Desconto de assistência médica ou odontológica ]
Incidência INSS …: [ Isento (ISE) ]
Incidência FGTS …: [ Isento (ISE) ]
Incidência IRRF …: [ Isento (ISE) ]
Clientes com mesma regra
- Padrão Geral do Módulo de Benefícios (Todos os Clientes): O comportamento legado --- pautado na busca na
ListaLancamentoBeneficioSaudepor registros do tipoEnumBeneficioSaudeBO.CoparticipacaoMesAnterior(tipo 5), validação de vigência, associação de complemento e verificação condicional de parcelamento viaSysFunc_MesmoMesAno--- é absorvido nativamente pelo motor unificado. - A parametrização preserva a sequência de execução
191e todos os metadados da ficha técnica: Tipo “Desconto”, ISENÇÃO de INSS, FGTS e IRRF (ISE), Natureza eSocial9219, DSR “Não”, Médias “Não”, Impacto Financeiro “Não” e Impacto Contábil “Sim”.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e8381eab83cd85dedfbe61f