Practicas Con Odoo

March 1, 2018 | Author: Edwin H | Category: Email, Transport Layer Security, World Wide Web, Technology, Postgre Sql
Share Embed Donate


Short Description

Odoo...

Description

Prácticas con Odoo

Tabla de contenido 1. Introduction 2. Configuración del sistema 3. Configuración de Odoo 4. Configuración de la legislación española 5. notas un poco cochinas

2

Prácticas con Odoo

Prácticas con Odoo Para la asignatura «Gestión de datos en Sistemas de Información Web» del curso de adaptación al grado de informática de 2015 de la Universidad de Almería. Este manual está escrito usando una configuración 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 prácticas no está suficientemente acabada.

Introduction

3

Prácticas con Odoo

Configuración del sistema En resumidas cuentas: Odoo (antiguo OpenERP) como sw de gestión/ERP Docker como sistema de contenedores postgresql como SGBDR haproxy como proxy inverso https CentOS 7 como SO Linux Menos Odoo todos los demás productos vienen de serie en las versiones modernas de las distros CentOS y Fedora. En este caso usaremos una aproximación de operación con contenedores Docker. La tecnología de contenedores permite configuraciones semejantes a las que se pueden hacer con máquinas virtuales pero con menos coste de memoria y CPU. Eso no significa que un contenedor pueda sustituir a una máquina 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 aproximación 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 módulos y añadidos es importante y cubre la reglamentación española es muy maduro, aun con los cambios que se le están realizando desde las versiones v5 es el que debe implantar este que suscribe para sostener las actividades de la asociación Club de Cacharreo La elección de postgresql es obvia. Es un producto magnífico y está perfectamente integrado con Odoo. haproxy es un añadido necesario. Por algún extraño motivo que escapa a nuestra comprensión Odoo no implementa en su servidor web el soporte TLS (https). Como en nuestra instalación eran inevitables los accesos desde internet con navegador web se hacía intolerable cualquier riesgo de interceptación de información y una de las alternativas más 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 habéis elegido los demás.

Preparación 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 ejecución el servicio docker

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

usermod usuario -G docker

Configuración del sistema

4

Prácticas con Odoo

Configuración de los contenedores Podemos levantar una configuración de contenedores docker de varias maneras pero aquí usaremos la herramienta fig porque su fichero de configuración es muy expresivo. Ojo: las versiones más recientes de fig ahora se desarrollan como docker compose. Buena parte de las ventajas de usar Docker consiste en la biblioteca de imágenes que mantiene el proyecto. Usaremos varias de llas También usamos imágenes publicadas en el registro público de docker. En particular, y tras varios intentos no demasiado exitosos descubrimos a un alma gemela que por días nos llevaba ventaja en su propia configuración 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 mínimo la complejidad de la instalación es el uso de la herramienta de «orquestación» de contenedores fig (aunque Yajo ya se refiere a ella con el nombre actual docker composer). Más adelante resumimos la configuración de orquestación elegida.

Pasos para la configuración 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 continuación creamos un fichero fig.yml que expresará la configuración de la orquestación 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:

Configuración del sistema

5

