Tux y OpenERP

Tux y OpenERP
Para obtener información sobre como implantar OpenERP en tu empresa --- contactar con informaticartica@gmail.com ---

sábado, 8 de diciembre de 2012

Ya tenemos fecha de salida para OpenERP 7.0

Durante este puente nos hemos encontrado con que ya podemos poner fecha a la publicación de OpenERP 7.0 . Fabien Pinckaers, fundador de OpenERP nos ha dejado un pequeño artículo donde tras describirnos su trayectoria y la de OpenERP nos muestra que tras años de dura dedicación y estrategias de empresa que han generado todo tipo de disconformidades como ha ocurrido muy notablemente en la comunidad española, él se encuentra reconfortado y con fé en su nueva trayectoria que personalmente denomina "su sueño hecho realidad". Muestra abiertamente que está en posición de luchar con los más grandes y en este caso concretamente frente a SAP.

La fecha de lanzamiento es el próximo 21 de diciembre, tan conocida por tener relación con la tan famosa profecía del fin del mundo y los Mayas y como el propio Fabien comenta en su artículo, "el fin de los viejos dinosaurios ERP y el comienzo de los nuevos y revolucionarios ERP".

Aquí os dejo el enlace y esperemos que la realidad que ve Fabien en esta nueva versión de OpenERP y la evolución de la herramienta nos ilusione igualmente a todos los partner y usuarios finales como a él y veamos los frutos de lo que ya anuncia como una victoria ante gigantes como SAP.

http://v6.openerp.com/node/1291

Saludo,
Juani

miércoles, 7 de noviembre de 2012

Backups incrementales con rdiff-backup

En el artículo de hoy veremos como realizar backups incrementales con una fantástica herramienta que para mi gusto promete y lo que tiene que hacer lo hace de manera sencilla, rápido y bien.
En multitud de ocasiones nos encontramos con que tenemos que mantener algún backup de un directorio y sus subdirectorios y en ese caso rdiff-backup es de mucha utilidad. La primera pregunta que nos asalta es ¿Respeta los enlaces simbólicos? Pues sí, los respeta. Lo siguiente sería pensar en qué es lo que hace cuando en una de las sincronizaciones algo se ha borrado, es decir si lo tiene en cuenta y sí, también lo tiene en cuenta. Sé que muchos de los que estaís leyendo ahora mismo esto usais rsync y estais agusto, rdiff-backup está basado en rsync y usa su algoritmo, merece la pena que lo probeís.

1.- Instalación de rdiff-backup

$ sudo apt-get install rdiff-backup

2.- Uso de rdiff-backup

$ rdiff-backup /ruta_origen /ruta_destino

No hace falta tener creada la carpeta de destino, el se encargará de crearla durante el proceso.

3.- Como listar los backups incrementales que hemos realizado

$ rdiff-backup -l /ruta_destino

4.- Como realizar una restauración

$ rdiff-backup -r 5m /ruta_destino /ruta_restauración 

Aquí realizamos una restauración de hace 5 minutos

Tras el parámetro de restauración -r podemos usar diferentes comandos temporales como : 1D1h5m1s , 1h5m1s , 5m1s etc....

5.- Como realizar un backup desde un directorio local a un servidor remoto

$ rdiff-backup /directorio_local usuario@host::/directorio_remoto

6.- Como realizar un backup desde un servidor remoto hacia nuestra máquina local

$ rdiff-backup usuario@host::/directorio_remoto directorio_local

7.- Como realizar un backup entre dos máquinas remotas

$ rdiff-backup -v5 --print-statistics usuario1@host1::/directorio_origen usuario2@host2::/directorio_destino

Lo siguiente sería realizar scripts para backups con rdiff-backup para poder realizar los backup y las restauraciones de manera automática y sencilla. 

Espero que os haya gustado y os sea de utilidad

Juani




martes, 18 de septiembre de 2012

Conozcamos OpenERP 7

En al artículo de hoy vamos a hacer un breve recorrido por OpenERP 7 , la nueva versión en desarrollo que verá la luz dentro de poco. Tras instalarlo en mi ordenador local lo primero que noto al instante es la fluidez y la rapidez del entorno web, tengo que decir que mi primera impresión ha sido de mucha estabilidad y comodidad en el uso.


Nada más acceder a nuestra base de datos lo primero que vemos es nuestra home, en la cual tenemos la posibilidad de ver los feeds y posts de nuestro "muro". Como podeís observar en la imagen OpenERP ha cambiado los colores rojos chillones por una mezcla de azul clarito y gris que hacen que la estética sea algo más elegante para la vista.


Si vamos a Ventas esta es la apariencia de la lista de clientes en la vista kanban : 




Como ya os habreís fijado la vista de clientes es muy agradable a primera vista aunque ¿ qué ocurriría si tuviésemos miles de clientes? ¿Donde están los campos de búsqueda, los filtros , el agrupar por...? Antes de responder a esto si os fijaís bien en la imagen anterior , en la parte de abajo de la ficha del cliente tenemos otro muro para compartir con el cliente y los que acepten invitación.

Como si del twitter se tratase podemos seguir a este cliente o invitar a algún otro cliente a que siga a Agrolait en este caso. Sé de antemano que esto va a traer mucha controversia ya que algunos lo verán como algo chulo y útil mientras que para otros será totalmente inútil y fuera de lugar, queda abierto el debate. Sigamos viendo más cosas, centrémonos en lo que comentábamos de los campos de búsqueda, filtros, etc .... Ahora se encuentran situados en la parte derecha de arriba en un campo de selección al más puro estilo web, otro de los puntos en los que me huelo que también habrá diferentes opiniones en cuanto a la usabilidad y demás.


La ficha de la compañía y la de los usuarios no ha cambiado mucho de la versión 6.1, aquí os muestro un par de capturas para que lo veais vosotros mismos:


Una de los cambios más positivos que he visto ha sido el tener una entrada de menú para los informes en lugar de tenerlos desperdigados por el resto de menús, personalmente opino que es mucho más práctico. Los productos en vista kanban también se ven de una forma mucho más elegante, y en esta nueva versión no por eso se pierde la fluidez durante los cambios de pantalla. 





Disponemos de asistentes de ayuda por toda la herramienta, el diseño de éstos es bastante acertado.



La parte de proyectos y tareas no ha cambiado prácticamente y el TPV se ve algo más estilizado y completo que en la versión 6.1. 


Para concluir tan solo decir que me ha dejado un buen sabor de boca el primer acercamiento, y que aunque haya alguno que no esté de acuerdo conmigo opino que en este caso OpenERP ha acertado de momento y nos ofrece una versión más elegante, con más posibilidades y mucho más fluída , algo que agradeceremos la mayoría de los usuarios.

Saludos

Juani


miércoles, 12 de septiembre de 2012

Activar modo desarrollador en OpenERP 6.1

Hacía tiempo que no escribía un artículo, y aprovecho para compartir un pequeño artículo que seguro gustará a más de un usuario de OpenERP y se trata de activar el modo desarrollador en la versión 6.1.

Una vez activado este modo podemos acceder a información técnica de los campos e incluso cambiarlos de posición, borrarlo o crear nuevos entre otras muchas cosas. Como una imagen vale más que mil palabras os pongo un enlace a mi canal de Youtube para que veais un pequeño video.

http://www.youtube.com/watch?v=oxnUIOYYazg&feature=bf_prev&list=HL1347490561

Juani

lunes, 16 de abril de 2012

OpenERP 7

Pues sí, lo que estáis leyendo... casi no nos ha dado tiempo a asimilar la versión 6.1 y ya comenzamos a hablar de la 7. Acabo de volver de las jornadas de OpenERP en Bruselas y la verdad es que he vuelto asombrado y con muchas ganas de hacer cosas. En definitiva, ... me han recargado las pilas.

¿OpenERP 7,... algún cambio nuevo ...cuando saldrá...?

Pues sí, la nueva versión de OpenERP (OpenERP 7 ) está estimado que salga en septiembre de este año, en cuanto al rendimiento parece ser mucho más rápido y el entorno web está muy mejorado.
Ante el crecimiento de redes sociales como facebook o twitter, desde OE han pensado que sería interesante tener nuestra propia herramienta (OpenChatter).
Arriba a la derecha nos encontramos unos menús con infinidad de posibilidades, los filtros de búsqueda han mejorado notablemente, como si se tratase de un buscador web. Hay una notable tendencia a repetir las vistas Kanban en el resto de las pantallas de la aplicación que además ahora son drag & drop.

La filosofía de agregar en OpenERP un muro al más estilo facebook-twitter responde a que en contra de lo que ha sucedido con el usuario común, las empresas todavía no han dado el salto a las redes sociales, en este aspecto nos encontramos con viejos dinosaurios bastante reticentes.

Por otro lado, se habla de minimizar los costes temporales de la relación cliente-proveedor en una venta por ejemplo, mediante el uso del EDI (muy interesante en lo que están trabajando) emails automáticos, etc ... y una reducción notable del número de pasos a dar en la susodicha relación.

La limpieza del interfaz por ejemplo a la hora de realizar un presupuesto, es notable, y la pantalla de cliente ahora es muy reolucionaria y con un estilo muy "web". En definitiva, el lavado de cara de está nueva versión no dejará indiferente a nadie.


Bien, ... pero ¿ahora nuestro OpenERP tiene carrocería de Deportivo nuevo y el mismo motor que tenía antes?

No. La arquitectura del cliente web es una arquitectura de alto nivel , Web 2.0 y digamos que podriamos definirla como el servidor de OpenERP conectado al OpenERP Web mediante el protocolo json-rpc el cual abre nuevas posibilidades.

Ahora es más reactivo, no recarga las páginas contínuamente y tiene más componentes y mucha más funcionalidad. Mejores addons y mucho javascript, en definitiva, una vez más,... MEJOR !!!

La parte de las nuevas librerías del núcleo de la API es ya otro capítulo, ha cambiado casi por completo y ahora el código es mucho más corto si cabe. Veamos un par de simples ejemplos para ver de lo que hablo:


Definiendo un método (ANTES ) : 

def mi_metodo(self, cr, uid [, ids], ..., context=None):

Definiendo un método (AHORA) :

def mi_metodo(self, ...):

Creando un campo selection (ANTES) : 

class mi_modelo(osv.osv):
    _columns = {
                    'a' : fields.selection(...),
     }

Creando un campo selection (AHORA) :

class mi_modelo(Model):
     a = oe.String(...,selection=[...])


Esto sería a grandes rasgos las mejoras que trae consigo OpenERP 7 , que como veis viene cargadito de novedades y nuevas vías que explorar. Por mi parte, valoro estos cambios positivos para la evolución de lo que algunos ya empiezan a denominar "posiblemente el mejor ERP del mercado" , humildemente no sé si ahora mismo podría catalogarse así, pero nadie discutirá que teniendo en cuenta su ciclo de vida va encaminado a serlo algún día.

Antes de concluir un Saludo a Alan (http://www.theopensourcerer.com/) al que me hizo mucha ilusión conocer y tal y como le prometí cuelgo la foto que nos hicimos juntos en Bruselas ;)



Un Saludo y a disfrutar,

Juani







jueves, 1 de marzo de 2012

Configurar click2call con OpenERP 6.1 y Asterisk

De la mano de Carlos Sanchez (Responsable de sistemas del departamento de Informática de Cebanc) me llega un interesante tutorial relacionado con Asterisk, un programa de software libre que proporciona la funcionalidad de una centralita telefónica.

Estos son los pasos a seguir:

1.- Añadir en el servidor Asterisk en el fichero /etc/asterisk/manager.conf

; Feature click2dial para su CRM (28feb2012)
[click2dial]  ; This is the AMI login
secret = <PASSWORD> ; This is the AMI password
; We deny AMI access for everybody
; We accept AMI access for OpenERP server
permit = <IP_SERVIDOR_OPENERP>/255.255.255.255
; We give the minimum access rights required for the click2dial feature
read = call
write = call

2.- Instalar el módulo en opnerp

Asterisk Click2dial

Others
asterisk_click2dial

3.- configurar el módulo
Administración - compañias - nuestra compañia - veremos una nueva pestaña IPX

 
En IP: dirección ip del servidor Asterisk
Login AmI: lo que hemos puesto en el fichero del paso 1
Contraseña AMI: lo que hemos puesto en el fichero del paso 1
Contexto del plann de marcado: hay que mirar en el fichero /etc/asterisk/dialplan cómo lo tenemos configurado para poner el contexto adecuado en las llamadas que podrá realizar el terminal.
Lo demás tal cual está en la imagen
Le damos a guardar y luego otra vez a guardar en company (puesto que si no nos lo grabará)

Luego en administración → usuarios
Habrá que decirle por cada usuario dado de alta en el sistema, qué extensión interna tiene (para saber openERP a qué teléfono tiene que llamar para establecer la llamada cuando se pulse el botón de marcar)
En servidor asterisk: seleccionar el creado en el paso 2
ID de lllamada: lo que nos aparecerá en el display del teléfono al establecer la llamada
Lo demás tal cual aparece en la imagen




Prueba
Tengo que entrar con mi usuario en openerp y tener ese usuario asociado a una extensión interna
Desde libreta de direcciones → cliente → nos saldrá la opción de marcar a la derecha de los número de teléfono


Gracias Carlos, espero que sigamos teniendo artículos interesantes para publicar.

martes, 28 de febrero de 2012

Instalación de OpenERP 6.1 en Ubuntu Server


La nueva versión de OpenERP 6.1 anuncia una gran cantidad de mejoras incrementales en el producto, además de una completa re-escritura de la interfaz web, que es una mejora enorme y más integrada en el producto que en el caso de su predecesor.

Antes de continuar, debo mencionar que se puede instalar la versión 6.1 en Ubuntu simplemente con un paquete “.deb”. Pero eso no me da el suficiente control sobre donde se instalan las cosas y se restringe la flexibilidad de modificar y personalizar el proceso de instalación por lo cual yo prefiero hacerlo de una forma más manual … (Hay que decir sin embargo que este proceso de instalación solo conlleva 10 -15 minutos una vez montado el equipo anfitrión)

Así que, sin más preámbulos vamos allá:


Paso 1. Preparando el servidor

Podemos realizar una instalación mínima del servidor (se puede instalar el openssh-server durante el proceso de instalación o instalarlo posteriormente, depende de las preferencias de cada uno).
Después de que el servidor sea reiniciado por primera vez instalamos el paquete openssh-server (por lo cual podemos conectarnos remotamente) y el paquete denyhosts para añadir protección ante ataques de fuerza bruta. Hay otra serie de aplicaciones disponibles destinadas a la protección : No digo que este sea el mejor, pero funciona y es fácil de configurar y administrar. Si no lo hemos hecho ya, es interesante la creación de claves de seguridad para evitar el tener que estar introduciendo contraseñas. Esto también ayuda a evitar ataques de fuerza bruta. [NOTA: Esto no es manual de seguridad para su servidor …].
sudo apt-get install openssh-server denyhosts
Ahora asegurémonos de que disponemos de las últimas actualizaciones del sistema:
sudo apt-get update
sudo apt-get dist-upgrade
Aunque no es esencial hacerlo siempre, en este punto es una buena idea reiniciar nuestro servidor y asegurarnos de que todo inicia correctamente y podemos acceder vía ssh.
Ahora estamos preparados para llevar acabo la instalación de OpenERP 6.1.
 

Paso 2. Creando el usuario que será propietario de OpenERP y llevará a cabo la ejecución de la aplicación

sudo adduser --system --home=/opt/openerp --group openerp
Se trata de un usuario del “sistema”. Es creado para ser propietario de la aplicación y hacerla correr, se presupone que no va a ser un tipo de usuario de una persona física con una sesión de login, etc. En Ubuntu a un usuario del sistema le es asignado un UID por debajo de 1000, no dispone de shell (es actualmente /bin/false) y su login se encuentra deshabilitado. Debemos tener en cuenta que he especificado como “home” el directorio /opt/openerp, y es ahí donde se alojará el código del servidor de OpenERP y se crea automáticamente mediante la ejecución del comando anterior. La ubicación del código del servidor es elección de cada uno, pero tengamos en cuenta que si elegimos otra ubicación hemos de modificar algunas de las instrucciones que se llevan a cabo más adelante en este manual.
Una de las preguntas que me realizaron varias veces en el anterior manual de la versión 6.0 fue como hacer correr la aplicación desde la línea de comandos si éste no dispone de shell. Esto se puede llevar a cabo de una manera muy sencilla:
sudo su - openerp -s /bin/bash
Mediante este comando se logueará en la terminal actual el usuario openerp con privilegios de Superadministrador (el “-” entre su y openerp es correcto) y usará la shell /bin/bash. Tras correr este comando nos encontraremos en el directorio /opt/openerp.
Después de realizar las tareas necesarias podemos salir de la sesión tecleando exit.


Paso 3. Instando y configurando el servidor de bases de datos PostgreSQL

sudo apt-get install postgresql
Configuramos el usuario postgres para OpenERP:
Nos logueamos como usuario postgres para disponer de los privilegios necesarios en postgresql.
sudo su - postgres
Ahora creamos un usuario de bases de datos. Mediante este usuario OpenERP podrá conectar con PostgreSQL y dispondrá de privilegios para crear y borrar bases de datos. Debemos recordar la contraseña que elijamos para nuestro usuario ya que será necesaria más adelante.
createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt openerp
Enter password for new role: ********
Enter it again: ********
Finalmente saldremos de la sesión del usuario postgres mediante el siguiente comando:
exit


Paso 4. Instalando en el servidor las librerías python necesarias reporting. Have added python-simplejson to the package list.

sudo apt-get install python-dateutil python-feedparser python-gdata \
python-ldap python-libxslt1 python-lxml python-mako python-openid python-psycopg2 \
python-pybabel python-pychart python-pydot python-pyparsing python-reportlab
python-simplejson python-tz python-vatnumber python-vobject python-webdav \
python-werkzeug python-xlwt python-yaml python-zsi
Debido a mi experiencia puedo decir que en Ubuntu 10.04 el paquete python-werkzeug es demasiado antiguo y esto puede desembocar en que el servidor no se inicie correctamente. Si estamos relizando la instalación en una versión posterior de Ubuntu posiblemente esté todo OK, pero en el caso contrario podemos realizar lo siguiente.
He visto necesario instalar una versión más reciente de Werkzeug usando la librería PIP para gestión de paquetes python. La herramienta PIP puede ser instalado de la siguiente forma:
sudo apt-get install python-pip
Desinstalamos la versión de Werkzeug suministrada por Ubuntu:
sudo apt-get remove python-werkzeug
Instalamos la versión más reciente:
sudo pip install werkzeug
Una vez realizado esto tenemos satisfechas todas las dependencias para OpenERP 6.1 , incluso las necesarias para la nueva interfaz web.

Paso 5. Instalando el servidor de OpenERP

Yo tiendo a usar el comando wget para este tipo de cosas y descargar archivos a mi directorio home.
Asegurémonos de que disponemos de la última versión de la aplicación. En el momento de la realización de este artículo la versión es la 6.1-1, cogemos los enlaces de descarga de su pagína de descargas.
Para continuar con la instalación nos posicionamos en el directorio /opt/openerp/ y extraemos el archivo tar.gz allí.
cd /opt/openerp
sudo tar xvf ~/openerp-6.1-1.tar.gz
Lo siguiente es cambiar el propietario de todos los archivos poniendo a openerp como usuario y grupo.
sudo chown -R openerp: *
Y finalmente, lo que hecho es copiar el directorio a otro con un nombre más simple para que no sea necesario estar editando constantemente los scripts de arranque y los archivos de configuración (haciendo uso de una gran imaginación lo he llamado server). Comencé usando enlaces simbólicos, pero me encontré con que al actualizar tiene más sentido para mí mantener sólo una copia de los archivos en un mismo lugar y sobreescribir los cambios. De este modo podemos mantener todo lo necesario como módulos, informes, etc... en el lugar correcto.
sudo cp -a openerp-6.1-1 server
Por ejemplo, pronto tendremos la versión de OpenERP 6.1-2, podemos extraer los archivos en /opt/openerp/ como hemos realizado arriba. Podemos realizar cualquier prueba que necesitemos, luego repetimos el comando de copia para sobreescribir los modulos necesarios, informes, etc... Una vez satisfecha la actualización si todo es estable podemos proceder al borrado de los antiguos directorios de la versión 6.1-1.
El servidor de OpenERP ha sido instalado. Los últimos pasos que nos quedan para que el sistema esté configurado al 100% son crear un archivo de configuración y un script de arranque para que OpenERP incie y paré el servicio junto con el sistema operativo.

Paso 6. Configurando OpenERP

El archivo de configuración por defecto del servidor (en /opt/openerp/server/install/) con unos pequeños cambios funciona correctamente, así que simplemente vamos a copiar el archivo donde sea necesario y cambiar el propietario y los permisos:
sudo cp /opt/openerp/server/install/openerp-server.conf /etc/
sudo chown openerp: /etc/openerp-server.conf
sudo chmod 640 /etc/openerp-server.conf
Los comandos anteriores hacen que el archivo sea propiedad del usuario openerp y escribible por él y solamente de lectura para openerp y root.
Para iniciar el servidor de OpenERP, debemos hacer unos cambios en el archivo de configuración. Si vamos a la parte de arriba del archivo cambiamos la linea db_password = False por la misma contraseña que hemos creado en el paso 3. Cada cual puede usar el editor de textos que prefiera, yo tiendo a usar nano por ejemplo.
sudo nano /etc/openerp-server.conf
Otra linea que también es recomendable cambiar dentro del archivo de configuración es la que hace referencia al archivo log :
logfile = /var/log/openerp/openerp-server.log
Una vez terminamos de editar el archivo y lo guardamos, podemos inciar el servidor de OpenERP para confirmar que todo funciona correctamente.
sudo su - openerp -s /bin/bash
/opt/openerp/server/openerp-server
Si vemos unas cuantas líneas de log en las que dice que OpenERP está corriendo y esperando conexiones está todo listo. Podemos proceder a parar el servidor con CTRL + C y teclear exit para salir de la sesión.
Si hay errores, tendremos que volver atrás y comprobar donde puede estar el problema.


Paso 7. Instalando el script de inicio

Como último paso necesitamos instalar un script de inicio el cual será usado para que OpenERP se inicie con el servidor y se apague junto a él corriendo la aplicación además con el usuario correcto. Hay un script que podemos usar en /opt/openerp/server/install/openerp-server.init pero este script necesitará unas pequeñas modificaciones para trabajar de la manera que hemos descrito anteriormente. Aquí hay un enlace de como lo he modificado para la 6.1-1.
Al igual que hemos hecho con el archivo de configuración hemos de copiar y pegar el contenido de este script en un archivo en /etc/init.d/ y llamarlo openerp-server. Además de colocarlo en el lugar correcto tenemos que hacerlo ejecutable y poner de propietario a root:
sudo chmod 755 /etc/init.d/openerp-server
sudo chown root: /etc/init.d/openerp-server
En el archivo de configuración hay una entrada para el archivo log del servidor. Necesitamos crear el directorio que hemos designado si no existe y hacerlo escribible para el usuario openerp:
sudo mkdir /var/log/openerp
sudo chown openerp:root /var/log/openerp

Paso 8. Probando el servidor

Para iniciar el servidor de openerp escribimos en una terminal:
sudo /etc/init.d/openerp-server start
Ahora deberiamos ver la salida del log y ver que el servidor ha iniciado correctamente.
less /var/log/openerp/openerp-server.log
Si experimentamos algún problema al iniciar el servidor debemos volver atrás y realizar las comprobaciones pertinentes. Realmente no hay nada que nos indique la razón de porqué no inicia ...
Si el archivo log parece OK, pondremos en nuestro navegador preferido el dominio o la IP de nuestro servidor de OpenERP (o localhost si nos encontramos en la misma máquina) y usaremos el puerto 8069. La URL quedaría algo como esto:
http://IP_or_domain.com:8069
Y deberiamos ver una ventana como esta:
OpenERP 6.1 Home Screen
Ventana de Login de OpenERP 6.1

Lo que sí recomiendo llegados a este punto es cambiar el password de super admin por uno que sea adecuado y seguro (Hacemos click en “Manage Databases” , un link que hay debajo del recuadro de login). Por defecto este password es “admin” y conociendo este dato un usuario puede crear, realizar backups, restores e incluso... ¡ borrar bases de datos! Este password está como texto plano en el archivo de configuración en /etc/openerp-server.conf; Cuando cambiemos y guardemos el nuevo password el archivo /etc/openerp-server.conf será reescrito y pasará a tener más opciones..
Ahora es momento de comprobar que el servidor de OpenERP también se detiene correctamente:
sudo /etc/init.d/openerp-server stop
Asegurémonos de que se ha parado comprobando el archivo log o mirando la lista de procesos python activos en el servidor.

Paso 9. Automatizando el inicio y apagado de OpenERP

Si todo funciona correctamente, el último paso que debemos dar es crear el script que hace que OpenERP se inicie y se pare junto a Ubuntu Server. Para realizar esto escribimos en la terminal:
sudo update-rc.d openerp-server defaults
Ahora podemos reiniciar el servidor. OpenERP debería estar en funcionamiento tras iniciar sesión en el servidor.
Si escribimos en la terminal: ps aux | grep openerp deberiamos ver algo parecido a:
openerp 1491 0.1 10.6 207132 53596 ? Sl 22:23 0:02 python /opt/openerp/server/openerp-server -c /etc/openerp-server.conf
Si aparece algo así en nuestra terminal el servidor está corriendo. Y por supuesto también podemos comprobar el archivo del log o conectarnos desde el navegador.
¡Esto es todo!
 Agradecer nuevamente a Alan su excelente trabajo y aquí teneis el artículo original de su blog.

http://www.theopensourcerer.com/2012/02/22/how-to-install-openerp-6-1-on-ubuntu-10-04-lts/
 
Juani

PD: El artículo ha sido traducido íntegramente manteniendo todos los comentarios originales de Alan.

Crear entorno de OpenERP 6.1

Al ver que todavía no hay en Launchpad un script bzr_set.py para la nueva release de OpenERP 6.1, me he tomado la libertad de crearme uno propio con lo que tenemos disponible de momento.

Para los que no conozcais el script, ejecutándolo podemos crear en ese directorio toda la estructura de OpenERP, con lo que tendriamos una instancia de OpenERP completa. Lo he modificado de tal manera que además de bajarnos la 6.1 también nos baja la localización española haciendo también todos los enlaces simbólicos. Para los que desarrolleis os facilitará mucho el trabajo.

Ya que no puedo adjuntar archivos en este blog os paso el código tal cual:

#!/usr/bin/python



# Modificado por Juani Ubeda para uso temporal #(http://www.informaticartica.blogspot.com)

__all__ = ['update_openerp']

import os
import shutil
import glob
import bzrlib.builtins
from bzrlib.plugins import launchpad
from bzrlib.branch import Branch
from bzrlib.errors import NotBranchError
from bzrlib.revisionspec import RevisionSpec

def run_cmd(cmdname, *args, **kwargs):
    f = getattr(bzrlib.builtins, 'cmd_' + cmdname)()
    if hasattr(f, '_setup_outf'):
        # old versions of bzr does not have this function  
        # this function must be called to avoid a exception in bzr code
        f._setup_outf()
    return f.run(*args, **kwargs)

_VERSIONS = ('4.2', '5.0', '6.0', '6.1','trunk')
_DEFAULT_VERSION = '6.1'
_EXTRA_ADDONS_MAP = {
    '4.2': '4.2-extra-addons',
    '5.0': 'stable_5.0-extra-addons',
    '6.0': 'extra-6.0',
    '6.1': 'trunk-extra-addons',
}

def update_openerp(dest_dir, version=_DEFAULT_VERSION, lplogin=None, export=False, revision=None, verbose=False):
    """
        if lplogin == None -> make a branch instead of a checkout
        if export == True -> bzr export
        if revision is provided, get the branches at this revision
            more information with:
                $> bzr help revisionspec
    """
    def log(msg):
        if verbose:
            print msg

    if version not in _VERSIONS:
        raise Exception('Unknown version')
    dest_dir = dest_dir or '.'

    branch = lplogin is None
    if branch:
        BASEURL = 'lp:'
    else:
        BASEURL = 'bzr+ssh://%s@bazaar.launchpad.net/' % (lplogin,)

    # map branch URLs according to version
    extraversion = _EXTRA_ADDONS_MAP[version]
    communityversion = 'trunk'
    webversion = version

    bzr_repository = {
        'server': (BASEURL + '~openerp/openobject-server/' + version, True),
        'client': (BASEURL + '~openerp/openobject-client/' + version, True),
        'addons': (BASEURL + '~openerp/openobject-addons/' + version, True),
        'addons-extra': (BASEURL + '~openerp-commiter/openobject-addons/' + extraversion, False),
        'addons-community': (BASEURL + '~openerp-community/openobject-addons/' + communityversion + '-addons-community', False),
        'web': (BASEURL + '~openerp/openerp-web/' + webversion, True),
    'spanish': (BASEURL + '~openerp-spain-team/openerp-spain/' + version, True),
    }

    bzr_links = {
        'addons/*': 'server/openerp/addons/',
    'addons-extra/*': 'server/openerp/addons/',
    'addons-community/*': 'server/openerp/addons/',
    'spanish': 'server/openerp/addons/',
    }

    if branch:
        cmd = {'new': lambda u, l, r: run_cmd('branch', u, l, revision=r),
               'update': lambda u, l, r: run_cmd('pull', u, directory=l, overwrite=True, revision=r),
        }
    else:
        cmd = {'new': lambda u, l, r: run_cmd('checkout', u, l, lightweight=True, revision=r),
               'update': lambda u, l, r: run_cmd('update', l), # no revision option :(
        }
    cmd['export'] = lambda u, l, r: run_cmd('export', l, u, revision=r)

    msg = "%(status)s %(type)s of %(from)s into %(to)s"

    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)

    for local, (bzrdir, has_tags) in bzr_repository.items():
        local = os.path.join(dest_dir, local)
        typ = ['checkout', 'branch'][branch]
        if export:
            if os.path.exists(local):
                shutil.rmtree(local)
            status = 'export'
            typ = 'sources'
        else:
            try:
                b = Branch.open(local)
                # FIXME check that the current workingDirectory is a branch or a checkout
                status = 'update'
            except NotBranchError:
                status = 'new'
       
        frm = bzrdir
        rev = None
        if revision and (not revision.startswith('tag:') or has_tags):
            frm = '%s (%s)' % (bzrdir, revision)
            rev = RevisionSpec.from_string(revision)

        log(msg % {'status': status, 'type': typ, 'to': local, 'from': frm})
               
        cmd[status](bzrdir, local, rev and [rev] or None)

    # Doing symlinks
    log('(Re)Computing Symbolic links...')
    for src2,dest2 in bzr_links.items():
        src2 = os.path.join(dest_dir, src2)
        dest2 = os.path.join(dest_dir, dest2)
        for src in glob.glob(src2):
            dest = os.path.join(dest2, os.path.basename(src))
            if not os.path.isdir(dest):
                os.symlink(os.path.realpath(src), dest)

    log('='*79)
    log('Sources of OpenERP have been installed. If you develop new features,')
    log('you can get more information on how to contribute to the project here:')
    log('\thttp://test.openobject.com')
    log('='*79)

#
# Testing bzr send
#

if __name__ == '__main__':
    import optparse
    description = """Tool that allows you to get the last sources of openerp on launchpad.
It downloads all branches, and create symlinks for addons in the server. By
default, it loads the latest stable version.
"""
    parser = optparse.OptionParser(description=description,
                                   usage="%prog [options] [directory]")
    parser.add_option('--checkout', dest='lplogin', help="Specify the launchpad login to make a checkout instead of a branch")
    parser.add_option('--export', dest='export', help='Make an export of the sources, instead of branches', action='store_true', default=False)
    parser.add_option('-v', dest="version", default=_DEFAULT_VERSION, type="choice", choices=_VERSIONS, help="Specify the version to take (trunk, 4.2, 5.0, 6.0)")
    parser.add_option('-r', dest="revision", default=None, help="Specify the revision to take. (useful to take a specific TAG or to specify a DATE)")
    parser.add_option('-q', '--quiet', dest='quiet', help='Suppress the output', action='store_true', default=False)
    opt, args = parser.parse_args()
    dest_dir = args and args[0] or '.'
    update_openerp(dest_dir, opt.version, opt.lplogin, opt.export, opt.revision, not opt.quiet)

Espero que os sea de utilidad, el uso es simple:

- Copias este código en un archivo de texto y lo llamais por ejemplo bzr_set.py
- Lo copiais a un directorio donde querais tener la instancia de OpenERP 6.1
- Lo ejecutais con la orden : python bzr_set.py
- Esperais un ratito a que termine. (Os dará una serie de Warnings, si quereis evitarlos descargad de Launchpad el script y la carpeta y archivo ocultos que lo acompañan y reemplazais el script por el mío)

Para arrancar openerp seguid los siguientes pasos:

- entrar en la carpeta server : cd server
- arrancar el servidor : ./openerp-server --addons-path=openerp/addons/,../web/addons --load=web
- escribir en el navegador : http://localhost:8069
- a disfrutar ........ ;)

Cada vez que lo ejecuteis os actualizará los directorios con lo último de cada rama.

Saludos ,
Juani

sábado, 11 de febrero de 2012

La nueva versión de OpenERP 6.1

Bueno, pues después de las primeras pruebas que he realizado con la nueva versión de OpenERP, he de deciros que me he llevado una grata sorpresa al ver la fluidez del cliente web frente a versiones anteriores.
Entre las cosas que me han llamado la atención destacaría el nuevo TPV y la sección de proyectos y tareas. Aunque no hay grandes cambios en torno a la usabilidad la forma en la que se nos muestran con colores está muy bién elaborado. El menú de Administración ahora es Settings y muestra muy pocos cambios de momento. El limpiado de cara que ha recibido la pantalla de login, la parte de gestión de bases de datos y el asistente de configuración de base de datos es excepcional y visualmente muy atractivo.
En breve os mostraré más cosas de esta nueva versión,... quedo pendiente de subir imágenes ya que una imagen vale más que mil palabras. Me da muy buenas vibraciones está nueva versión, en cuanto tengamos la localización española preparada os haré un pequeño tutorial de como realizar la instalación completa de OpenERP 6.1.

