Árvore de páginas


API para Geração de Gráficos


Nome Físico: prgfin/lpy/lpy724za.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á a emissão do livro de IVA, o qual lista todos os documentos implantados no módulo Contas a Pagar, em determinado período, que tenha, ou não, Imposto de Valor Agregado vinculado.

Pré-requisitos: 

Não se aplica.


Considerações Gerais


  • São passados como parâmetros de input e output para a API,  como Input são: Estabelecimento Inicial, Estabelecimento Final, Data Emissão Inicial, Data Emissão Final, Fornecedor Inicial, Fornecedor Final, Grupo Fornecedores Inicial, Grupo Fornecedores Final e Somente Faturas com IVA, como Output são: RUC da Empresa, tt_iva_cprs_pry e tt_erros_api.
  • A exibição das informações da API é feita através da execução da API prgfin/lpy/lpy724za.py.

Parâmetros de Entrada 


Temp-table tt_iva_cprs_pry: Na Temp-Table tt_iva_cprs_pry, são definidas as características gerais e dados a serem devolvidos.

Descrição dos campos 

TEMP-TABLE tt_iva_cprs_pry

Atributo

Tipo

Formato

Valor Inicial

Índice

ttv_num_dia

Integer




ttv_cod_tit_ap

Character



Sim

ttv_dat_docto

Date




ttv_nom_pessoa_cli

Character




ttv_cod_rut

Character




ttv_val_vta_grav_2

Decimal




ttv_val_impuesto_2

Decimal




ttv_val_vta_exento_2

Decimal




ttv_val_orig_tit_ap_2

Decimal




ttv_val_base_imponible_2

Decimal




ttv_cdn_fornecedor

Integer



Sim

ttv_num_estab

Integer



Sim

ttv_num_pto_vta_fatur_inic

Integer




ttv_cb1_calc_dat_term_carenc

Integer




ttv_cod_1

Character




tta_cod_espec_docto

Character



Sim

tta_cod_ser_ap

Character



Sim

ttv_val_vta_grav_3

Decimal




ttv_val_impuesto_3

Decimal




ttv_val_vta_grav_tot

Decimal




ttv_val_impuesto_tot

Decimal




ttv_cod_operac_2

Character




ttv_cod_tip_docto_2

Character




ttv_num_timbdo

Integer




ttv_cod_estab

Character




ttv_cod_tit_ap_2

Character




tta_val_cotac_indic_econ

Decimal




tta_dat_transacao

Date




ttv_num_pto_vta_fatur

Integer




tta_cod_refer

Character



Sim

ttv_cod_tip_documento

Character




ttv_cod_condicao

Character




ttv_num_parc

Integer



Sim

Atributo

Descrição

ttv_num_dia

Número de Dias

ttv_cod_tit_ap

Título Contas a Pagar

ttv_dat_docto

Data de Emissão

ttv_nom_pessoa_cli

Nome Pessoa Física 

ttv_cod_rut

Número do RUC

ttv_val_vta_grav_2

Valor Tributado 5%

ttv_val_impuesto_2

Valor Imposto 5%

ttv_val_vta_exento_2

Valor Isento

ttv_val_orig_tit_ap_2

Valor Original

ttv_val_base_imponible_2


ttv_cdn_fornecedor

Código do Fornecedor

ttv_num_estab

Numero do Estabelecimento

ttv_num_pto_vta_fatur_inic

Numero Ponto de Venda

ttv_cb1_calc_dat_term_carenc

Data Termino Carência

ttv_cod_1

Numero Timbrado

tta_cod_espec_docto

Espécie do Documento

tta_cod_ser_ap

Série do Documento

ttv_val_vta_grav_3

Valor Tributado 10%

ttv_val_impuesto_3

Valor Imposto 10%

ttv_val_vta_grav_tot

Valor Total Tributado

ttv_val_impuesto_tot

Valor Total Imposto

ttv_cod_operac_2

Código da Operação

ttv_cod_tip_docto_2

Código Tipo Documento

ttv_num_timbdo

Numero do Timbrado

ttv_cod_estab

Código do Estabelecimento

ttv_cod_tit_ap_2

Código do Título

tta_val_cotac_indic_econ

Cotação

tta_dat_transacao

Data de Transação

ttv_num_pto_vta_fatur

Ponto de Venda da Fatura

tta_cod_refer

Código de Referência

ttv_cod_tip_documento

Tipo de Documento

ttv_cod_condicao

Condição de Pagamento

ttv_num_parc

Numero de Parcelas


Execução


Sintaxe:

IF NOT VALID-HANDLE(v_hdl_api) THEN
    RUN prgfin/lpy/lpy724za.r PERSISTENT SET v_hdl_api.        

/* Busca linhas do livro */
RUN pi_retorna_dados_iva_compras IN v_hdl_api (INPUT v_cod_estab_ini,      /* Estabelecimento Inicial */
                                               INPUT v_cod_estab_fim,      /* Estabelecimento Final */
                                               INPUT v_dat_emis_inic,      /* Data Emissão Inicial */
                                               INPUT v_dat_emis_fim,       /* Data Emissão Final */
                                               INPUT v_cdn_fornecedor_ini, /* Fornecedor Inicial */
                                               INPUT v_cdn_fornecedor_fim, /* Fornecedor Final */
                                               INPUT v_cod_grp_fornec_ini, /* Grupo Fornecedores Inicial */
                                               INPUT v_cod_grp_fornec_fim, /* Grupo Fornecedores Final */
                                               INPUT v_log_smte_com_iva,   /* Somente Faturas com IVA */
                                               OUTPUT v_cod_ruc,           /* RUC da Empresa */
                                               OUTPUT TABLE tt_iva_cprs_pry,
                                               OUTPUT TABLE tt_erros_api).

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

Se os dados forem aceitos, a API devolverá as informações para geração do livro IVA compras quando for chamada a procedure pi_retorna_dados_iva_compras.


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

run prgfin\lpy\lpy724za.r persistent set v_hdl_api.

if  valid-handle(v_hdl_api)
then do:
     /* Busca linhas do livro */
     run pi_retorna_dados_iva_compras in v_hdl_api (input "",           /* Estabelecimento Inicial */
                                                    input "ZZZZZ",      /* Estabelecimento Final */
                                                    input 01/01/2025,   /* Data EmissÆo Inicial */
                                                    input 06/30/2025,   /* Data EmissÆo Final */
                                                    input 0,            /* Fornecedor Inicial */
                                                    input 999999,       /* Fornecedor Final */
                                                    input "",           /* Grupo Fornecedores Inicial */
                                                    input "ZZZZ",       /* Grupo Fornecedores Final */
                                                    input no,           /* Somente Faturas com IVA */
                                                    output v_cod_ruc,   /* RUC da Empresa */
                                                    output table tt_iva_cprs_pry,
                                                    output table tt_erros_api). 
DELETE PROCEDURE v_hdl_api.
def new global shared var v_cod_empres_usuar
    as character
    format "x(3)":U
    label "Empresa"
    column-label "Empresa"
    no-undo.
    
def var v_hdl_api     as handle   no-undo.
def var v_cod_ruc     as char     no-undo.
def var v_num_pagina  as inte     no-undo.

def stream s_1.

run prgfin\lpy\lpy724za.r persistent set v_hdl_api.

