01. Passo-a Passo - Contabilização com Base na Classificação do Tributo


Documento de Entrada


Documento de Saída


02. Contabilização com Base na Classificação do Tributo

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:


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.

Sintaxe da Função

CTBVLTRIB(<ID_TRIBUTO>, <TRIBUTO>, <OPERACAO>)

Onde:


A funcionalidade para o parâmetro Operação, apenas estará disponível no release 12.1.2410 em diante.


Exemplo de Uso

CTBVLTRIB(SD2->D2_IDTRIB, "ICMSST")

Caso o terceiro argumento não seja informado, o valor padrão (default) para a operação será falso (.F.). Isso significa que a operação definida para o tributo não será considerada, e a função retornará o valor do tributo, independentemente da operação associada a ele.

Funcionamento

A função CTBVLTRIB opera da seguinte forma:

    1. Procura no <ID_TRIBUTO> informado se há uma regra que corresponda ao tributo desejado <TRIBUTO>
    2. Verifica se o valor do tributo encontrado é maior que zero
    3. Em caso positivo, retorna o valor do tributo como resultado da função
    4. Em caso negativo (tributo não encontrado ou valor zero), retorna zero

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:

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.


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).


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:


Abaixo será demonstrado o impacto da configuração do terceiro parâmetro da função CTBVLTRIB — quando o mesmo está definido como .T. (true).

Quando esse parâmetro é ativado, a função considera a operação de custo configurada para o tributo no Configurador de Tributos, o que influencia diretamente o resultado do lançamento contábil.

Serão apresentados três cenários práticos com a regra fictícia ATF001 aplicada ao tributo ICMS, cada um ilustrando um tipo de operação de custo: Somar (1), Sem Ação (0) e Subtrair (2).

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

🏛️ Configuração no Configurador de Tributos:
A regra ATF001 está configurada para o tributo ICMS com a operação de custo definida como "Somar".

📄  Configuração do Lançamento Padrão:
O lançamento 650/002 utiliza a seguinte fórmula:
CTBVLTRIB(SD1->D1_IDTRIB, "ICMS", .T.)

Documento de Entrada:

📊 Resultado da Contabilização:
Ao confirmar a inclusão do lançamento contábil, será exibido o valor de R$ 180,00 referente à LP 650/002, correspondente ao valor do ICMS, conforme definido pela operação de Soma.



➖ Cenário 2 – Operação 2 (Subtrair) para o Tributo ICMS

🏛️ Configuração no Configurador de Tributos:
A regra ATF001 está configurada para o tributo ICMS com a operação de custo definida como "2 – Subtrair".

📄 Configuração do Lançamento Padrão:
O lançamento 650/002 utiliza a seguinte fórmula:
SD1->D1_TOTAL+CTBVLTRIB(SD1->D1_IDTRIB, "ICMS", .T.)

Documento de Entrada:

📊 Resultado da Contabilização:
Como a operação definida para o tributo ICMS é "2 – Subtrair", o valor retornado pela função CTBVLTRIB será -180,00.



🚫 Cenário 3 – Operação 0 (Sem Ação) para o Tributo ICMS

🏛️ Configuração no Configurador de Tributos:
A regra ATF001 está configurada para o tributo ICMS com a operação de custo definida como "0 – Sem Ação".

📄  Configuração do Lançamento Padrão:
O lançamento 650/002 utiliza a seguinte fórmula:
CTBVLTRIB(SD1->D1_IDTRIB, "ICMS", .T.)

Documento de Entrada:

📊 Resultado da Contabilização:
Como a operação definida para o tributo ICMS é "0 – Sem Ação", o retorno da função CTBVLTRIB será zero.
Portanto, o lançamento contábil da LP 650/002 não será exibido, pois não há valor a ser contabilizado.