CONTEÚDO


01. VISÃO GERAL

Esta atualização será disponibilizada na Expedição contínua de DEZEMBRO/2025 e o pacote poderá ser acessado através dos links disponibilizados na documentação Pacotes de Atualização - Fiscal.

Informações sobre a Expedição contínua acessar: http://tdn.totvs.com/x/H4uCEw.

Informações sobre o compatibilizador UPDDISTR acessar: Atualizador de dicionário e base de dados - UPDDISTR.

Esta documentação tem o objetivo de demonstrar a Função TaxOpJson, encapsulando a classe TaxOperandIntegrator, que recepciona tributos já calculados por outras rotinas, que não o motor de calculo do Protheus, Matxfis.

A Função TaxOpJson foi desenvolvida facilitar a implementação da classe TaxOperandIntegrator em rotinas que permitam a utilização de ExecAuto. Rotinas essas que fazem a recepção de dados de itens.

A função TaxOpJson encapsula a classe TaxOperandIntegrator, sendo assim, segue todos os princípios da classe para o funcionamento correto, para mais informações consulte a documentação da classe aqui.

02. COMO USAR

A Function recepciona um json, em um array multidimensional com a propriedade TRIBUTOS:

User Function teste() 
    Local cIdTrib1   := "000060"
    Local cIdTrib2   := "000021"
    Local jId        := jsonObject():New()
    Local jPropri 	 := jsonObject():New()
    Local aItens     := {}
    Local aLinha     := {}
    Local lRet       := .F.
                
    //--Montagem do JSON de tributos
    jTributo["base_valor"]        := 1000
    jTributo["base_quantidade"]   := 0
    jTributo["base_um"]           := ""
    jTributo["aliquota"]          := 10
    jTributo["valor"]             := 500

    jTributo["CST"]               := "000"
    jTributo["CCT"]               := "003"
    jTributo["vl_tributado"]      := 6.55
    jTributo["vl_isento"]         := 0.00
    jTributo["vl_outros"]         := 0.00
    jTributo["vl_diferido"]       := 0.00
    jTributo["pc_diferido"]       := 0
    jTributo["pc_reducao_base"]   := 0
    jTributo["base_original"]     := 0
    jTributo["pc_reducao_aliq"]   := 0
    jTributo["aliquota_original"] := 0.00
    
    jIdTrib[cIdTrib1] := jTributo
    
    FreeObj(jTributo)
    
    jTributo := JsonObject():New()

    jTributo["base_valor"]        := 20000
    jTributo["base_quantidade"]   := 0
    jTributo["base_um"]           := ""
    jTributo["aliquota"]          := 18
    jTributo["valor"]             := 500

    jIdTrib[cIdTrib2] := jTributo

    aadd(aLinha, {'TRIBUTOS', jIdTrib}) //--Adiciona a propriedade TRIBUTOS e o JSON com os IDS dos tributos
    aadd(aItens, aLinha)

    lRet := TaxOpJson(aItens) //-- Passa o array bidimensional para a função

return

No exemplo demonstrado acima serve apenas para entendimento da estrutura que precisa ser enviada para a função. 

PARAMETROS

Ordem ParâmetroTipoDescrição
01ArrayItensArrayArray bidimensional com a propriedade TRIBUTOS e o Json contendo os ID's e as propriedades obrigatórias dos tributos cadastrados no Configurador de Tributos, com Operando de Integração.

RETORNO

A Função retorna .T. para informar que houve a recepção pela TaxOperandIntegrator, e um .F. para caso haja alguma problema, mas o status de detalhado do que ocorreu no processamento dos dados dos tributos será apresentado via Log.

      MENSAGENS DE LOG

Todas as respostas sobre o processamento dos dados dos tributos serão apresentados via Log, sendo:

WARN - Mensagens de erros de estrutura do JSON, propriedades incorretas na estrutura, propriedades obrigatórias faltantes, falta de Operando de Integração no cadastro do tributo, tributo não cadastrado no Configurador de Tributos, ou utilização fora do contexto da Matxfis.

INFO - Mensagem de sucesso de recepção dos tributos.

EXEMPLO DE IMPLEMENTAÇÃO PARA ROTINAS QUE POSSUEM EXECAUTO

Abaixo é apresentado um exemplo de implementação na rotina MATA910 para possibilitar que o ExecAuto do MATA910 recepcione os tributos já calculados por outras rotinas.

No caso, o trecho apresentado esta na Função a910NFiscal:

...
 		If !MsGetDAuto(aAutoItens,"A910LinOk",{|| A910TudOk()},aAutoCab,aRotina[nOpcx][4])
			nOpc := 0
		ElseIf fisFindFunc("TaxOpJson")
			//Avalia se Trata tributos com Operando de Integração no Configurador de Tributos através da classe TaxOperandIntegrator
	   ---> TaxOpJson(aAutoItens)
		EndIf
...

Note que a Função TaxOpJson recebe o array aAutoItens, sem a necessidade de tratamentos prévios, pois no próprio aAutoItens está contido a propriedade TRIBUTOS e o JSON com os IDS dos tributos contendo as propriedades obrigatórias, pode-se consultar também a montagem do aAutoItens na própria documentação do ExecAuto do Mata910. 

03. DOCUMENTOS RELACIONADOS