Árvore de páginas

Versões comparadas

Chave

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

Índice


01. VISÃO GERAL

A classe TCIProcessing (Tax Configurator Integration Processing) foi desenvolvida para viabilizar o acesso aos dados em processamento do Configurador de Tributos (FISA170) de uma forma dinâmica e intuitiva, desprendendo o fluxo dos dados de condições impostas pela tabela SF4 (TES). 

Este documento tem o objetivo de demonstrar

...

o funcionamento da classe TCIProcessing (Tax Configurator Integration Processing) e seus os métodos.

02. COMO USAR

...

A Classe TCIProcessing possibilita obter os dados do Configurador de Tributos (FISA170)

...

que estão em processamento, ou seja, em tempo de execução, dados que estão sendo calculados pela MATXFIS e não foram persistidos em banco de dados. Sendo assim, para o funcionamento correto é imprescindível que a classe seja consumida após a inicialização da MATXFIS e antes do seu encerramento.

03. MÉTODOS

New()

Método construtor da classe TCIProcessing.

Exemplo de utilização

Bloco de código
languagejs
themeMidnight
titleExemplo método New()
using totvs.protheus.backoffice.fiscal.tciclass

Function Exemplo()
	Local oDados as Json
 	oDados := TCIProcessing():New()
Return

setDataItems()

O método setDataItems() serve para acrescentar ao processamento dos dados retornados pelo método GetDataItems() detalhes das configurações realizadas pelo usuário no Configurador de Tributos (FISA170). As configurações que podem ser obtidas são  "regras_base", "regras_aliquiota", "regras_escrituracao" e "detalhes_livro".O uso correto deste método é antes do consumo do método GetDataItems().

Informações
titleInformação

O uso do método setDataItems se faz necessário apenas quando há a necessidade obter dados de cadastros no Configurador de Tributos (FISA170), não sendo obrigatório para a obtenção dos tributos dos itens.

Exemplo de utilização setDataItems()

Bloco de código
languageerl

Atibutos

Os atributos que precisam estar contidos no Json:

itens

Neste atributo deverá ser informado o número do item que deseja obter os dados, podendo ser preenchido das seguintes formas:

itens: "ALL": Desta forma haverá o retorno de todos os itens envolvidos na operação;

itens: 1: Pode-se passar o número do item específico (tipo de dado número), para o obter os dados apenas de um item;

itens: {1, 5, 10}: Pode-se passar um array contendo os números dos itens que deseja obter os dados.

Exemplos de resquisição:
Bloco de código
languagejs
themeMidnight
titleRequisição Itens
--Exemplo itens: "all"
{
    "itens": "all",
}


--Exemplo itens: 1
{
    "itens": 1,
}

--Exemplo itens:{}
{
    "itens": [
        1,
        5,
        10
    ]
}

dados_cabecalho

Com este atributo irá obter os dados do cabeçalho da operação, preenchendo o valor como "sim":

Exemplo de requisição:
Bloco de código
languagejs
themeMidnight
titleExemplo requisição dados_cabecalho
{
            "itens": "all",
            "dados_cabecalho": "sim"
}
Descrição dos atributos contidos em dados_cabecalho

...

de utilização setDataItems()
using totvs.protheus.backoffice.fiscal.tciclass

Function Exemplo()
	Local oDados as json
	Local cRetorno
	
	oDados := TCIProcessing():New()
	oDados:setDataItems({"regras_base", "regras_aliquota", "regras_escrituracao", "detalhe_livro"})
	
	cRetorno := oDados:GetDadaItems()

Return cRetorno

GetDataItems()

O método GetDataItems() retornará os dados dos tributos por item,  em estrutura Json com o tipo de dado caractere.

Exemplo de utilização GetDataItems()

Bloco de código
languagejs
themeMidnight
titleExemplo de utilização GetDataItems()
using totvs.protheus.backoffice.fiscal.tciclass
Function Exemplo()
	Local oDados as json
	Local cRetorno := ""
	
	oDados := TCIProcessing():New()
	cRetorno := oDados:GetDataItems()

Return cRetorno 

Exemplo de retorno GetDataItems()

