Árvore de páginas

Versões comparadas

Chave

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


CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
  3. Tela XXX
    1. Outras Ações / Ações relacionadas
  4. Tela XXX
    1. Principais Campos e Parâmetros
  5. Tabelas utilizadas

Í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 MATXFIS.

Este documento tem o objetivo de demonstrar o funcionamento da classe e seus métodos, facilitando a integração de tributos.

02. COMO USAR

A Classe TaxOperandIntegrator possibilita receber e processar dados de tributos através de um JSON estruturado, integrando esses valores à MATXFIS 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.

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

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 tributos que terão os seus valores atribuídos 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 Namespace 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 ao motor de calculo e retornando o feedback após fim do processamento, podendo ser warning ou success.

...

Bloco de código
languagejs
themeMidnight
titleExemplo método ProcessItemTaxJson
usingUsing Namespace 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": { ;
        "TRIB01000021": { ;
            "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

.

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.

A Estrutura é composta por:

  • Número do Item (nItem);
  • ID do Tributo (para mais informações sobre ID do Tributo consulte aqui);
  • Propriedades do Tributo (valores ou dados que serão atualizados nas referencias das tabelas F2D e CJ3).
Informações
titleInformação

A classe segue os mesmo princípios do motor de calculo, MATXFIS, sendo assim, os tributos são atualizados por item. Ou seja, cada item terá um tributo ou n tributos.

Novos tributos

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

Estrutura JSON novos tributos

Bloco de código
languagejs
themeMidnight
titleExemplo estrutura Json Novos Tributos
    numero_item
		|_id_tributo
			|_
Bloco de código
languagejs
themeMidnight
titleExemplo estrutura Json Novos Tributos
    numero_item
		|_id_tributo
			|_base_valor
		 	|_base_quantidade
        	|_base_um
        	|_aliquota
        	|_valor
        	|_esc_CST
        	|_esc_CCT
        	|_esc_vl_tributado
        	|_esc_vl_isento
        	|_esc_vl_outros
        	|_esc_vl_diferido
        	|_esc_pc_diferido
        	|_esc_pc_reducao_base
        	|_esc_base_original
        	|_esc_pc_reducao_aliq
        	|_esc_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,
        "esc_CST": "000",
        "esc_CCT": "003",
        "esc_vl_tributado": 6.55,
        "esc_vl_isento": 0.00,
        "esc_vl_outros": 0.00,
        "esc_vl_diferido": 0.00,
        "esc_pc_diferido": 0,
        "esc_pc_reducao_base": 0,
        "esc_base_original": 0,
        "esc_pc_reducao_aliq": 0,
        "esc_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çãoTypeObrigatório?
base_valor

Valor da base do imposto

number

Sim

base_quantidadeValor da base quando é operação com quantidadenumberNão*
base_umUnidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade)characterNão*
aliquotaAlíquota do tributonumberSim
valorValor do impostonumberSim

Propriedades de escrituração (CJ3)

PropriedadeDescriçãoTypeObrigatório?
esc_CSTClassificação fiscalcharacterNão
esc_CCTCCT IBS/CBScharacterNão
esc_vl_tributadoValor tributadonumberSim
esc_vl_isentoValor isentonumberSim
esc_vl_outrosValor outrosnumberSim

esc_vl_diferido

Valor diferidonumberNão

esc_pc_diferido

Percentual do diferimentonumberNão

esc_pc_reducao_base

Percentual da reduçãonumberNão

esc_base_original

Base originalnumberNão

esc_pc_reducao_aliq

Percentual de redução de alíquotanumberNão

esc_aliquota_original

Alíquota originalnumber

...

Não

...

titleAtenção

...

Base quantidade

* Em casos onde é necessário enviar o valor da base por quantidade é obrigatório o envio de todas as propriedades do tributo, sendo necessário também o preenchimento da propriedade base_um.

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çãoTypeObrigatório?
base_valor

Valor da base do imposto

number

Sim

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

Propriedades de escrituração (CJ3)

...

tab_CST

...

vl_diferido

...

pc_diferido

...

pc_reducao_base

...

base_original

...

pc_reducao_aliq

...

aliquota_original

...

Sim

mva

Índice de cálculo MVAnumberNão

aux_mva

Índice de cálculo auxiliar do MVAnumberNão

pauta

PautanumberNão

vl_majorado

Percentual de MajoraçãonumberNão

aux_majoracao

Indice auxiliar do percentual de majorçãonumberNão

vl_majoracao

Valor MajoraçãonumberNão

pc_majorcao

Alíquota MajoraçãonumberNão

aliquota_tribut

Alíquota do Tributo por regra de NCMnumberNão

ded_dep

Dedução por dependentesnumberNão
Base quantidade

* Em casos onde é necessário enviar o valor da base por quantidade é obrigatório o envio de todas as propriedades do tributo, sendo necessário também o preenchimento da propriedade base_um, exemplo:

Bloco de código

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 legadocom base_valor, base_quantidade e base um
    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 operando 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.


Composição JSON
Bloco de código
languagejs
themeMidnight
 {
    "1": {
      "000021": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,            
		}
    }
}

Propriedades de escrituração (CJ3)

PropriedadeDescriçãotypeObrigatório?

esc_tab_CST

Tabela CSTcharacterNão
esc_CSTCSTcharacterNão
esc_vl_tributadoValor tributadonumberSim
esc_vl_isentoValor isentonumberSim
esc_vl_outrosValor outrosnumberSim

esc_vl_diferido

Valor diferidonumberNão

esc_pc_diferido

Percentual do diferimentonumberNão

esc_pc_reducao_base

Percentual da reduçãonumberNão

esc_base_original

Base originalnumberNão

esc_pc_reducao_aliq

Percentual de redução de alíquotanumberNão

esc_aliquota_original

Alíquota originalnumberNão

Escrituração

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
 		 	|_mva
			|_aux_mva
			|_pauta
			|_vl_majorado
			|_aux_majoracao
			|_vl_majoracao
			|_pc_majorcao
			|_aliquota_tribut
			|_ded_dep 
            |_esc_tab_CST
        	|_esc_CST
        	|_esc_vl_tributado
        	|_esc_vl_isento
        	|_esc_vl_outros
        	|_esc_vl_diferido
        	|_esc_pc_diferido
        	|_esc_pc_reducao_base
        	|_esc_base_original
        	|_esc_pc_reducao_aliq
        	|_esc_aliquota_original
Composição JSON
Bloco de código
languagejs
themeMidnight
titleExemplo
 {
    "1": {
      "000021": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,
		"mva": 0,
		"aux_mva": 0,
		"pauta" : 0,
		"vl_majorado": 0,
		"aux_majoracao": 0,
		"vl_majoracao": 0,
		"pc_majorcao": 0,
		"aliquota_tribut": 0,
		"ded_dep": 0,
        "esc_tab_CST": "000001",
        "esc_CST": "001",
        "esc_vl_tributado": 6.55,
        "esc_vl_isento": 0.00,
        "esc_vl_outros": 0.00,
        "esc_vl_diferido": 0.00,
        "esc_pc_diferido": 0,
        "esc_pc_reducao_base": 0,
        "esc_base_original": 0,
        "esc_pc_reducao_aliq": 0,
        "esc_aliquota_original": 0.00
      	}
   	}
} 

05. REGRAS OPERANDOS DE INTEGRAÇAO

...

Para que a integração funcione é necessário que o operando 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.


06. DOCUMENTOS RELACIONADOS