Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


CONTEÚDO

Índice
excludeCONTEÚDO


01. VISÃO GERAL

A Classe TaxOperandIntegrator foi desenvolvida para viabilizar a recepção de tributos com Operandos de integração no Configurador de Tributos (FISA170), permitindo que valores de tributos sejam recebidos via JSON e integrando dinamicamente à estrutura da do motor de calculo e por consequência, gravando os registros nas tabelas F2D e CJ3 .

Aviso
titleAtenção

A classe não tem a funcionalidade de gravar registros em tabelas, e por esse motivo é necessário que a classe seja instanciada no contexto onde a Matxfis esta inicializada, pois as funções internas do motor de calculo continuam com a responsabilidade de realizar a gravação. 

Este documento tem o objetivo de demonstrar o funcionamento da classe e seus métodos, e as condições para efetivação do processo.

02. COMO USAR

A Classe TaxOperandIntegrator possibilita receber e processar dados de tributos através de um JSON estruturado, integrando esses valores ao motor de calculo do módulo fiscal em tempo de execução. Para o funcionamento correto, é imprescindível que a classe seja utilizada após a inicialização da MATXFIS (após o carregamento da operação MafisIniLoad) e antes do seu encerramento.

Informações
titleInformação

Todos os tributo enviado pela classe precisam estar previamente cadastrados no Configurador de Tributos (FISA170) e em seu cadastro conter os Operandos de integração seguindo as Regras do Operando de Integração

03. MÉTODOS

New()

Método construtor da classe.

Exemplo de utilização


Bloco de código
languagejs
themeMidnight
titleExemplo método new
using totvs.protheus.backoffice.fiscal.taxoperandintegrator
 
Function Exemplo()
    Local oIntegrador as Json
     oIntegrador   := TaxOperandIntegrator():New()
Return

ProcessItemTaxJson()

Método principal que recepciona e processa o JSON de tributos do item, realizando todas as validações necessárias e integrando os valores à MATXFIS e retornando o feedback após fim do processamento, podendo ser warning ou success.

Informações
titleInformação

O método ProcessItemTaxJson retorna uma string estruturada como JSON com o feedback do processamento

Exemplo de utilização

Bloco de código
languagejs
themeMidnight
titleExemplo método ProcessItemTaxJson
using totvs.protheus.backoffice.fiscal.taxoperandintegrator
 
Function Exemplo()
	Local oIntegrador   as Object
    Local jDadosTributo as Json
    Local cRetorno      as Character
    
    // Inicializa o integrador
    oIntegrador := TaxOperandIntegrator():New()
    
    // Monta o JSON com dados dos tributos
    jDadosTributo := { "1": { ;
        "TRIB01": { ;
            "base_valor": 1000.00, ;
            "aliquota": 18.00, ;
            "valor": 180.00, ;
        } ;
    } }
    
    // Processa os tributos
    cRetorno := oIntegrador:ProcessItemTaxJson(jDadosTributo)
Return


04. ESTRUTURA DO JSON

Para o funcionamento correto da classe, é necessário que o JSON contenha a estrutura pré-determinada:

Novos tributos

Os novos tributos (tributos da reforma), obrigatoriamente precisam conter a seguinte estrutura:

Estrutura JSON novos tributos

Bloco de código
languagejs
themeMidnight
titleExemplo estrutura Json Novos Tributos
    numero_item
		|_id_tributo
			|_base_valor
		 	|_base_quantidade
        	|_base_um
        	|_aliquota
        	|_valor
        	|_CST
        	|_CCT
        	|_vl_tributado
        	|_vl_isento
        	|_vl_outros
        	|_vl_diferido
        	|_pc_diferido
        	|_pc_reducao_base
        	|_base_original
        	|_pc_reducao_aliq
        	|_aliquota_original

Composição JSON


Bloco de código
languagejs
themeMidnight
titleExemplo JSON
 {
    "1": {
      "000062": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,
        "CST": "000",
        "CCT": "003",
        "vl_tributado": 6.55,
        "vl_isento": 0.00,
        "vl_outros": 0.00,
        "vl_diferido": 0.00,
        "pc_diferido": 0,
        "pc_reducao_base": 0,
        "base_original": 0,
        "pc_reducao_aliq": 0,
        "aliquota_original": 0.00
      	}
   	}
}


Aviso
titleAtenção

Caso a estrutura não seja respeitada o método retornará um warning e o processamento será interrompido

Propriedades do Tributo (F2D)

PropriedadeDescriçãoType
base_valor

Valor da base do imposto

number

base_quantidadeValor da base quando é operação com quantidadenumber
base_umUnidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade)character
aliquotaAlíquota do tributonumber
valorValor do impostonumber

Propriedades de escrituração (CJ3)

PropriedadeDescriçãoType
CSTClassificação fiscalcharacter
CCTCCT IBS/CBScharacter
vl_tributadoValor tributadonumber
vl_isentoValor isentonumber
vl_outrosValor outrosnumber

vl_diferido

Valor diferidonumber

pc_diferido

Percentual do diferimentonumber

pc_reducao_base

Percentual da reduçãonumber

base_original

Base originalnumber

pc_reducao_aliq

Percentual de redução de alíquotanumber

aliquota_original

Alíquota originalnumber
Aviso
titleAtenção

A classe TaxOperandIntegrator tem  por objetivo preencher as referencias internas do configurador de tributos, sendo assim, mesmo que a propriedade tenha o conteúdo zero ou vazio precisa ser informado, pois se tratando de uma integração para recepção dos tributos e seus respectivos valores não é possível presumir o valor.

Tributos legados

Para o funcionamento correto, os tributos legados (tributos correntes atualmente, antes da reforma) precisam ter pelo menos a seguinte estrutura:

Estrutura JSON tributos legados

Bloco de código
languagejs
themeMidnight
titleExemplo estrutura Json Tributos legados
    numero_item
		|_id_tributo
			|_base_valor
        	|_aliquota
        	|_valor

 Composição JSON

Bloco de código
languagejs
themeMidnight
{
    "1": {
      "000021": {
        "base_valor": 10000,
        "aliquota": 10,
        "valor": 500,
       	}
   	}
}

Propriedades do Tributo (F2D)

PropriedadeDescriçãoType
base_valor

Valor da base do imposto

number

base_quantidadeValor da base quando é operação com quantidadenumber
base_umUnidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade)character
aliquotaAlíquota do tributonumber
valorValor do impostonumber

Propriedades de escrituração (CJ3)

PropriedadeDescriçãotype

tab_CST

Tabela CSTcharacter
CSTCSTcharacter
vl_tributadoValor tributadonumber
vl_isentoValor isentonumber
vl_outrosValor outrosnumber

vl_diferido

Valor diferidonumber

pc_diferido

Percentual do diferimentonumber

pc_reducao_base

Percentual da reduçãonumber

base_original

Base originalnumber

pc_reducao_aliq

Percentual de redução de alíquotanumber

aliquota_original

Alíquota originalnumber

Em casos onde é necessário enviar a escrituração é obrigatório que todas as propriedades de escrituração estejam no JSON:

Estrutura JSON tributos legados completa

Bloco de código
languagejs
themeMidnight
titleEstrutura completa JSON Tributo legado
    numero_item
		|_id_tributo
			|_base_valor
		 	|_base_quantidade
        	|_base_um
        	|_aliquota
        	|_valor
        	|_tab_CST
        	|_CST
        	|_vl_tributado
        	|_vl_isento
        	|_vl_outros
        	|_vl_diferido
        	|_pc_diferido
        	|_pc_reducao_base
        	|_base_original
        	|_pc_reducao_aliq
        	|_aliquota_original

Composição JSON

Bloco de código
languagejs
themeMidnight
titleExemplo
 {
    "1": {
      "000062": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,
        "tab_CST": "000001",
        "CST": "001",
        "vl_tributado": 6.55,
        "vl_isento": 0.00,
        "vl_outros": 0.00,
        "vl_diferido": 0.00,
        "pc_diferido": 0,
        "pc_reducao_base": 0,
        "base_original": 0,
        "pc_reducao_aliq": 0,
        "aliquota_original": 0.00
      	}
   	}
} 

05. REGRAS OPERANDOS DE INTEGRAÇAO

Novos tributos

Para que a integração funcione é necessário que o Operandos de integração esteja configurado nas seguintes regras:

  • Regra de Base
  • Regra de Alíquota
  • Regra de Escrituração
  • Regra de Cálculo

Caso alguma dessas configurações não esteja de acordo será retornada uma mensagem de warning e o processamento será interrompido.

Tributos legados

Para que a integração funcione é necessário que o Operando de integração esteja configurado nas seguintes regras:

  • Regra de Base
  • Regra de Alíquota
  • Regra de Cálculo

No caso da Regra de Escrituração ela só será necessária, caso no JSON, seja informada alguma propriedade de escrituração. Caso o contrário a classe respeitará a regra de escrituração amarrada ao tributo, se houver.

Caso alguma dessas configurações não esteja de acordo será retornada uma mensagem de warning e o processamento será interrompido.