Implantació tècnica de sistemes ERP-CRM: Odoo
Quan es parla de sistemes ERP-CRM el mot implantació s’acostuma a utilitzar per fer referència al procés global que té com a objectiu final la posada en marxa d’un nou sistema ERP-CRM a l’organització. Aquest procés té diverses fases: anàlisi de requisits, estudi de possibles solucions, decisió per un producte, instal·lació i configuració, migració de dades -si s’escau-, formació dels usuaris i execució d’adaptacions -si s’escau-. Una implantació entesa així és un procés molt complex que ha d’estar dirigit per professionals especialistes (consultors).
Per implantació tècnica de sistemes ERP-CRM entenem el subprocés amb les següents operacions imprescindibles:
- Instal·lació del programari, en un determinat maquinari i sistema operatiu, seguint les prescripcions del fabricant.
- Instal·lació de mòduls addicionals que corresponguin, segons requeriments.
- Configuració del programari, segons les possibilitats que es facilitin, per adequar-lo als requeriments de l’organització.
- Verificació del correcte funcionament, segons requeriments.
- Documentació de les operacions realitzades i incidències aparegudes, amb la seva resolució.
La llista d’operacions anteriors es pot veure ampliada amb dues operacions més:
- (6) Migració de dades del programari de gestió empresarial existent cap al nou programari, si així està contemplat en el projecte d’implantació del nou programari.
- (7) En cas que el programari que instal·lem incorpori un mecanisme de salvaguarda de les dades, posada en marxa i verificació de la correcta recuperació de les dades en el cas d’haver ocorregut un desastre.
Per executar aquestes operacions pot ser necessari l’ajut de dos perfils professionals diferents del nostre i que, en moltes ocasions, recauen en un mateix professional:
- L’administrador del sistema, en el cas que calgui efectuar alguna configuració pel que fa al sistema operatiu.
- L’administrador del sistema gestor de base de dades, en el cas que el nostre programari hagi de connectar amb un SGBD corporatiu, ja instal·lat o que calgui instal·lar.
Tot procés d’implantació tècnica d’un ERP-CRM consta de les operacions anteriors. En les diverses combinacions possibles de sistema ERP-CRM amb sistema operatiu i amb sistema gestor de bases de dades, hi intervenen tantes variables que cada combinació necessitaria el seu propi aprenentatge. És a dir, a diferència del procés d’aprendre a conduir, que ens serveix gairebé per a qualsevol cotxe, la implantació tècnica d’un sistema ERP-CRM no és estàndard i, per tant, un implantador necessita l’aprenentatge concret per a cada combinació possible. Per altra banda, l’experiència acumulada d’un implantador en diverses situacions ajuda que cada nova situació necessiti un aprenentatge més curt.
Odoo ERP
-

