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.
...
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
...
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 item que deseja obter os dados, podendo ser preenchido das seguintes formas:
id: "369ca132-2b3b-ac96-6b78-3247afcc2219": Pode-se passar o conteúdo do campo D1_IDTRIB ou D2_IDTRIB (SD1 para notas de entrada e SD2 para notas de saída), 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.
...
:
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
...
| |
// 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()
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"dados_Id": {
"fd32a6d9-70fa-6b68-18b5-cc17375d15b3": {
"TG_002": {
"filial": "XIFIS26 |
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "id": "369ca132-2b3b-ac96-6b78-3247afcc2219", "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": { "cod_regra": "TRIB01", , "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, "codigo_tab_cst": "", "descvalor_base_regraoriginal": "REGRA0 ICMS CST 40 ISENTO", } }, "baseTG_trib003": 100,{ "aliq_tribfilial": 7"XIFIS26", "val_tribtributo": 7"TG0002", "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, "cod_tribvalor_majora": ""0, "ded_dependentes": 0, "cod_regr_tab_progredados_escriturados": "",{ "cod_regr_ded_depen "filial": "", "aliqcodigo_servicotributo": 0"", "aliq_servico_lei_comp"valor_tributado": 0, "formula_calc_isentocst": "BAS:TRIB01", "formulavalor_calc_outrosisento": "BAS:TRIB01"0, "codvalor_regra_guiaoutros": ""0, "valvalor_nao_zerotributado": false0, "valvalor_maximodiferido": 0, "valvalor_minimomajorado": 0, "operadorperc_maximomajorado": ""0, "operadorperc_minimodiferido": ""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": [ "perc_reducao": 0, "valor_pauta": 0, "mva": 0, "ind_aux_mva": 0, "Ind_aux_majora": 0, "codigo_tab_cst": "", "regrasvalor_base",_original": 0 } }, "regras_aliquota", TRIB01": { "filial": "XIFIS26", "tributo": "detalhe_livroICMS", "regrascodigo_tributo_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": [ { relacionado": "000021", "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, "baseperc_tribmajorado": 1000, "aliqperc_tribdiferido": 70, "valperc_tribreducao": 70, "regrvalor_financpauta": ""0, "id_cadastromva": "1563de01-0c33-87af-5437-01401e2f4532"0, "confind_aux_arredmva": true0, "identInd_aux_tribmajora": "000021"0, "formulacodigo_tab_npicst": "BAS:TRIB01 ALQ:TRIB01 *000003", "idvalor_base_npioriginal": "96b65263-8caf-bbef-dc01-758e1d5701dd",0 } "cod_cabec_npi": "VAL:TRIB01" }, "mvaTRIB03": 0,{ "filial": "mva_aux": 0XIFIS26", "val_pauta"tributo": 0"PIS", "perccodigo_tributo_majorarelacionado": 0"000015", "inddescricao_auxtributo_majorarelacionado": 0, "PROGRAMA DE INTEGRAÇÃO SOCIAL", "codbase_trib_majoratributo": ""11028, "dedaliquota_dependentestributo": 01.65, "cod_regr_tab_progrevalor_tributo": ""181.96, "cod_regr_ded_depenvalor_urf": ""0, "aliq_servicomva": 0, "aliq_servico_lei_compvalor_pauta": 0, "formulapercentual_calc_isentomajora": "BAS:TRIB01"0, "formulaindice_calcaux_outrosmajora": "BAS:TRIB01"0, "codtributo_regra_guiamajora": "", "valaliquota_zeromajora": false0, "valvalor_maximomajora": 0, "valded_minimodependentes": 0, "operadordados_maximoescriturados": "",{ "operador_minimofilial": "XIFIS26", "regrascodigo_basetributo": { "TRIB03", "codvalor_regr_basetributado": "BAS001"181.96, "origem_valorcst": "0170", "acaovalor_descontoisento": "1"0, "valor_outros": 0, "acao_frete "valor_nao_tributado": "1"0, "acaovalor_segurodiferido": "1"0, "acaovalor_despesamajorado": "1"0, "acaoperc_icms_desonmajorado": "1"0, "acaoperc_icms_retdiferido": "1"0, "perc_reducao": 0, "valor_pauta": 0, "tipo_reducao": "", "mva": 0, "umind_aux_basemva": ""0, "Ind_aux_majora": 0, "idcodigo_tab_cadastrocst": "5ce3cd32-1d87-2a5c-5ad4-8525ab17ee1e000005", "formulavalor_base_original": "B:BAS001",0 } }, "id_formula "TRIB04": "fcd4411a-b439-9318-7eea-c4dba6299db5",{ "filial": "XIFIS26", "cod_formulatributo": "BAS:TRIB01COF", }, "codigo_tributo_relacionado": "000016", "regrasdescricao_tributo_aliquotarelacionado": { "CONTRIBUIÇÃO PARA FINANCIAMENTO DA SEGURIDADE SOCIAL", "codbase_regr_aliquotatributo": "ALQ005"11028, "aliquota_tributo": 7.6, "origemvalor_aliquotatributo": "04"838.13, "valor_urf": 0, "tipo_aliquotamva": "1"0, "valor_pauta": 0, "aliquotapercentual_majora": 70, "indice_aux_majora": 0, "codtributo_urfmajora": "", "aliquota_majora": 0, "percvalor_urfmajora": 0, "valor_urf"ded_dependentes": 0, "dados_escriturados": { "id_cadastrofilial": "80f93a77-3fdb-ed19-ac8d-b6b4be022372XIFIS26", "formulacodigo_aliquotatributo": "A:ALQ005TRIB04", "id_aliquota": "6c0d2b4e-5166-753e-61ab-918cf3a336d4", "valor_tributado": 838.13, "cod_formulacst": "ALQ:TRIB0170", }"valor_isento": 0, "detalhevalor_livrooutros": { 0, "cstvalor_nao_tributado": "40"0, "valor_tributadodiferido": 0, "valor_isentomajorado": 1000, "valorperc_outrosmajorado": 0, "valorperc_nao_tributdiferido": 0, "valorperc_diferidoreducao": 0, "valor_majoradopauta": 0, "perc_majorado"mva": 0, "perc_diferido"ind_aux_mva": 0, "perc_reducao"Ind_aux_majora": 0, "valorcodigo_tab_pautacst": 0, "mva000006": 0, "ind_aux_mva"valor_base_original": 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
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,
"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 item, 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).
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
aIds := {"369ca132-2b3b-ac96-6b78-3247afcc2219","a5dcda40-d145-28d1-c57f-1047e15ce1fe"}
cResponse := ""
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
Local oDados as object
aIds := {"ec451397-7b97-8114-a231-74a1490e1417"}
cResponse := ""
oDados := TCIWritten():New()
oDados:SetId(aIds)
cResponse := oDados:GetDataId()
Return cResponse | ||||||
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": "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 | ||||||
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. |