Bloco de código
languagejs
themeMidnight
titleExemplo de retorno GetDataItems()
{
  "dados_itens": {
    "1": {
      "TRIB01": {
Exemplo do retorno da requisição do atributo dados_cabecalho
Bloco de código
languagejs
themeMidnight
titleExemplo de retorno dados_cabecalho
{
    dados_cabecalho: 
        {
            "cod_regra": "TRIB01",
        "desc_regra": "REGRA ICMS CST 00 TRIBUTADO",
        "base_trib": 5000100,
        "aliq_trib": 18,
        "val_trib": 35018,
            "regr_finfinanc": "",
            "id_cadastro": "1563de01a1c7cdbc-0c33d6a3-87af3f8f-5437b00c-01401e2f4532f95c2b6b8202",
            "codconfig_urfarred": ""true,
            "percident_urftrib": 0"000021",
	 	"desc_trib": "ICMS - Imposto sobre Circulação de Mercadorias e Serviços"
        "valformula_depnpi": 0"BAS:TRIB01 ALQ:TRIB01 *",
        "id_npi": "0e5b3e42-9a2b-5cf1-0f4a-0a17630aa57b",
        "cod_regrcabec_guianpi": "VAL:TRIB01",
            "valmargem_majoradomva": 0,
         "mva": false,
        "idmva_tribaux": 0,
        "000021"val_pauta": 0,
        }
}

dados_itens

Com este atributo irá obter os dados dos tributos genéricos por item, preenchendo o valor como "sim". Caso necessário, há a possibilidade de obter os dados das regras de base ("regras_base"), regras de alíquota ("regras_aliquota"), regras de escrituração ("regras_escrituracao") e detalhes do livro ("detalhe_livro"), complementando a informação do retorno padrão substituindo o "sim" por um array contendo os atributos que desejar:

Exemplo de requisição dados_itens: "sim"
Bloco de código
languagejs
themeMidnight
titleExemplo requisição dados_itens
{"pauta": false,
        "perc_majora": 0,
        "majorado": false,
        "ind_aux_majora": 0,
        "cod_trib_majora": "",
        "ded_dependentes": 0,
        "cod_regr_tab_progre": "",
            "itens"cod_regr_ded_depen": "all",
            "dadosaliq_itensservico": "sim"
}
Descrição dos atributos contidos em dados_itens

...

0,
        "aliq_servico_lei_comp": 0,
        "formula_calc_isento": "BAS:TRIB01",
        "formula_calc_outros": "BAS:TRIB01",
        "cod_regra_guia": "",
        "val_zero": false,
        "val_maximo": 0,
        "val_minimo": 0,
        "operador_maximo": "",
        "operador_minimo": ""
      }
	}
}

Descrição das propriedades contidas em dados_itens

PropriedadeTipoDescrição
cod_regracaractereCódigo da regra fiscal
desc_regracaractereDescrição da regra
base_tribnúmeroBase de cálculo do tributo
aliq_tribnúmeroAlíquota  do tributo
val_tribnúmeroValor do tributo
retencaobooleanIndica se o tributo tem retenção
regr_financcaractereCódigo da regra financeira
id_cadastrocaractereId Cadastro Tributo
conf_arredbooleanConfig. Arredondamento
ident_tribcaractereIdentificador do Tributo legado relacionado com tributo criado
desc_tribcaractereDescrição do Tributo legado relacionado com o tributo criado
desc_tribcaractereDescrição do tributo 
formula_npicaractereFórmula convertida em NPI
id_npicaractereId cabeçalho
cod_cabec_npicaractereCódigo do Cabeçalho
mvanúmeroMargem de Valor Agregado
mva_auxnúmeroíndice auxiliar MVA
val_pautanúmeroValor da pauta
perc_majoranúmeroPercentual majoração
ind_aux_majoranúmeroÍndice Auxiliar Majoração
cod_trib_majoracaractereCódigo do que majora o tributo atual
ded_dependentesnúmeroDedução por dependentes
cod_regr_tab_progrecaractereCódigo da regra de tabela progressiva
aliq_serviconúmeroAliquota padrão código lei complementar
cod_regr_ded_depencaractereCódigo da regra dedução dependentes
aliq_servico_lei_compnúmeroAlíquota de serviço da lei complemetar
formula_calc_isentocaractereFórmula de cálculo Isento
formula_calc_outroscaractereFórmula de cálculo outros
formula_calculocaractereFórmula do calculo que compõe o valor do Tributo
cod_regra_guiacaractereCódigo da regra de Guia
val_zerobooleanValor Zero na Base ou Alíquota
val_maximonúmeroValor máximo definido para o tributo
val_minimonúmeroValor mínimo definido para o tributo
operador_maximocaractereOperador de limite de valor máximo do tributo
operador_minimocaractereOperador de limite de valor mínimo do tributo

Exemplo de retorno GetDataItems() com setDataItems() contendo "regras_base", "regras_aliquota", "regras_escrituracao", "detalhe_livro".

Bloco de código
languagejs
themeMidnight
titleExemplo de retorno GetDataItems com setDataItems
{
  "dados_itens": {
    "1": {
      "TRIB01": {
Exemplo do retorno da requisição do atributo dados_itens
Bloco de código
languagejs
themeMidnight
titleExemplo retorno da requisição dados_itens
{
    "dados_itens": {
        "cod_regra": "TRIB01",
        "desc_regra": "REGRA ICMS CST 40 ISENTO",
        "base_trib": 100,
        "aliq_trib": 7,
        "val_trib": 7,
        "regr_financ": "",
        "id_cadastro": "1563de01-0c33-87af-5437-01401e2f4532",
        "conf_arred": true,
        "ident_trib": "000021",
        "formula_npi": "BAS:TRIB01 ALQ:TRIB01 *",
        "id_npi": "96b65263-8caf-bbef-dc01-758e1d5701dd",
        "cod_cabec_npi": "VAL:TRIB01",
        "mva": 0,
        "mva_aux": 0,
        "valcod_pautaregra": 0"TRIB01",
        "percdesc_majoraregra": 0"REGRA ICMS CST 00 TRIBUTADO",
        "indbase_aux_majoratrib": 0100,
        "codaliq_trib_majora": ""18,
        "dedval_dependentestrib": 018,
        "cod_regr_tab_progrefinanc": "",
        "cod_regr_ded_depenid_cadastro": "b2355baf-baef-8f3c-877a-b0b81890f4f6",
        "aliqconfig_servicoarred": 0true,
        "aliq_servico_lei_compident_trib": 0"000021",
        "formula_calc_isentonpi": "BAS:TRIB01 ALQ:TRIB01 *",
        "formulaid_calc_outrosnpi": "BAS:TRIB01a720bf23-c24d-3ed8-4822-e78e7d907d8b",
        "cod_regracabec_guianpi": "VAL:TRIB01",
        "valmargem_zeromva": false0,
        "val_maximomva": 0false,
        "valmva_minimoaux": 0,
        "operadorval_maximopauta": 0,
        "pauta": false,
        "operadorperc_minimomajora": 0,
        "majorado": false,
    }
}

Como mencionado, há a possibilidade da obtenção dos dados dos cadastros das regras utilizadas para a composição do tributo, utilizando os atributos "regras_base" para obter os dados das regras de base, "regras_aliquota" para obter os dados das regras de alíquota, "regras_escrituracao" para obter os dados das regras de escrituração e "detalhe_livro" para obter os detalhes do livro. Os dados serão retornados complementando a requisição de "dados_itens" como "sim".

Exemplo de requisição dados_itens:
Bloco de código
languagejs
themeMidnight
titleExemplo requisição dados_itens com detalhes
{
    "itens": "all",
    "dados_itens": 
        [
    "ind_aux_majora": 0,
        "cod_trib_majora": "",
        "ded_dependentes": 0,
        "cod_regr_tab_progre": "",
        "cod_regr_ded_depen": "",
        "aliq_servico": 0,
            "regras_base",
 "aliq_servico_lei_comp": 0,
           "regras_aliquotaformula_calc_isento": "BAS:TRIB01",
        "formula_calc_outros": "BAS:TRIB01",
        "detalhe_livrocod_regra_guia": "",
            "regrasval_escrituracaozero"
        ]
}
Descrição dos atributos contidos em regras_base

...

Para mais informações sobre o conteúdo dos campos verificar a documentação:

CFGTRIB - Configurador de Tributos - 12.1.22.10#CadastrodeRegradeBasedeC%C3%A1lculo

Descrição dos atributos contidos em regras_aliquota

...

Para mais informações sobre o conteúdo dos campos verificar a documentação:

CFGTRIB - Configurador de Tributos - 12.1.22.10#CadastrodeRegradeAl%C3%ADquota

Descrição dos atributos contidos em detalhe_livro

...

: false,
        "val_maximo": 0,
        "val_minimo": 0,
        "operador_maximo": "",
        "operador_minimo": "",
        "regras_base": {
          "cod_regr_base": "BAS002",
          "origem_valor": "01",
          "acao_desconto": "2",
          "acao_frete": "3",
          "acao_seguro": "3",
          "acao_despesa": "3",
          "acao_icms_deson": "1",
          "acao_icms_ret": "1",
          "perc_reducao": 0,
          "tipo_reducao": "",
          "um_base": "",
          "id_cadastro": "71380195-0f8e-14e1-3620-7c53beb48b03",
          "formula_base": "B:BAS002",
          "id_formula": "6cf6c049-b177-0623-6b76-afc08e78c922",
          "cod_formula": "BAS:TRIB01"
        },
        "regras_aliquota": {
          "cod_regr_aliquota": "ALQ001",
          "origem_aliquota": "04",
          "tipo_aliquota": "1",
          "aliquota": 18,
          "cod_urf": "",
          "perc_urf": 0,
          "valor_urf": 0,
          "id_cadastro": "A:ALQ001",
          "id_aliquota": "47f56799-c5e1-c560-7a06-f228d9edbc5c",
          "cod_formula": "ALQ:TRIB01"
        },
        "detalhe_livro": {
          "cst": "00",
          "valor_tributado": 18,
          "valor_isento": 0,
          "valor_outros": 0,
          "valor_nao_tribut": 0,
          "valor_diferido": 0,
          "valor_majorado": 0,
          "perc_majorado": 0,
          "perc_diferido": 0,
          "perc_reducao": 0,
          "valor_pauta": 0,
          "mva": 0,
          "ind_aux_mva": 0,
          "Ind_aux_majora": 0,
          "cod_tab_cst": "000001",
          "val_base_original": 0
        },
        "regras_escrituracao": {
          "id_cadastro": "b20ddabf-ba24-358e-8168-2dc0563721a8",
          "incidencia": "1",
          "acao_tot_nf": "1",
          "perc_diferimento": 0,
          "cst": "00",
          "cod_tab_cst": "000001",
          "inc_parc_redu": ""
        }
      },
	}
}

Descrição das propriedades contidas em regras_base

PropriedadeTipoDescrição
cod_regr_basecaractereCódigo identificador da regra de base de cálculo
origem_valorcaractereOpção que indica a origem do valor que definirá a base de cálculo
acao_descontocaractereOpção que definirá se o valor do desconto deverá ter alguma ação sobre o valor de origem
acao_fretecaractereOpção que definirá se o valor do frete deverá ter alguma ação sobre o valor de origem
acao_segurocaractereOpção que definirá se o valor do seguro deverá ter alguma ação sobre o valor de origem
acao_despesacaractereOpção que definirá se o valor de despesas acessórias deverá ter alguma ação sobre o valor de origem
acao_icms_desoncaractereOpção que definirá se o valor do icms desonerado deverá ter alguma ação sobre o valor de origem
acao_icms_retcaractereOpção que definirá se o valor do icms retido deverá ter alguma ação sobre o valor de origem
perc_reducaonúmeroPercentual de redução de base de cálculo
tipo_reducaocaractereOpção que definirá o momento em que a redução ocorrerá
um_basecaractereUnidade de medida - Base de cálculo por quantidade
id_cadastrocaractereId identificação do cadastro
formula_basecaractereFórmula base
id_formulacaractereID da fórmula
cod_formulacaractereCódigo da fórmula

Para mais informações sobre o conteúdo dos campos verificar a documentação:

CFGTRIB - Configurador de Tributos - 12.1.22.10#CadastrodeRegradeBasedeC%C3%A1lculo

Descrição das propriedades contidas em regras_aliquota

PropriedadeTipoDescrição
cod_regr_aliquotacaractereCódigo identificador da regra de alíquota
origem_aliquotacaractereOpção que indica a origem da alíquota
tipo_aliquotacaractereOpção que defini  o tipo de alíquota informada manualmente
aliquotanúmeroAlíquota informada manualmente
cod_urfcaractereCódigo da URF
perc_urfnúmeroPercentual URF
valor_urfnúmeroValor da URF no período
id_cadastrocaractereId do cadastro Alíquota
formula_aliquotacaractereFórmula alíquota
id_aliquotacaractereID da fórmula
cod_formulacaractereCódigo da fórmula

Para mais informações sobre o conteúdo dos campos verificar a documentação:

CFGTRIB - Configurador de Tributos - 12.1.22.10#CadastrodeRegradeAl%C3%ADquota

Descrição das propriedades contidas em detalhes_livro

PropriedadeTipoDescrição
cstcaractereClassificação fiscal
valor_tributadonúmeroValor tributado
valor_isentonúmeroValor isento
valor_outrosnúmeroValor outros
valor_nao_tributnúmeroValor não tributado
valor_diferidonúmeroValor diferido
valor_majoradonúmeroValor majorado
perc_majoradonúmeroPercentual da Majoração
perc_diferidonúmeroPercentual do diferimento
perc_reducaonúmeroPercentual da redução
valor_pautanúmeroValor pauta
mvanúmeroMargem de valor agregado
ind_aux_mvanúmeroÍndice auxiliar de MVA
ind_aux_majoranúmeroÍndice auxiliar de majoração
cod_tab_cstcaractereTabela CST
val_base_originalnúmeroValor base original

Descrição das propriedades contidas em regras_escrituracao

AtributoTipoDescrição
id_cadastrocaractereId Cadastro
incidenciacaractereOpção de Incidência da regra de tributação
acao_tot_nfcaractereOpção para determinar a soma no total da nota fiscal
perc_diferimentonúmeroPercentual do diferimento
cstcaractereClassificação fiscal
cod_tab_cstcaractereTabela CST
inc_parc_reducaractereOpção que define a incidência da parcela reduzida de base de cálculo

Para mais informações sobre o conteúdo dos campos verificar a documentação:

CFGTRIB - Configurador de Tributos - 12.1.22.10#CadastrodeRegradeEscritura%C3%A7%C3%A3o

GetHeaderData()

O método GetHeaderData() retorna os dados de cabeçalho da operação em processamento, em estrutura Json com o tipo de dado caractere.

Informações
titleInformação

O método GetHeaderData() não retorna os dados por item, retornará os dados por tributo.

Exemplo de utilização GetHeaderData()

Bloco de código
languagejs
themeMidnight
titleRequisição Itens
using totvs.protheus.backoffice.fiscal.tciclass
Function Exemplo()
	Local oDados as json
	Local cRetorno := ""
	
	oDados := TCIProcessing():New()
	cRetorno := oDados:GetHeaderData()

Return cRetorno

Exemplo de retorno GetHeaderData()

Bloco de código
languagejs
themeMidnight
titleExemplo de retorno GetHeaderData()
{
  "dados_cabecalho": {
    "TRIB01": {
      "cod_regra": "TRIB01",
      "base_trib": 500,
      "val_trib": 90,
      "regr_financ": "",
      "id_cadastro": "f935d6c2-658b-5527-795a-4366cff3686f",
      "cod_urf": "",
      "perc_urf": 0,
      "val_dep": 0,
      "cod_regr_guia": "",
      "val_majorado": 0,
      "id_trib": "000021"
    }
  }
}

Descrição das propriedades contidas em dados_cabecalho

PropriedadeTipoDescrição
cod_regracaractereCódigo da regra fiscal
base_tribnúmeroValor da base do tributo
val_tribnúmeroValor do tributo
regr_financcaractereCódigo da regra financeira
id_cadastrocaractereId Cadastro tributo
cod_urfcaractereCódigo da URF
perc_urfnúmeroPercentual da URF
val_depnúmeroValor dependente
cod_regr_guiacaractereCódigo Regra geração de guia
val_majoradonúmeroValor majorado
id_tribcaractereId de Tributos

GetSpreadSheetData()

O método GetSpreadSheetData() retornará os dados da planilha financeira da operação.

Informações
titleInformação

O método GetSpreadSheetData() não retorna os dados por item, retornará os dados por tributo.

Exemplo de utilização GetSpreadSheetData()

Bloco de código
languagejs
themeMidnight
titleExemplo de utilização do método GetSpreadSheetData()
using totvs.protheus.backoffice.fiscal.tciclass
Function Exemplo()
	Local oDados as json
	Local cRetorno := ""
	
	oDados := TCIProcessing():New()
	cRetorno := oDados:GetSpreadSheetData()

Return cRetorno

Exemplo de retorno GetSpreadSheetData()

Bloco de código
languagejs
themeMidnight
titleExemplo de retorno GetSpreadSheetData()
{
  "planilha_financeira": {
    "TRIB01": {
      "codigo": "TRIB01",
      "descricao": "REGRA ICMS CST 00 TRIBUTADO",
      "base": 500,
      "aliquota": 18,
      "valor": 90,
      "nome": "TG"
  }
}

Descrição das propriedades contidas em planilha_financeira

PropriedadeTipoDescrição
codigocaractereCódigo do tributo
descricaocaractereDescrição do tributo
basenúmeroValor base de cálculo tributo
aliquotanúmeroAlíquota do tributo
valornúmeroValor do tributo
nomecaractereNome de referencia
Informações
titleInformação

A requisição da planilha financeira pode trazer os dados de cálculos realizados pelo método legado (operações que levam em consideração os cadastros da TES - SF4) se houver composição da operação considerando "operadores legados", ou a operação envolvendo alguns tributos calculados exclusivamente pela TES (SF4).

GetTaxesSubjectToPayment()

O método GetTaxesSubjectToPayment() retornará os tributos passíveis de recolhimento.

Informações
titleInformação

O retorno do método GetTaxesSubjectToPayment() é realizado por tributo.

Exemplo de utilização GetTaxesSubjectToPayment()

Bloco de código
languagejs
themeMidnight
titleExemplo de utilização do método GetTaxesSubjectToPayment()()
using totvs.protheus.backoffice.fiscal.tciclass
Function Exemplo()
	Local oDados as json
	Local cRetorno := ""
	
	oDados := TCIProcessing():New()
	cRetorno := oDados:GetTaxesSubjectToPayment()

Return cRetorno

Exemplo de retorno GetTaxesSubjectToPayment()

Bloco de código
languagejs
themeMidnight
titleExemplo de retorno GetTaxesSubjectToPayment()
{
  "tributos_passiveis_recolhimento": {
    "TRIB04": {
      "codigo_regra": "RF0002",
      "valor_tributo": 38,
      "numero_titulo": "TG0000001",
      "id_regra_fiscal": "297409ff-bfdf-3581-37f1-8b2de366f7d9",
      "histórico_titulo": "TRIB04 - NF: 000000001 / 004",
      "sigla_tributo": "TRIB04"
    }
  }
}

Descrição das propriedades contidas em tributos_passiveis_recolhimento

PropriedadeTipoDescrição
codigo_regracaractereCódigo da regra financeira
valor_tributonúmeroValor do tributo
numero_titulocaractereNúmero do título a ser gerado
id_regra_fiscalcaractereID da regra fiscal
histórico_titulocaractere

Histórico para gravar no título

sigla_tributocaractereSigla do Tributo

GetTaxesSubjectToWithholding()

O método GetTaxesSubjectToWithholding() retornará os dados de tributos passíveis de retenção, para isso é necessário informar a data da vigência através do método setDateTaxesToWithholding().

Exemplo de utilização GetTaxesSubjectToWithholding()

Bloco de código
languagejs
themeMidnight
titleExemplo de utilização GetTaxesSubjectToWithholding()
using totvs.protheus.backoffice.fiscal.tciclass
Function Exemplo()
	Local oDados as json
 	Local cDate    := "20200101"
	Local cRetorno := ""
	
	oDados := TCIProcessing():New()
 	oDados:setDateTaxesToWithholding(cDate)
	cRetorno := oDados:GetTaxesSujectToWithholding()

Return cRetorno

Exemplo de retorno GetTaxesSubjectToWithholding()

Bloco de código
languagejs
themeMidnight
titleExemplo de retorno GetTaxesSubjectToWithholding()
{
  "tributos_passiveis_retencao": {
    "TRIB03": {
      "sigla_tributo": "TRIB03",
      "base_tributo": 500,
      "valor_tributo": 8.25,
      "codigo_regra": "RF0001",
      "retem_integr_prim_parcela": false,
      "saldo_valor_tributo": 8.25,
      "codigo_base_tributos": 500,
      "id_regra": "663fcfca-7522-6e0f-7d70-7e6d64fe46eb",
      "codigo_urf": "",
      "percentual_urf": 0
    }
  }
}

Descrição das propriedades contidas em tributos_passiveis_retencao

PropriedadeTipoDescrição
sigla_tributocaractereSigla do tributo
base_tributonúmeroValor base de calculo Tributo
valor_tributonúmeroValor do tributo
codigo_regracaractereCodigo da regra financeira
retem_integr_prim_parcelacaractere

Indica se retém integralmente na primeira parcela

saldo_valor_tributonúmero

Saldo restante do tributo

saldo_base_tributosnúmero

Saldo restante da base de cálculo

id_regracaractere

ID da regra Fiscal

codigo_urfcaractere

Código da URF

percentual_urfnúmero

Percentual aplicável ao valor da URF

GetAllData()

O método GetAllData() retornará todas as propriedades disponíveis para o operação, dados_itens, dados_cabecalho, planilha_financeira, tributos_passiveis_retencao e tributos_passiveis_recolhimento.

Exemplo de utilização GetAllData()

Bloco de código
languagejs
themeMidnight
titleExemplo de utilização GetAllData()
using totvs.protheus.backoffice.fiscal.tciclass
Function Exemplo()
	Local oDados as json
 	Local cDate    := "20200101"
	Local cRetorno := ""
	
	oDados := TCIProcessing():New()
 	oDados:setDateTaxesToWithholding(cDate)
	oDados:setDataItens({"regras_base", "regras_aliquiota", "regras_escrituracao", "detalhes_livro"})
	cRetorno := oDados:GetAllData()

Return cRetorno

Exemplo de retorno GetAllData()

Bloco de código
languagejs
themeMidnight
titleExemplo de retorno GetAllData()
{
  "dados_itens": {
    "1": {
      "TRIB01": {
        "cod_regra": "TRIB01
Descrição dos atributos contidos em regras_escrituracao

...

Para mais informações sobre o conteúdo dos campos verificar a documentação:

CFGTRIB - Configurador de Tributos - 12.1.22.10#CadastrodeRegradeEscritura%C3%A7%C3%A3o

Exemplo do retorno da requisição do atributo dados_itens contendo os atributos de regras e detalhe do livro
Bloco de código
languagejs
themeMidnight
titleExemplo de retorno dados_itens com detalhes
{
    "dados_itens": [
        {
            "cod_regra": "TRIB01",
            "desc_regra": "REGRA ICMS CST 40 ISENTO",
            "base_trib": 100,
            "aliq_trib": 7,
            "val_trib": 7,
            "regr_financ": "",
            "id_cadastro": "1563de01-0c33-87af-5437-01401e2f4532",
            "conf_arred": true,
            "ident_trib": "000021",
            "formula_npi": "BAS:TRIB01 ALQ:TRIB01 *",
            "id_npi": "96b65263-8caf-bbef-dc01-758e1d5701dd",
            "cod_cabec_npi": "VAL:TRIB01",
            "mva": 0,
            "mva_aux": 0,
            "val_pauta": 0,
            "perc_majora": 0,
            "ind_aux_majora": 0,
            "cod_trib_majora": "",
            "ded_dependentes": 0,
            "cod_regr_tab_progre": "",
            "cod_regr_ded_depen": "",
            "aliq_servico": 0,
            "aliq_servico_lei_comp": 0,
            "formula_calc_isento": "BAS:TRIB01",
            "formula_calc_outros": "BAS:TRIB01",
            "cod_regra_guia": "",
            "val_zero": false,
            "val_maximo": 0,
            "val_minimo": 0,
            "operador_maximo": "",
            "operadordesc_minimoregra": "",
REGRA ICMS CST 00 TRIBUTADO",
        "regrasbase_basetrib": {100,
                "cod_regr_base"aliq_trib": "BAS001"18,
                "origemval_valortrib": "01"18,
        "regr_financ": "",
        "acaoid_descontocadastro": "1a893b8a4-b3fc-2536-455a-3cd44a5cd47a",
        "config_arred": true,
        "acaoident_fretetrib": "1000021",
        "formula_npi": "BAS:TRIB01 ALQ:TRIB01 *",
        "acaoid_seguronpi": "1",
        92a2f42e-e745-301b-183a-8f7d1af09b94",
        "acaocod_cabec_despesanpi": "1VAL:TRIB01",
        "margem_mva": 0,
        "acao_icms_desonmva": "1"false,
        "mva_aux": 0,
        "acaoval_icms_retpauta": "1"0,
        "pauta": false,
        "perc_reducaomajora": 0,
        "majorado": false,
        "tipo_reducao": "",
        ind_aux_majora": 0,
        "umcod_trib_basemajora": "",
        "ded_dependentes": 0,
        "id_cadastrocod_regr_tab_progre": "5ce3cd32-1d87-2a5c-5ad4-8525ab17ee1e",
        "cod_regr_ded_depen": "",
        "formulaaliq_baseservico": "B:BAS001"0,
        "aliq_servico_lei_comp": 0,
        "idformula_calc_formulaisento": "fcd4411a-b439-9318-7eea-c4dba6299db5BAS:TRIB01",
        "formula_calc_outros": "BAS:TRIB01",
        "cod_regra_formulaguia": "BAS:TRIB01",
            }"val_zero": false,
            "regrasval_aliquotamaximo": {0,
        "val_minimo": 0,
        "codoperador_regr_aliquotamaximo": "ALQ005",
                "origem_aliquota"operador_minimo": "04",
          "regras_base": {
           "tipocod_regr_aliquotabase": "1BAS002",
                "aliquota"origem_valor": 7"01",
                "codacao_urfdesconto": "2",
                "percacao_urffrete": 0"3",
                "valoracao_urfseguro": 0"3",
                "id_cadastro"acao_despesa": "80f93a77-3fdb-ed19-ac8d-b6b4be022372",
      3",
          "formulaacao_icms_aliquotadeson": "A:ALQ0051",
                "id_aliquota"acao_icms_ret": "6c0d2b4e-5166-753e-61ab-918cf3a336d41",
                "cod_formula"perc_reducao": "ALQ:TRIB01"0,
            }"tipo_reducao": "",
            "detalheum_livrobase": {"",
                "cst"id_cadastro": "40"125c2940-17aa-ef29-f68d-b52a78217080",
                "valorformula_tributadobase": 0"B:BAS002",
                "valorid_isentoformula": 100"b83ace11-2f6e-e316-2216-733f412d3f7d",
                "valor_outros"cod_formula": 0,"BAS:TRIB01"
        },
        "valorregras_nao_tributaliquota": 0,{
                "valor_diferido"cod_regr_aliquota": 0"ALQ001",
                "valororigem_majoradoaliquota": 0"04",
                "perctipo_majoradoaliquota": 0"1",
                "perc_diferidoaliquota": 018,
                "perc_reducao"cod_urf": 0"",
                "valorperc_pautaurf": 0,
                "mva"valor_urf": 0,
                "ind_aux_mva"id_cadastro": 0"A:ALQ001",
                "Indid_aux_majoraaliquota": 0"3200fd00-d30c-865a-169d-12c5b611d6a7",
                "cod_tab_cstformula": "000001ALQ:TRIB01",
        },
        "valdetalhe_base_originallivro": 0{
            }"cst": "00",
            "regrasvalor_escrituracaotributado": {18,
                "id_cadastro": "d62db7e9-419f-43a9-cc69-9cafe5805f5b",
      "valor_isento": 0,
          "incidenciavalor_outros": "2"0,
                "acao_tot_nf"valor_nao_tribut": "1"0,
          "valor_diferido": 0,
          "percvalor_diferimentomajorado": 0,
                "cst"perc_majorado": "40"0,
                "codperc_tab_cstdiferido": "000001"0,
                "incperc_parc_redureducao": "2"0,
            }"valor_pauta": 0,
        }
    ]
}

planilha_financeira

Com esta atributo é possível obter os das referencias da planilha de cálculo da operação (planilha financeira). Deverá ser preenchido com um "sim" para obtenção dos dados por tributos.

Exemplo de requisição planilha_financeira:
Bloco de código
languagejs
themeMidnight
titleExemplo de requisição planilha_financeira
{
  "mva": 0,
          "itensind_aux_mva": "all"0,
            "planilhaInd_aux_financeiramajora": 0,
         "sim"
}
Descrição dos atributos contidos em planilha_financeira

...

Exemplo do retorno planilha_financeira
Bloco de código
languagejs
themeMidnight
titleExemplo requisição planilha_financeira
{
    "planilha_financeira": {
 "cod_tab_cst": "000001",
          "val_base_original": 0
        },
        "regras_escrituracao": {
          "id_cadastro": "3ad6ff3e-48e9-5520-9c95-dc495a2db680",
          "incidencia": "1",
          "codigoacao_tot_tributonf": "TRIB011",
          "descricaoperc_tributodiferimento": "REGRA ICMS CST 40 ISENTO",
0,
          "cst": "00",
          "basecod_tab_tributocst": 5000"000001",
          "aliquotainc_parc_tributoredu": 7,""
        "valor_tributo": 350,}
      }
  "nome_ref": "TG"  }
    }
}
Informações
titleInformação

A requisição da planilha financeira pode trazer os dados de cálculos realizados método legado (operações que levam em consideração os cadastros da TES - SF4) se houver composição da operação considerando "operadores legados", ou a operação envolvendo alguns tributos calculados exclusivamente pela TES (SF4).

03. EXEMPLO DE IMPLEMENTAÇÃO

Abaixo é demontrado como pode ser feita a implementação:

Implementação de Json simplificado - Contém a forma de requisição completa. No exemplo está demonstrado como compor o objeto da forma não nativa (ADVPL) e da forma nativa (TL++), ficando a cargo do desenvolvedor escolher a melhor alternativa.

Bloco de código
languagejs
themeMidnight
titleExemplo implementação 1
Function MontaObjetoRequisicao()

  Local oRequisicao as json
  Local jRequisicao as json

  //Exemplo composição Json não nativo
  oRequisicao                                      := JsonObject():New()
  oRequisicao["itens"]                             := "all"
  oRequisicao["dados_cabecalho"]                   := "sim"
  oRequisicao["dados_itens"]              },
  "dados_cabecalho": {
    "TG_001": {
      "cod_regra": "TG_001",
      "base_trib": 500,
      "val_trib": 50,
      "regr_financ": "",
      "id_cadastro": "ff583f18-d972-1646-4985-f2b19e03e586",
      "cod_urf": "",
      "perc_urf": 0,
      "val_dep": 0,
      "cod_regr_guia": "",
      "val_majorado": 0,
      "id_trib": ""
  },
  "planilha_financeira": {
    "TRIB01": {
      "codigo": "TRIB01",
      "descricao": "REGRA ICMS CST 00 TRIBUTADO",
      "base": 500,
      "aliquota": 18,
      "valor": 90,
      "nome": "TG"
    }
  },
  "tributos_passiveis_retencao": {
    "TRIB03": {
         "sigla_tributo":= "simTRIB03",
  oRequisicao["planilha_financeira"]      "base_tributo": 500,
        "valor_tributo":= "sim"

  //Exemplo composição Json nativo (TL++)
  jRequisicao := {"itens 8.25,
        "codigo_regra": "ALLRF0001",
        "dados_cabecalhoretem_integr_prim_parcela": "sim", "dados_itens": "sim", "planilha_financeira": "sim"}


  Conout(oRequisicao:ToJson())
  Conout(jRequisicao:ToJson())

  FreeObj(oRequisicao)
  FreeObj(jRequisicao)

Return niluisicao)

Return nil

O Json ficará estruturado da seguinte forma:

Bloco de código
languagejs
themeMidnight
titleExemplo Json estruturado 1
{
    "itens": "ALLfalse,
        "saldo_valor_tributo": 8.25,
        "codigo_base_tributos": 500,
        "id_regra": "663fcfca-7522-6e0f-7d70-7e6d64fe46eb",
        "codigo_urf": "",
        "dadospercentual_cabecalhourf": "sim" 0
      }
  },
    "dadostributos_passiveis_itensrecolhimento": "sim",{
    "planilha_financeira": "sim"
}

Implementação de Json especificando detalhes - Contém a forma de requisição especificando referencias. No exemplo está demonstrado como compor o objeto da forma não nativa (ADVPL) e da forma nativa (TL++), ficando a cargo do desenvolvedor escolher a melhor alternativa.

Bloco de código
languagejs
themeMidnight
titleExemplo implementação
Function MontaObjetoRequisicaoEspecifico()
  Local oRequisicao "TRIB04": {
      "codigo_regra": "RF0002",
      as Json"valor_tributo": 38,
  Local jComponente   "numero_titulo": "TG0000001",
  as json

//Exemplo composição Json não nativo
  oRequisicao        "id_regra_fiscal": "297409ff-bfdf-3581-37f1-8b2de366f7d9",
      "histórico_titulo": "TRIB04 - NF: 000000001 / 004",
      "sigla_tributo": "TRIB04"
      := JsonObject():New()
  oRequisicao["itens"]            }
  }
}

setItems()

O método setItems() permite especificar o número do item ou itens que desejar obter os dados em exclusivo através do método getDataItems() ou GetAllData().

Exemplo de utilização setItems()

Bloco de código
languagejs
themeMidnight
titleExemplo de utilização setItems()
using totvs.protheus.backoffice.fiscal.tciclass
Function Exemplo()
	Local oDados as json
	Local aItems := {1, 53, 105}
  oRequisicao["dados_cabecalho"]	Local cRetorno := "sim"
	
	oDados  oRequisicao["dados_itens"]      := := TCIProcessing():New()
 	oDados:setItems(aItems) 
	oDados:setDataItems({"regras_base", "detalheregras_livroaliquiota", "detalheregras_livroescrituracao" , "regrasdetalhes_escrituracaolivro"})
	cRetorno := oDados:GetDataItems()

Return cRetorno

destroy()

O método destroy() encerra toda a operação da classe. 

Exemplo de utilização destroy()

Bloco de código
languagejs
themeMidnight
titleExemplo de utilização método destroy()
Function Exemplo()
	Local oDados as json
	Local aItems :=
  oRequisicao["planilha_financeira"]   := "sim"

//Exemplo composição Json nativo (TL++)
  jComponente := {"itens": {1, 53, 10}, "dados_planilha": "sim", "dados_itens: 5}
 	Local cRetorno := ""
	
	oDados := TCIProcessing():New()
 	oDados:setItems(aItems) 
	oDados:setDataItems({"regras_base", "detalhe_livro", "detalheregras_livroaliquiota" , "regras_escrituracao"}, "planilhadetalhes_financeiralivro": "sim"})


  Conout(oRequisicao:ToJson())
  Conout(jComponente:ToJson())

  FreeObj(oRequisicao)
  FreeObj(jComponente	cRetorno := oDados:GetDataItems()

	oDados:destroy()

Return nilcRetorno
Aviso
titleAtenção
  • Todos os exemplos demonstrados nesta documentação são fictícios, criados com intuito de orientar, cabendo ao desenvolvedor aplicar os conceitos demonstrados da forma que atenda plenamente as necessidades da operação. 
  • A classe TCIProcessing foi desenvolvida visando a flexibilidade para que o desenvolvedor tenha a oportunidade de escolher qual a melhor forma de consumi-la, tendo em mente sempre a melhor performance.