You are on page 1of 33

Prcticas

con Odoo

Tabla de contenido
1. Introduction
2. Configuracin del sistema
3. Configuracin de Odoo
4. Configuracin de la legislacin espaola
5. notas un poco cochinas

Prcticas con Odoo

Prcticas con Odoo


Para la asignatura Gestin de datos en Sistemas de Informacin Web del curso de adaptacin al grado de informtica
de 2015 de la Universidad de Almera.
Este manual est escrito usando una configuracin de sistemas operativos Fedora/CentOS/RHEL. Probablemente la
mayor parte de los contenidos son aplicables directamente o con cambios triviales en otras plataformas.
Y no, esta memoria de prcticas no est suficientemente acabada.

Introduction

Prcticas con Odoo

Configuracin del sistema


En resumidas cuentas:
Odoo (antiguo OpenERP) como sw de gestin/ERP
Docker como sistema de contenedores
postgresql como SGBDR
haproxy como proxy inverso https
CentOS 7 como SO Linux
Menos Odoo todos los dems productos vienen de serie en las versiones modernas de las distros CentOS y Fedora.
En este caso usaremos una aproximacin de operacin con contenedores Docker. La tecnologa de contenedores permite
configuraciones semejantes a las que se pueden hacer con mquinas virtuales pero con menos coste de memoria y CPU.
Eso no significa que un contenedor pueda sustituir a una mquina virtual (corriendo sobre kvm, Xen, VirtualBox o
VMWare) en todos los casos o que sea superior a estas en todas las circunstancias. Sin embargo es una aproximacin de
moda que cuenta con varias comodidades.
Odoo ha sido elegido por varios motivos:
es software libre (v8 tiene licencia AGPL)
corre en Linux con toda normalidad
es un producto con solera y con una comunidad importante de usuarios, desarrolladores y proveedores en todo el
mundo
la oferta de mdulos y aadidos es importante y cubre la reglamentacin espaola
es muy maduro, aun con los cambios que se le estn realizando desde las versiones v5
es el que debe implantar este que suscribe para sostener las actividades de la asociacin Club de Cacharreo
La eleccin de postgresql es obvia. Es un producto magnfico y est perfectamente integrado con Odoo.
haproxy es un aadido necesario. Por algn extrao motivo que escapa a nuestra comprensin Odoo no implementa en su
servidor web el soporte TLS (https). Como en nuestra instalacin eran inevitables los accesos desde internet con
navegador web se haca intolerable cualquier riesgo de interceptacin de informacin y una de las alternativas ms
asequibles consiste en levantar un proxy inverso TLS ligero que cifre las comunicaciones web desde el exterior.
Sobre CentOS la pregunta no es por qu lo hemos elegido nosotros sino por qu no lo habis elegido los dems.

Preparacin del sistema


Instalamos las dependencias docker:

dnf install -y docker-io fig # instalamos los paquetes que vamos a necesitar con todas sus dependencias
systemctl enable docker.service # activamos el servicio docker desde el arranque del sistema
systemctl start docker.service # ponemos en ejecucin el servicio docker

En general, para usar docker es necesario tener permisos de superusuario, pero podemos evitarlo aadiendo nuestro
usuario al grupo adecuado del sistema:

usermod usuario -G docker

Configuracin del sistema

Prcticas con Odoo

Configuracin de los contenedores


Podemos levantar una configuracin de contenedores docker de varias maneras pero aqu usaremos la herramienta fig
porque su fichero de configuracin es muy expresivo. Ojo: las versiones ms recientes de fig ahora se desarrollan como
docker compose.
Buena parte de las ventajas de usar Docker consiste en la biblioteca de imgenes que mantiene el proyecto. Usaremos
varias de llas
Tambin usamos imgenes publicadas en el registro pblico de docker.
En particular, y tras varios intentos no demasiado exitosos descubrimos a un alma gemela que por das nos llevaba
ventaja en su propia configuracin de un sistema equivalente. Yajo estaba creando casi en paralelo el mismo sistema en el
que nosotros hemos estado trabajando pero, realmente, lo estaba haciendo mejor.
Algo muy remarcable y que casi reduce al mnimo la complejidad de la instalacin es el uso de la herramienta de
orquestacin de contenedores fig (aunque Yajo ya se refiere a ella con el nombre actual docker composer). Ms
adelante resumimos la configuracin de orquestacin elegida.

