API para Geração de Gráficos


Nome Físico: prgfin/lco/lco728za.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 disponibilizará uma conciliação automática, dos saldos contábeis distribuídos por terceiros, com os saldos
contábeis gerados para as mesmas contas, sem a distribuição por terceiros.

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.