Histórico da Página
...
02. Contabilização com Base na Classificação do Tributo
02.1. Nova Abordagem de Contabilização
Com o intuito de aprimorar o processo contábil, foi implementada uma solução que permite que a contabilização utilize a Classificação do Tributo (definida na Regra de Cálculo - Documentos Fiscais) como base, em vez do código da sigla específico do tributo (F2D_TRIB).
Vantagens da Nova Abordagem
Esta implementação possibilita:
- Configuração de sequências contábeis mais genéricas
- Maior reutilização de parâmetros
- Manutenção simplificada das regras contábeis
02.2. Função de Contabilização CTBVLTRIB
📊 Foi desenvolvida uma função de contabilização especializada chamada CTBVLTRIB, que pode ser utilizada diretamente nos lançamentos padrões de contabilização para obter o valor do tributo desejado.
02.2.1. Sintaxe da Função
CTBVLTRIB(<ID_TRIBUTO>,
...
<TRIBUTO>,
...
<OPERACAO>, <LDESDOCENT>)
Onde:
<ID_TRIBUTO>: Campo que contém o ID do tributo (SD1->D1_IDTRIB ou SD2->D2_IDTRIB).
<TRIBUTO>: String com a sigla do tributo desejado (ex: "ICMSST", "IPI", etc.).
<OPERACAO>: Indica se deseja considerar a Operação selecionado para o Tributo.
<LDESDOCENT> Indica se retorna o Valor desmembrado da Nota de Entrada quando está para Desmembrar Ativo = Sim, .T. = Sim e .F. = Não (Padrão). Argumento exclusivo para a tabela SD1 do compras.
| Nota | ||
|---|---|---|
| ||
A funcionalidade para o parâmetro Operação, apenas estará disponível no release 12.1.2410 em diante. |
02.2.2. Exemplo de Uso
CTBVLTRIB(SD2->D2_IDTRIB,
...
"ICMSST")
| Informações | ||
|---|---|---|
| ||
Caso o terceiro argumento não seja informado, o valor padrão ( A mesma lógica se aplica ao quarto argumento, onde o seu padrão é falso e caso não informado, não considerará a regra de desmembramento do Ativo (F4_BENSATF) e retornará o valor total do tributo. |
02.2.3. Funcionamento
A função CTBVLTRIB opera da seguinte forma:
- Procura no <ID_TRIBUTO> informado se há uma regra que corresponda ao tributo desejado <TRIBUTO>
- Verifica se o valor do tributo encontrado é maior que zero
- Em caso positivo, retorna o valor do tributo como resultado da função
- Em caso negativo (tributo não encontrado ou valor zero), retorna zero
| Nota | ||
|---|---|---|
| ||
O nome do Tributo deve ser informado conforme a Regra de Cálculo - Documentos Fiscais. |
Exemplo Configuração do Lançamento Padrão:
A função CTBVLTRIB possui um terceiro parâmetro chamado <OPERACAO>, cujo funcionamento depende da regra de Custo definida para o tributo informado no segundo parâmetro <TRIBUTO>.
O parâmetro <OPERACAO> é do tipo booleano e pode assumir os valores .T. (verdadeiro) ou .F. (falso).
Quando definido como .T., a função considera a operação associada ao tributo informado no segundo parâmetro. O comportamento da função varia conforme a regra de Custo configurada para o tributo:
Operação 0 – Sem ação: a função retorna zero.
Operação 1 – Somar: a função retorna o valor do tributo.
Operação 2 – Subtrair: a função retorna o valor do tributo com sinal negativo.
| Informações |
|---|
Caso a Regra de Cálculo - Documentos Fiscais não tenha o campo Custo preenchido, a função retornará o valor do tributo. Caso um Custo seja vinculado à Regra de Cálculo - Documentos Fiscais, mas a ação do custo esteja em branco ou não preenchida, a função retornará zero. |
O objetivo desse comportamento — especialmente no caso da operação "2 – Subtrair", que retorna o valor negativo — é permitir a criação de lógicas condicionais e cálculos dinâmicos nas rotinas contábeis, utilizando o sinal como critério de decisão.
02.2.4. Exemplo de uso com lógica condicional:
IIF(CTBVLTRIB(SD1->D1_IDTRIB, "ICMS", .T.) < 0, FAÇA_X(), FAÇA_Y())
Neste exemplo, a função verifica se o valor do tributo é negativo, permitindo executar diferentes rotinas conforme o tipo da operação (como crédito ou débito).
02.2.5. Exemplo de cálculo com ajuste automático:
SD1->D1_TOTAL + CTBVLTRIB(SD1->D1_IDTRIB, "ICMS", .T.)
Se CTBVLTRIB retornar -180 e D1_TOTAL for 1000, o resultado será 820.
Esse cálculo representa o valor líquido da operação, considerando automaticamente a dedução do ICMS — viabilizada pelo sinal negativo retornado pela função.
Esse comportamento é especialmente útil para simplificar regras e fórmulas nos lançamentos contábeis, evitando a necessidade de ajustar o sinal manualmente.
Sintaxe:
CTBVLTRIB(<ID_TRIBUTO>, <TRIBUTO>,<OPERACAO>)
Exemplo: CTBVLTRIB(SD1->D1_IDTRIB, "ICMS",.T.)
Cadastro Regra Custo:
Exemplo Cadastros:
Vinculo do Custo a Regra de Cálculo Documentos Fiscais:
03. Operação de custo
Abaixo será demonstrado o impacto da configuração do terceiro parâmetro da função CTBVLTRIB — quando o mesmo está definido como .T. (true).
...
Esses exemplos permitirão compreender de forma clara como a configuração da operação impacta os valores lançados, facilitando a correta aplicação da lógica contábil e evitando divergências na apuração dos resultados.
➕ Cenário 1 – Operação de Soma para o Tributo ICMS
...




