207 - Diárias para Viagem (acima de 50% Salário)
⚙️ Metadados
- Código: 207
- Tipo: Provento
- INSS: SAL
- FGTS: SAL
- IRRF: SAL
- Natureza eSocial: 1099 - Outras verbas salariais
- 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 207 é calculada apenas se houver um lançamento prévio associado a ela. A fórmula verifica a existência de um
Lancamentoutilizando a funçãoFunc_ValidarExistenciaLancamento. Se nenhum lançamento for encontrado (false), a execução da fórmula é interrompida (return null), e nenhum valor é atribuído à verba. Caso contrário, presume-se que o valor da verba é proveniente doLancamentoexistente ou de um cálculo subsequente não detalhado neste trecho de código. -
Variáveis Utilizadas:
Lancamento(objeto que representa o lançamento da verba).
-
Condições Especiais:
if (Func_ValidarExistenciaLancamento(Lancamento) == false): Esta condição verifica se existe um lançamento para a verba. Se não houver, a verba não é calculada.
🧩 Funções
Func_ValidarExistenciaLancamento: Verifica se existe um lançamento (manual ou automático) para a verba atual.
💡 Proposta de Novo Cálculo
Fórmula proposta (padronizada):
LimiteIsencao = SalarioContratual * (PercentualLimiteIsencao / 100)
ValorTributavelCalculado = SE(Origem == “ValorDireto”, ValorDigitado, SE(CalcularExcedente == Verdadeiro, MAX(0, TotalDiarias - LimiteIsencao), TotalDiarias))
ValorFinal207 = Func_ArredondamentoPadrao(MAX(PisoMinimo, MIN(ValorTributavelCalculado, SE(PossuiTeto == Verdadeiro, TetoMaximo, ValorTributavelCalculado))))
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(“207”) ValorBaseCalculado = 0.0 QuantidadeDiarias = 0.0 OrigemValoracao = ""
Definição da Base de Comparação Salarial (50% do Salário) SalarioContratual = Empregado.SalarioContratual LimiteExcedenteSemTributacao = SalarioContratual * (Config.PercentualLimiteIsencao / 100.0)
SE Func_ValidarExistenciaLancamento(LancamentoManual) E LancamentoManual.ValorTotal > 0.0 ENTÃO ValorBaseCalculado = ABS(LancamentoManual.ValorTotal) QuantidadeDiarias = SE(LancamentoManual.Quantidade > 0.0, LancamentoManual.Quantidade, 1.0) OrigemValoracao = “LANCAMENTO_MANUAL_VALOR”
SENÃO SE Func_ValidarExistenciaLancamento(LancamentoManual) E LancamentoManual.Quantidade > 0.0 ENTÃO QuantidadeDiarias = LancamentoManual.Quantidade ValorDiariaUnitario = SE(LancamentoManual.ValorReferencia > 0.0, LancamentoManual.ValorReferencia, Config.ValorDiariaPadrao) ValorTotalDiarias = QuantidadeDiarias * ValorDiariaUnitario
Apuração da parcela tributável (excedente a 50% do salário contratual, conforme regra legada/CLT anterior à Reforma) SE Config.CalcularExcedenteAutomatico E ValorTotalDiarias > LimiteExcedenteSemTributacao ENTÃO ValorBaseCalculado = ValorTotalDiarias - LimiteExcedenteSemTributacao SENÃO ValorBaseCalculado = ValorTotalDiarias FIM_SE
OrigemValoracao = “LANCAMENTO_MANUAL_QUANTIDADE”
SENÃO SE Config.PermitirCalculoAutomaticoViagens ENTÃO ValorTotalDiarias = Viagens.ObterTotalDiariasMes(Solicitacao.Competencia) QuantidadeDiarias = Viagens.ObterQuantidadeDiariasMes(Solicitacao.Competencia)
SE ValorTotalDiarias > LimiteExcedenteSemTributacao ENTÃO ValorBaseCalculado = ValorTotalDiarias - LimiteExcedenteSemTributacao OrigemValoracao = “AUTOMATICO_MODULO_VIAGENS” SENÃO RETORNAR NULO FIM_SE
SENÃO RETORNAR NULO FIM_SE
ValorBrutoCalculado = ValorBaseCalculado
3. Aplicação de Limites, Tetos e Pisos
SE Config.PossuiTetoMaximo E ValorBrutoCalculado > Config.ValorTetoMaximo ENTÃO ValorBrutoCalculado = Config.ValorTetoMaximo SENÃO SE Config.PossuiPisoMinimo E ValorBrutoCalculado < Config.ValorPisoMinimo ENTÃO ValorBrutoCalculado = Config.ValorPisoMinimo FIM_SE
ValorFinal207 = Func_ArredondamentoPadrao(ValorBrutoCalculado)
SE ValorFinal207 <= 0.0 E NAO Config.GravarVerbaZerada ENTÃO RETORNAR NULO FIM_SE
4. Gravação de Campos e Acumuladores Fiscais (Natureza eSocial 1099 - Outras verbas salariais)
RubricaDiariasAcima50 = CriarVerbaHoleriteBO(“207”, “Diárias para Viagem (acima de 50% Salário)”) RubricaDiariasAcima50.TipoVerba = “P”
RubricaDiariasAcima50.Quantidade = Func_ArredondamentoPadrao(QuantidadeDiarias) RubricaDiariasAcima50.ValorReferencia = Func_ArredondamentoPadrao(LimiteExcedenteSemTributacao) RubricaDiariasAcima50.ValorTotal = ValorFinal207
Encargos Sociais Conforme Metadados (INSS: SAL, FGTS: SAL, IRRF: SAL) SE Config.TributarINSS ENTÃO Holerite.AcumularBase(“BASE_INSS_FOLHA”, ValorFinal207) SENÃO Holerite.AcumularBase(“BASE_INSS_ISENTA_FOLHA”, ValorFinal207) FIM_SE
SE Config.TributarFGTS ENTÃO Holerite.AcumularBase(“BASE_FGTS_FOLHA”, ValorFinal207) SENÃO Holerite.AcumularBase(“BASE_FGTS_ISENTA_FOLHA”, ValorFinal207) FIM_SE
SE Config.TributarIRRF ENTÃO Holerite.AcumularBase(“BASE_IRRF_FOLHA”, ValorFinal207) SENÃO Holerite.AcumularBase(“BASE_IRRF_ISENTA_FOLHA”, ValorFinal207) FIM_SE
Repercussão de Reflexos: DSR e Médias (Sem DSR e Sem Médias Conforme Metadados) SE Config.ComporDSR E SysFunc_VerbaPossuiDSR(“207”) ENTÃO Holerite.AcumularBase(“BASE_HORAS_VARIAVEIS_DSR”, ValorFinal207) Func_DSR(“207”, “DSR s/ Diárias de Viagem”, “207”, ValorFinal207, RubricaDiariasAcima50, VERDADEIRO) FIM_SE
SE Config.IncorporaMedias ENTÃO Holerite.AcumularBase(“BASE_MEDIAS_13”, ValorFinal207) Holerite.AcumularBase(“BASE_MEDIAS_FERIAS”, ValorFinal207) Holerite.AcumularBase(“BASE_MEDIAS_RESCISAO”, ValorFinal207) FIM_SE
Holerite.ListaHoleriteVerba.Adicionar(RubricaDiariasAcima50)
Registro em memória de cálculo detalhada Argumento(“ORIGEM_VALORACAO_207”, OrigemValoracao) Argumento(“QUANTIDADE_DIARIAS_207”, QuantidadeDiarias) Argumento(“LIMITE_ISENCAO_207”, LimiteExcedenteSemTributacao) Argumento(“VALOR_FINAL_207”, ValorFinal207)
EscreverMemoria(“DIARIAS_VIAGEM_EXCEDENTE”, String.Format(“Diárias Viagem (>50%): Origem: {0} | Qtd: {1} | Limite Isenção: R$ {2} | Valor Tributável: R$ {3}”, OrigemValoracao, QuantidadeDiarias.ToString(“N2”), LimiteExcedenteSemTributacao.ToString(“N2”), ValorFinal207.ToString(“N2”)))
RETORNAR RubricaDiariasAcima50
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 …: [ Lançamento Manual de Valor Excedente Tributável v ] [ Lançamento Manual de Valor Excedente Tributável ] [ Apuração Automática por Total de Diárias e Salário] [ Importação do Módulo de Gestão de Viagens ]
[ ] Exigir Filtro de Elegibilidade por Empresa / Cliente / Categoria
2. DIRETRIZES DE VALORAÇÃO E CÁLCULO DE EXCEDENTE
[X] Destacar Apenas a Parcela Excedente Tributável
Percentual Limite de Isenção (%) …: [ 50,00 % ]
Base para Cálculo do Limite …: [ SalarioContratual v ]
Valor Padrão da Diária R$ …: [ 0,00 ]
3. LIMITES E CONTROLE
[ ] Possui Teto Máximo
Valor Teto Máximo R$ …: [ 0,00 ]
[ ] Possui Piso Mínimo
Valor Piso Mínimo R$ …: [ 0,00 ]
[ ] Gravar Verba quando Valor Final for Zero
4. ENCARGOS E NATUREZA ESOCIAL
Natureza eSocial …: [ 1099 - Outras verbas salariais v ]
Incidência INSS …: [ Mensal / Salário (SAL) ]
Incidência FGTS …: [ Mensal / Salário (SAL) ]
Incidência IRRF …: [ Mensal / Salário (SAL) ]
Afeta DSR …: [ ] Sim [X] Não
Incorpora Médias …: [ ] Sim [X] Não
Clientes com mesma regra
- Padrão Geral (Todos os Clientes): O cálculo legado da verba 207 apoia-se unicamente no pré-requisito de existência de um lançamento (manual ou via interface) validado por
Func_ValidarExistenciaLancamento. No motor reestruturado, esse comportamento é preservado integralmente definindo o modo de entrada como “Lançamento Manual de Valor Excedente Tributável”. Se não houver lançamento registrado na competência, o fluxo é interrompido com retorno nulo, mantendo paridade absoluta com a operação vigente.
Status Documental
- Status: Documentada
- Origem: export do Notion + catálogo da wiki
- Fonte rastreável:
30dc75ea2e838139a8f0c114ac6bf45e