1089 - Desc. Adiantamento - Outros
⚙️ Metadados
- Código: 1089
- Tipo: Desconto
- INSS: ISE
- FGTS: ISE
- IRRF: SAL
- Natureza eSocial: 9299 - Outros descontos
- DSR: Não
- Médias: Não
- Impacto Financeiro: Não
- Impacto Contábil: Sim
- Sequência: 191
🧮 Regra Geral
- Lançamento manual em valor.
💡 Proposta de Novo Cálculo
Fórmula proposta (padronizada):
ValorTotalDesconto = Negativo(Arredondar(Minimo(ValorLancamentoManual, Minimo(TetoMaximoDesconto, 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 por Tipos de Folha Permitidos Se (Nao Configuracao.TiposFolhaPermitidos.Contem(Solicitacao.TipoFolha)) { EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Cálculo ignorado: Tipo de folha (” + Solicitacao.TipoFolha + ”) não habilitado para a verba 1089.”); HoleriteVerba = null; InterromperCalculo(); }
Trava de Re-processamento Se (HoleriteVerba != null E HoleriteVerba.ValorTotal != 0.00 E Nao Configuracao.PermitirRecalculo) { Retornar HoleriteVerba; }
2. Determinação da Base de Cálculo e Captura dos Valores
Definir ValorDescontoBruto = 0.00;
Captação Primária: Lançamento Manual no Movimento Mensal Se (Solicitacao.PossuiLancamentoManual(Configuracao.CodigoRubricaDestino)) { ValorDescontoBruto = Positivo(Solicitacao.ObterValorLancamentoManual(Configuracao.CodigoRubricaDestino)); EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Valor informado via Lançamento Manual Direto: R$ ” + ValorDescontoBruto); } Fallback 1: Histórico de Lançamentos Fixos do Empregado Senao Se (Configuracao.PermitirLancamentoFixoEmpregado == Verdadeiro E Empregado.PossuiLancamentoFixo(Configuracao.CodigoRubricaDestino)) { ValorDescontoBruto = Positivo(Empregado.ObterValorLancamentoFixo(Configuracao.CodigoRubricaDestino)); EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Valor capturado do histórico de lançamentos fixos do colaborador: R$ ” + ValorDescontoBruto); } Fallback 2: Abatimento Automático de Adiantamentos Pagos em Folhas Anterior/Específica Senao Se (Configuracao.PermitirCapturaAutomaticaAdiantamento == Verdadeiro) { Definir ValorAdiantamentoPago = Holerite.ObterValorPagoRubricaBase(Configuracao.CodigoRubricaAdiantamentoOrigem); Se (ValorAdiantamentoPago > 0.00) { ValorDescontoBruto = ValorAdiantamentoPago; EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Valor capturado de adiantamento pago anteriormente: R$ ” + ValorDescontoBruto); } }
Se (ValorDescontoBruto <= 0.00) { EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Cálculo interrompido: Nenhum valor localizado nos lançamentos manuais ou históricos.”); HoleriteVerba = null; InterromperCalculo(); }
3. Aplicação de Limites, Tetos e Proteção de Margem Líquida
Definir ValorDescontoAjustado = ValorDescontoBruto;
Aplicação de Teto Máximo Parametrizado Se (Configuracao.TetoMaximoDesconto > 0.00 E ValorDescontoAjustado > Configuracao.TetoMaximoDesconto) { ValorDescontoAjustado = Configuracao.TetoMaximoDesconto; EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Valor limitado ao teto máximo parametrizado: R$ ” + ValorDescontoAjustado); }
Proteção de Margem Líquida (Garantia de Não-Negativação do Holerite) Definir ProventoLiquidoDisponivel = Positivo(Holerite.ObterTotalProventos()) - Positivo(Holerite.ObterTotalDescontosExceto(Configuracao.CodigoRubricaDestino));
Se (Configuracao.RespeitarMargemLiquida == Verdadeiro E ProventoLiquidoDisponivel < ValorDescontoAjustado) { Se (Configuracao.AcaoExcessoSaldo == EnumAcaoExcesso.LimitarAoProventoLiquido) { ValorDescontoAjustado = Maximo(0.00, ProventoLiquidoDisponivel); EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Desconto limitado pela margem disponível (Bruto: R$ ” + ValorDescontoBruto + ” | Ajustado: R$ ” + ValorDescontoAjustado + ”).”); } Senao Se (Configuracao.AcaoExcessoSaldo == EnumAcaoExcesso.LancarInsuficienciaSaldo) { Definir SaldoDevedor = ValorDescontoAjustado - ProventoLiquidoDisponivel; ValorDescontoAjustado = Maximo(0.00, ProventoLiquidoDisponivel); AtualizarOuCriarVerbaInformacao(Configuracao.CodigoRubricaInsuficienciaSaldo, SaldoDevedor); EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Insuficiência de Saldo gerada no adiantamento: R$ ” + SaldoDevedor); } }
4. Gravação dos Itens no Holerite
Se (ValorDescontoAjustado > 0.00) { RubricaGerada = CriarInstanciaRubrica(Configuracao.CodigoRubricaDestino); RubricaGerada.Quantidade = 1.00; RubricaGerada.Percentual = 0.00; RubricaGerada.ValorTotal = Negativo(Func_ArredondamentoPadrao(ValorDescontoAjustado)); RubricaGerada.Descricao = Configuracao.DescricaoRubrica;
Metadados Fiscais (Natureza eSocial 9299 | INSS: ISE, FGTS: ISE, IRRF: SAL) RubricaGerada.IncideINSS = EnumIncidencia.ISENTO; RubricaGerada.IncideFGTS = EnumIncidencia.ISENTO; RubricaGerada.IncideIRRF = EnumIncidencia.SIM;
AdicionarAoHolerite(RubricaGerada); EscreverMemoria(“[DESC_ADIANT_OUTROS]”, “Verba 1089 processada com sucesso. Valor total descontado: R$ ” + ValorDescontoAjustado); } Senao { HoleriteVerba = null; InterromperCalculo(); }
Parametrizações Propostas para Reestruturação
1. REGRAS DE ENTRADA E FONTE DOS DADOS
[ ] Inativar Rubrica (Desativa o cálculo globalmente)
Modo Primário de Alimentação:
(*) Lançamento Manual no Movimento Mensal (Valor em R$)
( ) Captura Automática de Lançamento Fixo do Empregado
( ) Baixa Automática de Adiantamentos Pagos em Folha Específica
[X] Permitir Fallback para Lançamento Fixo do Empregado se Manual Estiver Vazio
[ ] Permitir Fallback para Baixa Automática de Adiantamento Pago
└─ Código da Rubrica de Adiantamento Origem: [ ]
Tipos de Folha Permitidos para Processamento:
[X] Regular / Mensal
[X] Rescisão / Desligamento
[X] Rescisão Complementar
[ ] Folha de 13º Salário
2. DIRETRIZES DE PROTEÇÃO E MARGEM LÍQUIDA
Teto Máximo de Desconto por Competência (R$): [ 0.00 ] (0,00 = Sem Teto)
[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 proporcionalmente ao saldo líquido disponível
( ) Cancelar o desconto integralmente 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: [ ]
3. ENCARGOS E NATUREZA ESOCIAL
Natureza eSocial: [ 9299 - Outros descontos ]
Incidências Oficiais:
INSS: [ ISE - Isento ]
FGTS: [ ISE - Isento ]
IRRF: [ SAL - Base de Cálculo (Sim) ]
Clientes com mesma regra
- Todos os Clientes (Processamento Padronizado por Lançamento Manual): A especificação original define que o desconto de adiantamentos diversos ocorre estritamente via “Lançamento manual em valor”. O motor dynamic mantém o lançamento manual como via primária de entrada de dados, porém introduz um ecossistema de controle mais seguro. Isso inclui a validação de tipo de folha, teto máximo parametrizado por competência e proteção contra holerite negativo, garantindo que lançamentos manuais inconsistentes não afetem a saúde da folha de pagamento.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e83819abe31ec12a9dc9787