Pasos para la configuracin


Creamos el directorio para el proyecto. El nombre es arbitrario pero, ojo, ser usado por fig para nombrar los contenedores
a crear.

mkdir odoo-cacharreo.club
cd odoo-cacharreo.club

A continuacin creamos un fichero fig.yml que expresar la configuracin de la orquestacin docker con los siguientes
contenidos:

# Odoo server itself


app:
image: yajo/odoo:latest
environment:
# Default values (you **must** change ADMIN_PASSWORD)
ADMIN_PASSWORD: ********
DATABASE: odoo
ODOO_SERVER: odoo.py
UNACCENT: True
WDB_NO_BROWSER_AUTO_OPEN: True
WDB_SOCKET_SERVER: wdb
WDB_WEB_PORT: 1984
WDB_WEB_SERVER: localhost
# If you are going to use the HTTPS proxy for production,
# don't expose any ports
ports:
- "8069:8069"
- "8072:8072"
volumes:
# Assuming you have an addons subfolder in the working tree
- addons:/opt/odoo/extra-addons:ro
volumes_from:
- appdata
links:
- db
- wdb # Debugger, only for development
command: launch
# Hold separately the volumes of Odoo variable data
appdata:

Configuracin del sistema

Prcticas con Odoo

image: yajo/odoo:data
# PostgreSQL server
db:
image: postgres:9.2
environment:
# You **must** change these
POSTGRES_USER: odoo
POSTGRES_PASSWORD: *************
volumes_from:
- dbdata
# PostgreSQL data files
dbdata:
image: postgres:9.2
command: "true"
# For development, add a debugger
wdb:
image: yajo/wdb-server
ports:
- "1984:1984"
# For production, you will likely use HTTPS
https:
image: yajo/https-proxy
ports:
- "800:80"
- "4433:443"
links:
- app:www
environment:
PORT: 8069
# In case you have your SSL key & certs, put them here:
KEY: |
-----BEGIN RSA PRIVATE KEY---- MIIEowIBAAKCAQEAvxDL6GSCI5rIU7MT92gqwk05TlXalYd3QOuDiAULf/1M3HaA
YcpgK6M9KIFDUKrG3OXmbOFa8vE0mFHsYXEX+cSyu4oBkyJNufe6oyywg3FJj+Q8
-----END RSA PRIVATE KEY---- CERT: |
-----BEGIN CERTIFICATE---- MIIDcDCCAlgCCQC73VZzsoPIyTANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJF
UzEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRowGAYDVQQKDBFDbHViIGRlIENhY2hh
cnJlbzENMAsGA1UEAwwEb2RvbzEpMCcGCSqGSIb3DQEJARYaaXNtYWVsLm9sZWFA
-----END CERTIFICATE-----

La sintaxis es YAML.
Puede observarse que el fichero fig.yml es bastante explcito. Define seis contenedores diferentes y las respectivas
propiedades docker de los mismos:
app: con el cdigo de Odoo
appdata: datos de trabvajo de Odoo alojados fuera de la bbdd
db: con el ejecutable de postgresql
dbdata: con, exclusivamente, los ficheros de la bbdd usada por Postgresql
wdb: consoola de depuracin de aplicaciones de Odoo
https: proxy TLS inverso
PORHACER: explicar la configuracin fig PORHACER: explicar el procedimiento de creacin de la orquestacin (pasos
intermedios)
Para saber si docker est operativo en nuestro sistema podemos usar la orden docker info que dar un resultado
semejante a :