Prácticas 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 explícito. Define seis contenedores diferentes y las respectivas propiedades docker de los mismos: app: con el código 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 depuración de aplicaciones de Odoo https: proxy TLS inverso PORHACER: explicar la configuración fig PORHACER: explicar el procedimiento de creación de la orquestación (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

Configuración del sistema

6

Prácticas 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 configuración 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...

Obsérvese: que la opción -d (por detach) que levanta los contenedores corriendo como proceso de fondo; que docker busca las imágenes preconfiguradas que indicamos en fig.yml primero entre las que están operativas en el sistema, después entre las descargadas en su caché interna y finalmente las descarga del registro público y que todo el proceso es completamente automático y transparente; que fig ha añadido el prefijo odoocacharreoclub* a cada nombre que elegimos para los contenedores. A continuación podemos comprobar que realmente nuestros contenedores están 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 configuración vista desde docker

Configuración del sistema

7

Prácticas 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? Fácil, porque invocar docker ps sólo muestra los contenedores que están en ejecución y tanto odoocacharreoclub_dbdata_1 como odoocacharreoclub_appdata_1 no son contenedores que ejecutan código sino que sirven como almacenes de datos. Para poder entender la complejidad de esta configuración obsérvese la relación entre las diferentes versiones del ciclo de vida de las imágenes docker:

Configuración del sistema

8

Prácticas con Odoo

Configuración del sistema

9

Prácticas con Odoo

Finalmente la aplicación Odoo queda accesible desde el puerto 4433, con cifrado TLS. En nuestro caso la dirección final es https://olea.wtf.im:4433, que utiliza un DNS dinámico ya que se aloja edentro de la red de un usuario de banda ancha de consumo.

Pendientes: instalar whtmltopdf El ajuste final de la orquestación aún está pendiente: básicamente cerrar algunos puertos que realmente no van a usarse desactivar el módulo de depuración de Odoo tal vez crear un nuevo certifacdo X509 para el proxy inverso para hacer más cómodo el uso en el navegador de certificados autofirmados mejorar la configuración 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'

Configuración del sistema

10

Prácticas con Odoo

Configuración de Odoo Este capítulo debería ser más detallado y prolijo... pero no, ha sido mal improvisado por el retraso del autor y porque le ha dedicado más tiempo a aprender a usar el artefacto que a documentarlo con el magnífico nivel de detalle de las prácticas originales de la asignatura. Rogamos sean tenidas en cuenta estas disculpas.

Creación de la bbdd Una vez tenemos una configuración operativa la probamos entrando con el navegador en la dirección https://olea.wtf.im:4433 y encontraremos el menú principal de la gestión de bbdd de Odoo que será cómo:

¿Le parece que está muy expuesto, así tan alegremente? Ya le digo yo que a nosotros también, pero «donde manda upstream no manda integrador». Esta es una de las razones por las que era obligada la instalación de un proxy inverso TLS. En nuestro caso crearemos: una bbdd llamada cacharreo en español usaremos las mismas contraseñas que indicamos en el fichero fig.yml Nota: en este punto uno esperaría un manual paso a paso, pero como voy a posteriori sólo vamos a mostrar las configuraciones que sí hemos llevado a cabo a posteriori.

Configuración general

Configuración de Odoo

11

Prácticas con Odoo

Adición de la empresa

Configuración de Odoo

12

Prácticas con Odoo

Configuración de los usuarios

Configuración de Odoo

13

Prácticas con Odoo

Nota: Odoo distingue entre usuarios (que acceden al sistema) y empleados de la organización. Un usuario puede ser un empleado, un usuario externo (si están en uso módulos como web, forums o portal) o interno pero sin asignación de empleado.

Selección de módulos Estos son los módulos instalados en este momento:

Configuración de Odoo

14

Prácticas con Odoo

Configuración de Odoo

15

Prácticas con Odoo

Aunque hay que reconocer que algunos están puestos a lo loco, mientras aprendemos a saber qué hacen y cómo se usan.

Gestión 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 módulos de gestión de proyecto procedimos a instalarlo:

Configuración de Odoo

16

Prácticas con Odoo

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

Configuración de Odoo

17

Prácticas con Odoo

Vista de tareas:

Configuración de Odoo

18

Prácticas con Odoo

La metodología de kanban se configura aparte:

Obśervese que el usuario Ismael Olea tiene más 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 configuración de usuario la visualización de los aspectos técnicos.

Configuración 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 aplicación a través del navegador, o más bien deberíamos decir además de. En nuestro caso de trabajo ya tenemos implementada, con contenido de estático. la web corporativa en otro servidor. Aunque no tenemos interés 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: dirección DNS diferente al configurado en el sistema operativo uso de TLS a través de un puerto no convencional (!= 443) Así las cosas configuramos la web de la siguiente manera:

Configuración de Odoo

19

Prácticas con Odoo

Entrada y salida de correo Otra de las funcionalidades de Odoo es la del envío y recepción de correo electrónico para diferentes asuntos. En primera instanacia el más importante es el de salida, para que los avisos reciban notificaciones de cambios que les atañen. Correo de salida:

Configuración de Odoo

20

Prácticas con Odoo

Correo de entrada:

Configuración de Odoo

21

Prácticas con Odoo

Obsérvese 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. Obśervese igualmente que usamos un usuario «gestion.cacharreo» para la burocracia administrativa relacionada con los usos de Odoo. En realidad Odoo tiene una integración con el correo electrónico mucho más potente que esto, que permite usar diferentes direcciones de correo-e corporativas para diferentes asuntos, en función de cómo lo configuremos. Entre esas posibilidades, en el pantallazo anterior puede observar la opción [Servidor y conexión]->[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 cómo asignar cada tarea a un usuario existente que reciba una notificación de la llegada y atienda el evento en consecuencia.

Configuración de la mercadotecnia Dado que precisamente nos encontramos desarrollando una campaña pretendidadamente viral hemos instalado al menos el módulo CRM para intentar sacarle partido.

Configuración de Odoo

22

Prácticas 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, según la nomenclatura de Odoo, iniciativas y oportunidades:

Configuración de Odoo

23

Prácticas con Odoo

Configuración de Audit Log Audit Log es un módulo para crear una bitácora automática de la actividad en Odoo. Nosotros hemos intentado configurarlo para registrar los cambios de configuración, que nos sería utilísimo en estos momentos de aprendizaje y pruebas más o menos a lo loco para saber qué demonios estamos haciendo y cómo deshacer entuertos creados por nosotros mismos.

Configuración de Odoo

24

Prácticas con Odoo

Reglas configurados pretendiendo registrar todos los cambios de configuración:

Configuración de Odoo

25

Prácticas con Odoo

Cambios registrados hasta ahora:

Configuración de Odoo

26

Prácticas con Odoo

Y como sabemos que efectivamente hemos hecho más cambios de configuración es obvio que quedan cosas por hacer.

Configuración de la pantalla inicial/predeterminada del usuario Al parecer hay dos maneras para realizarlo: modificando el orden de los menús de la barra superior, que se haría desde algún lugar del menú de configuración modficando cada usuario interesado en el detalle de sus permisos. Por estar en fases previas y por no marear más de la cuenta al resto de los compañeros hemos optado por experimentar en primera persona usando la segunda aproximación. Esto se hace en el menú [Configuración]->[Usuarios]->[Ismael Olea]->[Editar]->[Preferencias]->[Acción inicial] en donde elegimos tasks. De esta manera nuestra pantalla inicial será nuestra propia vista del panel kanban.

Configuración de Odoo

27

Prácticas con Odoo

Parámetros del sistema Para los novatos un menú muy interesante que revisar es el de parámetros del sistema, que contiene algunos de los ajustes generales que más nos pueden interesar revisar y, en su caso, corregir

Configuración de Odoo

28

Prácticas con Odoo

Pendientes: Verificar que estamos usando auditlog correctamente Verificar que estamos usando todos los módulos para la reglamentación española 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 también la principal secuencia para asientos además de las liquidaciones de impuestos Verificar si estamos usando correctamente las campañas con el CRM Repasar la manera en la que integrar el formulario de consultas de nuestra web dentro de Odoo, básicamente decidiendo si lo hacemos por protocolo usado smtp directamente formulario web por módulo Odoo como tareas nuevas en el kanban como entradas en el módulo de ventas considerar en algún momento la integración de nuestra web estática con la web corporativa integrada de Odoo. mejorar la configuración de Audit Log para controlar al menos los cambios de configuración asignar a un usuario Odoo las tareas generadas por correo-e entrante, en [Configuración]->[Email]->[Servidores de correo entrante]->[Servidor y conexión]->[Acciones a realizar en los correos entrantes]->[Crear un nuevo registro]-> Configuración de Odoo

29

Prácticas con Odoo

[Tasks] gestionar domiciliaciones

Configuración de Odoo

30

Prácticas con Odoo

Configuración de la legislación española

Configuración de la legislación española

31

Prácticas con Odoo

Notas un poco cochinas Por haceres: instalar whtmlpdf + dependencia

Haceres: instalar topónimos españoles + dependencia python https://apps.openerp.com/apps/modules/8.0/l10n_es_toponyms/ al instalar la aplicación veremos una advertencia

en general podemos decir que las aplicaciones desarrolladas por la comunidad española son fiables y estables, por lo que podremos aceptar e instalar sin problema. Imposible instalar el módulo "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 línea» hay que estar autenticado en tu instancia Odoo y en Odoo.com. configuramos a través de «Configurar desde local» porque la opción de GeoNames no nos funciona. es posible que aparezca un error y que de apariencia de que el módulo no se ha instalado pero si lo notas un poco cochinas

32

Prácticas con Odoo

comprobamos desde otra ventana del navegador comprobaremos que sí lo está. parece que realmente le toma bastantes minutos instalarlo instalar dependenccias de legislación española: el principal módulo 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 asígnate los necesarios o usa un usuario que sí los tenga. Informes de cuentas anuales españoles

notas un poco cochinas

33

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF