1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Progress 4GL web service procedure

Discussão em 'StackOverflow' iniciado por fdantas, Maio 23, 2019.

  1. fdantas

    fdantas Administrator Moderador

    I'm trying to update our stocks thought the Magento API using Progress 4GL (OpenEdge 10.2B)

    So far so good, ie: I can update the stock if the SKU is a match. But if it isn't, it doesn't return an error.

    So I looked into how ABL manages SAOP fault errors, and found some examples which I tried to implement. But to no avail.

    My new code is as follows:

    DEFINE VARIABLE hWebService AS HANDLE NO-UNDO.
    DEFINE VARIABLE hMage_Api_Model_Server_V2_HandlerPortType AS HANDLE NO-UNDO.
    DEFINE VARIABLE username AS CHARACTER NO-UNDO.
    DEFINE VARIABLE apiKey AS CHARACTER NO-UNDO.
    DEFINE VARIABLE stock AS CHARACTER NO-UNDO.
    DEFINE VARIABLE codigo AS CHARACTER NO-UNDO.
    DEFINE VARIABLE loginReturn AS CHARACTER NO-UNDO.
    DEFINE VARIABLE product AS CHARACTER NO-UNDO.
    DEFINE VARIABLE data AS LONGCHAR NO-UNDO.
    DEFINE VARIABLE resultado AS INTEGER NO-UNDO.
    DEFINE VARIABLE SOAP-FAULT-CODE AS CHARACTER NO-UNDO.
    DEFINE VARIABLE SOAP-FAULT-DETAIL AS CHARACTER NO-UNDO.
    DEFINE VARIABLE iError AS INTEGER NO-UNDO.
    DEFINE VARIABLE cError AS CHARACTER NO-UNDO.

    DO ON ERROR UNDO, THROW:
    CREATE SERVER hWebService.

    /* TODO: Definir variaveis globais */
    username = 'username'.
    apiKey = 'password'.

    hWebService:CONNECT(" -WSDL 'http://www.medicalemcasa.com/api/v2_soap?wsdl'").

    RUN Mage_Api_Model_Server_V2_HandlerPortType SET hMage_Api_Model_Server_V2_HandlerPortType ON hWebService.
    RUN login IN hMage_Api_Model_Server_V2_HandlerPortType(INPUT username, INPUT apiKey, OUTPUT loginReturn).


    product = "100asda001a".
    data = "
    <data>
    <qty>'250'</qty>
    </data>
    ".

    PROCEDURE catalogInventoryStockItemUpdate:
    DEFINE INPUT PARAMETER data AS CHARACTER NO-UNDO.
    END PROCEDURE.

    RUN catalogInventoryStockItemUpdate IN hMage_Api_Model_Server_V2_HandlerPortType (INPUT loginReturn, INPUT product, INPUT data, OUTPUT resultado).
    DISPLAY resultado.

    CATCH mySoapErrorObject AS Progress.Lang.SoapFaultError:
    DO iError = 1 TO mySoapErrorObject:NumMessages:
    cError = cError + mySoapErrorObject:getMessage(iError) + "~n".
    END.
    DELETE OBJECT mySoapErrorObject.
    END CATCH.

    CATCH mySystemErrorObject AS Progress.Lang.SysError:
    DO iError = 1 TO mySystemErrorObject:NumMessages:
    cError = cError + mySystemErrorObject:getMessage(iError) + "~n".
    END.
    DELETE OBJECT mySystemErrorObject.
    END CATCH.

    FINALLY:
    IF cError <> "" THEN DO:
    MESSAGE "Errors occured:" SKIP
    cError
    VIEW-AS ALERT-BOX ERROR.
    END.
    END FINALLY.
    END.

    hWebService:DISCONNECT().
    DELETE OBJECT hWebService.

    Continue reading...

Compartilhe esta Página