Árvore de páginas


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

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.


OPERACAO

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

Operação Default

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.

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:

        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

Tributo

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.

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

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:

    • (F12) Exibir Lançamento Contábil: Sim

    • (F12) Contabilização Online: Sim

    • Valor de D1_TOTAL: R$ 1.000,00

    • Valor do ICMS (calculado via Configurador de Tributos pela regra ATF001): R$ 180,00

📊 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:

    • (F12) Exibir Lançamento Contábil: Sim

    • (F12) Contabilização Online: Sim

    • Valor de D1_TOTAL: R$ 1.000,00

    • Valor do ICMS (calculado via Configurador de Tributos pela regra ATF001): R$ 180,00

📊 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:

    • (F12) Exibir Lançamento Contábil: Sim

    • (F12) Contabilização Online: Sim

    • Valor de D1_TOTAL: R$ 1.000,00

    • Valor do ICMS (calculado via Configurador de Tributos pela regra ATF001): R$ 180,00

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


04. RETORNO DA FUNÇÃO CONSIDERANDO A REGRA DE DESEMBRAMENTO DO ATIVO FIXO

Para possibilitar a aplicação da regra de Desmembramento de Bens gerados no módulo Ativo Fixo, foi adicionado um quarto argumento à função CTBVLTRIB.

Por padrão, esse argumento permanece desabilitado. Porém, quando definido como .T., o sistema verifica se o Documento de Entrada foi originado a partir de uma TES configurada com o campo Desmembra Ativo (F4_BENSATF) igual a Sim. Caso positivo, o valor do imposto calculado será dividido pela quantidade de ativos (D1_QUANT) gerados pela nota.

A inclusão desse quarto parâmetro atende inicialmente à necessidade de contabilização de impostos via módulo SIGAATF, onde uma única linha da tabela SD1 pode gerar múltiplos ativos quando a opção de Desmembrar Ativo está habilitada. Dessa forma, torna-se possível obter o valor do imposto de forma detalhada por bem individual, em vez de agrupado.

Exemplo de chamada da função com o quarto parâmetro: CTBVLTRIB(SN1→N1_IDTRIB,"IBSEST",,.T.)

Exemplo prático:

  1. Incluir um Documento de Entrada via MATA103 com quantidade 5, TES com Desmembra Ativo igual a Sim, total de 5000 R$, IBS de 440 R$ gerando Ativo Fixo.
  2. Como o Desmembra está igual a Sim, na tabela SN1 e SN3 será gerado 5 ativos de 1000 R$ cada.
  3. Ao contabilizar uma baixa do bem no LP 810 e possuir alguma sequencia de Lançamento Padrão para buscar o IBS gerado e baixar, temos duas possibilidades ao usar o CTBVLTRIB:
    1. Ao chamar com o quarto parâmetro igual a .T. (CTBVLTRIB(SN1→N1_IDTRIB,"IBSEST",,.T.)), o valor retornado será o total do IBS dividido pela quantidade da nota, ou seja, no nosso exemplo será 440 / 5 = 88 R$.
    2. Ao chamar sem o quarto parâmetro ou informando igual a .F. (CTBVLTRIB(SN1→N1_IDTRIB,"IBSEST",,.F.)), o valor retornado será o total do IBS dividido sem dividir pela quantidade da nota, ou seja, no nosso exemplo será 440 R$.


Importante

O quarto argumento da função CTBVLTRIB possui funcionamento exclusivo para a obtenção dos valores de impostos provenientes do Configurador de Tributos, quando esses são preenchidos por notas de compras (SD1).