Entradas

Entorno de desarrollo de OpenERP con Eclipse – Parte II: OpenERP

2 OpenERP

2.1 Instalación de dependencias

Es necesario instalar algunos paquetes de los cuales depende OpenERP.

2.1.1 Dependencias del servidor de OpenERP

Como se encuentra documentado en esta sección.

$ sudo apt-get install python-lxml python-mako python-dateutil 
 python-psycopg2 python-pychart python-pydot python-tz 
 python-reportlab python-yaml python-vobject python-ldap 
 python-libxslt1

2.1.2 Dependencias del cliente OpenERP

Como se encuentra documentado en esta sección:

$ sudo apt-get install python-gtk2 python-glade2 python-matplotlib 
 python-egenix-mxdatetime python-dateutil python-lxml python-tz 
 python-hippocanvas python-pydot

2.1.3 Dependencias del cliente web de OpenERP

La documentación se encuentra en esta sección:

$ sudo apt-get install python-cherrypy3 python-formencode 
 python-babel

2.2 Instalar OpenERP desde Launchpad

2.2.1 Instalar Bazaar

Para instalar OpenERP desde Launchpad es necesario utilizar Bazaar:

$ sudo apt-get install bzr

2.2.2 Grabar el código

Para este paso existen dos opciones:

  1. Grabar y ejecutar este pequeño script que hemos desarrollado en Domatix
  2. Hacerlo a manualmente:

Ir a la carpeta donde se requiere tener la instalación de OpenERP – usualmente se instala en una carpeta con el nombre: “openerp” en la carpeta del usuario:

$ PATH_TO_OPENERP=~/openerp
$ mkdir $PATH_TO_OPENERP
$ mkdir $PATH_TO_OPENERP/server
$ cd $PATH_TO_OPENERP/server
$ bzr branch lp:~openerp/openobject-server/6.0 6.0
$ bzr branch lp:~openerp/openobject-server/5.0 5.0
$ mkdir $PATH_TO_OPENERP/client
$ cd $PATH_TO_OPENERP/client
$ bzr branch lp:~openerp/openobject-client/6.0 6.0
$ bzr branch lp:~openerp/openobject-client/5.0 5.0
$ mkdir $PATH_TO_OPENERP/client-web
$ cd $PATH_TO_OPENERP/client-web
$ bzr branch lp:~openerp/openobject-client-web/6.0 6.0
$ bzr branch lp:~openerp/openobject-client-web/5.0 5.0
$ mkdir $PATH_TO_OPENERP/addons
$ cd $PATH_TO_OPENERP/addons
$ bzr branch lp:~openerp/openobject-addons/6.0 6.0
$ bzr branch lp:~openerp/openobject-addons/5.0 5.0
$ mkdir $PATH_TO_OPENERP/addons-extra
$ cd $PATH_TO_OPENERP/addons-extra
$ bzr branch lp:~openerp-commiter/openobject-addons/extra-6.0 6.0
$ bzr branch 
 lp:~openerp-commiter/openobject-addons/stable_5.0-extra-addons 5.0

Para que los ‘addons’ funcionen en la versión 5.0 hay que hacer unos links:

