Histórico da Página
Índice
01.
...
Visão Geral
A classe TCIWritten (Tax Configurator Integration Written) foi desenvolvida para viabilizar o acesso aos dados gravados nas tabelas F2D (Tributos Genéricos Calculados)e CJ3 (Tabela Escrituracao por item) do Configurador de Tributos (FISA170) de uma forma dinâmica e intuitiva.
Este documento tem o objetivo de demonstrar
...
o funcionamento da classe TCIWritten e seus os métodos.
02.
...
Deverá ser montado um Json que deverá ser enviado como requisição para obtenção dos dados do Configurador de Tributos (FISA170). O Json deverá ser composto por atributos para obtenção correta dos dados:
Atibutos
Os atributos que precisam estar contidos no Json:
id
Neste atributo deverá ser informado o número do id que será relacionado a F2D que deseja obter os dados, podendo ser preenchido das seguintes formas:
id: "369ca132-2b3b-ac96-6b78-3247afcc2219": Pode-se passar o número, para o obter os dados;
id: {"369ca132-2b3b-ac96-6b78-3247afcc2219","a5dcda40-d145-28d1-c57f-1047e15ce1fe"}: Pode-se passar um array contendo os Id's que deseja obter os dados.
Exemplos de resquisição:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
--Exemplo ID: Com apenas 1 identificador
{
"id": "369ca132-2b3b-ac96-6b78-3247afcc2219",
}
--Exemplo ID: Com mais de um identificador
{
"id": [
"369ca132-2b3b-ac96-6b78-3247afcc2219",
"a5dcda40-d145-28d1-c57f-1047e15ce1fe",
]
} |
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id": "369ca132-2b3b-ac96-6b78-3247afcc2219",
"dados_cabecalho": "sim"
} |
Descrição dos atributos contidos em dados_cabecalho
...
Introdução
A classe TCIWritten facilita a recuperação de dados específicos das tabelas F2D e CJ3 utilizando métodos que permitem o acesso aos registros por meio de IDs. O retorno dos dados é estruturado no formato JSON, tornando-o fácil de manipular e integrar com outras partes de uma aplicação.
03. Como identificar se uma nota possui cálculos realizados pelo configurador de tributos
Ao inicializar a MATXFIS usando a função MafisIni na rotina de inclusão de documentos de entrada ou saída, é necessário informar que a rotina está apta a processar o configurador de tributos. Essa informação deve ser passada no parâmetro 33.
Por exemplo:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
// Valida a utilização do configurador de tributos
// lCalcTG: variável lógica que indica se a função ChkTrbGen foi encontrada e executada com sucesso
lCalcTG := IIf(FindFunction("ChkTrbGen"), ChkTrbGen("SD2","D2_IDTRIB"), .F.)
//Inicia os calculos da Matxfis
MaFisIni(SA1->A1_COD, SA1->A1_LOJA, cTipoPar,cTipoNf, SA1->A1_TIPO , MaFisRelImp("MT100",{"SF2","SD2"}),,.T.,,,,,,,,,,,,,,,,,,,,,,,,,lCalcTG)
//...Corpo da função...
// Grava o campo responsável pelo relacionamento do item com o configurador de tributos
If lTrbGen
SD2->D2_IDTRIB := MaFisTG(1,"SD2",nY)
EndIf |
Função ChkTrbGen
A função ChkTrbGen responsável por efetuar algumas validações para utilização dos tributos genéricos.
Parâmetros
- cAlias - Alias da tabela no qual será gravado o ID de relacionamento com a tabela F2D.
- cCampo - Campo no qual será gravado o ID de relacionamento com a tabela F2D.
Função MaFisTG
A função MaFisTG é resposavel pela gravação e exclusão dos tributos calculados pelo configurador de tributos.
Parâmetros
- Tipo da operação ( 1- Gravação dos tributos genéricos ou 2 - Exclusão dos tributos genéricos)
- Alias da tabela
- Item da nota
- Id do tributo (Utilizado para exclusão)
04. Como Usar
Para utilizar a classe, instancie um objeto da classe TCIWritten, utilizando namespace totvs.protheus.backoffice.fiscal.tciclass e utilize os métodos disponíveis para informar o ID (ou IDs) dos registros que deseja obter. Os dados serão retornados no formato JSON.
Dica | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
Para mais informações sobre o uso de namespaces, consulte o manual Namespace. Classes em TLPP que herdam de classe com namespace precisam utilizar o namespace na declaração da classe ou utilizar o namespace no programa que executa a chamada da classe. Para fontes escritos em TLPP, pode adicionar o namespace no início do arquivo fonte. Por exemplo:
Para fontes escritos em ADVPL deve ser utilizado por extendo o namespace + classe.
|
05. Métodos
New()
Descrição
O construtor da classe. Inicializa um novo objeto da classe TCIWritten.
Exemplo de implementação
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
oDados := TCIWritten():New() |
SetId()
Descrição
Define os IDs dos registros que se deseja obter os dados. Pode ser um único ID ou uma lista de IDs.
Parâmetros
- ids (array): Lista de IDs dos registros.
Exemplo de implementação
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
// Definindo um único ID
aIds := {"369ca132-2b3b-ac96-6b78-3247afcc2219"}
oDados := TCIWritten():New()
oDados:SetId(aIds)
// Definindo múltiplos IDs
aIds := {"369ca132-2b3b-ac96-6b78-3247afcc2219","a5dcda40-d145-28d1-c57f-1047e15ce1fe"}
oDados := TCIWritten():New()
oDados:SetId(aIds) |
GetDataId()
Descrição
Recupera os dados dos registros definidos pelos IDs.
Retorno
- json: Dados dos registros no formato JSON.
Exemplo de implementação
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
aIds := {"fd32a6d9-70fa-6b68-18b5-cc17375d15b3"}
cResponse := ""
oDados := TCIWritten():New()
oDados:SetId(aIds)
cResponse := oDados:GetDataId() |
Informações | ||
---|---|---|
| ||
Para o correto funcionamento do método GetDataId() é imprescindível informar o(s) ID(s) que deseja os dados através do método SetId(), caso contrário será retornado uma mensagem: "erro - Necessita informar Id" |
Exemplo de retorno GetDataId()
Exemplo do retorno da requisição do atributo dados_cabecalho
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
dados_cabecalho:
{
"cod_regra": "TRIB01",
"base_trib": 5000,
"val_trib": 350,
"regr_fin": "",
"id_cadastro": "1563de01-0c33-87af-5437-01401e2f4532",
"cod_urf": "",
"perc_urf": 0,
"val_dep": 0,
"cod_regr_guia": "",
"val_majorado": 0,
"id_trib": "000021"
}
} |
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "dados_Id": { "id": "369ca132-2b3b-ac96-6b78-3247afcc2219"fd32a6d9-70fa-6b68-18b5-cc17375d15b3": { "TG_002": { "filial": "XIFIS26", "tributo": "TG0002", "dados_itens "codigo_tributo_relacionado": "sim" } |
Descrição dos atributos contidos em dados_itens
...
Exemplo do retorno da requisição do atributo dados_itens
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "dados_itens": {, "descricao_tributo_relacionado": "", "base_tributo": 0, "aliquota_tributo": 10, "valor_tributo": 80, "valor_urf": 10, "mva": 0, "valor_pauta": 0, "percentual_majora": 0, "indice_aux_majora": 0, "tributo_majora": "", "aliquota_majora": 0, "valor_majora": 0, "ded_dependentes": 0, "dados_escriturados": { "filial": "", "codigo_tributo": "", "valor_tributado": 0, "cst": "", "valor_isento": 0, "valor_outros": 0, "valor_nao_tributado": 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, "codcodigo_tab_regracst": "TRIB01", "descvalor_base_regraoriginal": "REGRA ICMS CST 40 ISENTO", 0 } }, "baseTG_trib003": 100,{ "aliq_tribfilial": 7"XIFIS26", "val_tribtributo": 7, "retencaoTG0002":false, "regrcodigo_tributo_financrelacionado": "", "iddescricao_tributo_cadastrorelacionado": "1563de01-0c33-87af-5437-01401e2f4532", "confbase_arredtributo": true0, "identaliquota_tribtributo": "000021"10, "formulavalor_npitributo": "BAS:TRIB01 ALQ:TRIB01 *"80, "idvalor_npiurf": "96b65263-8caf-bbef-dc01-758e1d5701dd"0, "cod_cabec_npimva": "VAL:TRIB01"0, "mvavalor_pauta": 0, "mvapercentual_auxmajora": 0, "valindice_aux_pautamajora": 0, "perctributo_majora": 0"", "ind_auxaliquota_majora": 0, "codvalor_trib_majora": ""0, "ded_dependentes": 0, "cod_regr_tab_progredados_escriturados": "",{ "cod_regr_ded_depenfilial": "", "aliqcodigo_servicotributo": 0"", "aliq_servico_lei_compvalor_tributado": 0, "formula_calc_isentocst": "BAS:TRIB01", "formula_calcvalor_isento": 0, "valor_outros": "BAS:TRIB01"0, "codvalor_regranao_guiatributado": ""0, "valvalor_zerodiferido": false0, "valvalor_maximomajorado": 0, "valperc_minimomajorado": 0, "operadorperc_maximodiferido": ""0, "operadorperc_minimoreducao": ""0, } } |
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "itens": "369ca132-2b3b-ac96-6b78-3247afcc2219", "dados_itens": [ "valor_pauta": 0, "mva": 0, "ind_aux_mva": 0, "Ind_aux_majora": 0, "codigo_tab_cst": "", "regras"valor_base_original": 0 } }, "TRIB01": { "regras_aliquotafilial": "XIFIS26", "tributo": "ICMS", "detalhe_livro "codigo_tributo_relacionado": "000021", "regras_escrituracao" ] } |
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
...
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "dados_itens": [ { descricao_tributo_relacionado": "ICMS - Imposto sobre Circulação de Mercadorias e Serviços", "base_tributo": 12130.8, "aliquota_tributo": 18, "valor_tributo": 2183.54, "valor_urf": 0, "mva": 0, "valor_pauta": 0, "percentual_majora": 0, "indice_aux_majora": 0, "tributo_majora": "", "aliquota_majora": 0, "valor_majora": 0, "ded_dependentes": 0, "dados_escriturados": { "filial": "XIFIS26", "codigo_tributo": "TRIB01", "valor_tributado": 0, "cst": "90", "valor_isento": 0, "valor_outros": 12130.8, "valor_nao_tributado": 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, "codigo_tab_cst": "000001", "valor_base_original": 0 } }, "TRIB02": { "filial": "XIFIS26", "tributo": "IPI", "codigo_tributo_relacionado": "000022", "descricao_tributo_relacionado": "IPI - Imposto sobre Produtos Industrializados", "base_tributo": 11028, "aliquota_tributo": 10, "valor_tributo": 1102.8, "valor_urf": 0, "mva": 0, "valor_pauta": 0, "percentual_majora": 0, "indice_aux_majora": 0, "tributo_majora": "", "aliquota_majora": 0, "valor_majora": 0, "ded_dependentes": 0, "dados_escriturados": { "filial": "XIFIS26", "codigo_tributo": "TRIB02", "valor_tributado": 0, "cst": "49", "valor_isento": 0, "valor_outros": 11028, "valor_nao_tributado": 0, "codvalor_regradiferido": "TRIB01"0, "descvalor_regramajorado": "REGRA ICMS CST 40 ISENTO"0, "perc_majorado": 0, "baseperc_tribdiferido": 1000, "aliqperc_tribreducao": 70, "valvalor_tribpauta": 70, "retencaomva":false 0, "regrind_aux_financmva": ""0, "idInd_cadastroaux_majora": "1563de01-0c33-87af-5437-01401e2f4532"0, "confcodigo_tab_arredcst": true"000003", "identvalor_base_triboriginal": "000021",0 } "formula_npi": "BAS:TRIB01 ALQ:TRIB01 *" }, "TRIB03": { "id_npifilial": "96b65263-8caf-bbef-dc01-758e1d5701ddXIFIS26", "cod_cabec_npi"tributo": "VAL:TRIB01PIS", "mva"codigo_tributo_relacionado": 0"000015", "mvadescricao_tributo_auxrelacionado": 0, "PROGRAMA DE INTEGRAÇÃO SOCIAL", "valbase_pautatributo": 011028, "percaliquota_majoratributo": 01.65, "indvalor_aux_majoratributo": 0181.96, "codvalor_trib_majoraurf": ""0, "ded_dependentesmva": 0, "cod_regr_tab_progrevalor_pauta": ""0, "cod_regr_ded_depen"percentual_majora": ""0, "aliq_servico"indice_aux_majora": 0, "aliq_servico_lei_comptributo_majora": 0"", "formulaaliquota_calc_isentomajora": "BAS:TRIB01"0, "formulavalor_calc_outrosmajora": "BAS:TRIB01"0, "codded_regra_guiadependentes": ""0, "valdados_zeroescriturados": false,{ "val_maximo""filial": 0"XIFIS26", "valcodigo_minimotributo": 0"TRIB03", "operadorvalor_maximotributado": ""181.96, "operador_minimocst": "70", "regrasvalor_baseisento": {0, "valor_outros": 0, "codvalor_regrnao_basetributado": "BAS001"0, "origemvalor_valordiferido": "01"0, "acao_desconto"valor_majorado": "1"0, "acao_frete"perc_majorado": "1"0, "acaoperc_segurodiferido": "1"0, "acao_despesa"perc_reducao": "1"0, "acaovalor_icms_desonpauta": "1"0, "acao_icms_ret"mva": "1"0, "percind_aux_reducaomva": 0, "tipo_reducao"Ind_aux_majora": ""0, "um_base"codigo_tab_cst": "000005", "id_cadastro"valor_base_original": "5ce3cd32-1d87-2a5c-5ad4-8525ab17ee1e",0 } "formula_base": "B:BAS001"}, "TRIB04": { "id_formulafilial": "fcd4411a-b439-9318-7eea-c4dba6299db5XIFIS26", "tributo": "COF", "codcodigo_tributo_formularelacionado": "BAS:TRIB01000016", }, "descricao_tributo_relacionado": "CONTRIBUIÇÃO PARA FINANCIAMENTO DA SEGURIDADE SOCIAL", "regrasbase_aliquotatributo": {11028, "aliquota_tributo": 7.6, "codvalor_regr_aliquotatributo": "ALQ005"838.13, "origem_aliquota"valor_urf": "04"0, "mva": 0, "tipovalor_aliquotapauta": "1"0, "percentual_majora": 0, "aliquotaindice_aux_majora": 70, "tributo_majora": "", "codaliquota_urfmajora": ""0, "valor_majora": 0, "percded_urfdependentes": 0, "dados_escriturados": { "valor_urf "filial": 0"XIFIS26", "id_cadastro"codigo_tributo": "80f93a77-3fdb-ed19-ac8d-b6b4be022372TRIB04", "valor_tributado": 838.13, "formula_aliquotacst": "A:ALQ00570", "valor_isento": 0, "id_aliquota "valor_outros": "6c0d2b4e-5166-753e-61ab-918cf3a336d4"0, "cod_formula"valor_nao_tributado": "ALQ:TRIB01"0, }"valor_diferido": 0, "detalhevalor_livromajorado": {0, "cst"perc_majorado": "40"0, "valorperc_tributadodiferido": 0, "valorperc_isentoreducao": 1000, "valor_outros"valor_pauta": 0, "valor_nao_tributmva": 0, "valor_diferido"ind_aux_mva": 0, "valor_majorado"Ind_aux_majora": 0, "perccodigo_tab_majoradocst": 0"000006", "perc_diferido"valor_base_original": 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": "d62db7e9-419f-43a9-cc69-9cafe5805f5b", "incidencia": "2", "acao_tot_nf": "1", "perc_diferimento": 0, "cst": "40", "cod_tab_cst": "000001", "inc_parc_redu": "2" } } ] } |
planilha_financeira
Com esta atributo é possível obter os das referencias da planilha de cálculo da operação (planilha financeira), retornará o compilado total da operação. Deverá ser preenchido com um "sim" para obtenção dos dados por tributos.
Exemplo de requisição planilha_financeira:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"itens": "369ca132-2b3b-ac96-6b78-3247afcc2219",
"planilha_financeira": "sim"
} |
Descrição dos atributos contidos em planilha_financeira
...
}, |
Descrição das propriedades contidas no tributo
Propriedade | Tipo | Descrição |
---|---|---|
filial | caractere | Filial da operação |
tributo | caractere | Sigla do tributo |
codigo_tributo_relacionado | caractere | Código do tributo relacionado |
descricao_tributo_relacionado | caractere | Descrição do tributos relacionado |
base_tributo | número | Valor da base do tributo |
aliquota_tributo | número | Alíquota do tributo |
valor_tributo | número | Valor do tributo |
valor_urf | número | Valor da URF |
mva | número | Valor do MVA |
valor_pauta | número | Valor pauta |
percentual_majora | número | Percentual majorado |
indice_aux_majora | número | Índice auxiliar majoração |
tributo_majora | caractere | Tributo majorado |
aliquota_majora | número | Alíquota majorada |
valor_majora | número | Valor majorado |
ded_dependentes | número | Dedução por dependentes |
Descrição das propriedades contidas em dados escriturados
Atributo | Tipo | Descrição |
---|---|---|
Filial | caractere | Filial da operação |
valor_tributado | número | Valor tributado |
cst | caractere | CST |
valor_isento | número | Valor isento |
valor_outros | número | Valor outros |
valor_nao_tributado | número | Valor não tributado |
valor_deferido | número | Valor deferido |
valor_majorado | número | Valor majorado |
perc_majorado | número | Percentual majorado |
perc_diferido | número | Percentual diferimento |
perc_redução | número | Percentual redução |
valor_pauta | número | Valor pauta |
mva | número | MVA |
ind_aux_mva | número | Índice auxiliar MVA |
ind_aux_majora | número | Índice auxiliar majorado |
codigo_tab_cst | caractere | Cod. Tabela CST |
valor_base_original | número | Valor base original |
Destroy()
Descrição
Libera os recursos utilizados pela instância da classe TCIWritten.
Exemplo de implementação
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
aIds := |
Exemplo do retorno planilha_financeira
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"planilha_financeira": {
"codigo_tributo": "TRIB01",
"descricao_tributo": "REGRA ICMS CST 40 ISENTO",
"base_tributo": 5000,
"aliquota_tributo": 7,
"valor_tributo": 350,
"nome_ref": "TG"
}
} |
Informações | ||
---|---|---|
| ||
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). |
Exemplo de retorno geral
Abaixo é apresentado um exemplo de um retorno de uma requisição que continha apenas um item, sendo assim, o retorno será o Json estruturado da seguinte forma:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id": [
"369ca132-2b3b-ac96-6b78-3247afcc2219",
{
"dados_cabecalho": {
"cod_regra": "TRIB01",
"base_trib": 5000,
"val_trib": 350,
"regr_fin": "",
"id_cadastro": "1563de01-0c33-87af-5437-01401e2f4532",
"cod_urf": "",
"perc_urf": 0,
"val_dep": 0,
"cod_regr_guia": "",
"val_majorado": 0,
"id_trib": "000021"
},
"dados_itens": {
"cod_regra": "TRIB01",
"desc_regra": "REGRA ICMS CST 40 ISENTO",
"base_trib": 100,
"aliq_trib": 7,
"val_trib": 7,
"retencao":false,
"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": "",
"operador_minimo": "",
"regras_base": {
"cod_regr_base": "BAS001",
"origem_valor": "01",
"acao_desconto": "1",
"acao_frete": "1",
"acao_seguro": "1",
"acao_despesa": "1",
"acao_icms_deson": "1",
"acao_icms_ret": "1",
"perc_reducao": 0,
"tipo_reducao": "",
"um_base": "",
"id_cadastro": "5ce3cd32-1d87-2a5c-5ad4-8525ab17ee1e",
"formula_base": "B:BAS001",
"id_formula": "fcd4411a-b439-9318-7eea-c4dba6299db5",
"cod_formula": "BAS:TRIB01"
},
"regras_aliquota": {
"cod_regr_aliquota": "ALQ005",
"origem_aliquota": "04",
"tipo_aliquota": "1",
"aliquota": 7,
"cod_urf": "",
"perc_urf": 0,
"valor_urf": 0,
"id_cadastro": "80f93a77-3fdb-ed19-ac8d-b6b4be022372",
"formula_aliquota": "A:ALQ005",
"id_aliquota": "6c0d2b4e-5166-753e-61ab-918cf3a336d4",
"cod_formula": "ALQ:TRIB01"
},
"detalhe_livro": {
"cst": "40",
"valor_tributado": 0,
"valor_isento": 100,
"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": "d62db7e9-419f-43a9-cc69-9cafe5805f5b",
"incidencia": "2",
"acao_tot_nf": "1",
"perc_diferimento": 0,
"cst": "40",
"cod_tab_cst": "000001",
"inc_parc_redu": "2"
}
},
"planilha_financeira": {
"codigo_tributo": "TRIB01",
"descricao_tributo": "REGRA ICMS CST 40 ISENTO",
"base_tributo": 5000,
"aliquota_tributo": 7,
"valor_tributo": 350,
"nome_ref": "TG"
}
}
]
} |
Como demonstrado a estrutura será composta pelo número do id, e em seguida seus dados (válido para dados_cabecalho, dados_itens e suas regras e detalhes de livro e regras_escrituracao, dados de planilha_financeira apresentam os dados compilados de toda operação).
Notificação de erro
Caso haja a requisição de algum ID que não exista, ou que não tenha sido cadastrado pelo Configurador de tributos (FISA170) haverá o retorno de ID not exist.
Exemplo
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id": [
"369ca132-2b3b-ac96-6b78-3247afcc2219",
"a5dcda40-d145-28d1-c57f-1047e15ce1fe"
],
"dados_itens": [
"regras_base",
"regras_aliquota",
"detalhe_livro",
"regras_escrituracao"
]
} |
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id": [
"369ca132-2b3b-ac96-6b78-3247afcc2219",
{
"dados_cabecalho": {
"cod_regra": "TRIB01",
"base_trib": 5000,
"val_trib": 350,
"regr_fin": "",
"id_cadastro": "1563de01-0c33-87af-5437-01401e2f4532",
"cod_urf": "",
"perc_urf": 0,
"val_dep": 0,
"cod_regr_guia": "",
"val_majorado": 0,
"id_trib": "000021"
},
"dados_itens": {
"cod_regra": "TRIB01",
"desc_regra": "REGRA ICMS CST 40 ISENTO",
"base_trib": 100,
"aliq_trib": 7,
"val_trib": 7,
"retencao": false,
"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": "",
"operador_minimo": "",
"regras_base": {
"cod_regr_base": "BAS001",
"origem_valor": "01",
"acao_desconto": "1",
"acao_frete": "1",
"acao_seguro": "1",
"acao_despesa": "1",
"acao_icms_deson": "1",
"acao_icms_ret": "1",
"perc_reducao": 0,
"tipo_reducao": "",
"um_base": "",
"id_cadastro": "5ce3cd32-1d87-2a5c-5ad4-8525ab17ee1e",
"formula_base": "B:BAS001",
"id_formula": "fcd4411a-b439-9318-7eea-c4dba6299db5",
"cod_formula": "BAS:TRIB01"
},
"regras_aliquota": {
"cod_regr_aliquota": "ALQ005",
"origem_aliquota": "04",
"tipo_aliquota": "1",
"aliquota": 7,
"cod_urf": "",
"perc_urf": 0,
"valor_urf": 0,
"id_cadastro": "80f93a77-3fdb-ed19-ac8d-b6b4be022372",
"formula_aliquota": "A:ALQ005",
"id_aliquota": "6c0d2b4e-5166-753e-61ab-918cf3a336d4",
"cod_formula": "ALQ:TRIB01"
},
"detalhe_livro": {
"cst": "40",
"valor_tributado": 0,
"valor_isento": 100,
"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": "d62db7e9-419f-43a9-cc69-9cafe5805f5b",
"incidencia": "2",
"acao_tot_nf": "1",
"perc_diferimento": 0,
"cst": "40",
"cod_tab_cst": "000001",
"inc_parc_redu": "2"
}
},
"planilha_financeira": {
"codigo_tributo": "TRIB01",
"descricao_tributo": "REGRA ICMS CST 40 ISENTO",
"base_tributo": 5000,
"aliquota_tributo": 7,
"valor_tributo": 350,
"nome_ref": "TG"
}
}
],
"ID not exist": "a5dcda40-d145-28d1-c57f-1047e15ce1fe"
} |
03. EXEMPLO DE IMPLEMENTAÇÃO
Abaixo é demonstrado 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
Function MontaObjetoRequisicao()
Local oRequisicao as json
Local jRequisicao as json
//Exemplo composição Json não nativo
oRequisicao := JsonObject():New()
oRequisicao["id"] := "369ca132-2b3b-ac96-6b78-3247afcc2219"
oRequisicao["dados_cabecalho"] := "sim"
oRequisicao["dados_itens"] := "sim"
oRequisicao["planilha_financeira"] := "sim"
//Exemplo composição Json nativo (TL++)
jRequisicao := {"itens": "369ca132-2b3b-ac96-6b78-3247afcc2219", "dados_cabecalho": "sim", "dados_itens": "sim", "planilha_financeira": "sim"}
Conout(oRequisicao:ToJson())
Conout(jRequisicao:ToJson())
FreeObj(oRequisicao)
FreeObj(jRequisicao)
Return nil |
O Json ficará estruturado da seguinte forma:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"id": "369ca132-2b3b-ac96-6b78-3247afcc2219",
"dados_cabecalho": "sim",
"dados_itens": "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 | ||||||
---|---|---|---|---|---|---|
| ||||||
Function MontaObjetoRequisicaoEspecifico() Local oRequisicao as Json Local jComponente as json //Exemplo composição Json não nativo oRequisicao := JsonObject():New() oRequisicao["id"] := {"369ca132-2b3b-ac96-6b78-3247afcc2219", "a5dcda40-d145-28d1-c57f-1047e15ce1fe"} oRequisicao["dados_cabecalho"] := "sim" oRequisicao["dados_itens"] := {"regras_base", "detalhe_livro", "detalhe_livro" , "regras_escrituracao"} oRequisicao["planilha_financeira"] := "sim" //Exemplo composição Json nativo (TL++) jComponente := {"itens": {"369ca132-2b3b-ac96-6b78-3247afcc2219", "a5dcda40-d145-28d1-c57f-1047e15ce1fe"}, "dados_planilha": cResponse := "sim", "dados_itens": {"regras_base", "detalhe_livro", "detalhe_livro" , "regras_escrituracao"}, "planilha_financeira": "sim"} Conout(oRequisicao:ToJson()) Conout(jComponente:ToJson()) FreeObj(oRequisicao) FreeObj(jComponente) Return nil oDados := TCIWritten():New() oDados:SetId(aIds) cResponse := oDados:GetDataId() oDados:destroy() |
Aviso | ||
---|---|---|
| ||
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. |
06. Exemplo Completo de Implementação
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
using NameSpace totvs.protheus.backoffice.fiscal.tciclass Function Exemplo() Local aIds as array Local cResponse as character{ "id": [ "369ca132-2b3b-ac96-6b78-3247afcc2219", "a5dcda40-d145-28d1-c57f-1047e15ce1fe" ], "dados_cabecalho": "sim", "dados_itens": [ Local oDados "regras_base",as object aIds := "regras_aliquota",{"ec451397-7b97-8114-a231-74a1490e1417"} cResponse := "detalhe_livro", "regras_escrituracao"oDados := TCIWritten():New() ],oDados:SetId(aIds) "planilha_financeira": "sim" } | ||||||||
Aviso | ||||||||
| ||||||||
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. cResponse := oDados:GetDataId()
Return cResponse |