API para generación de gráficos


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

Versión de integración: 001

Objetivo: 

Crear el objeto de negocio que se utilizará para generar una visión de datos que permita verificar la información del Listado en detalle de las Compras y exportar en el formato deseado.

Requisito previo: 

No se aplica.


Consideraciones generales


  • Se pasan como parámetros a la API, como Input el mes y el año de la declaración y como Output el archivo con las declaraciones y la tabla temporal de errores.
  • La visualización de la información de la API se realiza a través de la ejecución de la API prgfin/luy/luy702za.py.

Parámetros de entrada 


Temp-table tt-atributos: En la Temp-Table tt_dados_formulario, se definen las características generales del formulario de presentación para cumplir con la legislación F2181.


Descripción de los campos 

TEMP-TABLE tt_dados_formulario

Atributo

Tipo

Formato

Valor Inicial

Índice

ttv_num_form

Integer


1

ttv_cod_periodo

Character



ttv_cod_docto_pessoa

Character



ttv_cod_dat_emis_docto

Character



ttv_cod_rubr

Character



ttv_val_operac

Decimal




Atributo

Descripción

ttv_num_form

Identifica el número de formulario de la declaración.

ttv_cod_periodo

Período.

ttv_cod_docto_pessoa

Documento de la persona.

ttv_cod_dat_emis_docto

Fecha de emisión del documento

ttv_cod_rubr

Rubro.

ttv_val_operac

Valor total de la operación.



Temp-Table tt_fornec_F2181_apb: En la Temp-Table tt_fornec_F2181_apb se definen las informaciones relacionadas al proveedor del documento.

TEMP-TABLE tt-points

Atributo

Tipo

Formato

Valor Inicial

Índice

tta_cod_empresa

Character



tta_cdn_fornecedor

Integer


1

tta_nom_pessoa

Character


“”


tta_cod_id_feder

Character




ttv_log_estrang

Character




Atributo

Descripción

tta_cod_empresa

Código de la empresa.

tta_cdn_fornecedor

Número del proveedor.

tta_nom_pessoa

Nombre de la persona.

tta_cod_id_feder

Documento.

ttv_log_estrang

¿Es extranjero?



Temp-Table tt_impostos_F2181_apb: En la Temp-Table tt_impostos_F2181_apb se definen los impuestos vinculados a los documentos.

 

TEMP-TABLE tt_impostos_F2181_apb

Atributo

Tipo

Formato

Valor Inicial

Índice

tta_cod_estab

Character



tta_num_id_tit_ap

Integer


1

tta_cod_pais

Character



tta_cod_unid_federac

Integer



tta_cod_imposto

Character



tta_ind_tip_impto

Character




tta_ind_clas_impto

Character




tta_ind_tip_tax

Character




ttv_val_base

Decimal




ttv_val_imposto 

Decimal




Atributo

Descripción

tta_cod_estab

Sucursal

tta_num_id_tit_ap

Token título.

tta_cod_pais

País.

tta_cod_unid_federac

Estado/Provincia/Región

tta_cod_imposto

Impuesto

tta_ind_tip_impto

Tipo impuesto

tta_ind_clas_impto

Clasificación Impuesto.

tta_ind_tip_tax

Tipo Tasa.

ttv_val_base

Valor tributable.

ttv_val_imposto 

Valor Impuesto




Temp-Table tt_rubros_F2181_apb: Información relacionada a los rubros de los proveedores.

TEMP-TABLE tt_rubros_F2181_apb

Atributo

Tipo

Formato

Valor Inicial

Índice

ttv_cod_rubr

Character


1

tta_cod_estab

Character



tta_num_id_tit_ap

Integer



ttv_val_operac_rubr 

Decimal


0


Atributo

Descripción

ttv_cod_rubr

Identifica el código del Rubro.

tta_cod_estab

Sucursal

tta_num_id_tit_ap

Token del título.

ttv_val_operac_rubr 

Valor total de la operación por rubro.




Temp-table tt_titulo_F2181_apb: Informaciones relacionadas a los títulos vinculados en la declaración.

TEMP-TABLE tt_titulo_F2181_apb


Atributo

Tipo

Formato

Valor Inicial

Índice primario

Índice secundario

tta_cdn_fornecedor 

Integer




tta_cod_estab

Character



tta_num_id_tit_ap





tta_cod_espec_docto





tta_cod_ser_docto





tta_cod_tit_ap





tta_cod_parcela





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

Descripción

tta_cdn_fornecedor 

Proveedor del título.

tta_cod_estab

Sucursal

tta_num_id_tit_ap

Token del título.

tta_cod_espec_docto

Clase

tta_cod_ser_docto

Serie

tta_cod_tit_ap

Código del título.

tta_cod_parcela

Partida

tta_ind_tip_espec_docto

Tipo de clase

tta_dat_emis_docto

Fecha de emisión

tta_cod_indic_econ

Moneda

tta_val_origin_tit_ap

Valor original del título.

ttv_val_iva_basic

Valor total IVA tasa básica

ttv_val_iva_min

Valor total IVA tasa mínima

ttv_val_retenc_iva

Valor total Retención IVA.

ttv_val_isento

Valor total exento.


Ejecución


Sintaxis:

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).

En caso de error en las validaciones anteriores, el error se devolverá a través de la temp-table ttt_erros_api.

Si los datos se aceptan, la API devolverá las informaciones para generar el formulario 2181 cuando se llame a la procedure pi_main_formulario_2181 o devolverá los detalles de los títulos e impuestos, si se llama a la 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 salida


Si el retorno es NOK, todos los errores encontrados se devolverán en la tabla Temp-Table tt_erros_api:

La tt-erros es una tabla de devolución de datos relacionados a los errores encontrados en la manipulación de los datos de las tablas de entrada. A tt-erros devuelve datos por medio de un registro que contiene el código del error y su descripción.

Obs.: Después de hacer la llamada API es imprescindible tratar los errores devueltos si existieran.

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

Descripción

ttv_num_erro

Número del error Secuencia dentro de la temp-table.

ttv_des_mensagem

Descripción del error.

ttv_des_ajuda

Descripción ayuda.

ttv_row_id

Rowid.