- L'Odoo és un sistema ERP-CRM de codi obert.
Ja que no podem pretendre endinsar-nos en la implantació tècnica de qualsevol sistema ERP-CRM en qualsevol de les plataformes suportades (sistema operatiu + SGBD), ens centrarem en un producte i en la implantació hi posarem en pràctica totes les operacions. El producte escollit ha estat el sistema ERP-CRM de codi obert Odoo.
Odoo és un sistema ERP-CRM potent i actual, on conviuen una versió de codi obert (Odoo community) i una amb llicència (Odoo enterprise). Nosaltres, a partir d’ara, quan parlem d’Odoo ens referirem a Odoo community. Odoo era conegut fins a la versió 7 com a OpenERP, i prèviament com a TinyERP.
Característiques bàsiques
Les característiques bàsiques que hauríem de tenir en compte a l’hora d’avaluar un sistema ERP-CRM i els valors per al sistema Odoo són:
Llicència LGPL
La llicència LGPL és una llicència copyleft derivada de la GPL de GNU, però que permet que programes propietaris usin les llibreries i aplicacions sota aquesta llicència. L’LGPL permet l’ús de programes lliures amb programari propietari. El programa, per si mateix, es redistribueix com si estigués sota la llicència GPL, però es permet integrar-la a qualsevol altre programari gairebé sense cap limitació.
- Llicència:
- LGPLv3.
- Desplegaments possibles:
- On-premise sota els SO: Linux i Windows
- SaaS.
- odoo.sh és una plataforma per a desenvolupadors, que fa el hosting i permet de manera molt senzilla crear nous mòduls, provar-los, i portar-los a producció.
- Arquitectura. Client-servidor amb tres capes clarament diferenciades:
- La base de dades en l’SGBD PostgreSQL, que només conté dades i no conté cap lògica de negoci (és a dir, no incorpora funcions, procediments o disparadors).
- El servidor Odoo que conté tota la lògica de negoci amb un nucli base i una estructura que permet anar afegint mòduls segons les necessitats de l’organització. Odoo facilita una llarga llista de mòduls que es pot ampliar amb el disseny de mòduls propis per donar cobertura a les necessitats de l’organització.
- La capa dels clients consisteix en un client web, accessible des de qualsevol navegador.
- Sistema operatiu:
- Servidor sobre Windows o Linux.
- SGBD: PostgreSQL (el fet que la BD no contingui cap lògica de negoci fa pensar que hauria de ser fàcil la substitució de PostgreSQL per un altre SGBD).
- Cost per a la versió Enterprise:
- Pot trobar-se una simulació a: bit.ly/31sXlWk. Com es pot comprovar els preus depenen del nombre d’usuaris i els mòduls que es trien (figura).
Respecte a les funcionalitats segons les versions, la versió Enterprise (de pagament) incorpora entre d’altres (figura):
- Llicència «Odoo Enterprise Edition License v1.0»
- Suport funcional il·limitat
- Actualització de versions
- Hosting
- Interfície d’usuari mòbil
- Odoo studio (dissenyar de manera gràfica mòduls, informes, pantalles…)
- Mòduls exclusius que amplien els estàndards.
Implantació tècnica d'Odoo
Les distribucions All-In-One (tot en un) incorporen totes les peces imprescindibles per poder instal·lar un servidor Odoo, incloent-hi, fins i tot, una versió de l’SGBD PostgreSQL. Com que se suposa que no som experts en instal·lació i configuració de l’SGBD PostgreSQL i, ja que se’ns facilita la distribució All-In-One que inclou la instal·lació d’una versió de PostgreSQL, la lògica ens diu que comencem per instal·lar aquesta distribució en un sistema operatiu conegut (Windows).
Escollir el servidor
Ja que el servidor Odoo pot instal·lar-se sobre Windows i Linux, serà important decidir en quins tipus de servidor es porta a terme la instal·lació, segons les necessitats. També hi ha l’opció de fer servir el sistema de contenidors Docker, per a una instal·lació per a tasques de desenvolupament o per a revisió de noves versions.
L’itinerari de passos a seguir, amb l’objectiu final de tenir els coneixements adequats per poder efectuar implantacions tècniques d’Odoo, és:
- Instal·lar Odoo All-In-One en el SO Windows.
- Adquirir coneixements bàsics del servidor PostgreSQL.
- Instal·lar Odoo en SO Windows connectant amb un SGBD PostgreSQL existent.
- Instal·lar Odoo en sistemes operatius Linux.
- Instal·lar Odoo sobre un contenidor Docker.
- Configuració inicial d’Odoo. Instal·lació de mòduls, configuració empresa.
- Empleats vs. usuaris en odoo. Importació massiva.
- Tercers en Odoo. Mòdul de compres i vendes. Inventari.
- Web en Odoo. Creació de la web d’una empresa i botiga online.
Instal·lar Odoo
Hi ha diferents maneres d’instal·lar Odoo. El propòsit d’aquesta instal·lació és molt variat, des de la seva prova a una instal·lació en un entorn de producció, passant per la creació d’una màquina de desenvolupament de mòduls personalitzats. Igual que existeixen molts propòsits, existeixen moltes maneres d’instal·lar. Destaquem tres tipus instal·lacions diferents:
- Instal·lació del paquet All-In-One para Windows. La més senzilla, i amb propòsit de conèixer i provar el software.
- Instal·lació del codi font d’Odoo sobre un host Ubuntu Server. Aquesta seria una instal·lació amb l’objectiu de fer servir la màquina en un entorn de producció definitiu. Es podran conèixer a fons tots els elements que componen Odoo.
- Instal·lació d’Odoo sobre un contenidor Docker. Aquest tipus d’instal·lació està destinada a tasques de desenvolupament de codi o de prova de noves versions. Docker és una tecnologia actual que val la pena conèixer.
Instal·lació d'Odoo 'All-In-One' en el SO Windows
La instal·lació d’Odoo per a un SO Windows és la més senzilla, ja que incorpora en un senzill arxiu executable tots els components necessaris per a posar en marxa el servidor i el SGBD. És la més adequada per a fer un “tastet” del programari de manera ràpida. No és recomanable aquest tipus d’instal·lació, però, per a un servidor en producció.
A continuació es procedirà a instal·lar l’última versió d’Odoo publicada a la data de realització d’aquest document, encara que la instal·lació és totalment compatible amb altres versions d’Odoo (figura)
Versions d'Odoo
Totes les versions d’Odoo community poden trobar-se a bit.ly/2IVxbF9.
El procés proposa la instal·lació All-In-One amb Odoo Server (que incorpora el servidor Odoo i el client web) i PostgreSQL Database (necessari si no disposem ja d’un servidor PostgreSQL instal·lat). En aquesta primera instal·lació, mantindrem els dos components (no podem tenir un SGBD PostgreSQL instal·lat a la màquina). Procedim, doncs, amb la instal·lació (figura)
Immediatament, se’ns facilita la pantalla de configuració per la connexió PostgreSQL, amb uns valors per defecte (figura).
En aquests moments aniria molt bé tenir uns mínims coneixements d’administració de SGBD i, si no pot ser, de connectivitat amb SGBD. El mínim que hem de saber és que la majoria de connexions a efectuar contra un SGBD utilitzen el protocol TCP/IP i, en conseqüència, necessitem conèixer:
- El nom o adreça IP de la màquina on hi ha instal·lat l’SGBD:
- El port TCP pel qual està escoltant l’SGBD.
- L’usuari i la contrasenya de l’usuari autoritzat a establir connexió.
Com que el procés All-In-One instal·la el servidor PostgreSQL a la mateixa màquina on instal·lem el servidor Odoo, ja és correcte mantenir ‘localhost’ com a valor per Hostname. Pel que fa al port (5432), cal saber que aquest és el port TCP pel qual normalment escolta un servidor PostgreSQL i, per tant, en mantindrem el valor. Pel que fa a l’usuari (openpg) que proposa el procés d’instal·lació, cal saber que aquest serà el superusuari de l’SGBD PostgreSQL que estem instal·lant. Podeu deixar l’usuari que proposa el procés, però també podeu canviar-lo segons les vostres preferències. Nosaltres el canviem i li assignem ioc_admin, amb contrasenya 10c_4dm1n. Aquesta informació és crítica i, per tant, cal tenir-la anotada en un lloc ben segur.
Després d’uns minuts, el procés finalitza. Veurem, a més a més, que instal·la Microsoft Visual C++. El mateix procés, en la darrera pantalla, ens facilita una casella de verificació anomenada Start Odoo per començar a treballar amb Odoo immediatament, a través d’una connexió HTTP.
Si manteniu l’opció activada i finalitzeu el procés, veureu com s’obre el navegador que tingueu per defecte i intenta connectar a l’URL localhost:8069/web com mostra la figura. Fixem-nos que el servidor web que instal·la Odoo escolta pel port 8069.
Una vegada finalitzada la instal·lació hi ha la possibilitat d’accedir-hi mitjançant un navegador i el port 8069. Altres característiques importants d’aquesta versió per a Windows fan referència a:
A la secció “Annexos” del web trobareu el punt “Recursos de programari” que inclou les versions dels programes als quals fem referència en aquests materials.
- Serveis
- Menú PostgreSQL
- Carpeta de la instal·lació
Serveis
Accedint al panell de control dels serveis del sistema operatiu (services.msc), poden observar-se dos serveis, engegats i amb inici automàtic (és a dir, es posen en marxa de forma automàtica quan s’engega la màquina; figura):
- PostgreSQL for Odoo
- odoo-server
Des d’aquesta finestra podrem iniciar, aturar i reiniciar aquests dos serveis (figura).
Menú PostgreSQL
A l’arbre de programes de Windows, hi observem el submenú PostgreSQL 9.5, amb diverses opcions per configurar i administrar l’SGBD PostgreSQL.
La instal·lació inclou el client pgAdminIII, que serà molt útil per l’accés a la base de dades i operacions bàsiques de consulta i administració (figura).
Carpeta de la instal·lació
A la carpeta del sistema d’arxius on s’ha instal·lat Odoo (possiblement C:\Archivos de programa\Odoo xx), poden trobar-se diverses carpetes. Destaquen (figura):
Tant PostgreSQL com el client pgAdminIII seran tractats en el punt “Coneixements bàsics del servidor PostgreSQL” d’aquest mateix contingut.
- PostgreSQL, que conté tot el que fa referència al servidor PostgreSQL.
- server, que conté tot el que fa referència al servidor Odoo (client web inclòs).
Dins la carpeta server destaquem:
- L’arxiu «odoo.log», que conté el log del servidor. Podrem trobar-hi tota la informació dels esdeveniments que hi ocorren. És molt important saber consultar aquest arxiu en cas d’errors.
- L’arxiu «odoo.conf», que conté la configuració del servidor. No hem de tocar res, ja que la instal·lació ho ha fet tot, però ens podrà servir per a futures instal·lacions en altres sistemes. Dins aquest arxiu pot consultar-se (figura):
addons_path: ruta a la carpeta on es troben els mòduls d’Odoo (i on es podrien afegir-ne mòduls de tercers).admin_passwd: contrasenya necessària per a crear noves bases de dades.db_variables que defineixen les dades de la base de dades (user, password, port…).
Instal·lació d’Odoo per a un servidor Linux
La instal·lació d’Odoo All-in-one per a Windows és molt eficaç per a tenir ràpidament instal·lada l’aplicació, i així poder aprendre el seu funcionament. Si es desitja una versió de producció, però, haurà de crear-se un servidor dedicat, intentant maximitzar la seva eficiència.
Als “Annexos” del web trobareu el punt “Recursos de programari” que inclou les versions dels programes als quals fem referència en aquests materials.
En aquest cas, farem servir una màquina Ubuntu Server 18.04, i instal·larem tots els components necessaris per a treballar amb Odoo.
Aclariments sobre la instal·lació
Es portarà a terme la instal·lació de l’última versió al moment de desenvolupament d’aquest manual (v13), encara que és equivalent per a qualsevol altra versió moderna d’Odoo (a partir d’Odoo 10).
Ubuntu Server és un SO lliure que pot trobar-se de manera gratuïta al seu web oficial: bit.ly/2TgQXgg. Tot i que no és objecte d’aquests materials descriure la instal·lació del sistema operatiu; per fer-ho, pot fer-se servir aquest tutorial: bit.ly/34kSsAl.
Per portar a terme la instal·lació, seguirem la documentació oficial d’Odoo; concretament, el capítol “Installing Odoo / Source install / Linux”. A la versió més actual a la redacció d’aquesta documentació l’enllaç és el següent: bit.ly/2TfGem9.
Preparació del sistema
Primer de tot, haurem d’actualitzar la màquina i instal·lar diversos components que necessitarem (figura). Els més importants són:
- git. És un software de control de versions àmpliament utilitzat, que ens permetrà descarregar l’última versió d’Odoo des del seu repositori oficial.
- python-pip. És un mòdul python que ens permet instal·lar altres mòduls. Donem per fet que Python 3 s’ha instal·lat correctament amb el sistema operatiu.
- Python-venv. Permet crear entorns virtuals, amb els que podríem instal·lar, per exemple, diferents versions d’Odoo, amb diferents versions dels mòduls de Python.
Instal·lem, per tant, els components:
sudo apt update && sudo apt upgrade sudo apt install git python3-pip python3-venv
També crearem un usuari, que serà el propietari dels arxius d’Odoo. Es dirà odoo13. La seva carpeta personal serà /opt/odoo13, que és on descarregarem tots els arxius.
sudo useradd -m -d /opt/odoo13 -U -r -s /bin/bash odoo13
PostgreSQL
El SGBD que fa servir Odoo és PostgreSQL. És OpenSource, i la seva instal·lació és molt senzilla (figura).
sudo apt install postgresql postgresql-client
Durant la instal·lació, es crea un usuari anomenat «postgres», amb el que es controla la base de dades. Fent-lo servir, es crea un superusuari intern de postgreSQL, amb el nom «odoo13» i el password «odoo13». Serà l’usuari que farà servir odoo per a la creació y gestió de totes les seves bases de dades.
sudo su - postgres -c "createuser -s -P odoo13"
Dependències
A continuació instal·lem els paquets necessaris per a poder treballar amb Odoo, marcats a la documentació oficial.
paràmetres "s" i "P"
A la sentència de creació de l’usuari “odoo13”, destaquem el paràmetre “s”, que fa que l’usuari sigui superuser, i el paràmetre “P”, que fa que demani el seu password per prompt.
Més endavant, al punt “Configuració de PostgreSQL per escoltar connexions entrants” d’aquest mateix contingut, s’estudiarà la configuració a postgresql, per tal de permetre connexió a la base de dades des d’una màquina externa (modificació dels arxius postgresql.conf i pg_hba.conf).
sudo apt install python3-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev \
libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev libfreetype6-dev \
liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev libpq-dev
Descàrrega del codi font
Canviant d’usuari a odoo13, es fa servir ‘git’ per a obtenir la versió d’Odoo desitjada (figura).
sudo su – odoo13 git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo
Instal·lació dels mòduls Python requerits
En aquest punt s’introduirà el concepte d’entorn virtual en Python. Els entorns virtuals permeten crear una instància de python virtual, on poden instal·lar-se mòduls per a un determinat projecte, de manera que no afectarà la resta de l’equip. També permet fer aquest entorn “portable”, i poder tenir moure els requisits del programa amb el mateix programa, si es canvia la màquina on està instal·lat.
Paràmetre "--branch 13.0"
A la documentació oficial d’Odoo s’omet el paràmetre –branch 13.0, perquè se suposa que es pretén instal·lar l’última versió. És molt recomanable, però, fer-ho, per tal de controlar exactament quina versió s’està descarregant.
La sentència de creació de l’entorn virtual és molt senzilla. Recordeu que s’està fent servir l’usuari odoo13:
cd /opt/odoo13 python3 -m venv odoo-venv
Per activar l’entorn virtual, i d’aquesta manera poder començar a instal·lar-hi tots els mòduls Python imprescindibles per a córrer Odoo, la comanda serà:
source venv/bin/activate
Al codi font d’Odoo hi ha un arxiu anomenat requirements.txt. Conté tots els mòduls Python que necessita Odoo per executar-se. Amb l’entorn virtual activat, fem servir python-pip per a instal·lar tots els mòduls amb una sola comanda. A més a més, instal·larem el mòdul wheel (figura).
pip3 install wheel pip3 install -r odoo/requirements.txt
wkhtmltopdf
Odoo genera els seus informes en html mitjançant Qweb, i fa servir l’eina wkhtmltopdf per a convertir-la en PDF, i així poder-la imprimir de manera senzilla. Des de la documentació oficial d’Odoo es recomana baixar la versió 0.12.5. Baixarem wkhtmltopdf fent servir wget, i després la instal·larem mitjançant apt (figura).
Entorns virtuals de Python
Per a més informació sobre els entorns virtuals de Python pot consultar-se bit.ly/3jkHor5.
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb sudo apt install ./wkhtmltox_0.12.5-1.bionic_amd64.deb
Creació de l'arxiu de configuració
Odoo fa servir un arxiu anomenat odoo.conf per a contenir la seva configuració. Es procedirà, doncs, a la seva creació. També podria incloure’s la configuració com paràmetres quan es crida l’arxiu odoo-bin per a iniciar el servei, però amb l’arxiu odoo.conf assegurem la possibilitat de consultar i canviar la configuració de manera molt senzilla.
mkdir /opt/odoo13/odoo-custom-addons sudo nano /etc/odoo13.conf
Introduirem la següent informació:
admin_password. Serà el password que permetrà crear noves bases de dades (empreses a Odoo), o esborrar-les.- Informació sobre el host, port, usuari i contrasenya per a la base de dades.
- Ruta a les carpetes de mòduls. Inclourem la carpeta amb els mòduls oficials i la que acabem de crear, per als mòduls de tercers.
A l’hora de desenvolupar nous mòduls o incorporar-ne mòduls de tercers, necessitarem un directori on desar-los. Com a mesura de seguretat, no farem servir el mateix on es troben tots els mòduls oficials, crearem una carpeta nova.
mkdir /opt/odoo13/odoo-custom-addons
Odoo proporcionar un exemple d’arxiu de configuració a la carpeta debian. Copiarem, per tant, aquest arxiu, i el ficarem a la carpeta arrel.
odoo$ cp debian/odoo.conf /etc/odoo13.conf
Ara només faltarà obrir i editar l’arxiu, de manera que quedi configurada la carpeta dels mòduls propis:
Ubicació de l'arxiu de configuració
En aquest cas s’ha decidit ficar l’arxiu de configuració a la carpeta /etc, per conviure amb scripts d’altres serveis, però no és obligatori, pot triar-se qualsevol altra carpeta, sempre que l’usuari que inicia Odoo disposi de permisos de lectura.
[options] ; This is the password that allows database operations: admin_passwd = my_admin_passwd db_host = False db_port = False db_user = odoo13 db_password = False addons_path = /opt/odoo13/odoo/addons,/opt/odoo13/odoo-custom-addons
Aclariment sobre les variables
A la variable addons_path ficarem la ruta de la carpeta amb els mòduls oficials, i la carpeta amb els mòduls propis.
Les variables db_host i db_port amb el valor False indiquen que han de prendre els valors per defecte (localhost pel host i 5432 pel port). És recomanable, però, canviar el valor “False” pels valors corresponents per evitar errors.
Primera posada en marxa
Amb tots els passos anteriors el servidor ja està preparat per posar en marxa Odoo. Amb l’entorn virtual activat es cridarà a l’arxiu odoo-bin, ficant com a paràmetre la ruta de l’arxiu odoo.conf.
./odoo-bin -c odoo.conf
A continuació el servidor començarà a mostrar missatges, un dels quals dirà que Odoo està disponible al host ‘localhost’, i fent servir el port 8069.
Creació del servei
Abans d’executar-se Odoo, només falta crear un servei, que farà que el servidor s’iniciï amb el sistema operatiu com a servei, de manera que no és necessari la intervenció de ningú.
Generem un arxiu amb el servei, i fem que s’executi en iniciar el sistema.
sudo nano /etc/systemd/system/odoo13.service
El seu contingut serà, entre d’altres, el nom del servei, la ruta per iniciar el servidor i l’usuari i grup amb els que s’ha d’iniciar el servidor.
[Unit] Description=Odoo13 Requires=postgresql.service After=network.target postgresql.service [Service] Type=simple SyslogIdentifier=odoo13 PermissionsStartOnly=true User=odoo13 Group=odoo13 ExecStart=/opt/odoo13/odoo-venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf StandardOutput=journal+console [Install] WantedBy=multi-user.target
Només queda provar que tot funciona, i activar el servei.
sudo systemctl daemon-reload
A partir d’aquest moment ja pot provar-se a reiniciar la màquina, i accedir a Odoo des de qualsevol altra màquina mitjançant un navegador, introduint l’adreça <ip_server>:8069.
Prova de funcionament
Com a últim pas de la instal·lació d’Odoo a Linux, només queda comprovar que tot el procés ha estat correcte. Revisem l’adreça IP de la màquina amb «ip addr», i la introduïm al navegador d’una altra màquina. Com no hem configurat el firewall del servidor Ubuntu, no hauria d’haver-hi cap problema per accedir-hi (figura).
En el següent vídeo pot veure’s el procés d’instal·lació complet, pas a pas:
Instal·lació d'Odoo sobre un contenidor Docker
Segons la seva web oficial «la idea darrere Docker és crear contenidors lleugers i portables per a les aplicacions software que puguin executar-se en qualsevol màquina amb Docker instal·lat, independentment del sistema operatiu que la màquina tingui per sota, facilitant així també els desplegaments».
-

