Openbravo Web Services

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció

M'he basat en els documents de la wiki:

L'objectiu és instal.lar els Web Services d'Openbravo que em permetran sincronitzar POS amb Openbravo ERP, amb la idea de:

Instal.lació dels WebServices

$ cd /opt/OpenbravoERP/AppsOpenbravo/
$ sudo ant installWebService

miro si funciona:

http://localhost:8180/openbravo/services/ExternalSales?wsdl
http://localhost:8180/openbravo/services/WebService?wsdl

i no funciona

AXIS error
Could not generate WSDL!
There is no SOAP service at this location

en canvi, sí que funciona http://localhost:8180/openbravo/services/

    * AdminService (wsdl)
          o AdminService 
    * Version (wsdl)
          o getVersion 
http://localhost:8180/openbravo/services/AdminService?wsdl
http://localhost:8180/openbravo/services/Version?wsdl

Això significa que Axis està ben instal.lat, però que no es veuen encara els serveis web del Openbravo.

En un primer moment em pensava que el problema és que no estava instal.lat Axis, i per tant vaig seguir els passos de la instal.lació d'Axis: http://www.p2pgridbook.com/coresite/WebServices/installation.html

AXIS és un projecte d'Apache

Em descarrego Axis de http://ws.apache.org/axis/ el fitxer axis-bin-1_4.tar.gz

$ cp axis-bin-1_4.tar.gz /usr
$ cd /usr
$ sudo tar xvzf axis-bin-1_4.tar.gz

descomprimeixo i copio el contingut de axis-1_4/webapps al directori webapps del Apache

$ cd /usr/axis-1_4/webapps/
$ sudo cp -R . /usr/share/tomcat5.5/webapps

Configurem les variables d'entorn:

export CATALINA_HOME=/usr/share/tomcat5.5 (ja està fet)
export AXIS_HOME=$CATALINA_HOME/webapps/axis
export AXIS_LIB=$AXIS_HOME/WEB-INF/lib
export AXISCLASSPATH=$AXIS_LIB/WEB-INF/lib/axis.jar:$AXIS_LIB/commons-discovery-0.2.jar:$AXIS_LIB/commons-logging-1.0.4.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/saaj.jar:$AXIS_LIB/log4j-1.2.8.jar:$AXIS_LIB/axis-ant.jar:$AXIS_LIB/wsdl4j-1.5.1.jar
export PATH=${PATH}:${AXISCLASSPATH}

recordem que mitjançant export en línia de comandes els canvis no són permanents.

Reiniciem el Tomcat:

$ sudo $CATALINA_HOME/bin/shutdown.sh
$ sudo $CATALINA_HOME/bin/startup.sh

el homepage d'Axis en el servidor funciona correctament:

http://localhost:8180/axis/

i puc validar la meva configuració. Els components necessaris estan ben instal.lats, però els components opcionals hi ha alguns warnings i notes.

Ara be, llisto i només veig dos serveis

    * AdminService (wsdl)
          o AdminService 
    * Version (wsdl)
          o getVersion 

que és el mateix que tenia abans http://localhost:8180/openbravo/services) i no es veu els serveis d'Openbravo.

La conclusió és que no calia instal.lar Axis perquè ja estava instal.lat, que Axis funciona correctament, però que els serveis de Openbravo no són accessibles.


Trobo la solució en el fòrum:

*in http://localhost:8180/openbravo/services i have the following: AdminService
and Version wsdl only.

I read a thread which possibly is the solution but i don't know how to edit
the build.xml with the context url.
https://sourceforge.net/forum/message.php?msg_id=5095907

Any help or ideas ?

i la resposta:

Solution found:
because in my case Tomcat is running on port 8180 i had to modify
the "Openbravo.properties" file (in openbravo base folder
\AppsOpenbravo\config).
Inside this file go to section "# build.xml properties" and modify the line
"context.url=http://localhost:8080/openbravo" change the port number with the
one Tomcat is using (in my case 8180).

I did the same for the "Openbravo.properties file" located in openbravo base
folder \AppsOpenbravo\WebContent\WEB-INF.
Actually i don't know which one of these 2 files is used when you run ant
installWebService. So just in case :-)

Verify that web services were installed by going to
http://localhost:8180/openbravo/services (again in my case it is 8180).

Regards.

