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-transp

Atributo

Descrição

Tipo

iTipTrans   

Motivo Transporte

Integer

dDesTipTrans

Descrição Motivo

Character

iModTrans   

Modalidade Transporte

Integer

dDesModTrans

Descrição Modalidade

Character

iRespFlete  

Responsável Emissão

Integer

cCondNeg  

Incoterm

Character

dNuManif    

Número Manifesto

Character

dNuDespImp  

não enviado

Character

dIniTras    

Data Início Traslado

Character

dFinTras    

Data Fim Traslado

Character

cPaisDest   

Código País Destino

Character

dDesPaisDest

Nome País

Character

dDirLocSal 

Endereço Saída

Character

dNumCasSal 

Número Casa Saída

Integer

cDepSal    

Departamento Saída

Integer

dDesDepSal 

Descrição

Character

cDisSal    

Distrito (não enviado)

Integer

dDesDisSal 

não enviado

Character

cCiuSal    

Cidade Saída

Integer

dDesCiuSal 

Descrição

Character

dTelSal    

Telefone

Character

dDirLocEnt 

Endereço Entrega

Character

dNumCasEnt 

Número Casa Entrega

Integer

cDepEnt  

Departamento Entrega

Integer

dDesDepEnt 

Descrição

Character

cDisEnt    

Distrito (não enviado)

Integer

dDesDisEnt

não enviado

Character

cCiuEnt    

Cidade Entrega

Integer

dDesCiuEnt 

Descrição

Character

dTelEnt    

Telefone

Character

iNatTrans  

Tipo Contribuinte Transportadora

Integer

dNomTrans 

Nome Transportadora

Character

dRucTrans    

RUC

Character

dDVTrans     

Dígito Verificador RUC

Integer

iTipIDTrans  

Código Fiscal Docto Identificação

Integer

dDTipIDTrans 

Descrição Docto Identificação

Character

dNumIDTrans  

Número Docto Identificação

Character

cNacTrans    

Código País Transportadora

Character

dDesNacTrans 

Nome País

Character

dNumIDChof

Documento Identificação Motorista

Character

dNomChof     

Nome Motorista

Character

dDomFisc     

Endereço Transportadora

Character

dDirChof     

Endereço Motorista

Character

TEMP-TABLE tt-veic

Atributo

Descrição

Tipo

dTiVehTras 

Descrição Modalidade Transporte

Character

dMarVeh    

Marca

Character

dTipIdenVeh

Tipo Identificação Veículo

Integer

dNroIDVeh  

Número Identificação

Character

dNroMatVeh 

Número Matrícula

Character

dNroVuelo  

Número Vôo 

Character

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



TEMP-TABLE tt-itens

Atributo

Descrição

Tipo

Formato

sequencia      

Sequência do item 

Integer


dCodInt        

Código Item

Character


dNCM    

Código NCM

Integer


dDesProSer  

Descrição Item

Character


cUniMed        

Código Unidade Medida

Integer


dDesUniMed   

Descrição Unidade Medida

Character


dCantProSer 

Quantidade

Decimal

9999999999.9999

cRelMerc       

Tolerância

Integer


dDesRelMerc    

Descrição Tolerância

Character


dCanQuiMer 

Quantidade Tolerância

Decimal

9999999999.9999

dPorQuiMer     

Percentual Tolerância

Decimal

999.99999999

dPUniProSer    

Preço Unitário com Impostos

Decimal

999999999999999.99999999

dTotBruOpeItem 

Total Item

Decimal

999999999999999.99999999

dDescItem     

Desconto Unitário Item

Decimal

999999999999999.99999999

dPorcDesIt     

% Desconto Total Item

Decimal

999.99999999

dDescGloItem  

Desconto Global Item

Decimal

999999999999999.99999999

dTotOpeItem    

Total Item sem Despesas

Decimal

999999999999999.99999999

dTotOpeGs      

não enviado

Decimal

999999999999999.99999999

dAntPreUniIt   

não enviado

Decimal

999999999999999.99999999

dAntGloPreUniIt

Preço Unitário da Antecipação

Decimal

999999999999999.99999999

dInfItem       

não enviado, somente Despesa quando corresponda

Character




TEMP-TABLE tt-imposto

Atributo

Descrição

Tipo

Formato

sequencia      

Sequência do item 

Integer


iAfecIVA    

Código Item

Integer


dDesAfecIVA 

Tipo Afetação IVA

Character


dPropIVA   

Proporção Gravação IVA

Decimal

999.99999999

dTasaIVA    

% IVA

Integer


dBasGravIVA 

Base de cálculo

Decimal

999999999999999.99999999

dLiqIVAItem 

Valor IVA

Decimal

999999999999999.99999999

dBasExe     

Base Isenta

Decimal

999999999999999.99999999

TEMP-TABLE tt-pagos

Atributo

Descrição

Tipo

Formato

iCondOpe  

Código Condição Operação

Integer


dDCondOpe 

Descrição Condição Operação

Character


iCondCred 

Código Condição Crédito

Integer


dDCondCred

Descrição Condição Crédito

Character


dPlazoCre 

Prazo Condição Crédito

Character


dCuotas   

Parcelas

Integer


dMonEnt   

Valor das antecipações quando condição à crédito

Decimal

999999999999999.9999

TEMP-TABLE tt-monto-ini

Atributo

Descrição

Tipo

Formato

iTiPago  

Código Tipo Pagamento

Integer


dDesTiPag   

Descrição Tipo Pagamento

Character


dMonTiPag   

Valor conforme Tipo Pagamento

Decimal

999999999999999.9999

cMoneTiPag 

Moeda 

Character


dDMoneTiPag 

Descrição Moeda

Character


dTiCamTiPag 

Cotação

Decimal

99999.9999

TEMP-TABLE tt-parcelas

Atributo

Descrição

Tipo

Formato

cMoneCuo 

Moeda Parcela

Character


dDMoneCuo

Descrição Moeda

Character


dMonCuota

Valor Parcela

Decimal

999999999999999.9999

dVencCuo 

Vencimento Parcela

Character




TEMP-TABLE tt-compl-comercial

Atributo

Descrição

Tipo

 OrdCompra

Número Ordem Compra

Character

dOrdVta  

Número Pedido Representante

Character

dAsiento 

não enviado

Character

TEMP-TABLE tt-doc-assoc

Atributo

Descrição

Tipo

iTipDocAso

Tipo Documento Associado

Integer

dDesTipDocAso

Descrição Tipo Documento Associado

Character

dCdCDERef

Código Autorização Documento Associado

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.