Saludos, Juani

martes, 7 de febrero de 2012

SSL en Servidor con OpenERP


INSTALACIÓN SSL EN OPENERP

1. Instalando Apache y los módulos requeridos

Instalar apache mediante el siguiente comando:
sudo apt-get install apache2
Ahora le diremos a apache que queremos usar unos módulos (mod_ssl, mod_proxy, mod_proxy_http, mod_headers and mod_rewrite [optional]) que no están activos por defecto:
sudo a2enmod ssl proxy_http headers rewrite
Lo siguiente que necesitamos es generar las claves y el certificado de SSL.

2. Creando el certificado y las claves

Vamos a crear los archivos en un directorio temporal para después moverlos a su lugar definitivo una vez se hayan generado correctamente (El primer “cd” es para asegurarnos que estamos dentro de nuestro home, dicho comando te devuelve siempre a la ruta de tu home):
cd
mkdir temp
cd temp
Tras esto generamos una nueva clave, nos pide una contraseña y la confirmación de dicha contraseña:
openssl genrsa -des3 -out server.pkey 1024
Realmente no nos interesa tener que introducir la contraseña cada vez que iniciamos el servidor por lo cual eliminamos la contraseña de la siguiente manera:
openssl rsa -in server.pkey -out server.key
Lo siguiente es crear una solicitud de firma que contendrá los datos que serán visibles en el certificado final:
openssl req -new -key server.key -out server.csr
Esto genera una serie de prompts como estos:
Introducir la información requerida:
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:The Client’s Company
Y finalmente nosotros firmamos nuestro propio certificado.
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Solamente tenemos 2 de los archivos en el directorio de trabajo, la clave y el certificado. Pero antes de poder trabajar con ellos tenemos que cambiar el propietario y los permisos en ambos archivos:
sudo chown openerp:root server.crt server.key
sudo chmod 640 server.crt server.key
Y (muy importante) ponerlos en lugar seguro:
sudo mkdir /etc/ssl/openerp
sudo chown openerp:root /etc/ssl/openerp
sudo chmod 710 /etc/ssl/openerp
sudo mv server.crt server.key /etc/ssl/openerp/
Ahora la clave y el certificado se encuentran guardados en lugar seguro, debemos decirle a Apache donde se encuentran:

3. Creando el archivo de configuración de Apache

Vamos a crear un nuevo archivo de configuración del “Virtual Host”
sudo nano /etc/apache2/sites-available/openerp-ssl
con el siguiente contenido:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/openerp/server.crt
SSLCertificateKeyFile /etc/ssl/openerp/server.key
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyVia On
ProxyPass /webdav/ http://127.0.0.1:8069/webdav/
<Location /webdav/ >
ProxyPassReverse /webdav/
<Limit OPTIONS PROPFIND GET REPORT MKACTIVITY PROPPATCH PUT MOVE COPY DELETE LOCK UNLOCK>
Order Deny,Allow
Allow from all
Satisfy Any
</Limit>
</Location>
ProxyPass / http://127.0.0.1:8080/
<location / >
ProxyPassReverse /
</location>
RequestHeader set "X-Forwarded-Proto" "https"
# Fix IE problem (httpapache proxy dav error 408/409)
SetEnv proxy-nokeepalive 1
</VirtualHost>
Fijémonos que hay 2 configuraciones proxy. Una para /webdav/ and otra para /. Si no teneis intención de usar WebDAV o CalDAV os podeis saltar esta sección. Pero esencialmente, nosotros le decimos a Apache que el tráfico de WebDAV necesita usar el puerto XMLRPC en el servidor de OpenERP y el tráfico normal web debe usar el puerto 8080 que es que usa el cliente Web. El orden es sumamente importante. Si / viene antes que /webdav/ podría no funcionar.
Tras esto podemos activar la nueva configuración de sitio.
sudo a2ensite openerp-ssl
Opcionalmente, podemos usar mod_rewrite para redireccionar cualquier tráfico normal (no encriptado) del navegador al puerto SSL (443).
Para conseguir hacer esto, añade las siguientes líneas (fuera de <directory> ) al archivo /etc/apache2/sites-available/default
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

4. Cambios en los archivos de configuración del servidor de OpenERP y el OpenERP Web

El siguiente paso es reconfigurar OpenERP Server y OpenERP Web para que los servicios no cifrados no sean accesibles desde el exterior.
En /etc/openerp-server.conf los 2 servicios no encriptados estarán a la escucha solo en localhost, es decir no se acepatarán conexiones externas , serán aceptadas vía Apache. Por lo tanto debemos indicar el servicio de XMLRPC-SSL para que sepa donde encontrar el certicado y la clave necesarios.
Realicemos los siguientes cambios:
sudo nano /etc/openerp-server.conf
xmlrpc = True
xmlrpc_interface = 127.0.0.1
xmlrpc_port = 8069
netrpc = True
netrpc_interface = 127.0.0.1
netrpc_port = 8070
xmlrpcs = True
xmlrpcs_interface =
xmlrpcs_port = 8071
secure_pkey_file = /etc/ssl/openerp/server.key
secure_cert_file = /etc/ssl/openerp/server.crt
Si queremos disponer de acceso WebDAV/CalDAV añadir lo siguiente al final del archivo de configuración:
[webdav]
enable = True
vdir = webdav
Tras esto, realizaremos una serie de cambios en el archivo de configuración del cliente web en /etc/openerp-web.conf para que acepte tráfico solamente desde localhost:
sudo nano /etc/openerp-web.conf
# Some server parameters that you may want to tweak
server.socket_host = “127.0.0.1″
# Set to True if you are deploying your App behind a proxy
# e.g. Apache using mod_proxy
tools.proxy.on = True
# If your proxy does not add the X-Forwarded-Host header, set
# the following to the *public* host url.
tools.proxy.base = ‘https://your-ip-or-domain’
# Set to false to disable CSRF checks
tools.csrf.on = False
Esto es todo.

5. Probemos...

Reiniciar los servicios para cargar las nuevas configuraciones
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
No debería ser capaz de conectar con el cliente Web en el puerto 8080 y el cliente GTK no debería conectar ya sea mediante el NetRPC (8070) o bien el XMLRPC (8069) . Para el acceso web sólo tenemos que entrar con https://tu-ip-o-dominio y en el cliente GTK tendremos que usar el puerto 8071 y elegir el protocolo XMLRPC (protocolo seguro).


Para el acceso por URL al CalDAV debemos escribir algo como esto en nuestros navegadores:
https://tu-ip-o-dominio/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME
Y hasta aquí puedo leer....
No quisiera terminar este artículo del blog sin agradecer sus aportes a Alan, os dejo el enlace original y aceptaré cualquier corrección en cuanto a la traducción del texto.
http://www.theopensourcerer.com/2011/04/21/how-to-install-openerp-6-on-ubuntu-10-04-lts-server-part-2-ssl/
Juani

miércoles, 18 de enero de 2012

Nueva sección OpenERP 6.1

Acabo de estrenar una nueva sección para la versión 6.1, aquí encontrareis artículos relacionados con esta nueva versión.

Juani

sábado, 14 de enero de 2012

Video de muestra de OpenERP 6.1 RC1

Aquí os muestro un pequeño video de OpenERP 6.1 en funcionamiento en mi equipo local. Espero que os guste




Juani

PD -> Me acabo de dar cuenta que se ve demasiado pequeño ,... ya lo subiré mejor cuando encuentre un rato ;)

viernes, 13 de enero de 2012

OPENERP 6.1 RC1 LANZADA ;)

Acaban de lanzar la versión 6.1 RC1 de OpenERP, todavía es una versión release candidate, pero ya podemos probar multitud de mejoras.
Os paso un enlace a OpenERPsite para que veais las características de la nueva versión.

OpenERPsite_OpenERP6.1_RC1