$ cd $PATH_TO_OPENERP/server/5.0/bin/addons
$ for d in $PATH_TO_OPENERP/addons/5.0/*; do ln -sv $d; done

En la versión 6.0 hay que configurarlo a través del archivo ~/.openerp_serverrc. Si no existe este archivo en el sistema iniciar el servidor de la siguiente manera:

$ cd $PATH_TO_OPENERP/server/6.0
$ bin/openerp-server.py --save --stop-after-init

Abre el el archive ~/.openerp_serverrc en tu editor preferido y modifica la linea

addons_path = /your/path/to/openerp/server/6.0/bin/addons

A algo como lo siguiente:

addons_path = /your/path/to/openerp/server/6.0/bin/addons,/your/path/to/openerp/addons/6.0

2.3 Comprobar que funciona.

2.3.1 El servidor

Esto solo funcionará si se ha creado anteriormente la base de datos para testificar.

$ cd $PATH_TO_OPENERP/server/6.0
$ bin/openerp-server.py --db_user=openerp

2.3.2 El cliente

Con el servidor arrancado es posible iniciar el cliente:

$ cd $PATH_TO_OPENERP/client/6.0
$ bin/openerp-client.py

Aparece una ventana para hacer el login. Como clave se ingresa: demo.

La clave es ‘demo’

Si todo ha sido correcto, ahora hay un cliente conectado.

http://www.domatix.com/wp-content/uploads/client_logged_in.png

Si todo ha sido correcto…

Se puede observar en la pantalla donde se ha iniciado el servidor para verificar si ha ocurrido algún error.

2.3.3 El interfaz de web

$ cd $PATH_TO_OPENERP/web 
$ ./openerp-web.py

En el navegador local hay que abrir la pagina http://192.168.0.122:8080. El usuario y clave es demo. Después, hacer clic en Login.

http://www.domatix.com/wp-content/uploads/web_login.png

Usuario ‘demo’, clave ‘demo’.

Si todo ha sido correcto se verá una ventana así:.

http://www.domatix.com/wp-content/uploads/web_logged_in.png

Si la instalación ha sido correcta…

2.3.4 Eliminar la base de datos ‘testerp’

Ahora que se ha comprobado que todo funciona correctamente, procedemos a eliminar la base de datos que se ha creado anteriormente:

$ sudo su - postgres
postgres $ psql
psql (9.1.2)
Type "help" for help.
postgres=# DROP DATABASE testerp;
DROP DATABASE
postgres=# q
postgres@vincebox ~ $ exit

Installing Zoook on Ubuntu – Part IV: Zoook – Parametrize and connect with OpenERP

1. Install OpenERP dependencies

You’ll have to install the following modules in OpenERP:

2. Connecting Zoook to the Database

At first create a PostgreSQL database for Zoook. In a development environment you can use the user openerp. This way you don’t have to create a new one. In production its recommended to make sure that every user has an exclusive access to the database.

$ sudo -u postgres psql
postgres=# CREATE DATABASE dj_zoook OWNER openerp;
postgres=# l

The last command shows the existent databases. If everything worked out fine it should show someting like the following:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/list_databases.png

Verify the correct creation of the database.

3. Parametrisation of Zoook

3.1. ~/django-projects/zoook-app/config.py

Edit the file and adjust the parameters of the connection to OpenERP. You’ll have to configure all passages. The following ones are especially important for the interconnection with the OpenERP server and error detection:

  • LANGUAGESDefines the languages of your web shop. They have to be the same as in OpenERP.
    #Edit your languages
    LANGUAGE_CODE = 'es'
    LANGUAGES = (
        ('es', ugettext('Spanish')),
        ('en', ugettext('English')),
    )
    DEFAULT_LANGUAGE = 1
    LOCALE_URI = True
  • OERP_SALEIndicates which OpenERP shop should be used in Zoook (just for the case that you have several shops).
    OERP_SALE = 1 #Sale Shop. All price, orders, ... use this Sale Shop ID.
  • LOGSDefines the path to Zoooks logging files.
    LOGFILE = '/home/roberto/django-projects/zoook-app/log/sync.log' #path sync log
    LOGSALE = '/home/roberto/django-projects/zoook-app/log/sale.log' #path sale log
  • DATABASESDefines where and how Zoook finds its database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
            'NAME': 'dj_zoook',     # Or path to database file if using sqlite3.
            'USER': 'openerp',      # Not used with sqlite3.
            'PASSWORD': 'openerp',  # Not used with sqlite3.
            'HOST': '192.168.0.122',    # Set to empty string for 192.168.0.122. Not used with sqlite3.
            'PORT': '5432',         # Set to empty string for default. Not used with sqlite3.
        }
    }
  • OERP_CONFDefines the connection to the XML-RPC service of OpenERP.
    OERP_CONF = {
        'username':'admin',
        'password':'openerp',
        'dbname':'openerp',
        'protocol':'xmlrpc', #xmlrpc
        'uri':'http://192.168.0.122', #xmlrpc
        'port':8069, #xmlrpc
    # 'protocol':'pyro', #pyro
    # 'uri':'192.168.0.122', #pyro
    # 'port':8071, #pyro
    }

3.2. ~/django-projects/zoook-app/sync/config_path.py

Contains the routes to Zoook so that the SSH synchronisation process can find the needed files.

djpath = '/home/roberto/django-projects/zoook-app'

3.3. ~/django-projects/zoook-app/settings.py

Edit this file to assign a new unique password to Zoook. I’d recommend to use a password generator such as safepasswd.com.

# Make this unique, and don't share it with anybody.
SECRET_KEY = 'YOUR_PASSWORD_GOES_HERE'

3.4. Create Zoooks database tables

  • Generate the data base structure
    $ cd ~/django-projects/zoook-app
    $ python manage.py syncdb

    The script will ask if you want to create a new super-user. Affirm and pass it the needed data for the account you’ll later want to administer Zoook with.

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/syncdb_superuser3.png

    Create a superuser for Django.

3.5. ~/django-projects/zoook-app/configuration.py

Execute the configuration assistant and give it further information needed by Django.

  • Execute configuration.py
    $ cd ~/django-projects/zoook-app
    $ ./configuration.py

    The output should look like this:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/asistente_configuration.png

    Configuration of Django.

3.6. Adjust file permissions

  • Change the permissions in the sync directory
    $ cd ~/django-projects/zoook-app/
    $ sudo chown -R roberto:www-data *
    $ sudo chmod 775 -R sync

3.7. Testing Zoook

  • Run the server
    $ cd ~/django-projects/zoook-app/
    $ python manage.py runserver

    this should show something like:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/server_django_post.png

    Successfully initiated Django server.

    Open your browser and open up the direction of the server (http://127.0.0.1:8000/). Zoook should load the first time and you should end up with a site like this:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/server_zoook_test.png

    Start page of Zoook.

    Access the administration area with the super user credentials created beforehand:

    http://www.domatix.com/http://www.domatix.com/wp-content/uploads/zoook_administration.png

    Zooks administration page.

4. Connecting Zoook with OpenERP

A SSH server is required on the machine where Zoook is installed:

$ sudo apt-get install openssh-server

The next step is to configure poweremail to create a template for orders. This article won’t cover the further details of this step. You can get that information here.

Now, open up OpenERP and configure the shop for the connection with Zoook. Open

Sales => Configuration => Sales => Shop

Choose the shop you’re going to use with Zoook, edit it and check the box next to OpenERP e-Sale in the upper right. As an outcome of this should appear a new configuration tab for Zoook.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_tienda001.png

Mark a shop fort exportation.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_tienda002.png

Mark all products for exportation.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_tienda007.png

Configure the SSH connection.

When doing the test of the connection it should pop up a message, saying that it is configured properly.

5. Export test products

Now, we’ll only have to add some test categories and products. The only thing noteworthy at this point is that in order to export a product to the web you have to check “Export to online shop?”. Once this is checked you’ll see a new tab with the name “e-Sale” where you can parametrise the options of the product of the web shop.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/openerp_config_product.png

Configuring e-Sale options on a product.

After the creation of products you’ll have to go back to the configuration of the shop to export products, categories, images etc. After doing a refresh of the page of Zoook you should be able to see the introduced data:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/zoook_category_view.png

Successfully exported category in Zoook.

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/zoook_product_view.png

Successfully exported product in Zoook.

Installing Zoook on Ubuntu – Part III: Zoook installation

1 Download Zoook from the repositories

The repository of the Django application of Zoook isn’t available any more on Launchpad. But you can fetch a zipped copy here.

For the rest of this article I assume that you unpacked the content of the archive to /home/roberto/django-projects/zoook-app.

2 Install dependencies

Zoook depends on the following packages:

Install the python-setuptools package first in order to make the installation of these dependencies easier:

$ sudo apt-get install python-setuptools

The next step is to create a folder, where you want to install all further third party dependencies of Zoook. This will later on make updates of the packages via git, mercurial, etc. much easier. In this tutorial we are going to use ~/django-projects/zoook-external for this purpose:

$ cd ~/django-projects
$ mkdir zoook-external

2.1 OOOP (Open Object On Python)

Clone and install the fork of Zikzak Media:

$ cd ~/django-projects/zoook-external
$ git clone https://github.com/zikzakmedia/ooop.git
$ cd ooop
$ sudo python setup.py install

2.2 Pyro3 (Python Remote Objects)

Check their PyPI project page for the latest version – that is 3.15 as of this writing –, download, unpack and install it:

$ cd ~/django-projects/zoook-external
$ wget pypi.python.org/packages/source/P/Pyro/Pyro-3.15.tar.gz
$ tar xvzf Pyro-3.15.tar.gz
$ cd Pyro-3.15
$ sudo python setup.py install

2.3 Paramiko

Check their website for the latest version – that is 1.7.7.1 as of this writing –, download, unpack and install it:

$ cd ~/django-projects/zoook-external
$ wget http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz
$ tar xvzf paramiko-1.7.7.1.tar.gz
$ cd paramiko-1.7.7.1
$ sudo python setup.py install

2.4 Recaptcha Client

Check their PyPI project page for the latest version – that is 1.0.6 as of this writing –, download, unpack and install it:

$ cd ~/django-projects/zoook-external
$ wget http://pypi.python.org/packages/source/r/recaptcha-client/recaptcha-client-1.0.6.tar.gz
$ tar xvzf recaptcha-client-1.0.6.tar.gz
$ cd recaptcha-client-1.0.6
$ sudo python setup.py install

2.5 inplaceeditform

Clone and install the fork of Zikzak Media:

$ cd ~/django-projects/zoook-external
$ git clone https://github.com/zikzakmedia/django-inplaceeditform.git
$ cd django-inplaceeditform
$ sudo python setup.py install

2.6 django-localurl

In the case that there is no Mercurial installed:

$ sudo apt-get install mercurial

This done, clone the oficial repository of django-localurl and install it:

$ cd ~/django-projects/zoook-external
$ hg clone https://bitbucket.org/carljm/django-localeurl
$ cd django-localeurl/
$ sudo python setup.py install

2.7 django-transmeta

In case that you don’t have SVN installed:

$ sudo apt-get install svn

That finished go ahead to the installation of django-transmeta:

$ cd ~/django-projects/zoook-external
$ svn checkout http://django-transmeta.googlecode.com/svn/trunk/ django-transmeta
$ cd django-transmeta
$ sudo python setup.py install

2.8 django-maintenancemode

Clone and install Zikzak Media’s fork of django-maintanencemode:

$ cd ~/django-projects/zoook-external
$ git clone https://github.com/zikzakmedia/django-maintenancemode.git
$ cd django-maintenancemode
$ sudo python setup.py install

2.9 Correct imports

As a default Zoook’s module do absolute imports with a zoook. prefix. You’ll have to convert these absolute imports to relative ones. That is, to eliminate this ‘zoook’ prefix. Modify the following files as indicated.

2.9.1 /zoook-app/settings.py

Change this line

ROOT_URLCONF = 'zoook.urls'

to

ROOT_URLCONF = 'urls'

2.9.2 /zoook-app/tools/cms/templatetags/imageslider.py

Change this line

from zoook.tools.cms.models import ImageSlider, ImageSliderItem

to

from tools.cms.models import ImageSlider, ImageSliderItem

2.9.3 /zoook-app/tools/cms/templatetags/menubuilder.py

Change this line

from zoook.tools.cms.models import Menu, MenuItem

to

from tools.cms.models import Menu, MenuItem

2.9.4 /zoook-app/tools/cms/templatetags/modules.py

Change this line

from zoook.tools.cms.models import Modules

to

from tools.cms.models import Modules

The next and final article in this series will be dedicated to the interconnection of Zoook and OpenERP.

Installing Zoook on Ubuntu – Part II: Python and Django

1 Install Python

The default Python interpreter on Ubuntu 11.10 is 2.7.2. To verify that this is the version on your system execute:

$ python

This should return something like the following:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/python_version.png

Find out the version of your Python installation.

The message indicates that the version 2.7.2 is installed.

To exit the Python interpreter execute a

>>> quit()

In the rare case that there is no Python on your system, install it via

$ sudo apt-get install python

2 Install Django

Install all dependencies needed by Django:

$ sudo apt-get install python-dev python-psycopg2

You can install Django in three different ways:

  1. via the package management system of your distribution,
  2. fetching the latest stable version from the website, or
  3. download the development version from their repositories.

2.1 Installation via the package management system

The installation via the package management system is as simple as

$ sudo apt-get install python-django

2.2 Installing the last stable version from the website

Surf to the download section of the Django site and check for the latest stable version. That was 1.3.1 as of this writing (8th of February 2012).

$ cd ~
$ tar xvzf Django-1.3.1.tar.gz
$ mv Django-1.3.1 django-src

This way you’ll find the source code in the directory ~/django-src. The next step is to pass this information to Python. Locate the site-packages of your Python installation:

$ python -c "from distutils.sysconfig import get_python_lib; 
 print get_python_lib()"

This should return something like the following:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/site-packages.png

Locate the site-packages of your Python installation.

which indicates that your site-package directory is /usr/lib/python2.7/dist-packages. In this directory you’ll have to add the route to the Django sources:

$ echo '/home/roberto/django-src' | sudo tee -a 
 /usr/lib/python2.7/dist-packages/django.pth

This creates the file /usr/lib/python2.7/dist-packages/django.pth with the path to your Django installation.

To make a live a bit more comfortable, create a symbolic link to django-admin.py:

$ sudo ln -s /home/roberto/django-src/django/bin/django-admin.py 
 /usr/local/bin

This way you can use django-admin.py in every place of the file system instead of executing the script by its absolute path ~/django-src/django/bin/django-admin.py.

3 Verify the installation

Check that Python can find the Django modules:

$ python
>>> import django
>>> print django.get_version()

This should return something like:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/python-django-verification.png

Check that Python finds Django.

This indicates that Python detected Django in its 1.3.1 version.

3.1 Create a Django test project

We are going to create a Django test page in order to verify that everything is working fine. At first create a new directory for this:

$ mkdir ~/django-projects
$ cd ~/django-projects

In this case the directory is located in the home directory of the user and has the name django-projects. Now, create a test project in this category:

$ django-admin.py startproject testdjango

Change to the directory of the project and start the Django server:

$ cd testdjango
$ python manage.py runserver

This should return something like:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/testdjango_launched.png

Successfully started Django server.

The server started up correctly and is waiting for connections on port 8000 (http://127.0.0.1:8000/). When navigating your browser to this direction you should see a site like this:

http://www.domatix.com/http://www.domatix.com/wp-content/uploads/django-testproject_ok.png

Djangos start page.

Now, we could create a database in PostgreSQL and verify the connection with the project. But, given the aim of this article (install Zoook) we’re going into the details of the database access when configuring Zoook.

Installing Zoook on Ubuntu – Part I: Apache and PostgreSQL

Whar are we going to install?

  • Apache 2
  • PostgreSQL 9.11
  • pgAdmin3 1.14.0
  • Python 2.7
  • the mod_wsgi module for Apache 2
  • Zoook.

In this series of articles we are going into the details of how to install Zoook on Ubuntu 11.00.

The aim of these articles is to document the steps to implement a Zoook in a development as well as in an actual production environment and to give the user the solutions to possible problems that can come up during the installation and configuration process.

The whole process it is going to be split up into four parts with this one being the first explaining how to set up Apache 2 and PostgreSQL.

1 Install Apache 2 (production environment)

Django incorporates a server for development environments that is recommended to use as it simplifies the debugging process. So this step is not needed in development environments.

To install Apache 2 open up a terminal and execute:

$ sudo apt-get install apache2

2 Install PostgreSQL

Python as well as Apache support various database back ends. But, this article is centred on the usage of PostgreSQL.

To install PostgreSQL execute:

$ sudo apt-get install postgresql

3 Install pgAdmin3

The next step is to install pgAdmin3. A graphical interface to PostgreSQL that makes the management of the PostgreSQL server easier. Actually the last available version is 1.14.0. But, in the repository of Ubuntu is only te version 1.12.3-1.

3.1 Installation from the repositories

To install the version 1.12.3-1 from the repositories:

$ sudo apt-get install pgadmin3

3.2 Compilation and Installation of the source code

If you prefer to install the last version, you have to fetch the source code and compile it. Download the source and unpack it:

$ tar xvzf pgadmin3-1.14.0.tar.gz

Change to the directory where you unpacked it:

$ cd pgadmin3-1.14.0

Before you can install it make sure that all the dependencies are satisfied:

$ sudo apt-get install build-essential libwxgtk2.8-dev libxml2-dev 
       libxslt1-dev  libgtk2.0-dev

After this execute

$ ./configure

The next step would be to execute make. But, if you do that now it’ll raise the error:

./db/keywords.c:33:34: error: parser/kwlist.h: No such file or directory

This error is produced because there is a bug in the PostgreSQL constructor that misses to install the necessary file in the appropriate directory. To solve this you have to download this file and create the directory /usr/include/postgresql/parser:

$ sudo mkdir -p /usr/include/postgresql/parser

Move the downloaded archive to this directory:

$ sudo mv kwlist.h /usr/include/postgresql/parser

Now, you can execute

$ make

and afterwards

$ make install

The installation should have succeed correctly.

Additionally create a symbolic link to the pgadmin3 executable:

$ sudo ln -s /usr/local/pgadmin3/bin/pgadmin3 /usr/local/bin/pgadmin3

This way you can execute it via:

$ pgadmin3

instead of:

$ /usr/local/bin/pgadmin3

4 Configure PostgreSQL user

PostgreSQL has the default setting ident sameuser for local connections. This permits a system user to access the same account on the SQL server. For this reason you have to create a new user on the SQL server with the same name under which the server is running.

$ sudo -u postgres createuser --superuser YOUR_USER_NAME
    $ sudo -u postgres psql
    postgres=# password YOUR_USER_NAME

Re-initiate the Apache server after all these changes:

$ sudo /etc/init.d/apache2 restart

Now the system is set up to continue with the following steps to install Python, Django, mod_wsgi and Zoook.

Entorno de desarrollo de OpenERP con Eclipse – Parte I: Instalación

Con el fin de no hacer demasiado extenso el artículo se dividirá en cuatro sub-artículos:

  1. Instalación del servidor PostgreSQL (este artículo)
  2. Instalación de OpenERP
  3. Instalación de Eclipse
  4. Script para importar el entorno de trabajo desde Launchpad

A continuación se detalla la primera parte de la serie de artículos

1. Servidor de PostgreSQL

Índice

1.1. Instalación

$ sudo apt-get install postgresql

1.2. Usuario de PostgreSQL

Necesitamos un usuario a través del cual OpenERP luego puede acceder a la base de datos. Ten en cuenta que el nombre del usuario en PostgreSQL tiene que ser el mismo que el nombre que usas como el usuario que luego inicia el servidor:

$ sudo su - postgres
postgres $ createuser openerp
Shall the new role be a superuser? (y/n) y
postgres $ psql template1
psql (9.1.2)
Type "help" for help.
template1=# alter role openerp with password 'postgres';
postgres $ psql
postgres=# CREATE DATABASE testerp WITH OWNER = openerp;
CREATE DATABASE
postgres=# q
postgres $ exit

El último comando crea una base de datos para luego poder comprobar que el servidor funcione.

Ahora tenemos que hacer unos cambios en el archivo /etc/postgresql/9.1/main/pg_hba.conf (intercambia 9.1 por la versión instalada en tu sistema operativo).

1.3. Permitir OpenERP acceso a la base de datos

Este paso puedes saltar si el nombre del usuario que luego ejecuta el servidor de OpenERP tiene el mismo nombre que el usuario de PostgreSQL.

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
# MODIFY THE EXISTING LINE TO LOOK LIKE THIS:
local   all         all                               trust
# IPv4 local connections:
# MODIFY THE EXISTING LINE TO LOOK LIKE THIS:
host    all         all         127.0.0.1/32          trust
# ADD THIS LINE TO ALLOW REMOTE ACCESS; use your own IP address range:
host    all         all         10.10.10.0/24        trust
# IPv6 local connections:
host    all         all         ::1/128               ident

¿Que es Tryton?

OpenERP es lo que se denomina un Commercial Open Source Project (Proyecto de Código Abierto Comercial), esto es, un desarrollo de código es abierto y libre (GPL). Cualquiera puede usarlo, redistribuirlo y colaborar en su desarrollo sin restricciones, pero la empresa OpenERP S.A. es la encargada de decidir que mejoras se incluyen en el proyecto y cuales no. Esta restricción hace que empresas que colaboran con el proyecto hayan desarrollado mejoras que finalmente por criterios de OpenERP S.A. no queden incluidas en OpenERP. Así, Tryton aparece como una alternativa 100% comunitaria, donde las elecciones se toman según las aportaciones que se realizan al proyecto, como una meritocracia, y en la que el proyecto es gestionado por la comunidad de desarrolladores. De hecho se esta creando una fundación para gestionar el software y con el principal objetivo de mantener el proyecto abierto y que no dependa de una sola empresa.


capturas_openerp

OpenObject es un framework excelente, es decir el núcleo de la aplicación es muy bueno, entonces ¿Por qué hacer un fork de un proyecto que ya es bueno? Además de la necesidad de mantener el proyecto 100% libre y una toma de decisiones comunitaria, como se hace en otros desarrollos libres, gran parte del cambio viene por la decisión de los programadores de Tryton de reescribir los módulos base haciendo uso de nuevas funcionalidades. OpenERP ha crecido mucho en estos últimos años en cuanto funcionalidad, pero ha mantenido muchos de los módulos básicos casi inalterables.

Tryton es un proyecto muy activo, con una comunidad muy fuerte detrás, y una excelente base para el desarrollo de un ERP, o desarrollos a medida, pero todavía tiene mucho camino por delante, y no es una solución final tan madura como OpenERP ni cuenta con la misma cantidad de módulos disponibles. Igualmente, de momento al menos, es un producto más orientado a desarrolladores que a consultores, por lo que la mayor parte de la documentación disponible es técnica, no funcional.

Actualmente Tryton se encuentra en su versión 2.2 y cuenta con los siguientes módulos base:  Contabilidad, Facturación, Administración de Ventas, Administración de Compras, Contabilidad Analítica y Administración de Inventario.

Web oficial: http://www.tryton.org/es/

Conector de MRW para OpenERP (dx_mrw_connect)

Datos de Configuración

Para la generación e importación de ficheros de MRW necesitaremos los siguientes campos en OpenERP:

  • Código de Cliente de MRW
  • Código de Campaña de MRW
  • Ruta de generación de ficheros IAPI
  • Ruta de importación de ficheros IAPI

En principio según lo visto en el proyecto se ha asociado la configuración de datos de mrw a la tienda, y se ha asociado la tienda en el pedido de compra.
capturas_openerp

Configuración de la tienda

La importación y exportación de ficheros sigue la siguiente nomenclatura de ficheros MRW:

<nombre del interfaz>_<cliente>_<campaña>_YYYYMMDDHHMMSS.txt

Donde:

  • nombre del interfaz será: IAPI o IAPO
  • cliente: código de cliente asignado por MRW
  • campaña: código de la campaña asignado por MRW

Codificación ISO 8859-1 (ISO Latín 1)

Generación del IAPI

Se ha asociado al pedido de compras un nuevo objeto que representa el IAPI.

En el formulario del pedido de compras se ha añadido una nueva solapa de MRW con el campo tienda, el campo del IAPI y un botón que genere el fichero en el directorio asociado en la configuración de la tienda.


capturas_openerp

Pedido de Compra – Generación del IAPI

Los campos obligatorios para crear el IAPI que tenemos que recuperar de OpenERP son:

  • Código de cliente, asociado a la tienda asociada al pedido de compra.
  • Código de la campaña, asociado a la tienda asociada al pedido de compra.
  • Ruta del fichero, asociado a la tienda asociada al pedido de compra.
  • Código del pedido, código del pedido de compra del propio OpenERP.
  • Fecha de creación del IAPI.
  • Fecha estimada de entrada, por defecto el día siguiente al de creación.
  • OD, nombre del proveedor en OpenERP.
  • Nº linea, del pedido de OpenERP.
  • Código del artículo, será el código del artículo en Magento, en OpenERP al sincronizar con Magento se almacena en magento_sku.
  • Cantidad, la pedida en OpenERP.

La generación del fichero del IAPI en principio será manual pero en el futuro se podrá ampliar el desarrollo para generarlo automáticamente al validar el pedido de compra.

El botón de generar el IAPI sólo se podrá ejecutar si el pedido de compra está validado, no se podrá ejecutar si está en estado de solicitud de presupuesto o si ya se ha entregado.

Importación del IAPO

Para la importación de IAPO se ha creado un nuevo objeto con los siguientes campos:

  • nombre del fichero
  • fecha de creación
  • Mensajes o histórico
  • Estado (Borrador, Procesado, Error, Cancelado)
  • Listado de líneas del IAPO

Workflow de Importación de IAPO

Se ha creado un workflow que gestionara el paso de un estado a otro del objeto que representa la importación de un IAPO.

El funcionamiento es el siguiente:

  • Creación de una Importación de IAPO, se creará un registro de importación en estado borrador, con la fecha actual, y el nombre del fichero. Podremos guardar en borrador o procesar para pasar al siguiente estado.
  • Al procesar el IAPO, si hay algún error con el formato del fichero o los datos del mismo el registro pasará al estado Error.
  • Si al procesar el IAPO los datos son correctos el IAPO pasará a estado Procesado, se crearán los albaranes que corresponda y se podrán consultar desde el propio IAPO en su historial.
  • Si los datos del IAPO son correctos y da un error que se pueda solucionar desde OpenERP se podrá reprocesar el IAPO para que pase de Error a Procesado una vez solucionado el problema en OpenERP.
  • Un IAPO en estado error o borrador se podrá cancelar para que pase a estado cancelado y no tenerlo en cuenta en posibles revisiones de IAPO erroneos.

En el listado de Procesamiento de IAPO, se puede observar a simple vista el estado de un procesamiento según el color de la línea.

Azul = Borrador

Verde = Procesado

Rojo = Error

Gris = Cancelado
capturas_openerp

Listado de Procesamiento de IAPO

También se permite filtrar por un determinado estado con lo que se podrá comprobar a simple vista si se ha producido algún error en el procesamiento del IAPO.

Procesamiento automático de IAPO

Se ha creado una acción de servidor que automáticamente comprueba si se ha creado algún fichero en los directorios indicados en la configuración de cada tienda.
capturas_openerp

Si desde la última comprobación se ha creado algún fichero se crea el procesamiento de IAPO y se intenta validar, si el fichero es correcto y se corresponde con los datos del sistema se importará el IAPO se validará el albarán correspondiente y el procesamiento pasará a estado Procesado.

Si al intentar validar hubiese algún error el procesamiento quedaría en estado error y se guardaría el mensaje de error correspondiente.

Errores de procesamiento del IAPO

Si al procesar un IAPO surgiese algún error se quedaría almacenado el mensaje en el sistema y el Procesamiento de IAPO quedaría en estado Error. Si fuere un error de datos que se pudiese solucionar en OpenERP se podría intentar solucionar y volver a procesar. Si fuese un error en el fichero se podría cancelar para que no apareciese como erróneo.

Los errores que se contemplan son los siguientes:

  • No existe el proveedor:

‘Error – Proveedor [cod_proveedor] de la linea [num_l] del IAPO no existe en OpenERP’

  • No existe el pedido:

Error – Pedido de compra [demanda] del proveedor [od] de la linea [num_l] del IAPO no existe en OpenERP’

  • No existe el producto:

Error – Producto [cod_producto] de la linea [num_l] del IAPO no existe en OpenERP’

  • No existe el proveedor:

‘Error – Linea del pedido de cantidad [‘+line.cantidad_original+’] del producto [‘+line.articulo_id+’] de la linea [‘+line.num_l+’] del IAPO no existe en OpenERP’

  • No existe el movimiento:

‘Error – Movimiento de la linea [‘+line.num_l+’] del pedido de compra [‘+line.demanda+’]del IAPO no existe en OpenERP’

  • Error de formato o leyendo el disco:

‘ERROR – Importando el fichero ‘+file_path+’, no se ha podido leer el fichero o no cumple las especificaciones’,‘iapo_id’:iapo_id

Integración de MRW en OpenERP

El sistema de gestión de MRW genera y procesa diferentes archivos para controlar todo el proceso logístico. En esta primera fase de nuestro conector se va a poder generar un IAPI (Previsión de entrada) desde un pedido de compras validado de OpenERP, para indicar a MRW que espera la recepción de esos artículos. Y cuando MRW realice ese envío a almacén generará un IAPO (Mercancía Recepcionada), en nuestro módulo indicaremos donde se encuentran esos ficheros y los procesará, validando los movimientos de stock asociados al pedido de compras que generó el IAPI. En el Procesamiento del IAPO se pueden producir muchos errores por incoherencia en los datos en los dos sistemas así que también se esta desarrollando un completo sistema de control de errores con mensajes para que el usuario pueda saber que ha generado la importación de un IAPO y si no se ha podido importar o generar la acción prevista cuales han sido los motivos.

Con esto conseguiremos una recepción de materiales automática en los envíos gestionados por MRW.

En breve liberaremos el desarrollo y realizaremos un apunte más completo del funcionamiento. Permaneced atentos al blog.

Solución error Gtk-WARNING pixmap

Solución para GTK2:

sudo apt-get install gtk2-engines-pixbuf

Solución para GTK3:

sudo apt-get install gtk3-engines-pixbuf