API para geração e envio de XML dos comprovantes eletrônicos do Paraguai


Nome Físico: local/pry/pry1200.p

Versão de Integração: 001

Objetivo: 

Gerar o XML para autorização de comprovantes eletrônicos do Paraguai. 

Pré-requisitos: 

Não se aplica.


Considerações Gerais


  • São passados parâmetros de input e output para a API.
    • Input é enviado o rowid da tabela internac-autoriz-nfe.
    • Output: temp-table de erros RowErrors.
  • São geradas diversas temp-tables para a geração do XML, que serão demonstradas abaixo.

Tabelas temporárias para geração do XML


Descrição dos campos 

TEMP-TABLE tt-enviar

Atributo

Descrição

Tipo

Formato

Valor Inicial

arq-xml

Diretório e nome do arquivo XML

Character



Id

Codigo CDC

Character



dDVId

Dígito Verificador CDC

Character



dFecFirma

Data Autorização

Character



dSisFact 

Fixo 1

Character



iTipEmi

Tipo Emissão: Fixo 1

Integer



 dDesTipEmi   

Tipo Emissão: Normal

Character



 dCodSeg      

Código Segurança

Character



 dInfoEmi     

Observação Nota

Character



 dInfoFisc 

Observação Remito ou 

Dados Exportação

Character



 iTiDE      

Tipo Comprovante

Integer



 dDesTiDE  

Descrição Tipo Comprovante

Character



 dNumTim      

Número Timbrado

Character

999999999


 dEst         

Estabelecimento Fiscal

Character

999


 dPunExp   

Ponto de Expedição

Character



 dNumDoc      

Numero Documento

Character



 dSerieNum    

Série

Character



 dFeIniT      

Data Início Timbrado

Character



 dFeFinT      

Data Fim Timbrado (não é enviado)

Character



 dFeEmiDE 

Data emissão comprovante

Character



 iTipTra      

Tipo Transação

Integer



 dDesTipTra   

Descrição Tipo Transação

Character



 iTImp        

Tipo Imposto

Integer



 dDesTImp     

Descrição Tipo Imposto

Character



 cMoneOpe    

Sigla Moeda

Character



 dDesMoneOpe 

Descrição Moeda

Character



 dCondTiCam   

Tipo Cotação: Global

Integer



 dTiCam       

Cotação

Decimal



 iCondAnt   

Tipo Antecipação: Global

Integer



 dDesCondAnt  

Descrição Tipo Antecipação

Character



iIndPres

Indicador de Presença

Integer



dDesIndPres

Descrição Indicador de Presença

Character



dFecEmNR

Data (não enviado)

Character



iMotEmi    

Motivo Emissão (NC/ND)

Integer



dDesMotEmi 

Descrição Motivo

Character



iMotEmiNR     

Motivo Guia Remissão

Integer



dDesMotEmiNR  

Descrição Motivo Guia Remissão

Character



iRespEmiNR 

Responsável Emissão Guia Remissão

Integer



dDesRespEmiNR 

Descrição Responsável Emissão Guia Remissão

Character



dKmR          

Distância (km)

Integer



dFecEm        

Data Futura Emissão Fatura

Character



dSubExe    

Total Isento

Decimal

999999999999999.99999999


dSubExo         

Total Exonerado

Decimal

999999999999999.99999999


dSub5       

Total Itens IVA 5%

Decimal

999999999999999.99999999


dSub10          

Total Itens IVA 10%

Decimal

999999999999999.99999999


dTotOpe     

Total Operação 

Decimal

999999999999999.99999999


dTotDesc       

Total Desconto

Decimal

999999999999999.99999999


dTotDescGlotem 

Total Desconto Global Item

Decimal

999999999999999.99999999


dTotAntItem  

Total Antecipação Item

Decimal

999999999999999.99999999


dTotAnt        

Total Antecipação

Decimal

999999999999999.99999999


dPorcDescTotal  

Percentual Desconto Total

Decimal

999.99999999


dDescTotal      

Desconto Total

Decimal

999999999999999.99999999


dAnticipo       

Antecipação

Decimal

999999999999999.99999999


dRedon          

Arredondamento

Decimal

999999999999999.99999999


dComi        

Comissão

Decimal

999999999999999.99999999


dTotGralOpe     

Total Geral Operação

Decimal

999999999999999.99999999


dIVA5           

Total IVA 5%

Decimal

999999999999999.99999999


dIVA10          

Total IVA 10%

Decimal

999999999999999.99999999


dLiqTotIVA5     

Total Liquido IVA 5%

Decimal

999999999999999.99999999


dLiqTotIVA10   

Total Liquido IVA 10%

Decimal

999999999999999.99999999


dIVAComi        

IVA Comissão

Decimal

999999999999999.99999999


dTotIVA   

Total IVA

Decimal

999999999999999.99999999


dBaseGrav5      

Base IVA 5%

Decimal

999999999999999.99999999


dBaseGrav10

Base IVA 10%

Decimal

999999999999999.99999999


dTBasGraIVA   

Total Base IVA Gravado

Decimal

999999999999999.99999999


dTotalGs  

Total Geral

Decimal

999999999999999.99999999


l-exporta       

Se documento de exportação

Logical


NO

TEMP-TABLE tt-emissor

Atributo

Descrição

Tipo

dRucEm     

RUC Emissor

Character

dDVEmi     

Dígito Verificador RUC

Integer

iTipCont   

Tipo Contribuinte

Integer

cTipReg 

Tipo Regime (Série)

Integer

dNomEmi  

Razão Social

Character

dNomFanEmi 

Nome Fantasia

Character

dDirEmi    

Endereço

Character

dNumCas    

Número

Integer

cDepEmi    

Departamento (Estado)

Integer

dDesDepEmi 

Descrição Estado

Character

cDisEmi    

não enviado

Integer

dDesDisEmi 

não enviado

Character

cCiuEmi    

Código Cidade

Integer

dDesCiuEmi 

Descrição Cidade

Character

dTelEmi    

Telefone

Character

dEmailE    

Email

Character

dDenSuc    

não enviado

Character

TEMP-TABLE tt-acteco

Atributo

Descrição

Tipo

cActEco

Código ACTECO (natureza operação)

Character

dDesActEco     

Descrição ACTECO

Character

TEMP-TABLE tt-receptor

Atributo

Descrição

Tipo

iNatRec     

Natureza Contribuinte

Integer

iTiOpe    

Tipo Operação (natureza operação)

Integer

cPaisRec  

Código País Receptor

Character

dDesPaisRe

Descrição País

Character

iTiContRec

Tipo de Contribuinte

Integer

dRucRec     

RUC Receptor

Character

dDVRec     

Dígito Verificador RUC

Integer

iTipIDRec

Código Fiscal Documento Identificação

Integer

dDTipIDRec 

Descrição Documento Identificação

Character

dNumIDRec

Número Documento Identificação

Character

dNomRec

Razão Social

Character

dNomFanRec 

Nome Fantasia

Character

dDirRec    

Endereço

Character

dNumCasRec

Número

Integer

cDepRec

Departamento (Estado)

Integer

dDesDepRec

Descrição Estado

Character

cDisRec

não enviado

Integer

dDesDisRec

não enviado

Character

cCiuRec

Código Cidade

Integer

dDesCiuRec

Descrição Cidade

Character

dTelRec

Telefone

Character

dEmailRec 

Email

Character

dCodCliente  

Código Emitente

Character


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.




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.