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.
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.
Método construtor da classe.
Exemplo de utilização
using totvs.protheus.backoffice.fiscal.taxoperandintegrator
Function Exemplo()
Local oIntegrador as Json
oIntegrador := TaxOperandIntegrator():New()
Return |
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.
O método ProcessItemTaxJson retorna uma string estruturada como JSON com o feedback do processamento |
Exemplo de utilização
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, ;
"CST": "00" ;
} ;
} }
// Processa os tributos
cRetorno := oIntegrador:ProcessItemTaxJson(jDadosTributo)
Return |
Para o funcionamento correto da classe, é necessário que o JSON contenha a estrutura pré-determinada:
Os novos tributos (tributos da reforma), obrigatoriamente precisam conter a seguinte estrutura:
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 |
{
"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
}
}
}
|
Caso a estrutura não seja respeitada o método retornará um warning e o processamento será interrompido |
| Propriedade | Descrição |
|---|---|
| base_valor | Valor da base do imposto |
| base_quantidade | Valor da base quando é operação com quantidade |
| base_um | Unidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade) |
| aliquota | Alíquota do tributo |
| valor | Valor do imposto |
| Propriedade | Descrição |
|---|---|
| CST | Classificação fiscal |
| CCT | CCT IBS/CBS |
| vl_tributado | Valor tributado |
| vl_isento | Valor isento |
| vl_outros | Valor outros |
vl_diferido | Valor diferido |
pc_diferido | Percentual do diferimento |
pc_reducao_base | Percentual da redução |
base_original | Base original |
pc_reducao_aliq | Percentual de redução de alíquota |
aliquota_original | Alíquota original |
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. |
Para o funcionamento correto, os tributos legados (tributos correntes atualmente, antes da reforma) precisam ter pelo menos a seguinte estrutura:
numero_item |_id_tributo |_base_valor |_aliquota |_valor |
{
"1": {
"000021": {
"base_valor": 10000,
"aliquota": 10,
"valor": 500,
}
}
} |
| Propriedade | Descrição |
|---|---|
| base_valor | Valor da base do imposto |
| base_quantidade | Valor da base quando é operação com quantidade |
| base_um | Unidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade) |
| aliquota | Alíquota do tributo |
| valor | Valor do imposto |
| Propriedade | Descrição |
|---|---|
tab_CST | Tabela CST |
| CST | CST |
| vl_tributado | Valor tributado |
| vl_isento | Valor isento |
| vl_outros | Valor outros |
vl_diferido | Valor diferido |
pc_diferido | Percentual do diferimento |
pc_reducao_base | Percentual da redução |
base_original | Base original |
pc_reducao_aliq | Percentual de redução de alíquota |
aliquota_original | Alíquota original |
Em casos onde é necessário enviar a escrituração é obrigatório que todas as propriedades de escrituração estejam no JSON:
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 |
{
"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
}
}
} |
Coloque o link das tabelas relacionadas