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: Plano de Contas, Cenário Contábil, Finalidade Econômica, Exercício, Período, Faixa de Estabelecimentos, Faixa de Unidades de Negócio e 
    Flag para indicar se deve retornar somente os saldos não conciliados, como Output são: tt_concilia_sdos_terceiros, tt_lanctos_ctbl_concil e tt_erros_api.
  • A exibição das informações da API é feita através da execução da API prgfin/lco/lco728za.py.
    .

Parâmetros de Entrada 


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

Descrição dos campos 

TEMP-TABLE tt_concilia_sdos_terceiros

Atributo

Tipo

Formato

Valor Inicial

Índice

tta_cod_finalid_econ

Character




tta_cod_cenar_ctbl

Character




tta_cod_plano_cta_ctbl

Character




tta_cod_cta_ctbl

Character




tta_des_tit_ctbl

Character




ttv_val_sdo_terc_inic

Decimal

->>,>>>,>>>,>>9.99



ttv_val_mov_terc_db

Decimal

->>,>>>,>>>,>>9.99



ttv_val_mov_terc_cr

Decimal

->>,>>>,>>>,>>9.99



ttv_val_sdo_terc_fim

Decimal

->>,>>>,>>>,>>9.99



ttv_val_sdo_ctbl_inic

Decimal

->>>,>>>,>>>,>>>,>>9.99



ttv_val_mov_ctbl_db

Decimal

->>,>>>,>>>,>>9.99



ttv_val_mov_ctbl_cr

Decimal

->>,>>>,>>>,>>9.99



ttv_val_sdo_ctbl_fim

Decimal

->>,>>>,>>>,>>9.99

0


ttv_log_dif_sdo

Logical

Sim/Não

No


ttv_log_dif_mov

Logical

Sim/Não

No


Atributo

Descrição

tta_cod_finalid_econ

Finalidade

tta_cod_cenar_ctbl

Cenário Contábil

tta_cod_plano_cta_ctbl

Plano Contas

tta_cod_cta_ctbl

Conta Contábil

tta_des_tit_ctbl

Título Contábil

ttv_val_sdo_ctbl_inic

Saldo Inicia

ttv_val_sdo_ctbl_fim

Saldo Final


Execução


Sintaxe:

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

/* Busca Saldo Inicial */
    run pi_busca_sdo_ctbl (input v_cod_empres_usuar,
                           input p_cod_estab_ini,
                           input p_cod_estab_fim,
                           input p_cod_finalid_econ,
                           input colext_cta_ctbl.cod_plano_cta_ctbl,
                           input colext_cta_ctbl.cod_cta_ctbl,
                           input colext_cta_ctbl.cod_cta_ctbl,
                           input "",
                           input "",
                           input "ZZZZZZZZZZZ" /*l_zzzzzzzzzzz*/ ,
                           input p_cod_un_inicial,
                           input p_cod_un_final,
                           input p_cod_cenar_ctbl,
                           input "",
                           input "ZZZZZZZZZZZZZZZZZZZZ" /*l_zzzzzzzzzzzzzzzzzzzz*/ ,
                           input v_dat_sdo_inic,
                           input v_dat_sdo_inic,
                           input no,
                           input "Maior ou Igual e Menor ou Igual" /*l_maior_igual_menor_igual*/ ,
                           input "for each" /*l_for_each*/ ,
                           output table tt_retorna_sdo_ctbl).

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 da conciliação de saldos por terceiros compras quando for chamada a procedure pi_busca_sdo_ctbl.


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

run prgfin\lco\lco728za.r persistent set v_hdl_api.

if  valid-handle(v_hdl_api)
then do:
     /* Busca plano de contas */
		run prgfin\lco\lco728za.r (input "GRIFFE1",       /* Plano de Contas */
                    	       	   input "Fiscal",        /* Cen rio Cont bil */
                        		   input "PESO COL",      /* Finalidade Econ“mica */
		                           input v_cod_exercicio, /* Exerc¡cio */
		                           input v_num_periodo,   /* Per¡odo */
		                           input "IGN",           /* Estab Inicial */
		                           input "IGV",           /* Estab Final */
		                           input "008",           /* UN Inicial */
		                           input "VEN",           /* UN Final */
		                           input no,              /* Retorna Somente NÆo Conciliados */
		                           output table tt_concilia_sdos_terceiros,
		                           output table tt_lanctos_ctbl_concil,
DELETE PROCEDURE v_hdl_api.
def temp-table tt_concilia_sdos_terceiros no-undo
    field tta_cod_finalid_econ  as character format "x(10)" label "Finalidade" column-label "Finalidade"
    field tta_cod_cenar_ctbl    as character format "x(8)" label "Cen rio Cont bil" column-label "Cen rio Cont bil"
    field tta_cod_plano_cta_ctbl as character format "x(8)" label "Plano Contas" column-label "Plano Contas"
    field tta_cod_cta_ctbl                 as character format "x(20)" label "Conta Cont bil" column-label "Conta Cont bil"
    field tta_des_tit_ctbl                 as character format "x(40)" label "T¡tulo Cont bil" column-label "T¡tulo Cont bil"
    field ttv_val_sdo_terc_inic            as decimal format "->>,>>>,>>>,>>9.99" decimals 2
    field ttv_val_mov_terc_db              as decimal format "->>,>>>,>>>,>>9.99" decimals 2
    field ttv_val_mov_terc_cr              as decimal format "->>,>>>,>>>,>>9.99" decimals 2
    field ttv_val_sdo_terc_fim             as decimal format "->>,>>>,>>>,>>9.99" decimals 2
    field ttv_val_sdo_ctbl_inic            as decimal format "->>>,>>>,>>>,>>>,>>9.99" decimals 2 label "Saldo Inicial" column-label "Saldo Inicial"
    field ttv_val_mov_ctbl_db              as decimal format "->>,>>>,>>>,>>9.99" decimals 2
    field ttv_val_mov_ctbl_cr              as decimal format "->>,>>>,>>>,>>9.99" decimals 2
    field ttv_val_sdo_ctbl_fim             as decimal format "->>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Saldo Final" column-label "Saldo Final"
    field ttv_log_dif_sdo                  as logical format "Sim/NÆo" initial no
    field ttv_log_dif_mov                  as logical format "Sim/NÆo" initial no
    index tt_dfmvt                        
          ttv_log_dif_mov                  ascending
    index tt_id                            is primary unique
          tta_cod_finalid_econ             ascending
          tta_cod_cenar_ctbl               ascending
          tta_cod_plano_cta_ctbl           ascending
          tta_cod_cta_ctbl                 ascending
    .
    
def temp-table tt_lanctos_ctbl_concil no-undo
    field tta_cod_cta_ctbl                 as character format "x(20)" label "Conta Cont bil" column-label "Conta Cont bil"
    field tta_des_tit_ctbl                 as character format "x(40)" label "T¡tulo Cont bil" column-label "T¡tulo Cont bil"
    field tta_val_lancto_ctbl              as decimal format ">>>,>>>,>>>,>>9.99" decimals 2 initial 0 label "Valor Lan‡amento" column-label "Valor Lan‡amento"
    field tta_ind_natur_lancto             as character format "X(5)" initial "Ambos" label "Natureza Lan‡amento" column-label "Natureza Lan‡amento"
    field tta_dat_lancto_ctbl              as date format "99/99/9999" initial ? label "Data Lan‡amento" column-label "Data Lan‡to"
    field tta_num_lote_ctbl                as integer format ">>>,>>>,>>9" initial 1 label "Lote Cont bil" column-label "Lote Cont bil"
    field tta_num_lancto_ctbl              as integer format ">>,>>>,>>9" initial 10 label "Lan‡amento Cont bil" column-label "Lan‡amento Cont bil"
    field tta_num_seq_lancto_ctbl          as integer format ">>>>9" initial 0 label "Sequˆncia Lan‡to" column-label "Sequˆncia Lan‡to"
    .    

def temp-table tt_erros_api no-undo
    field ttv_num_erro                     as integer format ">>>>,>>9"
    field ttv_des_mensagem                 as character format "x(50)" label "Mensagem" column-label "Mensagem"
    field ttv_des_ajuda                    as character format "x(50)" label "Ajuda" column-label "Ajuda"
    field ttv_row_id                       as Rowid
    .
    
def stream s1.
def stream s2.
def stream s3.

def var v_cod_exercicio      as char    no-undo.
def var v_num_periodo        as inte    no-undo.
def var v_nom_arq_saldos     as char    no-undo.
def var v_nom_arq_lanctos    as char    no-undo.
def var v_nom_arq_erros      as char    no-undo.    
    
   
/* Per¡odo Conciliado */   
assign v_cod_exercicio = "2024"
       v_num_periodo   = 1.
   
assign v_nom_arq_saldos  = "C:\tmp\saldos_" + v_cod_exercicio + "-" + string(v_num_periodo,"99") + ".csv".
       v_nom_arq_lanctos = "C:\tmp\lanctos_" + v_cod_exercicio + "-" + string(v_num_periodo,"99") + ".csv".
       v_nom_arq_erros   = "C:\tmp\erros_" + v_cod_exercicio + "-" + string(v_num_periodo,"99") + ".csv".
    
output stream s1 to value(v_nom_arq_saldos) convert target "ISO8859-1".
output stream s2 to value(v_nom_arq_lanctos) convert target "ISO8859-1".
output stream s3 to value(v_nom_arq_erros) convert target "ISO8859-1".

put stream s1 unformatted "Fianlidade Econ“mica;Cen rio;Plano Contas;Conta Cont bil;Descri‡Æo;Sdo Inicial 3§;Movto DB 3§;Movto CR 3§; Sdo Final 3§;Sdo Inicial Ctbl;Movto DB Ctbl;Movto CR Ctbl;Sdo Final Ctbl;Dif Sld;Dif Movto" skip.
put stream s2 unformatted "Conta Cont bil;Descri‡Æo;Valor Lancto;DB/CR;Data Lancto;Lote;Lancto;Seq" skip.
put stream s3 unformatted "Erro;Descri‡Æo;Ajuda" skip.

run prgfin\lco\lco728za.r (input "GRIFFE1",       /* Plano de Contas */
                           input "Fiscal",        /* Cen rio Cont bil */
                           input "PESO COL",      /* Finalidade Econ“mica */
                           input v_cod_exercicio, /* Exerc¡cio */
                           input v_num_periodo,   /* Per¡odo */
                           input "IGN",           /* Estab Inicial */
                           input "IGV",           /* Estab Final */
                           input "008",           /* UN Inicial */
                           input "VEN",           /* UN Final */
                           input no,              /* Retorna Somente NÆo Conciliados */
                           output table tt_concilia_sdos_terceiros,
                           output table tt_lanctos_ctbl_concil,
                           output table tt_erros_api).
                           
for each tt_concilia_sdos_terceiros:
    put stream s1 unformatted
        string(tt_concilia_sdos_terceiros.tta_cod_finalid_econ)   + ";" +
        string(tt_concilia_sdos_terceiros.tta_cod_cenar_ctbl)     + ";" +
        string(tt_concilia_sdos_terceiros.tta_cod_plano_cta_ctbl) + ";" +
        string(tt_concilia_sdos_terceiros.tta_cod_cta_ctbl)       + ";" +
        string(tt_concilia_sdos_terceiros.tta_des_tit_ctbl)       + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_sdo_terc_inic)  + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_mov_terc_db)    + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_mov_terc_cr)    + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_sdo_terc_fim)   + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_sdo_ctbl_inic)  + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_mov_ctbl_db)    + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_mov_ctbl_cr)    + ";" +
        string(tt_concilia_sdos_terceiros.ttv_val_sdo_ctbl_fim)   + ";" +
        string(tt_concilia_sdos_terceiros.ttv_log_dif_sdo)        + ";" +
        string(tt_concilia_sdos_terceiros.ttv_log_dif_mov)        skip.