En el fitxer \AppsOpenbravo\config\Openbravo.properties fico la línia correcta

context.url=http://localhost:8180/openbravo

i torno a compilar

$ sudo ant installWebService

i ara ja funciona:

http://localhost:8180/openbravo/services

    * ExternalSales (wsdl)
          o getProductsCatalog
          o getProductsPlusCatalog
          o uploadOrders
          o getOrders 
    * AdminService (wsdl)
          o AdminService 
    * Version (wsdl)
          o getVersion 
    * WebService (wsdl)
          o getCustomers
          o getCustomer
          o getCustomer
          o updateCustomer
          o getCustomerAddresses
          o getCustomerLocation
          o updateAddress
          o getCustomerContact
          o updateContact 

Sincronització ERP-POS

http://wiki.openbravo.com/wiki/Openbravo_POS_Integration

Ara he de fer l'exportació dels clients de l'ERP al POS. És la primera prova, deixaré per més endavant l'exportació d'articles i la importació de vendes.

Edit the external point of sales

In Openbravo edit the external point of sales to define the products that will be available for every point-of-sale. This way, when a point of sale tries to get the product catalog from Openbravo, the products defined in this window for this point of sale are sent. And the options defined are used in the process of orders imported.

To edit the external point of sale you have to change the role to the Openbravo ERP entity administrator of the entity you are working with, and open the menu option Sales management / Setup / External Point of Sales.

In this window you define your point of sales and include/exclude products and product categories associated with your point of sale.

You can select the products set to synchronize by category or by product. To select the product by category choose All Selected in the Included Product Categories selector and add the category records wanted. To select the products list by product, choose All Selected in the the Included Products selector and add the product records wanted.

You have to check for the products included in the External Point of Sale definition that have been properly defined and that have a price for the price list used.

Also check that the Business Partner used is a customer of the Openbravo ERP entity you are working with. This Business Partner will be used as the default Business partners for the orders created in Openbravo POS and for example it cannot be the Openbravo ERP entity you are working with.

El Business Partner no és un client, sinó més aviat un empleat. Suposant que tenim diverses tendes que s'han de sincronitzar el seu POS amb el ERP, aquestes tendes han d'estar donades d'alta com a Business Partner en la modalitat d'empleat o comercial (ni client ni proveïdor)

Important: És necessari també ficar un transportista

Important: el Search Key (identificador) del punt de Venta Extern ha de ser un número (que no hi hagi lletres)

Add permissions to invoke the external point of sale web service

To invoke the external point of sale you need an Openbravo user with authorization to invoke it.

To have authorization to invoke the external point of sale web service you need access to a task with class name org.openbravo.erpCommon.ws.externalSales.ExternalSales. Tasks are defined in the menu option General Setup / Application / Task. In the database provided with the default installation there is already a task External Point of Sales with class name org.openbravo.erpCommon.ws.externalSales.ExternalSales.

Once this task is created you need a user with a role that have access to this task. To edit users and roles associated go to the menu option General Setup / Security / User. And to edit roles and the task access go to the menu option General Setup / Security / Role.

To invoke the external point of sale you need an Openbravo user with authorization to invoke it.

To have authorization to invoke the external point of sale web service you need access to a task with class name org.openbravo.erpCommon.ws.externalSales.ExternalSales. Tasks are defined in the menu option General Setup / Application / Task. In the database provided with the default installation there is already a task External Point of Sales with class name org.openbravo.erpCommon.ws.externalSales.ExternalSales.

Once this task is created you need a user with a role that have access to this task. To edit users and roles associated go to the menu option General Setup / Security / User. And to edit roles and the task access go to the menu option General Setup / Security / Role.

Configuració del Openbravo POS

Dins del Openbravo POS, hem de logar-nos com a Administrador i anar a Maintenance / Resources. Create a new resource record called openbravo.properties of type Text and copy the following example configuration text:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>Openbravo Websevice configuration</comment>
    <entry key="url">http://localhost:8180/openbravo/services</entry>
    <entry key="id">1000000</entry>
    <entry key="org">1000000</entry>
    <entry key="pos">1234</entry>
    <entry key="user">Openbravo</entry>
    <entry key="password">openbravo</entry>
</properties>

The configuration values are as follows:

Per saber els valors que hem de col.locar fem una cerca a la base de dades:

select ad_client_id as id,ad_org_id as org, value as pos from C_EXTERNALPOS;
   id    |   org   | pos
---------+---------+------
 1000000 | 1000000 | 1234
 1000000 | 1000000 | 1235
(2 rows)

Products synchronization and Orders synchronization in Openbravo POS

Login as administrator an go to the menu panel Maintenance. Here you have the two available options: Synchronize POS to download from Openbravo the products list defined for this Point of Sale and the customers list, and Synchronize Orders to upload to Openbravo the pending orders generated in this Point of Sale.

Funciona després de fer una cerca en els forum d'ajuda i veure quins són els problemes: els tercers han de tenir direcció i una persona de contacte, l'organització ha de tenir direcció, tots els productes han de tenir una tarifa associada, i compte amb la selecció que faig dels productes que vull exportar al POS.

Import orders in Openbravo

Once orders are imported from Openbravo POS, these orders must be processed in Openbravo to complete the importation.

To process the orders imported you have to change the role to the Openbravo ERP entity administrator of the entity you are working with, go to the menu option Master Data Management / Import Data / Import Orders and execute the process Import Orders. When the process ends a dialog with the result of the process is shown to the user.

Resolent els problemes de la sincronització

Sincronitzo, vull importar els productes i els clients al Openbravo POS, i les coses ho hauries de funcionar. Comento coses que he trobat en el foro Ayuda del Openbravo POS (SourceForge).

no importa bé els productes i clients al Openbravo POS

Normalment el problema està en què algun camp de clients, business partner o productes, encara que siguin opcionals, són necessaris per a l'exportació a POS.

Te recomiendo que sigas estos pasos y nos cuentas el resultado: 
 
[1]--------------------------------------------------------------------------------------------------------- 
Configurar el recurso openbravo.properties adecuadamente: 
 
<entry key="id">1000000</entry>  
<entry key="org">1000000</entry>  
<entry key="pos">1234</entry>  
 
id: el campo ad_client_id de la tabla C_EXTERNALPOS del ERP  
org: el campo ad_org_id de la tabla C_EXTERNALPOS del ERP  
pos: el campo value de la tabla C_EXTERNALPOS del ERP 
 
[2]--------------------------------------------------------------------------------------------------------- 
IMPORTANTE: asegurarse de que la organización seleccionada (AD_ORG_ID) tiene una location/address asociada. 
Podemos comprobarlo desde la base de datos en la tabla AD_ORGINFO en el campo c_location_id 
O desde la aplicación: General Setup -> Organization (in Information tab) 
Si no la tiene crearla. 
 
El business partner que seleccionas en External Point of Sale también tiene que tener una location/address asociada. 
 
Rellena los campos de la ventana BusinessPartner y además asegurate de que tienen: 
*location/address 
*contact

[3]--------------------------------------------------------------------------------------------------------- 
Cuando creas el External Point of Sale fíjate en la "Tarifa" que has elegido.  
Para que la sincronización de productos funcione correctamente, los productos a importar tiene que pertenecer a esa Tarifa.  
En Gestión de datos maestros -> Productos ten en cuenta que al crear un producto en la pestaña "Precio" tienes que elegir una "Versión de Tarifa" que pertenezca a la Tarifa que has definido para el "Punto de Venta Externo"  

Per importar tots els productes s'ha de fer al revés de com ho feia!!

Para importar TODOS los productos tienes que tener en el ERP el External Point of Sale configurado así: 
Included Product = Not Selected 
Included Product Categories = Not Selected 
Document type = POS order 
El Business Parnet tiene que tener una dirección asociada. 
 
Si quieres importar unas categorias y productos en concreto, deberías tenerlo así: 
Included Product = All Selected 
Included Product Categories = All Selected 
Document type = POS order 
El Business Parner tiene que tener una dirección asociada. 
En los tabs "Products Categories" y "Products" puedes elegir los productos a importar. 

No exporta bé les ordres de venda al Openbravo ERP

Per exportar les ordres de venda, els productes que tenim han de ser resultat d'una importació, han d'existir al ERP. Si volem sincronitzar amb el ERP, el POS no és el lloc per crear els productes.

Un cop feta l'exportació de les ordres de venda, les podem veure a Master Data Management --> Import data --> Import Orders

Per tal que es faci bé l'exportació, l'organització ha de tenir una caixa associada.

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines