Árvore de páginas


API para Geração de Gráficos


Nome Físico: prgfin/luy/luy702za.py

Versão de Integração: 001

Objetivo: 

Criar o objeto de negócio que será utilizado para gerar visão de dados na qual permitirá conferir as informações do Listado em detalhe das Compras e exportar no formato desejado.

Pré-requisitos: 

Não se aplica.


Considerações Gerais


  • São passados como parâmetros para a API, como Input o mês e o ano da declaração e Output o arquivo com as declarações e temp table de erros.
  • A exibição das informações da API é feita através da execução da API prgfin/luy/luy702za.py.


Parâmetros de Entrada 


Temp-table tt-atributos: Na Temp-Table tt_dados_formulario, são definidas as características gerais do formulário de apresentação para cumprir com a legislação F2181.


Descrição dos campos 

TEMP-TABLE tt_dados_formulario

Atributo

Tipo

Formato

Valor Inicial

Índice

ttv_num_form

Integer


1

sim

ttv_cod_periodo

Character



sim

ttv_cod_docto_pessoa

Character



sim

ttv_cod_dat_emis_docto

Character



sim

ttv_cod_rubr

Character



sim

ttv_val_operac

Decimal




Atributo

Descrição

ttv_num_form

Identifica o número de formulario da declaração.

ttv_cod_periodo

Período.

ttv_cod_docto_pessoa

Documento da pessoa.

ttv_cod_dat_emis_docto

Data de Emissão do documento.

ttv_cod_rubr

Rubro.

ttv_val_operac

Valor total da operação.



Temp-Table tt_fornec_F2181_apb: Na Temp-Table tt_fornec_F2181_apb são definidas informações referidas ao fornecedor do documento.

TEMP-TABLE tt-points

Atributo

Tipo

Formato

Valor Inicial

Índice

tta_cod_empresa

Character



sim

tta_cdn_fornecedor

Integer


1

sim

tta_nom_pessoa

Character


“”


tta_cod_id_feder


Character




ttv_log_estrang


Character




Atributo

Descrição

tta_cod_empresa

Código da empresa.

tta_cdn_fornecedor

Número do fornecedor.

tta_nom_pessoa

Nome da pessoa.

tta_cod_id_feder

Documento.

ttv_log_estrang


É estrangeiro?



Temp-Table tt_impostos_F2181_apb: Na Temp-Table tt_impostos_F2181_apb são definidos os impostos vinculados aos documentos.

 

TEMP-TABLE tt_impostos_F2181_apb

Atributo

Tipo

Formato

Valor Inicial

Índice

tta_cod_estab

Character



sim

tta_num_id_tit_ap

Integer


1

sim

tta_cod_pais

Character



sim

tta_cod_unid_federac

Integer



sim

tta_cod_imposto

Character



sim

tta_ind_tip_impto

Character




tta_ind_clas_impto

Character




tta_ind_tip_tax

Character




ttv_val_base

Decimal




ttv_val_imposto 

Decimal




Atributo

Descrição

tta_cod_estab

Estabelecimento.

tta_num_id_tit_ap

Token título.

tta_cod_pais

Pais.

tta_cod_unid_federac

Estado.

tta_cod_imposto

Imposto.

tta_ind_tip_impto

Tipo Imposto.

tta_ind_clas_impto

Classificação Imposto.

tta_ind_tip_tax

Tipo Taxa.

ttv_val_base

Valor tributável.

ttv_val_imposto 

Valor Imposto.



Temp-Table tt_rubros_F2181_apb: Informações referentes aos rubros dos fornecedores.

TEMP-TABLE tt_rubros_F2181_apb

Atributo

Tipo

Formato

Valor Inicial

Índice

ttv_cod_rubr

Character


1

sim

tta_cod_estab

Character



sim

tta_num_id_tit_ap

Integer



sim

ttv_val_operac_rubr 

Decimal


0


Atributo

Descrição

ttv_cod_rubr

Identifica o código do Rubro.

tta_cod_estab

Estabelecimento.

tta_num_id_tit_ap

Token do título.

ttv_val_operac_rubr 

Valor total da operação por rubro.




Temp-table tt_titulo_F2181_apb: Informações referentes aos títulos vinculados na declaração.

TEMP-TABLE tt_titulo_F2181_apb


Atributo

Tipo

Formato

Valor Inicial

Índice primário

Índice secundário

tta_cdn_fornecedor 

Integer



sim


tta_cod_estab

Character



sim

sim

tta_num_id_tit_ap





sim

tta_cod_espec_docto




sim


tta_cod_ser_docto




sim


tta_cod_tit_ap




sim


tta_cod_parcela




sim


tta_ind_tip_espec_docto






tta_dat_emis_docto






tta_cod_indic_econ






tta_val_origin_tit_ap






ttv_val_iva_basic






ttv_val_iva_min






ttv_val_retenc_iva






ttv_val_isento






Atributo

Descrição

tta_cdn_fornecedor 

Fornecedor do título.

tta_cod_estab

Estabelecimento.

tta_num_id_tit_ap

Token do título.

tta_cod_espec_docto

Espécie.

tta_cod_ser_docto

Série.

tta_cod_tit_ap

Código do título.

tta_cod_parcela

Parcela.

tta_ind_tip_espec_docto

Tipo de espécie.

tta_dat_emis_docto

Data de emissão

tta_cod_indic_econ

Moeda.

tta_val_origin_tit_ap

Valor original do título.

ttv_val_iva_basic

Valor total IVA Taxa Básica.

ttv_val_iva_min

Valor total IVA Taxa Mínima.

ttv_val_retenc_iva

Valor total Retenção IVA.

ttv_val_isento

Valor total Isento.


Execução


Sintaxe:

RUN prgfin/luy/luy702za.py PERSISTENT SET v_hdl_api (INPUT mes,
                                                     INPUT ano).
RUN pi_obter_detalhes_f2181 IN v_hdl_api (output table tt_fornec_f2181_apb,
                                          output table tt_rubros_F2181_apb,
                                          output table tt_titulo_F2181_apb,
                                          output table tt_impostos_F2181_apb,
                                          output table tt_erros_api).
RUN prgfin/luy/luy702za.py PERSISTENT SET v_hdl_api (INPUT mes,
                                                     INPUT ano).
RUN pi_main_formulario_2181 IN v_hdl_api (output v_des_arquivo,
                                          output table tt_erros_api).

Em caso de erro nas validações acima, o erro será retornado através da temp-table ttt_erros_api.

Se os dados forem aceitos, a API devolverá as informações para geração do Formulário 2181 quando for chamada a procedure pi_main_formulario_2181 ou devolverá os detalhes dos títulos e impostos, se for chamada a procedure pi_obter_detalhes_f2181.


def var v_hdl_api as Handle format ">>>>>>9":U no-undo.
def var v_des_arquivo as character no-undo.

RUN prgfin/luy/luy702za.py PERSISTENT SET v_hdl_api (INPUT 2,
                                                     INPUT 2025).
RUN pi_main_formulario_2181 IN v_hdl_api (output v_des_arquivo,
                                          output table tt_erros_api).
DELETE PROCEDURE v_hdl_api.
def var v_hdl_api as Handle format ">>>>>>9":U no-undo.
def var v_des_arquivo as character no-undo.

RUN prgfin/luy/luy702za.py PERSISTENT SET v_hdl_api (INPUT 2,
                                                     INPUT 2025).
RUN pi_obter_detalhes_f2181 IN v_hdl_api (output table tt_fornec_f2181_apb,
                                          output table tt_rubros_F2181_apb,
                                          output table tt_titulo_F2181_apb,
                                          output table tt_impostos_F2181_apb,
                                          output table tt_erros_api).
DELETE PROCEDURE v_hdl_api.

for each tt_titulo_F2181_apb:
    if not can-find(first tt_impostos_F2181_apb
        where tt_impostos_F2181_apb.tta_cod_estab     = tt_titulo_F2181_apb.tta_cod_estab
          and tt_impostos_F2181_apb.tta_num_id_tit_ap = tt_titulo_F2181_apb.tta_num_id_tit_ap) then
    do:
        create tt_impostos_F2181_apb.
        assign tt_impostos_F2181_apb.tta_cod_estab     = tt_titulo_F2181_apb.tta_cod_estab
               tt_impostos_F2181_apb.tta_num_id_tit_ap = tt_titulo_F2181_apb.tta_num_id_tit_ap.  
    end.