$ docker info
Containers: 0
Images: 158
Storage Driver: devicemapper

Configuracin del sistema

Prcticas con Odoo

Pool Name: docker-253:1-1970278-pool


Pool Blocksize: 65.54 kB
Data file: /var/lib/docker/devicemapper/devicemapper/data
Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 6.67 GB
Data Space Total: 107.4 GB
Metadata Space Used: 9.781 MB
Metadata Space Total: 2.147 GB
Library Version: 1.02.93 (2015-01-21)
Execution Driver: native-0.2
Kernel Version: 3.17.4-301.fc21.x86_64
Operating System: Fedora 21 (Twenty One)
CPUs: 4
Total Memory: 11.73 GiB
Name: torlpedo.local
ID: AWLT:ZWM2:TPPM:6ORZ:V4RH:LSYM:ZSTX:JUJP:HRRP:U4WS:YGGJ:MY2G

Y verificamos que no hay contenedores instalados usando docker ps -a :

$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Entonces, desde el mismo subdirectorio en el que nos encontramos, podemos usar la orden fig para levantar la
configuracin de los tres contenedores:

$ fig up -d
Creating odoocacharreoclub_dbdata_1...
Creating odoocacharreoclub_db_1...
Creating odoocacharreoclub_appdata_1...
Creating odoocacharreoclub_app_1...
Creating odoocacharreoclub_https_1...
Creating odoocacharreoclub_wdb_1...

Obsrvese:
que la opcin -d (por detach) que levanta los contenedores corriendo como proceso de fondo;
que docker busca las imgenes preconfiguradas que indicamos en fig.yml primero entre las que estn operativas en el
sistema, despus entre las descargadas en su cach interna y finalmente las descarga del registro pblico y que todo
el proceso es completamente automtico y transparente;
que fig ha aadido el prefijo odoocacharreoclub* a cada nombre que elegimos para los contenedores.
A continuacin podemos comprobar que realmente nuestros contenedores estn operativos.
Vistos desde fig:

$ fig ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------- odoocacharreoclub_app_1 launch Up 0.0.0.0:8069->8069/tcp, 0.0.0.0:8072->8072/tcp
odoocacharreoclub_appdata_1 /bin/sh -c true Exit 0
odoocacharreoclub_db_1 /docker-entrypoint.sh postgres Up 5432/tcp
odoocacharreoclub_dbdata_1 /docker-entrypoint.sh true Exit 0
odoocacharreoclub_https_1 /usr/local/sbin/launch.sh Up 0.0.0.0:4433->443/tcp, 0.0.0.0:800->80/tcp
odoocacharreoclub_wdb_1 /bin/sh -c wdb.server.py - ... Up 0.0.0.0:1984->1984/tcp, 19840/tcp

La misma configuracin vista desde docker

Configuracin del sistema

Prcticas con Odoo

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
5cb46e82bb98 yajo/https-proxy:latest "/usr/local/sbin/lau 10 days ago Up 36 hours 0.0.0.0:800->80/tcp, 0.0.0
b3d96cf39863 yajo/odoo:latest "launch" 10 days ago Up 36 hours 0.0.0.0:8069->8069/tcp, 0.
f52a733241cd postgres:9.2 "/docker-entrypoint. 10 days ago Up 36 hours 5432/tcp
3f5891cf1bc0 yajo/wdb-server:latest "/bin/sh -c 'wdb.ser 10 days ago Up 36 hours 0.0.0.0:1984->1984/tcp, 19

Por qu las diferencias? Fcil, porque invocar docker ps slo muestra los contenedores que estn en ejecucin y tanto
odoocacharreoclub_dbdata_1 como odoocacharreoclub_appdata_1 no son contenedores que ejecutan cdigo sino
que sirven como almacenes de datos.
Para poder entender la complejidad de esta configuracin obsrvese la relacin entre las diferentes versiones del ciclo de
vida de las imgenes docker:

Configuracin del sistema

