SOAP con PHP?

Inicio Foros Foro principal Desarrolladores SOAP con PHP?

  • Este debate está vacío.
Viendo 12 entradas - de la 1 a la 12 (de un total de 12)
  • Autor
    Entradas
  • #32532
    Javier Loffredo
    Participante

    Buenas, estoy tratando de hacer unas consultas usando el SOAP de Libertya en PHP, pero no termino de entender la documentación, que esta orientada a desarrollos en JAVA.

    ¿Alguien tendrá algun ejemplo de consulta, por ejemplo de entidad comercial, usando PHP?

    Gracias!!
    Javier

    #37943
    Saulo Gil
    Miembro
    Code:
    ‘Admin’,
    ‘password’ => ‘Admin’,
    ‘clientID’ => ‘1010016’,
    ‘orgID’ => ‘1010053’,
    );

    $arg = “01”; // Clave de EC

    $result = $client->bPartnerRetrieveByValue( $base_args, $arg );

    print_r($result);

    #37951
    Javier Loffredo
    Participante

    Perfecto.

    Muchas Gracias!!
    Otra pregunta, hay forma de traer todas las entidades comerciales?

    #37952
    Saulo Gil
    Miembro

    Aparentemente no, seguramente se pueda agregar facilmente editando

    Code:
    src/org/libertya/ws/handler/BPartnerCRUDHandler.java

    Fuentes de los Web Services

    #37953
    Federico Cristina
    Superadministrador

    Buenas,

    Para lo que será el próximo release de Libertya (estimado principios de 2014), LYWS contará con varias ampliaciones. Una de ellas es la posibilidad de invocar a recordQuery, el cual es una funcionalidad genérica que permite recuperar registros de cualquier tabla, indicando criterios de filtrado, selección de columnas a recuperar, etc.

    Si no podés esperar, podrías animarte a compilar el proyecto LibertyaWS alojado en Google Code y regenerar el axis.jar, aunque se requiere algo de conocimiento al respecto.

    Saludos!
    Federico

    #37954
    Javier Loffredo
    Participante

    Si, puedo esperar, estoy mas que nada haciendo pruebas, nada concreto todavia.

    Suponiendo que quiero crear una cuenta desde SOAP, con el bPartnerCreate, ¿donde puedo ver cuales son los parametros que puedo usar? o es directamente los nombres de los campos de la tabla?

    Gracias!

    #37985
    Saulo Gil
    Miembro
    #37986
    Javier Loffredo
    Participante

    Gracias, ya lo había leido y descargado la API.
    Pero sigo sin entender como armo el array para crear una nueva entidad (en php).

    /**
    * Incorpora una nueva columna a los datos de parámetro la E.C.
    * @param columnName nombre de la columna
    * @param columnValue valor de la columna
    */
    public void addColumnToBPartner(String columnName, String columnValue) {

    }
    /**
    * Incorpora una nueva columna a los datos de parámetro de dirección de la E.C.
    * @param columnName nombre de la columna
    * @param columnValue valor de la columna
    */
    public void addColumnToLocation(String columnName, String columnValue) {

    }

    #37987
    Jorge Obeaga
    Miembro

    Te paso un ejemplo de una creación de EntidadComercial desde PHP.
    Estoy usando nusoap para el cliente soap. Fijate que hay algunos IDs hardcodeados que quizás no coincidan con tu instancia de libertya: cualquier problema te debería aparecer bien especificado en el resultado de la invocación:

    Code:
    require_once(‘nusoap/nusoap.php’);
    $client = new nusoap_client($url, true);

    $bean = array(
    // Login de libertya:
    ‘userName’ => $user,
    ‘password’ => $pass,
    ‘clientID’ => $clientID,
    ‘orgID’ => $orgID,
    // Datos de la entidad comercial
    ‘mainTable’ => array(
    ‘Name’ => $name,
    ‘Description’ => $description,
    ‘TaxID’ => $cuit,
    ‘URL’ => $website,
    ‘IsActive’ => ‘true’,
    ‘IsVendor’ => ‘false’,
    ‘IsCustomer’ => ‘N’,
    ‘IsProspect’ => ‘true’,
    ‘IsEmployee’ => ‘false’,
    ‘TaxIdType’ => ’80’, // CUIT
    ),
    // Datos de la location de la entidad comercial
    ‘location’ => array(
    ‘Address1’ => $address,
    ‘Phone’ => $phone1,
    ‘Phone2’ => $phone2,
    ‘Fax’ => $fax,
    ‘EMail’ => $email1,
    ‘Name’ => $address,
    ‘City’ => $ciudad,
    ‘IsBillTo’ => ‘true’,
    ‘IsRemitTo’ => ‘true’,
    ‘IsPayFrom’ => ‘true’,
    ‘IsActive’ => ‘true’,
    ‘IsShipTo’ => ‘true’,
    ‘C_Country_ID’ => ‘119’, // ARG
    ‘C_Region_ID’ => ‘1000083’, // BS AS
    ),
    );

    $params = array(
    $bean,
    );

    $result = $client->call(“bPartnerCreate”, $params);

    print_r($result); // vemos qué devolvió la API

    #37993
    Javier Loffredo
    Participante

    Gracias!! me faltaba el ‘mainTable’ y el ‘location’.

    Solo como referencia, el error que me daba era este:


    org.libertya.ws.exception.ModelException: Error al persistir entidad comercial:Error: : – org.postgresql.util.PSQLException: ERROR: el valor null para la columna «c_bp_group_id» viola la restricción not null (org.libertya.ws.handler.BPartnerCRUDHandler.bPartnerCreate(BPartnerCRUDHandler.java:40), org.libertya.ws.LibertyaWSImpl.bPartnerCreate(LibertyaWSImpl.java:37), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method), sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39), sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25), java.lang.reflect.Method.invoke(Method.java:597), org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397), org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186), org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323), org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32), org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118), org.apache.axis.SimpleChain.invoke(SimpleChain.java:83), org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454), org.apache.axis.server.AxisServer.invoke(AxisServer.java:281), org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699), javax.servlet.http.HttpServlet.service(HttpServlet.java:717), org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327), javax.servlet.http.HttpServlet.service(HttpServlet.java:810), org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252), org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173), org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81), org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202), org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173), org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213), org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178), org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39), org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153), org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59), org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126), org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105), org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107), org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148), org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856), org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744), org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527), org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112), java.lang.Thread.run(Thread.java:662))

    que digamos no es extremadamente claro de por donde venía el problema, solo que tenia un error con “c_bp_group_id”; siendo el problema la falta del mainTable para los parametros.

    De nuevo gracias por la ayuda!

    #37994
    WS Biz
    Miembro
    jorge wrote:
    Te paso un ejemplo de una creación de EntidadComercial desde PHP.
    Estoy usando nusoap para el cliente soap. Fijate que hay algunos IDs hardcodeados que quizás no coincidan con tu instancia de libertya: cualquier problema te debería aparecer bien especificado en el resultado de la invocación:

    Code:
    require_once(‘nusoap/nusoap.php’);
    $client = new nusoap_client($url, true);

    $bean = array(
    // Login de libertya:
    ‘userName’ => $user,
    ‘password’ => $pass,
    ‘clientID’ => $clientID,
    ‘orgID’ => $orgID,
    // Datos de la entidad comercial
    ‘mainTable’ => array(
    ‘Name’ => $name,
    ‘Description’ => $description,
    ‘TaxID’ => $cuit,
    ‘URL’ => $website,
    ‘IsActive’ => ‘true’,
    ‘IsVendor’ => ‘false’,
    ‘IsCustomer’ => ‘N’,
    ‘IsProspect’ => ‘true’,
    ‘IsEmployee’ => ‘false’,
    ‘TaxIdType’ => ’80’, // CUIT
    ),
    // Datos de la location de la entidad comercial
    ‘location’ => array(
    ‘Address1’ => $address,
    ‘Phone’ => $phone1,
    ‘Phone2’ => $phone2,
    ‘Fax’ => $fax,
    ‘EMail’ => $email1,
    ‘Name’ => $address,
    ‘City’ => $ciudad,
    ‘IsBillTo’ => ‘true’,
    ‘IsRemitTo’ => ‘true’,
    ‘IsPayFrom’ => ‘true’,
    ‘IsActive’ => ‘true’,
    ‘IsShipTo’ => ‘true’,
    ‘C_Country_ID’ => ‘119’, // ARG
    ‘C_Region_ID’ => ‘1000083’, // BS AS
    ),
    );

    $params = array(
    $bean,
    );

    $result = $client->call(“bPartnerCreate”, $params);

    print_r($result); // vemos qué devolvió la API

    Estuve buscando en la API qué datos son los que hay que incluir en el array para, en este caso, el SimpleMap de datos y el de location y no lo encontré. Esa info está en la API de los LYWS o en otro lugar?

    #38235
    Federico Cristina
    Superadministrador

    Buenas,

    Debido a que los servicios Web de Libertya fueron concebidos como un thin-layer que proveen un set de operaciones apoyadas en LY CORE, los datos obligatorios en realidad los define el CORE de LY; dado que los mencionados servicios Web delegan la lógica de negocios al núcleo de Libertya (Tanto para LYWS como para LYWSE).

    Qué datos se requiere para cada operación se puede determinar revisando los metadatos para la tabla/columnas en cuestión, y eventualmente revisando el código de lógica de persistencia correspondiente, el cual puede llegar a requerir ciertos valores en función de un escenario específico.

    Saludos,
    Federico

Viendo 12 entradas - de la 1 a la 12 (de un total de 12)
  • Debes estar registrado para responder a este debate.