Salta el contingut

Odoo

Qué és Odoo?

Odoo és un ERP open-source escrit en Python que usa PostgreSQL com a base de dades. Ofereix una suite completa de mòduls empresarials (vendes, compres, inventari, comptabilitat, RRHH, CRM, fabricació, e-commerce, etc.) amb una interfície web moderna.

Existeix en dues edicions: - Community Edition (CE): gratuïta i de codi obert (LGPL-3) - Enterprise Edition (EE): de pagament, amb mòduls addicionals i suport oficial

Instal·lació amb Docker Compose

Crea un fitxer docker-compose.yml per a Odoo:

version: '3.8'

services:
  odoo-db:
    image: postgres:15
    container_name: odoo-db-joan-garcia
    environment:
      POSTGRES_USER: odoo
      POSTGRES_PASSWORD: odoo_password
      POSTGRES_DB: postgres
    volumes:
      - odoo_db_data:/var/lib/postgresql/data
    networks:
      - odoo_net

  odoo:
    image: odoo:17.0
    container_name: odoo-joan-garcia
    depends_on:
      - odoo-db
    ports:
      - "8069:8069"
    environment:
      HOST: odoo-db
      USER: odoo
      PASSWORD: odoo_password
    volumes:
      - odoo_web_data:/var/lib/odoo
      - ./addons:/mnt/extra-addons
    networks:
      - odoo_net

volumes:
  odoo_db_data:
  odoo_web_data:

networks:
  odoo_net:
# Engegar
docker compose up -d

# Accedir a Odoo
# http://localhost:8069

# Veure logs
docker compose logs -f odoo

Primer accés i configuració

En el primer accés, Odoo mostra un formulari per crear la base de dades:

Camp Valor recomanat
Master Password (establert a odoo.conf)
Database Name lmsgi_joan_garcia
Email admin@exemple.com
Password (contrasenya administrador)
Language Catalan (ca)
Country Spain

Mòduls principals

Odoo s'organitza en mòduls (apps) que s'instal·len independentment:

Mòdul Funció
Vendes Pressupostos, comandes de venda, facturació
CRM Oportunitats, pipeline de vendes, contactes
Inventari Control d'estoc, moviments, valoració
Compres Sol·licituds d'oferta, comandes de compra
Comptabilitat Factures, pagaments, llibres comptables
Recursos Humans Empleats, nòmines, absències, contractes
Projecte Gestió de projectes, tasques, Kanban
Fabricació Ordres de producció, llistes de materials
e-Commerce Botiga online integrada
Web Constructor de pàgines web

Instal·lar mòduls

  1. Accedeix a Configuració → Mòduls
  2. Activa el mode de desenvolupador (Configuració → Mode de desenvolupador)
  3. Cerca el mòdul
  4. Clica "Instal·lar"

Gestió d'usuaris i rols

graph TD
    Admin[Administrador<br/>Accés total] --> Gestor[Gestor<br/>Accés per mòdul]
    Gestor --> Usuari[Usuari<br/>Accés operacional]
    Admin --> Portal[Usuari de portal<br/>Clients/proveïdors]
  1. Accedeix a Configuració → Usuaris i empreses → Usuaris
  2. Crea un nou usuari amb correu electrònic
  3. Assigna el grup corresponent per cada mòdul (cap accés, usuari, gestor, administrador)
  4. Opcionalment, crea grups personalitzats a Configuració → Grups

Importació de dades

Odoo accepta importació de dades en CSV i XLSX:

Format CSV per a clients

"Nom","Correu","Telèfon","Carrer","Ciutat","País"
"Institut Sa Palomera","info@sapalomera.cat","972 33 29 63","Carrer Nou, 42","Blanes","ES"
"Escola Tècnica","info@escolatec.cat","93 123 45 67","Avinguda Mar, 15","Barcelona","ES"

Procediment d'importació

  1. Ves al mòdul corresponent (p. ex., Contactes)
  2. Clica Importar (botonera superior)
  3. Selecciona el fitxer CSV/XLSX
  4. Mapeja els camps CSV amb els camps d'Odoo
  5. Valida amb "Prova d'importació"
  6. Confirma amb "Importa"

Exportació de dades

Exportació manual

  1. Ves a la llista del model (p. ex., Clients)
  2. Selecciona els registres (o tots amb el checkbox)
  3. Acció → Exportar
  4. Selecciona els camps a exportar
  5. Escull format (CSV o XLSX)

Exportació via terminal (XML-RPC)

import xmlrpc.client

url = "http://localhost:8069"
db = "lmsgi_joan_garcia"
username = "admin@exemple.com"
password = "la_teva_contrasenya"

common = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/common")
uid = common.authenticate(db, username, password, {})

models = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/object")

# Llegir tots els contactes
contactes = models.execute_kw(db, uid, password, 'res.partner', 'search_read',
    [[['is_company', '=', True]]],
    {'fields': ['name', 'email', 'phone', 'city'], 'limit': 100}
)

import json
print(json.dumps(contactes, ensure_ascii=False, indent=2))

Generació d'informes

Odoo genera informes en PDF basats en plantilles QWeb (HTML+XML):

  1. Obre un registre (p. ex., una factura o un pressupost)
  2. Clica el botó Imprimir o Enviar per correu
  3. Odoo genera automàticament el PDF

Personalitzar informes (mode desenvolupador)

  1. Configuració → Informes → Informes
  2. Selecciona l'informe a personalitzar
  3. Edita la plantilla QWeb

Miniactivitat AC03746

Instal·la Odoo 17 amb Docker (usa el docker-compose.yml anterior). Crea la BD lmsgi_nom_cognom. Instal·la els mòduls "Vendes" i "Inventari". Crea 3 productes fictícis i 2 clients. Fes una comanda de venda i exporta el llistat de productes en CSV.