end.

for each tt_lanctos_ctbl_concil:
    put stream s2 unformatted
        string(tt_lanctos_ctbl_concil.tta_cod_cta_ctbl)           + ";" +
        string(tt_lanctos_ctbl_concil.tta_des_tit_ctbl)           + ";" +
        string(tt_lanctos_ctbl_concil.tta_val_lancto_ctbl)        + ";" +
        string(tt_lanctos_ctbl_concil.tta_ind_natur_lancto)       + ";" +
        string(tt_lanctos_ctbl_concil.tta_dat_lancto_ctbl)        + ";" +
        string(tt_lanctos_ctbl_concil.tta_num_lote_ctbl)          + ";" +
        string(tt_lanctos_ctbl_concil.tta_num_lancto_ctbl)        + ";" +
        string(tt_lanctos_ctbl_concil.tta_num_seq_lancto_ctbl)    skip.
end.

for each tt_erros_api:
    put stream s3 unformatted
        string(tt_erros_api.ttv_num_erro)                         + ";" +
        string(tt_erros_api.ttv_des_mensagem)                     + ";" +
        string(tt_erros_api.ttv_des_ajuda)                        skip.
end.

output stream s1 close.
output stream s2 close.
output stream s3 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.

Documento Traduzido

  • Xxxxxx