sábado, 30 de marzo de 2013

Instalar OpenERP 7.0 en Ubuntu 12.04

OpenERP es un sistema de gestión de información empresarial integral, modular y adaptable, distribuido como software libre bajo licencia AGPL.  Ya dedicamos dos publicaciones [1] - [2] a la definición de OpenERP, es el momento de entrar en acción, el primer paso que vamos a dar es la instalación de la última versión estable, la 7.0, en el sistema operativo Ubuntu 12.04 LTS.

[1] (re) Definiendo el concepto ERP 
[2] OpenERP es Software Libre no solo Open Source

Esta entrada está basada en la publicación "How to install OpenERP 7.0 on Ubuntu 12.04 LTS" del blog "The Open Sourcerer" la cual está amparado con licencia "Creative Commons Attribution-Share Alike 3.0".  Agradecemos al autor el permitirnos a través de esta licencia realizar una obra derivada.

Paso 1: Crear un usuario del sistema para ejecutar OpenERP


Lo primero que haremos es crear un usuario del sistema, en Ubuntu un usuario del sistema es diferente a un usuario normal, por lo tanto no aparecerá en las opciones de acceso (login) cuando se arranque el sistema, ni podrá usarse en la terminal o consola.  El objetivo en este paso es tener un usuario del sistema que ejecute OpenERP, para ello le asignamos el directorio en el que instalaremos luego OpenERP, en este caso /opt/openerp, si no existe el directorio, este será creado automáticamente.  Si decide utilizar un directorio diferente tenga en cuenta que deberá ajustar algunas instrucciones de esta guía para que se adapten a su propio contexto

sudo adduser --system --home=/opt/openerp --group openerp

Paso 2: Instalar y configurar el servidor de base de datos PostgreSQL


Instalamos PostgreSQL con el siguiente comando:

sudo apt-get install postgresql

Pasamos a trabajar con el usuario postgres para tener los privilegios necesarios para configurar la base de datos:

sudo su - postgres

Creamos un nuevo usuario de la base de datos.  Este será el usuario que asignaremos en la configuración de conexión a la base de datos del servidor OpenERP, tendrá permisos para crear y borrar bases de datos.  En este paso deberá asignar una contraseña, no la olvide, la necesitará más adelante:

createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt openerp
Enter password for new role: ********
Enter it again: ********


Finalmente salimos del usuario postgres:

exit

Paso 3: Instalar librerías Python requeridas por el servidor OpenERP 


Con el siguiente comando instalamos todas las librerías necesarias (dependencias) para el correcto funcionamiento del servidor OpenERP:


Paso 4: Instalar el servidor OpenERP 


Obtenemos las fuentes de OpenERP desde su página de descargas:

https://www.openerp.com/es/pricing

Seleccionamos el enlace que suministra las fuentes, Sources:


Si aún no es un usuario registrado deberá diligenciar el siguiente formulario para poder acceder a la descarga:


Si todo ha salido bien, se descargará un archivo llamado openerp-7.0-latest.tar.gz

Para instalarlo vamos primero al directorio que creamos en el Paso 1:

cd /opt/openerp

Extraemos los archivos (descomprimimos):

sudo tar xvf ~/openerp-7.0-latest.tar.gz

Si la carpeta queda con un nombre como openerp-7.0-20130117-134423 se lo cambiamos a server de tal manera que la ruta del servidor quede así: /opt/openerp/server/.

Asignamos permisos para el directorio, al usuario y grupo creados en el Paso 1:

sudo chown -R openerp: *

Paso 5: Configurar el servidor OpenERP 


Copiamos el archivo openerp-server.conf que se encuentra en /opt/openerp/server/install a la carpeta /etc/ y le asignamos los permisos adecuados:

sudo cp /opt/openerp/server/install/openerp-server.conf /etc/
sudo chown openerp: /etc/openerp-server.conf
sudo chmod 640 /etc/openerp-server.conf


Las instrucciones anteriores asignan la propiedad del archivo con permisos de escritura al grupo y usuario openerp, y con permisos de solo lectura a los usuarios openerp y root.

Modificamos el archivo openerp-server.conf para suministrarle la contraseña de la base de datos:

sudo gedit /etc/openerp-server.conf

En la línea db_password = False cambiamos False por la contraseña que elegimos en el Paso 2.

Adicionamos una línea en el archivo openerp-server.conf para indicarle a OpenERP donde escribir el archivo del log:

logfile = /var/log/openerp/openerp-server.log

La configuración está lista, es hora de probar si todo anda bien:

sudo su - openerp -s /bin/bash
/opt/openerp/server/openerp-server


El resultado de la anterior instrucción es el despliegue de varias líneas en la consola como las siguientes:


Para detener la ejecución del servidor OpenERP presionamos simultáneamente las teclas CTRL y C.

Para salir del usuario openerp escribimos exit.

Paso 6: Lanzar OpenERP al arranque del sistema 


Haremos que OpenERP sea lanzado como un servicio de Ubuntu 12.04, es decir que se inicie y detenga automáticamente cuando se arranque o apague el sistema.

Para ello creamos un archivo con nombre openerp-server y lo ubicamos en el directorio /etc/init.d/, editamos el archivo para que quede con el siguiente contenido:


Asignamos el archivo al usuario root y lo hacemos ejecutable:

sudo chmod 755 /etc/init.d/openerp-server
sudo chown root: /etc/init.d/openerp-server


Creamos el directorio con los permisos correspondientes para el archivo log de acuerdo a la configuración realizada en el Paso 6:

sudo mkdir /var/log/openerp
sudo chown openerp:root /var/log/openerp


Finalmente automatizamos el lanzamiento de OpenERP con el arranque del sistema:

sudo update-rc.d openerp-server defaults


Paso 7: Probar el servidor OpenERP 


Iniciamos el servidor OpenERP:

sudo /etc/init.d/openerp-server start

Ahora abrimos un navegador (chrome recomendado) y en la barra de direcciones escribimos:

http://localhost:8069

Lo anterior suponiendo que está usando localhost, de lo contrario reemplace localhost por su dominio o IP.

Una vez iniciado OpenERP verá lo siguiente en pantalla:


Detenemos el servidor OpenERP:

sudo /etc/init.d/openerp-server stop

------------------------------------

Espero les sea útil, hasta la próxima.


lunes, 25 de marzo de 2013

OpenERP es Software Libre no solo Open Source

Introducción


En la primera entrada de este blog nos propusimos definir OpenERP y para ello dividimos el término en sus dos componentes Open y ERP, dedicamos luego unas líneas a profundizar en el segundo término dando como resultado una propuesta concreta de definición:

ERP - Enterprise Resource Planning:

Sistema de gestión de información empresarial que tiene como atributos principales la Integralidad (Capacidad de gestionar la totalidad de requerimientos transaccionales de una empresa), la Modularidad (la gestión de los requerimientos transaccionales es realizada a través de subsistemas integrables - módulos -, ordenados de forma lógica y armónica según criterios funcionales) y la Adaptabilidad (Capacidad de ajustarse a las necesidades particulares del modelo de negocio de la empresa).

Ahora es el turno de tratar de comprender el significado del término Open en el nombre OpenERP, vamos a ver si lo logramos.

Open - un término que confunde 

Para quienes llevamos algún tiempo en el "mundo" del software libre es apenas lógico y natural que asociemos el término Open con el software open source o de código abierto.  Pareciera entonces que la respuesta a la pregunta que motiva esta entrada es simple:  OpenERP es software open source.

Pero nuestro estilo no es llegar a conclusiones a la ligera sino que asumimos la tarea de indagar un poco más para confirmar si esa primera impresión es cierta o no, acudimos por lo tanto al sitio oficial de OpenERP y nos encontramos con una afirmación que podríamos calificar de contradictoria:
"Codigo abierto: OpenERP esta dedicado al modelo de negocio de codigo abierto. El software está publicado bajo la licencia AGPL".

¿Por qué contradictoria?

Sencillo, la licencia AGPL es una licencia de software libre y aunque esta tenga cosas en común con las licencias open source, no son iguales, de hecho hay ciertos puntos que son claramente incompatibles.

No es el objetivo de esta entrada explicar en detalle las diferencias entre las licencias de software open source y las licencias de software libre, esa tarea se la dejamos al lector, si lo desean pueden consultar las siguientes fuentes:

The Open Source Definition
Por qué el código abierto pierde el punto de vista del software libre

OpenERP es software libre


No debe haber duda al respecto, en la página de descargas de OpenERP se lee:
"OpenERP y todos sus módulos son completamente código libre, publicado bajo licencia AGPL"
La AGPL es una de las licencias de software libre publicadas por la Free Software Foundation y su propósito principal es garantizar la libertad de los usuarios y asegurar que el software siga siendo software libre.


Voy a partir de una hipótesis que puede ser falsa, "pocos usuarios se ocupan de revisar el contenido de las licencias de software, incluyendo usuarios que desarrollan software libre".  Entonces voy a recordar las libertades esenciales promovidas por la Free Software Foundation en sus licencias:

  • La libertad de ejecutar el programa para cualquier propósito (Libertad 0)
  • La libertad de estudiar cómo funciona el programa, y cambiarlo para que haga lo que usted quiera (Libertad 1).  El acceso al código fuente es una condición necesaria para ello.
  • La libertad de redistribuir copias para ayudar a su prójimo (Libertad 2).
  • La libertad de distribuir copias de sus versiones modificadas a terceros (Libertad 3).  Esto le permite ofrecer a toda la comunidad la oportunidad de beneficiarse de las modificaciones.  El acceso al código fuente es una condición necesaria para ello.
Ahora bien, la AGPL es una licencia especial, fue diseñada para garantizar las libertades a los usuarios que acceden a software libre a través de una red:
Licencia Pública General Affero de GNU (AGPL) versión 3:
Esta es una licencia de software libre con copyleft. Sus términos son en la práctica los mismos de la GPLv3, con un párrafo adicional en la sección 13 que permite a los usuarios que interactúan con el software bajo esta licencia en una red, recibir la fuente de tal software.
En vista de que la más reciente apuesta de OpenERP es el modelo de software como servicio SaaS, esta licencia es la adecuada.

Software libre vs Open source 
- Una "sutil" deiferencia - 
No quiero cerrar esta entrada sin mencionar una de las diferencias entre las licencias de software open source y las licencias de software libre.  

Unas líneas atrás dije que las licencias promovidas por la FSF buscan asegurar que el software siga siendo libre, ¿eso que significa?, nada más y nada menos que las versiones modificadas del software deben ser distribuidas bajo los mismos términos de la licencia original, en el caso de OpenERP, la AGPL.  La única excepción a esta regla es distribuir las modificaciones con una licencia compatible, y eso nos lleva necesariamente a otra licencia de software libre, la GPL.

En las licencias de software open source esta condición no existe, es más, expresamente promueven lo opuesto:
La licencia no debe ir en contra de otro software. La licencia no debe restringir otro software que se distribuya con el mismo. Por ejemplo, la licencia no debe indicar que todos los programas distribuidos conjuntamente con el deben ser opensource.
Es por eso que en el mundo del open source es habitual encontrar dos versiones del mismo producto, la Comunitaria y la Enterprise (Premium, Gold, etc), normalmente la versión comunitaria tiene limitaciones funcionales o legales y es usada (en muchos casos) solo como instrumento de marketing (señuelo).

En virtud de la licencia AGPL, con OpenERP no puede suceder tal cosa.

-----------------------
Nota:  Hay que aclarar que OpenERP no ha tenido siempre la misma licencia, en versiones anteriores el cliente web tenía una licencia diferente del resto del software.  También hay que aclarar que el titular de los derechos de autor no está obligado a sacar futuras versiones con la misma licencia.  Por lo pronto, estamos tranquilos por que la versión 7.0 de OpenERP es realmente software libre, así ellos mismos se publiciten como software open source.
-----------------------

sábado, 23 de marzo de 2013

(re) Definiendo el concepto ERP

Motivación

Inauguramos hoy este blog dedicado a la publicación de temas sobre OpenERP y particularmente sobre su localización para Colombia.

Antes de entrar a tocar temas técnicos y/o funcionales es necesario comenzar con una definición de OpenERP, pero contrario a lo que se podría pensar la tarea no es simple, básicamente porque - a nuestro juicio - no hay un consenso sobre el significado y alcance de las dos siglas que componen el nombre, Open y ERP.

Sin más preámbulos, comencemos con la segunda sigla: ERP.

¿Que es un ERP?

Simple, ERP es la sigla de "Enterprise Resource Planning", y si lo prefiere en español, "Planificador de Recursos Empresariales".

¿Eso te dice algo?, en realidad creo que no mucho.

Entonces acudamos a la enciclopedia para ver si tenemos mejor suerte:

Definición de ERP en Wikipedia.

¿Quedó claro?, yo creo que no.

Desafortunadamente la definición de ERP en Wikipedia es ambigua, imprecisa, contradictoria, confusa y, por qué no, obsoleta.  Por eso Wikipedia no es la mejor fuente de información en este caso.

¿Y si buscamos otras fuentes en Internet?.

Vamos a obtener un resultado similar, los invito a que hagan el ejercicio.

¿Y entonces?.

No queda otra opción, tratar de construir un definición a partir de las fuentes consultadas y, sobre todo, de la concepción personal (prejuicios) sobre el asunto.  Para no convertirnos en otra "mala" definición, guardamos la esperanza de que quienes lean este artículo nos ayuden con sus comentarios, es así como aspiramos (re) definir el concepto ERP.