if  valid-handle(v_hdl_api)
then do:
     /* Busca linhas do livro */
     run pi_retorna_dados_iva_compras in v_hdl_api (input "",           /* Estabelecimento Inicial */
                                                    input "ZZZZZ",      /* Estabelecimento Final */
                                                    input 01/01/2025,   /* Data EmissÆo Inicial */
                                                    input 06/30/2025,   /* Data EmissÆo Final */
                                                    input 0,            /* Fornecedor Inicial */
                                                    input 999999,       /* Fornecedor Final */
                                                    input "",           /* Grupo Fornecedores Inicial */
                                                    input "ZZZZ",       /* Grupo Fornecedores Final */
                                                    input no,           /* Somente Faturas com IVA */
                                                    output v_cod_ruc,   /* RUC da Empresa */
                                                    output table tt_iva_cprs_pry,
                                                    output table tt_erros_api).
                                                    
    for each tt_erros_api:
        message "E  R  R  O  S"                skip
                tt_erros_api.ttv_num_erro      skip
                tt_erros_api.ttv_des_mensagem  skip
                tt_erros_api.ttv_des_ajuda     view-as alert-box.
    end.
    
    if  can-find(first tt_iva_cprs_pry)
    then do:
        output stream s_1 to "c:\tmp\livro_iva_compras.csv" convert target "ISO8859-1".
        put stream s_1 unformatted "Dia;Estab;Esp‚cie;S‚rie;Fatura;Data EmissÆo;Data Transa‡Æo;Referˆncia;Fornecedor;Nome;RUC;Opera‡Æo;Timbrado;Sucursal;Ponto Venda;Tipo Docto;Parcelas;Condi‡Æo Compra;Vlr Original;Vlr Truibutado 5%;Vlr Imposto 5%;Vlr Truibutado 10%;Vlr Imposto 10%;Vlr Total Tributado;Vlr Total Imposto;Vlr Isento;Vlr Cota‡Æo" skip.
        for each tt_iva_cprs_pry:
            put stream s_1 unformatted
                string(tt_iva_cprs_pry.ttv_num_dia)              + ";" +
                string(tt_iva_cprs_pry.ttv_cod_estab)            + ";" +
                string(tt_iva_cprs_pry.tta_cod_espec_docto)      + ";" +
                string(tt_iva_cprs_pry.tta_cod_ser_ap)           + ";" +
                string(tt_iva_cprs_pry.ttv_cod_tit_ap)           + ";" +
                string(tt_iva_cprs_pry.ttv_dat_docto)            + ";" +
                string(tt_iva_cprs_pry.tta_dat_transacao)        + ";" +
                string(tt_iva_cprs_pry.tta_cod_refer)            + ";" +
                string(tt_iva_cprs_pry.ttv_cdn_fornecedor)       + ";" +
                string(tt_iva_cprs_pry.ttv_nom_pessoa_cli)       + ";" +
                string(tt_iva_cprs_pry.ttv_cod_rut)              + ";" +
                string(tt_iva_cprs_pry.ttv_cod_operac_2)         + ";" +
                string(tt_iva_cprs_pry.ttv_cod_1)                + ";" +
                string(tt_iva_cprs_pry.ttv_num_estab)            + ";" +
                string(tt_iva_cprs_pry.ttv_num_pto_vta_fatur)    + ";" +
                string(tt_iva_cprs_pry.ttv_cod_tip_documento)    + ";" +
                string(tt_iva_cprs_pry.ttv_num_parc)             + ";" +
                string(tt_iva_cprs_pry.ttv_cod_condicao)         + ";" +
                string(tt_iva_cprs_pry.ttv_val_orig_tit_ap_2)    + ";" +
                string(tt_iva_cprs_pry.ttv_val_vta_grav_2)       + ";" +
                string(tt_iva_cprs_pry.ttv_val_impuesto_2)       + ";" +
                string(tt_iva_cprs_pry.ttv_val_vta_grav_3)       + ";" +
                string(tt_iva_cprs_pry.ttv_val_impuesto_3)       + ";" +
                string(tt_iva_cprs_pry.ttv_val_vta_grav_tot)     + ";" +
                string(tt_iva_cprs_pry.ttv_val_impuesto_tot)     + ";" +
                string(tt_iva_cprs_pry.ttv_val_vta_exento_2)     + ";" +
                string(tt_iva_cprs_pry.tta_val_cotac_indic_econ) skip.
        end.
        output stream s_1 close.
    end.
    
    /* Busca Pr¢xima P gina do Livro */
    run pi_busca_proxima_pag_iva_compras in v_hdl_api (output v_num_pagina, /* N£mero da Pr¢xima P gina */
                                                       output table tt_erros_api).
    for each tt_erros_api:
        message "E  R  R  O  S"                skip
                tt_erros_api.ttv_num_erro      skip
                tt_erros_api.ttv_des_mensagem  skip
                tt_erros_api.ttv_des_ajuda     view-as alert-box.
    end.

    /* Atualiza éltima P gina do Livro */
    run pi_atualiza_ultima_pag_iva_compras in v_hdl_api (input (v_num_pagina + 12), /* N£mero da éltima P gina */
                                                         output table tt_erros_api).
    
    for each tt_erros_api:
        message "E  R  R  O  S"                skip
                tt_erros_api.ttv_num_erro      skip
                tt_erros_api.ttv_des_mensagem  skip
                tt_erros_api.ttv_des_ajuda     view-as alert-box.
    end.

    find first pry_param_livro_iva no-lock
        where pry_param_livro_iva.cod_empresa = v_cod_empres_usuar
        no-error.
    if  avail pry_param_livro_iva then 
        message "RUC da Empresa:" v_cod_ruc     skip
                "Pr¢xima P gina:" v_num_pagina  skip
                "ëltima P gina :" pry_param_livro_iva.num_pag_livro_compra 
                 view-as alert-box.
    else
        message "NÆo encontrou o registro de parƒmetros do Livro IVA Compras" view-as alert-box.
                 
    delete procedure v_hdl_api.
    
end.




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.