Ir al contenido principal

Destacado

API para actualizar customer profile Oracle Cloud

  En ocasiones necesitamos actualizar datos para muchos registros y para evitar hacer esto uno por uno, Oracle tiene disponibles herramientas como SOAP Web Services y REST API Services. En esta publicación vamos hacer una actualización del valor de Credit Limit (Limite de Credit) para un cliente en el modulo de AR (Account Receivable o de Cuentas por Cobrar) Primero vamos a la liga de documentacion  https://docs.oracle.com/en/  y ahí buscamos en este caso la sección de finanzas Luego seleccionamos Integrate Seleccionamos Review  SOAP Web Services Dentro buscamos la sección de Customer Profile Vamos a utilizar la URL que viene en esa pantalla Service WSDL URL: https://servername/fscmService/ReceivablesCustomerProfileService?WSDL Vamos a entrar a Postman y desde ahí vamos armar  el xml , primero vamos agregar un request Luego vamos a poner el tipo Post y vamos a poner la URL que vimos dos pasos atrás, solo tengan cuidado de cambiar el nombre de su servidor  URL:  https:// servername /fsc

Crear Archivo XML desde Progress 4gl

Bienvenidos a otra semana en nuestro blog de programación, les quiero compartir un ejemplo de como crear un archivo XML desde Progress 4gl, esto es necesario en casos de comunicación con otros sistemas.


Primero que es un archivo XML son siglas de Extensible Markup Language , es un lenguaje que maneja etiquetas para definir la estructura de un layout para comunicar información, almacenar información y que se definan las reglas o características de la información para siempre hablar en los mismos término.

Para poder leer un XML siempre tendremos su contrapartida que es un XSD que nos sirve para definir la longitud de los campos, el tipo de campo si es carácter, entero o decimal.

Por ejemplo en México que tenemos el tema de facturación/complementos de facturación y contabilidad electrónicos para integrar la información al SAT esta institución entrega la definición del XML, por ejemplo el documento se ve así como las siguientes imágenes



La explicación en diagrama



Ejemplo


El objetivo del XML es que sea fácil de leer y de programar, veamos un ejemplo de como generar un archivo XML desde Progress 4gl

Primero un XML es un archivo con texto así que en Progress como generar un CSV es decir se trata igual como un archivo plano, la diferencia es como ir tratando las etiquetas, les voy a enseñar parte de un programa para generar el XML de Cuentas para contabilidad Electrónica



     OUTPUT STREAM sat-cat TO VALUE(vc-file) PAGE-SIZE 0
       CONVERT SOURCE "ISO8859-1" TARGET "UTF-8".
       
       /* Headers */
       FOR FIRST tablesat_mstr WHERE tablesat_code = "001"  NO-LOCK:
             
           PUT STREAM sat-cat UNFORMATTED     
               "<?xml version=" + QUOTER("1.0") + " encoding=" + 
               QUOTER("UTF-8") + "?> "    
               SKIP.
           PUT STREAM sat-cat UNFORMATTED                
                "<catalogocuentas:Catalogo xsi:schemaLocation=" + 
                QUOTER(tablesat_loc) +
                " xmlns:xsi=" + QUOTER(sat_xsi)  +
                " Version=" + QUOTER(sat__qad1)  + 
                " RFC=" + QUOTER(vc-rfc)  + 
                " Mes=" + 
                QUOTER(FILL("0", 2 - LENGTH(STRING(periodo))) + 
                STRING(periodo)) + 
                " Anio= " + QUOTER(STRING(Anio)) + 
                " xmlns:catalogocuentas=" + QUOTER(sat_doc) + ">"    
                SKIP.
       END. /* FOR FIRST tablesat_mstr WHERE tablesat_code = "001"NO-LOCK: */

   
       /* Details XML  */
       FOR EACH  tablesat2_mstr WHERE tablesat2_rfc = vc-rfc:SCREEN-VALUE AND 
                                      tablesat2_active = true      NO-LOCK:
        
           vc_account = "".
           vc_account = REPLACE(tablesat2_desc, "&", "") .
           vc_account = REPLACE(vc_account, "%", "") .
              
           PUT STREAM sat-cat UNFORMATTED       
               "<catalogocuentas:Ctas CodAgrup="            + 
               QUOTER(sat2_cod_agrup)                + 
               " NumCta=" + QUOTER(CAPS(sat2_acct))    +
               " Desc="   + QUOTER(vc_account)              + 
               " Nivel="  + QUOTER(STRING(sat2_level)) + 
               " Natur="  + QUOTER(CAPS(sat2_origin))  + "/>"         
               SKIP.
                      
       END.  /* FOR EACH  sat2_mstr  NO-LOCK:  */
       
       PUT STREAM sat-cat UNFORMATTED        
            "</catalogocuentas:Catalogo>"
            SKIP.

      OUTPUT STREAM sat-cat CLOSE.


Ejecución del programa nos crea el siguiente archivo


Este es solo un ejemplo, pero puede funcionar para comunicar 2 sistemas diferentes, enviar información entre usuarios y un tip para leer el XML en modo tabla , pueden abrirlo en Excel, lo que hago es arrastrar el archivo XML a una ventana de Excel y me pregunta como quiero abrir el archivo, selecciono XML como tabla 


Espero les sea de utilidad y les recomiendo leer también el POST dentro de este mismo blog acerca de como leer XML con Python
https://www.programacionparatodos.com/2019/05/programapython.html

También si quieren ver más programas en Progress 4gl les comparto las ligas

Como utilizar ACCUM en Progress como SUM de SQL 

Como Hacer vectores dinámicos en Progress


Como Hacer funciones en Progress

https://www.programacionparatodos.com/2020/06/FuncionesenProgress4gl.html

No olvide compartirnos y seguirnos en este blog o en Facebook.

Comentarios

  1. Como importar un archivo XML en progress 4gl para leer su información???

    ResponderBorrar
  2. Hola para leerlo es un input file y lRetOK = hDSet:READ-XML(cSourceType, cFile, cReadMode, cSchemaLocation,
    lOverrideDefaultMapping, cFieldTypeMapping, cVerifySchemaMode).
    Mira la ayuda de Progress
    https://docs.progress.com/bundle/openedge-abl-reference-117/page/READ-XML-method.html

    ResponderBorrar

Publicar un comentario

Entradas populares

Chatbot