Señalemos en primer lugar que es insuficiente definir un ERP a partir de lo que tiene, decir que es un sistema que integra la gestión de producción, logística. distribución, marketing, ventas, contabilidad, etc; es como decir que el ser humano es un conjunto integrado de huesos, músculos, órganos, etc.  Esta es tal vez la definición más usada en labores de marketing de los distintos ERP disponibles en el mercado y es también, la principal razón de confusión entre las definiciones de ERP y de SGE - Sistemas de Gestión Empresarial, y claro, esto es aprovechado por las empresas dedicadas a comercializar SGE, las cuales  cambian solamente el nombre de sus productos y los venden como si se trataran de verdaderos ERP, hay muchos ejemplos de esta práctica.

En segundo lugar, también es insuficiente definir un ERP a partir de su origen y evolución, aquí diríamos que primero surgieron los MRPMaterial Requerement Planing, que luego evolucionaron hasta convertirse en MRP IIManufacturing Resource Planing, para finalmente madurar y consolidarse en lo que actualmente conocemos como ERPEnterprise Resource Planning.  Tal vez esta definición sea un poco más acertada en términos técnicos, pero es difícil de digerir, obliga a entender el contexto en el que surgieron cada una de las variantes y a comprender el alcance de cada una de ellas.  Hecho ese ejercicio se tendrá claridad de que si estamos frente a una evolución de un sistema, no podría llamarse ERP a aquel que no tenga los subsistemas MRP y MRP II, y comprendido eso, ya comenzaremos a diferenciar los SGR de los ERP.

Podríamos también intentar acercarnos a la definición de ERP a partir de sus objetivos y características técnicas, pero en últimas caeríamos en el mismo error, no estaríamos delimitando con precisión lo que es un ERP porque esos objetivos y características las pueden tener otros tipos de soluciones.

Así que optaremos por construir una definición basada en los atributos de un ERP, creemos que esta es la que recoge la verdadera esencia de este tipo de soluciones y además, es la de más fácil comprensión.

ERP - Enterprise Resource Planning:

Sistema de gestión de información empresarial que tiene como atributos principales la Integralidad (Capacidad de gestionar la totalidad de requerimientos transaccionales de una empresa), la Modularidad (la gestión de los requerimientos transaccionales es realizada a través de subsistemas integrables - módulos -, ordenados de forma lógica y armónica según criterios funcionales) y la Adaptabilidad (Capacidad de ajustarse a las necesidades particulares del modelo de negocio de la empresa).

La tesis implícita en la definición es que si un sistema de gestión empresarial cumple los tres atributos, es un ERP.

Hagamos ahora algunas precisiones tomando fragmentos de la definición:

Sistema de gestión de información empresarial: Limita el ámbito de aplicación del sistema, indica que se trata de una aplicación dirigida a atender las necesidades de las empresas, obviamente en un sentido amplio.

Requerimientos transaccionales: Este es un punto importante, la naturaleza de un ERP es gestionar adecuadamente la operación cotidiana de una empresa, esa operación puede ser representada en flujos de procesos y documentos asociados a los mismos.  A modo de ejemplo, una empresa cuenta con flujos de procesos para ventas, compras, producción, marketing, etc;  en cada uno de ellos genera diversos documentos como cotizaciones, pedidos, órdenes de producción, etc.  Visto desde otra perspectiva, un ERP no necesariamente debe contar las características de un sistema de inteligencia de negocios, aunque hay que decirlo, actualmente varios ya la ofrecen.

Gestionar la totalidad de requerimientos:  Cuando hablamos de cobertura total lo hacemos en un contexto específico, el actual.  Hoy en día los requerimientos transaccionales no pueden ser vistos solo considerando las necesidades al interior de la empresa, es imprescindible incorporar a todas las partes relacionadas.  Como consecuencia de lo anterior, los módulos "utilitarios" son igual de importantes a los módulos tradicionales, esto es, el ERP debe estar en capacidad de integrarse de forma natural con proveedores, clientes y empleados;   debe estar vinculado a las plataformas de comercio electrónico de la empresa (tiendas on-line, marketplace, etc); y debe permitir compartir recursos (documentos compartidos, redes sociales, calendarios, correos electrónicos, etc.).

Subsistemas integrables - módulos -:  Un ERP debe estar diseñado como el tradicional juego "armotodo", eso significa que el sistema puede crecer o variar simplemente acoplando o retirando piezas.  Debe haber piezas disponibles de diferentes "formas", "tamaños" y "colores", solo así el sistema podrá ser robusto y flexible a la vez.

Ajustarse a las necesidades particulares del modelo de negocio:  Este es a mi juicio el atributo diferenciador más destacado de un ERP, es el sistema el que se adapta al modelo de negocio de la empresa y no al revés. Claro está, el ERP en su forma estándar debe ofrecer un diseño ajustado a las "mejores prácticas" de cada uno de los procesos de la empresa, pero no todas las empresas funcionan con "mejores prácticas" en todas sus áreas.

------------------------

Ahora es su turno, ayúdenos a (re) definir el concepto ERP.