- Els contenidors Docker ofereixen lleugeresa i portabilitat.
Per a accedir com a usuaris normals a una aplicació, aquesta aplicació software necessita estar executant-se en una màquina, en un ordinador. Però a més, depenent del tipus d’aplicació, aquest ordinador també necessita tenir instal·lades una sèrie de dependències perquè l’aplicació s’executi correctament: certa versió de Java instal·lada, un servidor d’aplicacions (per exemple tomcat, que és el programari que realment estarà executant la meva aplicació i fent que pugui interactuar amb ella).
Docker permet ficar en un contenidor (“una caixa”, una entitat autocontinguda, tancada), totes aquelles coses que l’aplicació necessita per ser executada (java, Maven, tomcat …) i la mateixa aplicació. Així l’usuari es pot portar aquest contenidor a qualsevol màquina que tingui instal·lat Docker i executar l’aplicació sense haver de fer res més, ni preocupar-se de quines versions de programari té instal·lades a aquesta màquina.
S’executarà l’aplicació de programari del contenidor de Docker, i dins d’ell estaran totes les llibreries i dependències que necessita aquesta aplicació per a funcionar.
Avui dia Docker és utilitzat pels desenvolupadors de manera molt habitual, i és molt important conèixer-lo.
Primer pas: Instal·lació de Docker
Per a fer la instal·lació de Docker, es tindrà com a referència el tutorial de la pàgina web de Docker.
En aquest material, instal·larem Docker en una màquina Ubuntu Linux 18.04, i sobre Docker farem córrer un contenidor per a postgreSQL i un altre per a Odoo.
El primer que farem serà afegir el repositori i instal·lar Docker. Actualitzarem la màquina i instal·larem les dependències, afegim la clau del repositori i afegim el repositori. Després s’ha de tornar a actualitzar els repositoris i procedir a la instal·lació.
Podeu trobar l’enllaç al tutorial d’instal·lació a la secció “Annexos” del web del mòdul.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
A l’hora d’executar Docker, tenim dues opcions: bé executar docker com a superusuari (sudo), o crear un grup amb el nom «docker», i afegir el nostre usuari.
sudo groupadd docker sudo usermod -aG docker #USER
Després, portarem a terme la verificació de la instal·lació i instal·lació de Compose. Com a primera aplicació, instal·lem el contenidor «hello-world». És un contenidor estàndard que serveix per a comprovar que la instal·lació de Docker ha estat correcta (figura).
docker run hello-world
Instal·larem també «Docker Compose». Ens permetrà crear guions en format YAML per a executar aplicacions multicontenidor. Avui dia és molt habitual l’ús de Docker Compose conjuntament amb Docker.
En primer lloc descarreguem i instal·lem l’executable. A continuació se l’hi donaran permisos d’execució.
Trobareu la guia d’instal·lació de Docker Compose, a la secció “Annexos”.
Format YAML
El format YAML és un llenguatge de serialització de dades molt habitual i cada dia més utilitzat. A més a més de Docker Composer, altres sistemes com ara Ansible o Netplan també ho fan servir. Pots trobar més informació als annexos.
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
Per últim, es pot comprovar que la instal·lació ha estat un èxit demanant la versió de Composer.
docker-compose –version
Segon pas: Instal·lació d'Odoo sobre Docker
Crearem un guió en format YAML. Aixecarem un contenidor per al servidor postgreSQL, i un altre per Odoo. A més a més, farem el contenidor d’Odoo depenent del de postgreSQL.
Podeu trobar la guia d’instal·lació a la secció “Annexos”.
El nom per defecte de l’arxiu és docker-compose.yml.
mkdir odoo13 cd odoo13/ nano docker-compose.yml
El contingut de l’arxiu docker-compose.yml (figura) per a l’última versió d’Odoo, en el moment de realització del present manual, és:
version: '2'
services:
web:
image: odoo:13.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
db:
image: postgres:10
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
Es generen dos contenidors:
- Contenidor amb una instància de postgresql 10:
- Genera una base de dades amb el nom postgres.
- Genera un usuari amb el nom odoo i password Odoo.
- Contenidor amb una instància d’Odoo:
- Es connecta al contenidor postgresql creat en el pas anterior.
- Fa una redirecció de ports, de manera que el port 8069 del host es redirigeix al port 8069 del contenidor. Així podrà connectar-se a Odoo des de
localhost:8069. - Fa una redirecció de carpetes, de manera que les carpetes del host
./configi./addonsdonant accés a les carpetes/etc/odooi/mnt/extra-addonsdel contenidor respectivament.
… i ja podem obrir el navegador i accedir a Odoo a l’adreça localhost:8069 (figura).
Si es redirecciona la carpeta “config”, Odoo esperarà trobar, a la carpeta config, un arxiu amb el nom odoo.conf. Pot fer-se servir directament la plantilla següent.
Altres comandes amb Docker
docker ps: mostra tots els contenidors que estan executant-se en un determinat moment. Si afegim -a, ens mostra tots els contenidors, tant els que s’estan executant com els que estan aturats (figura).docker run. Crea un nou contenidor, descarregant-lo d’internet si és necessari.docker start, stop, pause, unpause. Inicia, atura, pausa o reprèn un contenidor.docker exec. Executa una comanda en un contenidor que ja existeix.docker rm. Esborra un contenidor.
A continuació, pot veure’s la mateixa instal·lació descrita fins ara en un vídeo pas a pas:
Usuaris al voltant d'un servidor Odoo
Abans de procedir a gestionar empreses, és convenient entendre els tres tipus d’usuaris existents al voltant d’un servidor Odoo:
- Usuari del servidor PostgreSQL amb privilegi de creació de bases de dades: és l’usuari de PostgreSQL que utilitza el servidor Odoo per crear i eliminar empreses (bases de dades) dins el servidor PostgreSQL. Una empresa d’Odoo es correspon amb una base de dades dins el servidor PostgreSQL.
- En cas que el servidor PostgreSQL hagi estat instal·lat pel procediment d’instal·lació d’Odoo All-In-One, el procés proposa l’usuari openpg (contrasenya openpgpwd) com a superusuari del servidor PostgreSQL, però es pot decidir qualsevol parella (usuari-contrasenya). Durant el tutorial d’instal·lació s’ha proposat ioc_admin/10c_4dm1n
- En cas que el servidor PostgresSQL hagi estat instal·lat de manera independent al procediment d’instal·lació d’Odoo, disposarà d’un superusuari i hauríem de poder utilitzar aquest (sempre que no s’anomeni postgres, ja que per qüestions de seguretat Odoo no permet aquest nom d’usuari) o qualsevol altre amb autorització per crear bases de dades per tal que l’utilitzi l’Odoo per crear i eliminar empreses (bases de dades) dins el servidor PostgreSQL. En un servidor Linux es pot crear aquest usuari amb la sentència
sudo su - postgres -c “createuser -s -P odoo13”. - L’usuari del servidor PostgreSQL amb autorització per crear bases de dades i la seva contrasenya han de residir, respectivament, en les entrades
db_useridb_passworddel fitxerodoo.conf. Si en comproveu el contingut, hi veureu l’usuari i la contrasenya que havíem indicat en el procés d’instal·lació.
- Usuari administrador del servidor Odoo: és un usuari únic del servidor Odoo, que és el que pot crear i eliminar les empreses. No té nom i únicament té contrasenya. Aquesta contrasenya es configura a l’arxiu
odoo.conf. - Usuaris de cada empresa creada en el servidor Odoo: el procés de creació d’una empresa ve donat amb un usuari administrador, que es genera mitjançant el formulari inicial de creació de l’empresa. El seu username serà correu electrònic del responsable. L’usuari admin de cada empresa té tots els privilegis i, una vegada connectat a l’empresa, pot crear usuaris, grups de privilegis sobre els objectes d’Odoo (tercers, productes, comandes, albarans, factures…) i assignar usuaris als diversos grups de privilegis. En cas de perdre la contrasenya de l’usuari admin, un usuari administrador del servidor PostgreSQL pot recuperar-la tot consultant-la directament la base de dades, a través de les eines d’accés que el servidor PostgreSQL facilita (figura).
El procés de creació d’una empresa permet carregar unes dades de demostració i, en tal situació, també hi incorpora un usuari de nom demo i contrasenya demo. Aquest usuari no existeix en la creació d’una empresa buida.
Coneixements bàsics del servidor PostgreSQL
PostgreSQL (www.postgresql.org) és un SGBD relacional distribuït sota llicència BSD, desenvolupat per PostgreSQL Global Development Group.
Aquest punt descriurà l’eina pgAdminIII instal·lada amb el paquet All-In-One per a Windows, encara que és 100% equivalent a la instal·lació de pgAdminIII en una màquina Linux.
Versions de PostgreSQL
En 12-04-2020 hi ha vàries versions de PostgreSQL desenvolupant-se a la vegada, de manera que poden descarregar-se de la web les 12.2, 11.7, 10.12, 9.6.17, 9.5.21, i 9.4.26. La instal·lació d’Odoo per a Windows incorpora PostgreSQL en la seva versió 9.6, i a Linux hem fet servir la versió 10.12. A la documentació oficial d’Odoo no especifica quina ha de ser la versió del SGBD.
Nosaltres, com a implantadors tècnics d’ERP, hem de ser coneixedors de l’estructura de la base de dades per si hem de desenvolupar mòduls que complementin la funcionalitat que facilita l’ERP.
Com que la base de dades es troba implementada en un SGBD concret, ens convé conèixer les eines bàsiques de què disposem per moure’ns amb facilitat dins de l’SGBD. La majoria d’SGBD actuals faciliten dos tipus d’eines per accedir a les bases de dades i facilitar la gestió:
- Eines gràfiques i/o consoles textuals: basades en l’arquitectura client-servidor, obliguen a instal·lar l’eina a la màquina des de la qual es vol accedir a l’SGBD, que pot residir en una màquina remota.
- Eines gràfiques web: permeten l’accés des de navegadors i, per tant, eviten el fet d’haver d’instal·lar cap programari client.
Per accedir a PostgreSQL disposem de moltes eines. Entre elles, cal conèixer l’existència de:
- Eina gràfica pgAdminIII, amb arquitectura client-servidor.
- A partir de PostgreSQL 10 pgadminIII per a Windows deixa de ser compatible 100% (encara que es mostra molt fiable per a fer les operacions més senzilles). S’ha creat pgAdminIV, que és una eina amb servidor web propi.
- Consola textual psql, amb arquitectura client-servidor.
- Eina gràfica phpPgAdmin, amb servidor web (necessita PHP).
Eina pgAdmin
L’eina pgAdmin és una de les eines més habituals d’utilitzar per accedir a un servidor PostgreSQL (local o remot) i es pot instal·lar a qualsevol màquina. La podem baixar de la pàgina oficial (www.pgadmin.org) i és tan habitual que l’Odoo la incorpora en la instal·lació per a Windows que facilita (figura).
Caldrà determinar els servidors, els usuaris, les bases de dades i els seus esquemes.
Servidors
La part esquerra de la pantalla principal de pgAdmin està destinada a incorporar tots els servidors PostgreSQL als quals volem accedir amb aquesta eina, ja siguin a la mateixa màquina o en màquines remotes. Cal comentar que en una mateixa màquina hi poden coexistir diversos servidors PostgreSQL, amb la precaució que han d’escoltar per diferents ports (figura).
Podem comprovar que l’eina pgAdmin que instal·la Odoo ja té registrat el servidor PostgreSQL instal·lat per Odoo a la màquina i el veiem acompanyat d’una creu vermella que indica que no hi estem connectats. Per establir connexió i poder gestionar el seu contingut cal situar-nos al damunt i prémer amb doble clic del ratolí.
Si ens situem damunt la connexió PostgreSQL for Odoo (localhost:5432) i premem el botó secundari del ratolí, podrem accedir a les propietats (figura).
Observem que en aquesta pàgina de propietats podrem canviar l’usuari per defecte i també podrem enregistrar la contrasenya, una vegada connectats, per evitar haver d’introduir-la cada vegada que accedim al servidor PostgreSQL.
S’ha d’anar amb molt de compte a l’hora de deixar les contrasenyes enregistrades; això només s’hauria de fer en màquines de les quals tenim la seguretat que només hi tindran accés usuaris que, a la vegada, hagin de tenir accés als servidors PostgreSQL enregistrats en pgAdmin. Les contrasenyes enregistrades des de pgAdmin es troben en el fitxer pgpass.conf ubicat dins d’una carpeta anomenada PostgreSQL que es troba dins del perfil de l’usuari que ha creat les connexions i a la màquina client des de la qual s’executa pgAdmin (figura). Aquesta ubicació depèn de la versió del SO; en el cas de Win7: …\users\nomUsuari\AppData\Roaming\postgresql
És important tenir-ho present, perquè la resta d’eines de PostgreSQL instal·lades en el sistema utilitzen el mateix arxiu per registrar o comprovar les contrasenyes. En conseqüència, si un usuari ha registrat una connexió des de pgAdmin amb un usuari i la corresponent contrasenya, la resta d’eines de PostgreSQL no li exigiran introduir la contrasenya per establir connexió amb el servidor i utilitzaran l’usuari pel qual hi ha la contrasenya registrada.
Una vegada establerta la connexió contra un servidor PostgreSQL la part esquerra de la pantalla ens mostra el contingut del servidor PostgreSQL (figura).
Usuaris
Un servidor PostgreSQL pot tenir molts usuaris. La imatge ens mostra només un usuari, de nom ioc_admin, que és el superusuari del servidor PostgreSQL. Si ens hi situem al damunt i premem el botó secundari del ratolí per anar a les seves propietats, observarem que té privilegis totals (figura).
De moment no ens cal crear nous usuaris, però quan l’ERP es posa en execució en una organització, aquesta pot tenir usuaris finals que vulguin poder efectuar consultes contra les bases de dades. En aquest cas els haurem de facilitar un usuari amb els privilegis de lectura adequats, però mai d’escriptura, a les bases de dades i taules o vistes que corresponguin.
No hem de confondre els usuaris de l’SGBD amb els usuaris de l’ERP. Els usuaris de l’ERP estan emmagatzemats en taules pròpies de l’ERP i l’ERP utilitza un usuari de PostgreSQL (ioc_admin en aquest cas) per accedir a la BD de l’empresa.
Crearem un nou usuari superadministrador per a no interferir amb l’usuari que ha creat Odoo. L’hi direm ioc_user, amb el password 10c_us3r. Farem click amb el botó dret i triarem «New login role» (figura).
A continuació triarem el nom, el password, i l’hi donarem privilegis de superusuari (figura).
Bases de dades
Un servidor PostgreSQL pot tenir diverses bases de dades, però com a mínim n’ha de tenir una. En moltes ocasions, la primera base de dades que s’instal·la s’anomena “postgres”, però podria tenir qualsevol altre nom (figura).
El procés d’instal·lació d’Odoo ha seguit el costum d’anomenar “postgres” la primera base de dades del servidor. Aquesta primera base de dades és especial en el sentit que és la base de dades de manteniment del servidor i mai podrà ser eliminada. De fet, si intentem eliminar-la, ens apareixerà un missatge informant que és la base de dades de manteniment i no pot ser eliminada.
A mesura que anem creant empreses aniran apareixent les corresponents bases de dades en el servidor PostgreSQL. Cada base de dades tindrà els seus usuaris per gestionar l’empresa des d’Odoo.
Esquemes
Una base de dades de PostgreSQL està compartimentada en esquemes, i com a mínim hi ha un esquema de nom públic; els continguts d’aquest esquema són accessibles per a tots els usuaris que tinguin accés a la base de dades. Aquest és el cas de les bases de dades que crea Odoo. Cada empresa es correspon amb una base de dades que té tota la informació dins l’únic esquema de nom públic.
Un esquema conté tot allò que en altres SGBD és el contingut d’una base de dades: dominis, taules, vistes, funcions, seqüències i disparadors (figura).
Durant la implantació d’un ERP pot ser necessari analitzar la base de dades, i conèixer les taules que la formen. Podem accedir a la llista de taules, i dins cada taula, als camps i la seva descripció (figura).
Treballar amb la base de dades
Si pensem utilitzar pgAdmin per executar sentències DML (insert, update, delete), cal saber que està configurada amb el comportament autocommit on. Aixó vol dir que qualsevol operació de modificació de dades sobre la base de dades és automàticament validada sense que l’usuari hagi d’efectuar commit, i, per tant, no és possible invocar un rollback.
PgAdmin incorpora una consola SQL on podem introduir les consultes i comprovar els resultats (figura).
Configurar PostgreSQL per admetre connexions remotes a un host Windows
El servidor PostgreSQL que instal·la Odoo (i també la majoria d’instal·lacions de servidors PostgreSQL) estan configurades per admetre únicament connexions locals des de la màquina on s’allotja el servidor. En la majoria de les instal·lacions tindrem el servidor d’aplicació i de dades a la mateixa màquina, i per tant no necessitarem fer cap canvi.
És molt possible, però, que vulguem accedir directament a les bases de dades del servidor PostgreSQL des d’altres eines clients, com per exemple una instal·lació pgAdmin ubicada en una màquina remota o una aplicació que es vol connectar a través d’ODBC.
Per aconseguir-ho ens cal retocar alguns paràmetres de configuració del servidor PostgreSQL i, per entendre la utilitat de cadascun, cal intentar la connexió remota, veure els errors que es produeixen i anar aplicant les solucions que pertoquin fins a aconseguir la connectivitat.
Farem servir, per tant, una altra màquina amb pgAdmin instal·lat. Intentem la gestió del servidor PostgreSQL des d’aquest pgAdmin. El primer que hem de fer és enregistrar un servidor a través de l’opció File | Add Server. Ens apareix la pantalla de propietats de la connexió (figura) en la qual ens cal introduir:
- Name: nom informatiu del servidor PostgreSQL amb el qual establim la connexió.
- Host: IP de la màquina que conté el servidor PostgreSQL.
- Port: per defecte 5432, encara que es pot canviar.
- MaintenanceDB: base de dades de manteniment. Per defecte postgres.
- Username: usuari de PostgreSQL amb drets de connexió.
- Password: contrasenya de l’usuari indicat a username.
Als “Annexos” del web trobareu el punt “Recursos de programari”, que inclou les versions dels programes als quals fem referència en aquests materials.
Una vegada introduïts aquests valors, premem “OK” per aconseguir la connexió i ens apareix un missatge d’error (figura). El missatge diu que a l’adreça IP ficada i pel port ficat no es troba cap servidor en execució que accepti connexions TCP/IP.
Toca realitzar diverses comprovacions.
'Firewalls'
Hi ha algun firewall que no permet la connexió al port 5432? En el cas d’un servidor Windows, haurem d’obrir el firewall de Windows amb seguretat avançada i comprovar si està funcionant, i si el port 5432 té alguna restricció. Si necessitem permetre el port 5432, crearem una regla d’entrada (figura).
A continuació omplirem un assistent per a obrir el port 5432 de la nostra màquina. No és un procés complicat i es presenta a continuació (figura i figura).
A partir d’ara, podem estar segurs que Windows no plantejarà cap problema a la connexió. El següent pas serà que postgreSQL permeti l’accés.
Configuració de PostgreSQL per escoltar connexions entrants
Per defecte, postgreSQL no escolta per totes les adreces IP de la màquina que conté el servidor, només ho fa per l’adreça 127.0.0.1. Si volem que escolti per altres adreces IP pròpies, cal configurar-lo. L’arxiu de configuració que conté aquesta informació és postgresql.conf, el paràmetre listen_addresses.
En el cas de Linux, el servidor Ubuntu Server instal·lat amb anterioritat no disposa de Firewall instal·lat per defecte. En cas d’activar-lo s’hauria també d’obrir el port 5432.
#listen_addresses = 'localhost'
# what IP address(es) to listen on;
# comma-separated list of addresses;
# (change requires restart)
Eliminem el símbol # de l’inici que indica que el paràmetre està comentat i, a la paraula localhost hi afegim, separades per comes, les adreces IP de la màquina per les quals volem que el servidor PostgreSQL doni resposta. O, simplement, hi deixem un asterisc per indicar que escolti per totes les adreces IP que tingui definides (figura).
Una vegada enregistrat el canvi en el fitxer postgresql.conf, ens cal reiniciar el servidor PostgreSQL (anant a services.msc) i tornar a intentar la connexió. Ens apareix un nou error (figura).
L’usuari ioc_admin no té autorització per connectar amb la base de dades postgres des de la màquina actual. Canviarem aquesta configuració a l’arxiu pg_hba.conf.
L’arxiu mostra totes les màquines que poden connectar-se, a quina base de dades i amb quin usuari. Per defecte només es pot connectar des de ‘localhost’, a qualsevol base de dades i amb qualsevol usuari (figura).
El fitxer pg_hba.conf és un fitxer que controla l’autenticació dels clients que es connecten al servidor PostgreSQL. Per una explicació detallada de totes les possibilitats que facilita aquest fitxer, cerqueu pg_hba.conf dins la documentació de PostgreSQL. De forma molt simplificada, ens cal saber que aquest fitxer conté línies cada una de les quals correspon a un permís d’autenticació. Inicialment ve configurat com:
# TYPE DATABASE USER CIDR-ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: #host all all ::1/128 md5
Fixem-nos amb l’única línia no comentada, que permet l’accés a totes les bases de dades de qualsevol usuari connectat a la mateixa màquina (127.0.0.1/32) i que utilitza una contrasenya encriptada amb el mètode md5.
La nomenclatura CIDR-address 127.0.0.1/32 es pot substituir per la nomenclatura que indica l’adreça i la màscara en dues columnes:
host all all 127.0.0.1 255.255.255.255 md5
Per permetre l’accés a qualsevol usuari des de la màquina amb IP 10.200.1.207, afegiríem una nova línia (sota l’existent inicialment):
host all all 10.200.1.207 255.255.255.255 md5
o equivalentment:
host all all 10.200.1.207/32 md5
Per permetre l’accés a qualsevol usuari des de qualsevol màquina 10.200.x.x, afegiríem:
host all all 10.200.0.0 255.255.0.0 md5
o equivalentment:
host all all 10.200.0.0/16 md5
La columna METHOD permet múltiples possibilitats. Entre elles, la possibilitat de prohibir la connexió (valor reject). Cal tenir en compte que:
- El servidor PostrgreSQL carrega el contingut de l’arxiu pg_hba.conf a la memòria quan es posa en marxa i, per tant, caldrà reiniciar-lo davant de qualsevol modificació d’aquest arxiu.
- Quan s’intenta autenticar una connexió, l’avaluació segueix l’ordre de les diverses entrades existents a pg_hba.conf i s’aplica la primera entrada amb la qual s’aconsegueix una coincidència. Com a exemple, si l’entrada 10 restringeix la connexió per una IP XXX concreta, però en una entrada anterior a la 10 es concedeix accés per la IP XXX, la connexió serà autenticada sense cap problema.
Afegirem, per tant, una línia per a permetre que la nova màquina també pugui connectar-se (figura).
Fins aquí la configuració de PostgreSQL en una màquina Windows. Per a un host linux el procés és molt similar. Pot veure’s el procés en aquest vídeo:
Configuració inicial d'Odoo
El primer pas, una vegada s’ha implantat una instància d’Odoo, és la creació de la base de dades de l’empresa. Quan Odoo no troba cap base de dades al SGBD PostgreSQL mostra una pantalla per a tal efecte (figura).
La informació que s’hi haurà d’introduir serà:
- Master Password. Contrasenya mestra de la qual ja s’ha parlat anteriorment en aquest material. Està configurat a l’arxiu odoo.conf i és necessària tant per a crear com per a esborrar bases de dades.
- Database Name. Nom de la base de dades. Es recomana fer servir el nom de l’empresa per a poder reconèixer-la fàcilment.
- Dades de l’usuari administrador. En aquest procés es crearan les credencials per a l’usuari gestor de l’ERP.
- Email. Es farà servir també de nom d’usuari.
- Password.
- Phone number.
- Language. Odoo és multilingüe, en aquesta opció es tria l’idioma per defecte de l’aplicació. Poden canviar-se o afegir-se més idiomes, perquè cada usuari pugui escollir.
- Country. Aquesta informació és molt important per a temes fiscals, ja que Odoo aporta mòduls amb la fiscalitat de cada país.
- Dades d’exemple. Quan s’instal·la Odoo poden crear-se dades d’exemple per a cada mòdul, que ajuden a entendre millor el funcionament dels diferents mòduls. Òbviament aquesta funcionalitat només es necessitarà en una primera fase d’aprenentatge de l’aplicació.
Una vegada acceptat es procedeix a la instal·lació del nucli d’Odoo i les dades d’exemple (si escau). Quan tot el procés ha finalitzat, hi sortirà la pantalla d’aplicacions d’Odoo, on poden veure’s tots els mòduls disponibles (figura).
En aquesta pantalla poden trobar-se aplicacions amb la llegenda “Install”, i d’altres amb la llegenda “Upgrade”. Les primeres pertanyen a Odoo Community, i poden instal·lar-se de manera gratuïta, però les segones són part d’Odoo Community, i en fer clic al botó ens portarà a una pantalla amb informació per a adquirir la versió de pagament.
Si tenir aquestes aplicacions de pagament a la vista resulta molest per l’administrador d’Odoo, pot configurar-se un filtre que les amaga, i fins i tot fer que sempre s’apliqui aquest filtre per defecte en accedir al mòdul d’aplicacions (figura).
A continuació poden anar instal·lant-se els diferents mòduls que l’empresa necessita. És recomanable fer un bon estudi previ de les necessitats de l’empresa per tal de no instal·lar més mòduls dels necessaris.
Configuració general d'Odoo
Al menú principal pot accedir-se a l’apartat “settings”, on es troben tant la configuració general com la de cadascun dels mòduls que s’han anat instal·lant (figura).
Dins les opcions de configuració generals d’Odoo poden destacar-se les següents opcions:
- Usuaris
- Configuració de l’empresa
- Idiomes
- Format dels informes
- Mode desenvolupador
Usuaris
Permet crear nous usuaris i configurar els seus privilegis de manera individual (figura).
Destaca en aquest punt la gestió dels permisos de cada usuari. Cada mòdul instal·lat a Odoo ofereix en aquesta pantalla un o diversos grups. Assignar al nou usuari un grup d’un mòdul implica concedir-li privilegis en aquest mòdul (figura).
Més endavant, al punt “Importació de dades a Odoo. Usuaris i treballadors” d’aquest mateix contingut, es veurà la possibilitat d’importació massiva d’usuaris.
Una vegada creat el nou usuari, pot enviar-se un correu electrònic a la seva adreça amb les credencials pel seu primer accés a l’aplicació (figura).
L’usuari “admin” es genera de manera automàtica amb la instal·lació, i tindrà tots els privilegis per defecte en tots els mòduls.
Configuració de l'empresa
Odoo permet la creació d’una o diverses empreses relacionades. Per exemple, poden generar-se dues delegacions diferents de la mateixa empresa. Cada usuari tindrà una empresa principal associada, i permís per a poder veure una o més empreses (figura).
Idiomes
En el procés d’instal·lació s’ha decidit l’idioma general de l’ERP. En l’apartat “idioma” de la configuració d’Odoo, però, poden afegir-se més.
La versió Community no permet que aquestes multiempreses facin transaccions entre d’elles, però si la versió Enterprise.
Cada usuari podrà decidir quina llengua vol a la seva interfície, sempre dins els idiomes configurats en aquest apartat (figura).
Format dels informes
La majoria dels mòduls d’Odoo permeten generar informes en format pdf. Cada informe depèn del mòdul, però tots tenen en comú una mida fixa, i l’encapçalat i el peu de pàgina (figura). La informació del logo i els mitjans per a contactar amb l’empresa són extrets de la configuració de l’empresa.
Mode desenvolupador
Per a poder accedir a funcionalitats de perfil tècnic dins Odoo ha d’activar-se el “developer mode”. Permet, entre d’altres, accedir a les següents opcions:
- Creació de nous grups d’usuaris dins els mòduls
- Menú “technical” amb la configuració de paràmetres tècnics dins Odoo.
- Accés al mode “superuser”
- Accés a les característiques dels camps de cada vista de formulari (descripció del camp, classe a la qual pertany, detalls tècnics…)
- Instal·lació de mòduls no oficials
Com a resum de la configuració general pot veure’s aquest vídeo:
Els mòduls no oficials. Instal·lació.
Com tot Programari Lliure, Odoo permet a tercers l’elaboració de nous mòduls, que poden ser instal·lats amb normalitat. Aquests mòduls de tercers serviran per a crear noves funcionalitats no existents anteriorment, complementar mòduls existents o introduir particularitats regionals.
Encara que qualsevol implantador de manera individual pot generar nou codi, és habitual que la comunitat treballi de manera col·legiada. Els mòduls creats per la comunitat estaran revisats per més gent, s’actualitzaran més ràpidament i seran molt més fiables.
Odoo OCA
Segons la seva web, l’Odoo Community Association (OCA) és una organització sense ànim de lucre que té com a missió promoure l’ús generalitzat d’Odoo i donar suport al desenvolupament col·laboratiu de les funcions d’Odoo (figura).
Els objectius de l’OCA són:
- Ajudar i promoure el desenvolupament de programari col·laboratiu d’Odoo.
- Incentivar el desenvolupament d’Odoo i les seves característiques a l’hora de coordinar i organitzar el treball col·laboratiu del programari.
- Ajudar la comunitat defensant els seus interessos i la sostenibilitat dels seus desenvolupaments.
- Promoure l’ús de la solució Odoo.
- Facilitar sinergies, col·laboracions i esforços de recaptació de fons.
- Col·labora activament en la definició dels fulls de ruta de les noves versions de l’eina i la seva implementació.
En Odoo OCA poden trobar-se mòduls de diferent tipologia per a complementar una instal·lació d’Odoo. Aquests mòduls estan categoritzats per categoria, versió i maduresa, i són fàcilment descarregables i instal·lables des de la seva web oficial.
Web oficial i mòduls descarregables
Podeu visitar la web oficial d’Odoo OCA a: odoo-community.org; així com la seva tenda oficial: odoo-community.org/shop.
A continuació, podeu veure el vídeo de presentació de l’associació espanyola d’Odoo (2020):
Recerca de nous mòduls (exemples interessants)
Es treballaran dos exemples reals per a mostrar la instal·lació de mòduls de tercers: la comptabilitat a Odoo i la “localització”.
Exemple 1: comptabilitat
Quan un usuari comença a utilitzar Odoo community, una de les primeres sorpreses és l’absència d’algunes opcions bàsiques de comptabilitat. De fet, Odoo ofereix la instal·lació diferenciada dels mòduls de facturació i comptabilitat, sent aquest últim un mòdul per a la versió de pagament (figura).
Un bon implantador buscarà alternatives pels seus clients que volen fer servir la versió community. I el primer pas que donarà serà accedir a Odoo OCA, i buscar una aplicació gratuïta i sostinguda per la comunitat.
Una vegada introduïts els criteris de cerca, hi ha l’opció “Account - Missing Menus” (figura), que afegeix al mòdul de facturació opcions que hi existien fins a la versió 11, i que Odoo va decidir treure en endavant. Pot trobar-se a: bit.ly/37teHpA.
Exemple 2: localització
Cada país té regles molt concretes respecte a la seva fiscalitat. Quan un implantador vol configurar una aplicació de propòsit general i adaptar-la al país on treballarà, és molt important que tingui uns mínims coneixements sobre fiscalitat. A tots els mòduls encarregats de realitzar aquesta adaptació se’ls anomena de “localització”.
Un bon implantador ha de tenir coneixements sobre fiscalitat, com es mostra al vídeo de presentació de novetats fiscals en Odoo 2020:
Molts dels processos que ha de portar a terme una empresa en la seva relació amb l’agència tributària poden realitzar-se de manera telemàtica, mitjançant els anomenats “models”. Són uns arxius que segueixen un format determinat, i recullen informació sobre l’activitat econòmica de l’empresa. És lògic arribar a la conclusió de què si tota la informació està emmagatzemada a l’ERP de l’empresa, ha de ser possible crear de manera senzilla aquests models.
L’associació espanyola d’Odoo (AEODOO), és un grup de treball dins Odoo OCA, i que estan especialitzats en la generació i actualització d’aquests mòduls que adeqüen Odoo a la realitat tributària d’Espanya. Accedint a la pàgina Github de l’AEODOO (bit.ly/2Ho7Brx) pot trobar-se tot el llistat de mòduls necessaris per a fer totes aquestes adaptacions.
A la figura següent pot comprovar-se l’AEODOO manté un repositori amb tots els mòduls necessaris. És important destacar que, a partir d’un canvi de versió, tots els grups de treball de l’AEODOO han de migrar els mòduls existents de la versió anterior a l’actual, sent probable que trigui uns mesos arribar a tenir-los tots disponibles (figura i figura).
l10n (localització)
Els mòduls d’Odoo relacionats amb la localització sempre tindran un nom que comença per l10n.
Instal·lació de mòduls de tercers
A continuació, es descriurà el procés d’instal·lació d’un mòdul de tercers, concretament el que correspon a l’eina de comptabilitat “account_menu”. Els detalls, però, estan desenvolupats al vídeo que hi ha al final d’aquest punt.
Es parteix d’un servidor amb Odoo, concretament d’un servidor Ubuntu Server. Els passos a portar a terme seran (figura):
- Accedir a Odoo OCA, descarregar i descomprimir el mòdul.
- Enviar la carpeta del mòdul al directori “odoo-custom-addons” del server on està Odoo. Pot fer-se mitjançant un client FTP, terminal (fent servir la comanda scp), o accedint directament al servidor (si fos possible).
- Reiniciar el servei odoo13. Aquest pas no és obligatori, però evita errors, per exemple en mostrar les icones del mòdul.
- Accedir al menú de configuració d’Odoo i activar el mode desenvolupador. També pot fer-se afegint a l’URL d’Odoo ?debug=1
- Al menú d’aplicacions, actualitzar la llista d’aplicacions.
- Ja pot trobar-se l’aplicació de tercers a Odoo amb normalitat.
Podeu descarregar el servidor Ubuntu Server, des de la secció “Annexos”.
És de vital importància que el propietari del servei Odoo (a la instal·lació d’exemple es diu odoo13) tingui permís sobre els arxius del mòdul. La recomanació és fer el següent per assegurar-se’n:
chown -R odoo13:odoo13 odoo-custom-addons
Com a resum d’aquest punt, pot veure’s el següent vídeo:
Importació de dades a Odoo. Usuaris i treballadors
Una de les qüestions que més preocupa les empreses a l’hora d’implantar un ERP és la migració de les seves dades. Totes les empreses disposen d’una o diverses bases de dades (casolanes o professionals), i és responsabilitat de l’implantador portar a terme aquesta tasca.
Com a primera opció per a la migració, es podria suggerir actuar directament sobre la base de dades. És una opció molt complicada i arriscada, però, ja que existeixen moltes relacions entre les diferents taules i exigeix un nivell de coneixement i de treball previ per a generar les consultes molt gran.
Per tal d’evitar aquest tipus de migració, Odoo proporciona la possibilitat d’importar dades a totes les seves pantalles de tots els mòduls (figura).
Odoo accepta dos formats d’arxiu diferents: csv (arxiu pla de text separat per comes) i xslx (full de càlcul tipus Microsoft Excel). A l’hora d’afegir columnes a aquest arxiu per a la migració, pot fer-se servir qualsevol camp existent a la base de dades.
Una vegada carregat un arxiu, pot seleccionar-se a quin camp de la base de dades pertany cadascuna de les columnes (figura).
En aquest sentit, hi ha altres recomanacions a tenir en compte:
- Per a camps que es refereixen a categories (p. ex. el lloc de treball d’un treballador), existeix la possibilitat de crear el valor en cas de no existir-hi (create if doesn’t exist).
- Abans de realitzar-se la importació pot fer-se una comprovació de què no hi haurà problemes (botó Test). En cas d’existir conflictes Odoo mostrarà un missatge donant-hi informació al respecte.
- A l’hora de fer servir categories ja existents, ha de ficar-se el seu nom exacte (figura). És preferible ficar Odoo en anglès, ja que assegura una compatibilitat total.
Usuaris i treballadors
Una de les primeres migracions que ha de portar-se a terme en implantar un ERP és la d’usuaris i treballadors. Primerament, és important diferenciar aquests dos conceptes, ja que no són el mateix:
- Un usuari és tota aquesta persona que pot accedir a l’ERP i té diferents atribucions, com ara introduir vendes, compres, gestionar enviaments o contractacions.
- Un treballador o empleat és un membre de l’empresa, que com a tal ha de figurar al mòdul de recursos humans de l’ERP.
El model de negoci de molts ERP de pagament consisteix a cobrar a l’empresa per cadascun dels usuaris que pot connectar-s’hi. Serà, per tant, de vital importància fer una bona diferenciació entre usuaris i treballadors per a no generar pagaments innecessaris.
Tota la gestió d’usuaris (alta, importació, edició…) es porta a terme a la secció de configuració d’Odoo (figura).
Tota la gestió de treballadors (alta, importació, edició…) es porta a terme al mòdul de recursos humans d’Odoo (figura).
A continuació pot veure’s un vídeo on es realitza un exemple de migració d’usuaris i treballadors a Odoo:
Els mòduls d'Odoo
Per a portar a terme totes les operacions de venda, consultoria, implantació i formació en un ERP és imprescindible conèixer aquesta eina. Aquest coneixement s’adquireix fonamentalment per l’experiència, però és molt important partir d’una bona base.
En aquest material volem destacar dos processos en particular: el cicle de la comanda i la comunicació en línia (o online). Però cal saber que hi ha altres possibilitats que, encara que no s’esmentin, també són importants, com ara els processos de fabricació o la relació amb el client.
Cicle de la comanda: vendes, compres i inventari
El cicle de la comanda del client s’inicia quan aquest fa una sol·licitud de materials o productes a un proveïdor, és a dir, quan fa una comanda, i acaba quan rep el producte. També afegirem a aquest procés l’aprovisionament per part del proveïdor, ja que no podrà subministrar un bé si no el té al seu magatzem amb anterioritat.
Manuals d'ús
El contingut a continuació no pretén ser un manual d’ús, només una petita mostra de les possibilitats que Odoo ofereix a les empreses. Els manuals d’usuari d’Odoo poden trobar-se a bit.ly/31vK2UY.
Pel que fa a Odoo, els mòduls que formen part d’aquest procés són (figura):
- Mòdul d’inventari
- Mòdul de compres
- Mòdul de vendes
- Mòdul de facturació
Convé recordar que Odoo és una aplicació modular, i per tant, la funcionalitat de cada mòdul serà independent de la resta (encara que puguin interactuar quan estan instal·lats). És per això que hi haurà objectes, com ara els productes o les empreses (proveïdors o clients), que estan al nucli d’Odoo, en comptes d’estar a un mòdul en concret.
Compres
El mòdul de compres ajuda a una empresa a automatitzar el seu aprovisionament, sigui per a produir béns a partir de matèries primeres, sigui per a vendre’ls a continuació (figura).
Permetrà emmagatzemar, per a cada producte, diferents proveïdors, amb la seva quantitat mínima i preu per unitat. Això facilita generar comandes de compra per aprovisionar el magatzem de l’empresa (figura).
Vendes
Aquest mòdul proporciona eines per a la venda de productes o serveis (figura). Estèticament és molt similar al mòdul de compres, i gestiona la creació de pressupostos, acceptació de pressupostos i conversió en comanda, enviament de la comanda al client.
A més a més, el comercial que realitza la venda pot posar en marxa l’enviament (que després serà atès pels tècnics de magatzem), i la factura (que després serà atesa pels tècnics de comptabilitat).
Inventari
El propòsit d’aquest mòdul és la gestió de l’estoc de productes de l’empresa (figura). Permet crear un o diversos magatzems, zones dins cada magatzem, moure productes d’un magatzem o zona a un altre, aprovisionar el magatzem de manera massiva…
Aquest mòdul té una importància vital en empreses grans, ja que ajuda a gestionar les existències, prevenint problemes com ara ruptures d’estoc o duplicació de compres.
Facturació
Gestiona els pagaments i l’emissió de factures de l’empresa (figura). Pot completar-se amb mòduls de comptabilitat i localització, per tal de generar la documentació necessària per a l’agència tributària.
El següent vídeo descriu breument el funcionament dels mòduls de compres, vendes, inventari i facturació amb un exemple:
La informació per a la gestió dels mòduls de tercers es troba al punt “Els mòduls no oficials. Instal·lació” d’aquest mateix contingut.
Comunicació en línia: el mòdul web
Actualment, totes les empreses necessiten presència al web. La manera de comprar dels consumidors ha canviat, i és molt alt el percentatge d’aquests que consulten internet abans de decidir-se. Odoo ERP ofereix un senzill mòdul web que serà la cara pública de l’empresa a la xarxa de xarxes.
Però la necessitat de presència web no acaba aquí, ja que són moltes les empreses que volen vendre els seus productes en línia (online). Una vegada es té la infraestructura web, la resta de l’empresa no necessita grans canvis per a afegir aquest nou canal de venda, i els beneficis són grans.
Web de l'empresa
Per a crear una senzilla web s’ha d’instal·lar a Odoo el mòdul “Lloc web”. Una vegada instal·lat haurà de triar-se una plantilla entre dues existents, i a continuació ja pot començar l’edició (figura).
Crisis i oportunitats
Problemes actuals, com possibles confinaments provocats per pandèmies, obren grans oportunitats de negoci per a implantadors de solucions que incorporin botiga web a una empresa.
El mòdul web conté un editor per a generar elements estàtics i fins i tot dinàmics (com ara carrusels d’imatges). Encara que és important que la primera edició de la web la realitzi l’empresa amb el consultor, és molt probable que no necessitin ajuda per a canvis posteriors (figura).
Altres plantilles
Poden trobar-se més plantilles a la pàgina oficial d’Odoo: bit.ly/3mc5lml.
Per a canvis estètics més importants dins la plantilla, existeix la possibilitat d’editar el seu codi xml (figura). Òbviament, només s’aconsella accedir a aquesta secció a tècnics que dominin HTML, CSS i JS. Algunes de les plantilles fan servir el framework Bootstrap 4, per tant, també s’aconsella als implantadors que tinguin coneixements en aquesta tecnologia.
Odoo ofereix també la possibilitat de crear entrades de bloc, enquestes, formularis… totes aquestes funcionalitats estan deshabilitades per defecte, hauran d’instal·lar-se els mòduls corresponents per a poder utilitzar-les (figura).
Boostrap
Es pot trobar informació sobre Boostrap a: bit.ly/37vAixC.
Botiga en línia o 'online'
Una vegada Odoo disposa d’una estructura de productes, i els mòduls de compra, venda, inventari i facturació instal·lats, crear una botiga web és molt senzill. Realment, instal·lar el mòdul de comerç electrònic només posa a disposició de la web tot el catàleg de productes existents, la resta, tot el canal de venda, enviament i facturació, ja existeix (figura).
Una vegada instal·lat el mòdul, es genera una nova pestanya a les fitxes de producte, per tal de poder configurar el seu comportament. Entre d’altres, es configura si Odoo permetrà vendre un producte sense estoc, o si es publicarà el nombre d’existències (figura).
A la web es genera automàticament la secció “shop” per accedir a la botiga. Qualsevol producte o servei de la base de dades pot publicar-se, només ha d’activar-se aquesta opció a la seva fitxa (figura).
Per últim, destacar que a la secció de configuració de la web es poden modificar les opcions de pagament. Per defecte, només ve activada l’opció de transferència bancària, però poden fer-se servir diverses passarel·les de pagament professionals (figura).
El següent vídeo descriu breument el funcionament dels mòduls de web o comerç electrònic:

















































