Prcticas con Odoo

Configuracin del sistema

Prcticas con Odoo

Finalmente la aplicacin Odoo queda accesible desde el puerto 4433, con cifrado TLS. En nuestro caso la direccin final
es https://olea.wtf.im:4433, que utiliza un DNS dinmico ya que se aloja edentro de la red de un usuario de banda ancha
de consumo.

Pendientes:
instalar whtmltopdf
El ajuste final de la orquestacin an est pendiente: bsicamente cerrar algunos puertos que realmente no van a
usarse
desactivar el mdulo de depuracin de Odoo
tal vez crear un nuevo certifacdo X509 para el proxy inverso para hacer ms cmodo el uso en el navegador de
certificados autofirmados
mejorar la configuracin de haproxy para evitar el uso de algoritmos inseguros como SSLv3
arreglar ERROR del cron:https://www.odoo.com/forum/help-1/question/could-not-obtain-lock-on-row-in-relation-ir-cron74519
arreglar WARNING club-de-cacharreo openerp.modules.registry: The option --unaccent was given but no unaccent()
function was found in database,
mirar aqu por si acaso.
app_1 | Trying to install unaccent extension
app_1 | CREATE EXTENSION
app_1 | NOTICE: extension "unaccent" already exists, skipping
app_1 | Executing 'odoo.py --config /etc/odoo/openerp-server.conf'

Configuracin del sistema

10

Prcticas con Odoo

Configuracin de Odoo
Este captulo debera ser ms detallado y prolijo... pero no, ha sido mal improvisado por el retraso del autor y porque le ha
dedicado ms tiempo a aprender a usar el artefacto que a documentarlo con el magnfico nivel de detalle de las prcticas
originales de la asignatura. Rogamos sean tenidas en cuenta estas disculpas.

Creacin de la bbdd
Una vez tenemos una configuracin operativa la probamos entrando con el navegador en la direccin
https://olea.wtf.im:4433 y encontraremos el men principal de la gestin de bbdd de Odoo que ser cmo:

Le parece que est muy expuesto, as tan alegremente? Ya le digo yo que a nosotros tambin, pero donde manda
upstream no manda integrador. Esta es una de las razones por las que era obligada la instalacin de un proxy inverso
TLS.
En nuestro caso crearemos:
una bbdd llamada cacharreo
en espaol
usaremos las mismas contraseas que indicamos en el fichero fig.yml
Nota: en este punto uno esperara un manual paso a paso, pero como voy a posteriori slo vamos a mostrar las
configuraciones que s hemos llevado a cabo a posteriori.

Configuracin general

Configuracin de Odoo

11

Prcticas con Odoo

Adicin de la empresa

Configuracin de Odoo

12

Prcticas con Odoo

Configuracin de los usuarios

Configuracin de Odoo

13

Prcticas con Odoo

Nota: Odoo distingue entre usuarios (que acceden al sistema) y empleados de la organizacin. Un usuario puede ser un
empleado, un usuario externo (si estn en uso mdulos como web, forums o portal) o interno pero sin asignacin de
empleado.

Seleccin de mdulos
Estos son los mdulos instalados en este momento:

Configuracin de Odoo

14

Prcticas con Odoo

Configuracin de Odoo

15

Prcticas con Odoo

Aunque hay que reconocer que algunos estn puestos a lo loco, mientras aprendemos a saber qu hacen y cmo se usan.

Gestin de proyectos
Una de nuestras prioridades ha sido estructurar las tareas del equipo y aumentar la visibilidad del trabajo. Sabedores que
existe una funcionalidad de kanban implementada en mdulos de gestin de proyecto procedimos a instalarlo:

Configuracin de Odoo

16

Prcticas con Odoo

Pueden observarse varios, incluso scrum, aunque ste realmente no lo usaremos por ahora.
S puede verse en cambio cmo estamos organizando el flujo del trabajo kanban:
Vista de proyectos:

Configuracin de Odoo

17

Prcticas con Odoo

Vista de tareas:

Configuracin de Odoo

18

Prcticas con Odoo

La metodologa de kanban se configura aparte:

Obervese que el usuario Ismael Olea tiene ms elementos del interfaz a la vista que el Administrador. Esto se debe a
que, si bien ambos tienen los mismos niveles de permisos, el primero tiene activado en su configuracin de usuario la
visualizacin de los aspectos tcnicos.

Configuracin de la web
Otro aspecto muy interesante de las versiones recientes de Odoo (al menos verificado en la v8) es que integran varias
funcionalidades web al margen del acceso a la aplicacin a travs del navegador, o ms bien deberamos decir adems
de.
En nuestro caso de trabajo ya tenemos implementada, con contenido de esttico. la web corporativa en otro servidor.
Aunque no tenemos inters especial en operar la web corporativa con Odoo se hace necesario explicitar la URI de
accesso, sobre todo porque los detalles de acceso no son triviales:
direccin DNS diferente al configurado en el sistema operativo
uso de TLS
a travs de un puerto no convencional (!= 443)
As las cosas configuramos la web de la siguiente manera:

Configuracin de Odoo

19

Prcticas con Odoo

Entrada y salida de correo


Otra de las funcionalidades de Odoo es la del envo y recepcin de correo electrnico para diferentes asuntos. En primera
instanacia el ms importante es el de salida, para que los avisos reciban notificaciones de cambios que les ataen.
Correo de salida:

Configuracin de Odoo

20

Prcticas con Odoo

Correo de entrada:

Configuracin de Odoo

21

Prcticas con Odoo

Obsrvese que el servidor al que se accede es tormento.olea.org, que aloja el MTA del dominio cacharreo.club,
configurado en el registro MX del servidor DNS de ste ltimo.
Obervese igualmente que usamos un usuario gestion.cacharreo para la burocracia administrativa relacionada con los
usos de Odoo.
En realidad Odoo tiene una integracin con el correo electrnico mucho ms potente que esto, que permite usar diferentes
direcciones de correo-e corporativas para diferentes asuntos, en funcin de cmo lo configuremos.
Entre esas posibilidades, en el pantallazo anterior puede observar la opcin [Servidor y conexin]->[Acciones a realizar en
los correos entrantes]->[Crear un nuevo registro]->[Tasks]. Este ajuste crea una tarea nueva por cada correo-e entrante.
Nos queda pendiente saber cmo asignar cada tarea a un usuario existente que reciba una notificacin de la llegada y
atienda el evento en consecuencia.

Configuracin de la mercadotecnia
Dado que precisamente nos encontramos desarrollando una campaa pretendidadamente viral hemos instalado al menos
el mdulo CRM para intentar sacarle partido.

Configuracin de Odoo

22

Prcticas con Odoo

Aunque lo cierto es que a lo que s parece que sabemos sacarle partido es al soporte comercial, en el que hemos
empezaod a distinguir, segn la nomenclatura de Odoo, iniciativas y oportunidades:

Configuracin de Odoo

23

Prcticas con Odoo

Configuracin de Audit Log


Audit Log es un mdulo para crear una bitcora automtica de la actividad en Odoo. Nosotros hemos intentado
configurarlo para registrar los cambios de configuracin, que nos sera utilsimo en estos momentos de aprendizaje y
pruebas ms o menos a lo loco para saber qu demonios estamos haciendo y cmo deshacer entuertos creados por
nosotros mismos.

Configuracin de Odoo

24

Prcticas con Odoo

Reglas configurados pretendiendo registrar todos los cambios de configuracin:

Configuracin de Odoo

25

Prcticas con Odoo

Cambios registrados hasta ahora:

Configuracin de Odoo

26

Prcticas con Odoo

Y como sabemos que efectivamente hemos hecho ms cambios de configuracin es obvio que quedan cosas por hacer.

Configuracin de la pantalla inicial/predeterminada del