end.

def stream s1.
output stream s1 to C:\tmp\Detalhes_F2181.csv convert target "ISO8859-1".
put stream s1 unformatted "Fornecedor;Nome;Titulo;Rubro;Vl Rubro;Vl Original;Vl Taxa Basica; Vl Taxa Minima;Vl Ret IVA; Vl Isento ; Imposto;Vl Base;Vl Imposto " skip.

for each tt_titulo_F2181_apb,
    each tt_rubros_F2181_apb
    where tt_rubros_F2181_apb.tta_cod_estab     = tt_titulo_F2181_apb.tta_cod_estab
      and tt_rubros_F2181_apb.tta_num_id_tit_ap = tt_titulo_F2181_apb.tta_num_id_tit_ap,    
    first tt_fornec_F2181_apb
    where tt_fornec_F2181_apb.tta_cdn_fornecedor = tt_titulo_F2181_apb.tta_cdn_fornecedor,
    each tt_impostos_F2181_apb
    where tt_impostos_F2181_apb.tta_cod_estab     = tt_titulo_F2181_apb.tta_cod_estab
      and tt_impostos_F2181_apb.tta_num_id_tit_ap = tt_titulo_F2181_apb.tta_num_id_tit_ap:
    
    put stream s1 unformatted
    string(tt_fornec_F2181_apb.tta_cdn_fornecedor)                                      + ";" +
    tt_fornec_F2181_apb.tta_nom_pessoa                                                  + ";" +
    tt_titulo_F2181_apb.tta_cod_estab + '/' +  tt_titulo_F2181_apb.tta_cod_espec_docto  + '/' + 
    tt_titulo_F2181_apb.tta_cod_ser_docto + '/' + tt_titulo_F2181_apb.tta_cod_tit_ap    + '/' + 
    tt_titulo_F2181_apb.tta_cod_parcela                                                 + ";" +
    tt_rubros_F2181_apb.ttv_cod_rubr                                                    + ";" +
    string(tt_rubros_F2181_apb.ttv_val_operac_rubr)                                     + ";" +
    string(tt_titulo_F2181_apb.tta_val_origin_tit_ap)                                   + ";" +
    string(tt_titulo_F2181_apb.ttv_val_iva_basic)                                       + ";" +
    string(tt_titulo_F2181_apb.ttv_val_iva_min)                                         + ";" +
    string(tt_titulo_F2181_apb.ttv_val_retenc_iva)                                      + ";" +       
    string(tt_titulo_F2181_apb.ttv_val_isento)                                          + ";" +   
    tt_impostos_F2181_apb.tta_cod_pais + '/' + tt_impostos_F2181_apb.tta_cod_unid_federac + '/' + 
    tt_impostos_F2181_apb.tta_cod_imposto                                               + ";" +
    string(tt_impostos_F2181_apb.ttv_val_base)                                          + ";" +                                   
    string(tt_impostos_F2181_apb.ttv_val_imposto) 
    skip.  
    
end.
output stream s1 close.




Parâmetros de Saída


No caso do retorno ser NOK, todos os erros encontrados serão retornados na tabela Temp-Table tt_erros_api:

A tt-erros é uma tabela de retorno de dados referentes aos erros encontrados na manipulação  dos dados das tabelas de entrada. A tt-erros retorna dados por meio de um registro contendo o código do erro e a sua descrição.

Obs.: Depois da chamada feita à API é imprescindível tratar os erros retornados caso existam.

TEMP-TABLE tt_erros_api

Atributo

Tipo

Formato

Valor Inicial

ttv_num_erro

Integer



ttv_des_mensagem

Character



ttv_des_ajuda

Character



ttv_row_id

Rowid



Atributo

Descrição

ttv_num_erro

Número do erro. Sequencial dentro da temp-table.

ttv_des_mensagem

Descrição do erro.

ttv_des_ajuda

Descrição ajuda.

ttv_row_id

Rowid.