API para Generación de Gráficos


Nombre Físico: prgfin/lpy/lpy724za.py

Versión de Integración: 001

Objetivo: 

Crear el objeto de negocio que se utilizará para generar una visión de datos que permitirá la emisión del libro de IVA, el cual lista todos los documentos registrados en el módulo de Cuentas por Pagar, en un período determinado, que tengan o no Impuesto al Valor Agregado vinculado.

Requisitos previos: 

No se aplica.


Consideraciones generales


  • Se pasan como parámetros de entrada (input) y salida (output) para la API. Como entrada (input) son: Sucursal Inicial, Sucursal Final, Fecha Emisión Inicial, Fecha de Emisión Final, Proveedor Inicial, Proveedor Final, Grupo de Proveedores Inicial, Grupo de Proveedores Final, Solo Facturas con IVA, como Salida (Output) se tienen: RUC de la Empresa, tt_iva_cprs_pry e tt_erros_api.
  • La presentación de las informaciones de la API se realizar a través de la ejecución de la API prgfin/lpy/lpy724za.py.

Parámetros de Entrada 


Temp-table tt_iva_cprs_pry: En la Temp-Table tt_iva_cprs_pry, se definen las características generales y datos que se devolverán.

Descripción de los 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



ttv_num_estab

Integer



ttv_num_pto_vta_fatur_inic

Integer




ttv_cb1_calc_dat_term_carenc

Integer




ttv_cod_1

Character




tta_cod_espec_docto

Character



tta_cod_ser_ap

Character



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



ttv_cod_tip_documento

Character




ttv_cod_condicao

Character




ttv_num_parc

Integer



Atributo

Descripción

ttv_num_dia

Número de días

ttv_cod_tit_ap

Título del cuentas por pagar

ttv_dat_docto

Fecha de emisión

ttv_nom_pessoa_cli

Nombre Persona Física 

ttv_cod_rut

Número del RUC

ttv_val_vta_grav_2

Valor Tributado 5%

ttv_val_impuesto_2

Valor Impuesto 5%

ttv_val_vta_exento_2

Valor exento

ttv_val_orig_tit_ap_2

Valor Original

ttv_val_base_imponible_2


ttv_cdn_fornecedor

Código del Proveedor

ttv_num_estab

Número de la Sucursal

ttv_num_pto_vta_fatur_inic

Número Punto de Venta

ttv_cb1_calc_dat_term_carenc

Fecha Término Carencia

ttv_cod_1

Número Timbrado

tta_cod_espec_docto

Clase de documento

tta_cod_ser_ap

Serie del Documento

ttv_val_vta_grav_3

Valor Tributado 10%

ttv_val_impuesto_3

Valor Impuesto 10%

ttv_val_vta_grav_tot

Valor Total Tributado

ttv_val_impuesto_tot

Valor Total Impuesto

ttv_cod_operac_2

Código de la operación

ttv_cod_tip_docto_2

Código Tipo Documento

ttv_num_timbdo

Número del timbrado

ttv_cod_estab

Código de la sucursal

ttv_cod_tit_ap_2

Código del título

tta_val_cotac_indic_econ

Cotización

tta_dat_transacao

Fecha de transacción

ttv_num_pto_vta_fatur

Punto de venta de la factura

tta_cod_refer

Código de referencia

ttv_cod_tip_documento

Tipo de documento

ttv_cod_condicao

Condición de pago

ttv_num_parc

Número de cuotas


Ejecución


Sintaxis:

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

/* Busca líneas del libro */
RUN pi_retorna_dados_iva_compras IN v_hdl_api (INPUT v_cod_estab_ini,      /* Sucursal Inicial */
                                               INPUT v_cod_estab_fim,      /* Sucursal Final */
                                               INPUT v_dat_emis_inic,      /* Fecha Emisión Inicial */
                                               INPUT v_dat_emis_fim,       /* Fecha Emisión Final */
                                               INPUT v_cdn_fornecedor_ini, /* Proveedor Inicial */
                                               INPUT v_cdn_fornecedor_fim, /* Proveedor Final */
                                               INPUT v_cod_grp_fornec_ini, /* Grupo Proveedores Inicial */
                                               INPUT v_cod_grp_fornec_fim, /* Grupo Proveedores Final */
                                               INPUT v_log_smte_com_iva,   /* Solamente Facturas con IVA */
                                               OUTPUT v_cod_ruc,           /* RUC de la Empresa */
                                               OUTPUT TABLE tt_iva_cprs_pry,
                                               OUTPUT TABLE tt_erros_api).

En caso de error en las validaciones anteriores, el error se retornará por medio de la temp-table ttt_erros_api.

Si los datos se aceptan, la API devolverá las informaciones para generar el libro IVA compras cuando se llame 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 líneas del libro */
     run pi_retorna_dados_iva_compras in v_hdl_api (input "",           /* Sucursal Inicial */
                                                    input "ZZZZZ",      /* Sucursal Final */
                                                    input 01/01/2025,   /* Fecha Emisión Inicial */
                                                    input 06/30/2025,   /* Fecha Emisión Final */
                                                    input 0,            /* Proveedor Inicial */
                                                    input 999999,       /* Proveedor Final */
                                                    input "",           /* Grupo Proveedores Inicial */
                                                    input "ZZZZ",       /* Grupo Proveedores Final */
                                                    input no,           /* Solamente Facturas con IVA */
                                                    output v_cod_ruc,   /* RUC de la 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 líneas del libro */
     run pi_retorna_dados_iva_compras in v_hdl_api (input "",           /* Sucursal Inicial */
                                                    input "ZZZZZ",      /* Sucursal Final */
                                                    input 01/01/2025,   /* Fecha Emisión Inicial */
                                                    input 06/30/2025,   /* Fecha Emisión Final */
                                                    input 0,            /* Proveedor Inicial */
                                                    input 999999,       /* Proveedor Final */
                                                    input "",           /* Grupo Proveedores Inicial */
                                                    input "ZZZZ",       /* Grupo Proveedores Final */
                                                    input no,           /* Solamente Facturas con IVA */
                                                    output v_cod_ruc,   /* RUC de la 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 Siguiente Página del Libro */
    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.

    /* Actualiza última Página del Libro */
    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 "No encontró el registro de parámetros del Libro IVA Compras" view-as alert-box.
                 
    delete procedure v_hdl_api.
    
end.




Parámetros de salida


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

La tt-erros es una tabla de retorno de datos referente a los errores encontrados en el manejo de los datos de las tablas de entrada. La tt-erros retorna datos por medio de un registro que contiene el código del error y su descripción.

Obs.: Después de haber hecho la llamada a la API es imprescindible tratar los errores retornados si existen.

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 temp-table.

ttv_des_mensagem

Descripción del error.

ttv_des_ajuda

Descripción de la ayuda.

ttv_row_id

Rowid.

Documento Traduzido

  • Xxxx