usuario
Al parecer hay dos maneras para realizarlo:
modificando el orden de los mens de la barra superior, que se hara desde algn lugar del men de configuracin
modficando cada usuario interesado en el detalle de sus permisos.
Por estar en fases previas y por no marear ms de la cuenta al resto de los compaeros hemos optado por experimentar
en primera persona usando la segunda aproximacin. Esto se hace en el men [Configuracin]->[Usuarios]->[Ismael
Olea]->[Editar]->[Preferencias]->[Accin inicial] en donde elegimos tasks. De esta manera nuestra pantalla inicial ser
nuestra propia vista del panel kanban.

Configuracin de Odoo

27

Prcticas con Odoo

Parmetros del sistema


Para los novatos un men muy interesante que revisar es el de parmetros del sistema, que contiene algunos de los
ajustes generales que ms nos pueden interesar revisar y, en su caso, corregir

Configuracin de Odoo

28

Prcticas con Odoo

Pendientes:
Verificar que estamos usando auditlog correctamente
Verificar que estamos usando todos los mdulos para la reglamentacin espaola que necesitamos; los sospechosos
son al menos:
l10n_es_aeat_mod111
l10n_es_account_bank_statement_import_n43
l10n_es_aeat_mod347
l10n_es_partner
y no s si tambin
la principal secuencia para asientos
adems de las liquidaciones de impuestos
Verificar si estamos usando correctamente las campaas con el CRM
Repasar la manera en la que integrar el formulario de consultas de nuestra web dentro de Odoo, bsicamente
decidiendo si lo hacemos
por protocolo usado
smtp
directamente formulario web
por mdulo Odoo
como tareas nuevas en el kanban
como entradas en el mdulo de ventas
considerar en algn momento la integracin de nuestra web esttica con la web corporativa integrada de Odoo.
mejorar la configuracin de Audit Log para controlar al menos los cambios de configuracin
asignar a un usuario Odoo las tareas generadas por correo-e entrante, en [Configuracin]->[Email]->[Servidores de
correo entrante]->[Servidor y conexin]->[Acciones a realizar en los correos entrantes]->[Crear un nuevo registro]->
Configuracin de Odoo

29

Prcticas con Odoo

[Tasks]
gestionar domiciliaciones

Configuracin de Odoo

30

Prcticas con Odoo

Configuracin de la legislacin espaola

Configuracin de la legislacin espaola

31

Prcticas con Odoo

Notas un poco cochinas


Por haceres:
instalar whtmlpdf + dependencia

Haceres:
instalar topnimos espaoles + dependencia python https://apps.openerp.com/apps/modules/8.0/l10n_es_toponyms/
al instalar la aplicacin veremos una advertencia

en general podemos decir que las aplicaciones desarrolladas por la comunidad espaola son fiables y estables,
por lo que podremos aceptar e instalar sin problema.
Imposible instalar el mdulo "base_location_geonames_import" porqu hay una dependencia externa no
resuelta: No module named unicodecsv
ergo hemos de instalar unicodecsv (modificado en el Dockerfile)
para poder instalar desde Aplicaciones en lnea hay que estar autenticado en tu instancia Odoo y en
Odoo.com.
configuramos a travs de Configurar desde local porque la opcin de GeoNames no nos funciona.
es posible que aparezca un error y que de apariencia de que el mdulo no se ha instalado pero si lo
notas un poco cochinas

32

Prcticas con Odoo

comprobamos desde otra ventana del navegador comprobaremos que s lo est.


parece que realmente le toma bastantes minutos instalarlo
instalar dependenccias de legislacin espaola:
el principal mdulo es Spanish Charts of Accounts (PGCE 2008)
en nuestro caso instalamos la plantilla para entidades sin nimo de lucro

si encuentras un problema de permisos asgnate los necesarios o usa un usuario que s los tenga.
Informes de cuentas anuales espaoles

notas un poco cochinas

33

You might also like