Está en la página 1de 35

Curso de openERP

Fecha: del 19 al 23 de julio del 2010 Ponentes: Ana Juaristi (Consultora independiente), Carlos Liebana carlos.liebana-ting.es y Hugo Santos hugo.santos-ting.es (empresa: ting!, de Leon)

Curso de openERP Introduccin Iniciacin al entorno OpenERP - OpenObjet Bazaar Launchpad Instalacin y mantenimiento del servidor Instalacin sobre Ubuntu 10.04 Server LTS Instalacin de Postgres Instalacin de dependencias python y xml Archivo de configuracin Fichero de arranque del servidor Gestin de la BBDD Instalacin del cliente de openERP Launchpad Bazaar Instalar entorno de desarrollo Eclipse+Pydev Para MAC Instalar la base de datos de openERP Instalar la localizacin espaola Ejercicio de instalacin de la localizacin en una base de datos nueva Instalacin del cliente Koo para KDE Instalacin del servidor web Workflows desde el interfaz web Arquitectura Desarrollo en openERP Introduccin Qu contiene un mdulo de openerp? Python Archivos de un mdulo de openERP Modificar un mdulo de openerp con eclipse Instalar acceso a cdigo con conexiones remotas Realizar nuestro primer mdulo en openERP Creacin de un mdulo para la gestin de instalaciones de openERP Crear la vista Mtodos self.search y self.browse

Campos de las tablas de la bbdd write(..) = update en la bbdd create(..) copy(..) Herencia en Python-openERP Implementar seguridad a los mdulos Lgica de los workflows Wizards Copias de seguridad Reportes, Informes Mdulo base_report_designer Ahora veremos el mdulo de pxgo_openoffice_reports para informes Otra forma de hacer informes - Kaspars Mdulo base_reports_creator iReport for JasperReport Web services - XML-RPC Importacin / Exportacin de datos Copias de seguridad Referencias

Fecha: 2010-7-19

Introduccin
- Modular - Nacio en el ao 2002 - Versin actual: 5.0.12 (octubre 2010, v6.0?), el cliente web de la 6.0 est muy mejorado con respecto a la v.5. Al migrar de la 5.0 a la 6.0 habr que tocar algo del cdigo, o bien algn script de migracin que prepare la comunidad. Los mdulos que adaptan la fiscalidad a un pis concreto = mdulos de localizacin, en la versin 6.0 quieren certificar (incluirlos en el core) los que ya hay espaoles (para la 5.0.12 hay una rama aparte en openObject), la nica pega es que luego openERP tiene que aprobar cualquier sugerencia y tardar ms la rama en actualizarla y pierdes un poco la independencia.

Iniciacin al entorno OpenERP - OpenObjet


- OpenObjet = Framework (RAD) para hacer cualquier aplicacin. Orientado a objetos, Python, postgresSQL. Lo bueno de este framework es que se puede aplicar a cualquier cosa que hagamos. - Una de las aplicaciones de openObjet es openERP - La propiedad de herencia que tiene al ser orientado a objetos te permite aadir mdulos nuevos o modificarlos muy facilmente. - BI (Bussines inteligence), todava no est maduro, no est operativo - El framework fu consecuencia del proyecto. El desarrollo se hace sobre openObject (openERP es una aplicacin de openObject)

Bazaar
http://angelmoya.es/openerp/launchpad-y-bazaar-para-colaborar-con-openerp/ 114 mdulos oficiales extra_addons + community unos 400

Launchpad
Y esto qu es?. Es un sitio Web donde los colaboradores de OpenERP de todo el mundo, comparten y publican sus proyectos. Cualquier mdulo en desarrollo est en el launchpad, las traducciones, los errores, las sugerencias de mejora o de desarrollo de nuevos mdulos estn en el launchpad.

Instalacin y mantenimiento del servidor


Sistema operativo recomendado: Ubuntu Server 10.4 LTS

Tres o cuatro maneras de instalacin: - desde las fuentes (donde openERP cuelgan su cdigo) - desde los paquetes compilados, repositorios de Ubuntu. Pueden estar desactualizados, ya que puede que Ubuntu cuando lo compil fuera una versin anterior. - Scripts automatizados (Iaki Fernandez). www.openerpappliance.com. All-in-one para Ubuntu. Te baja la rama - Appliance. www.openerpappliance.com. Tiene ya todo instalado Ubuntu+openERP. Versiones 5.0, 5.0 spanish (tiene la localizacin espaola). Slo terminal (no desktop). Tambin la versin 6.0 (con y sin desktop) y la 5.0 desktop. Para actualizar entre versiones (secundarias) 5.x, ningn problema, con el atributo --updateall, pero recomendable probar antes en entornos no p Entramos en aulaerp.com --> Instalacin sobre Linux Ubuntu La versin Ubuntu 10.04 LTS tiene la versin 6.0 de python Para temas de instalarlo sobre servidores virtualizados: - Proxmox - ESXi de VWare (es un linux mnimo gratuito para instalarlo bajo windows) - Mokafive Mdulo de migracin de datos: http://kndati.lv tiene un script para migrar de la 4.2 a la 5.0 openERP madre sacar un script oficial

Instalacin sobre Ubuntu 10.04 Server LTS


$ sudo apt-get update $ sudo apt-get upgrade

Instalacin de Postgres
Instalar postgreSQL servidor, cliente y la interfaz web de control phppgadmin $ sudo apt-get install postgresql postgresql-client phppgadmin Se ha instalado la versin de postgresql 8.4.4 Creacin de un usuario openerp para la bbdd postgres para acceder slo a la BBDD de openERP, para ello entramos con el usuario postgres que es administrador total en la BBDD y lo creamos $ sudo su postgres $ createuser --pwprompt --createdb --no-createrole --encrypted --no-superuser openerp $ exit Que pueda crear bbdds en postgres, no puede crear roles y no es superusuario, la contrasea se guarda encriptada

Instalacin de dependencias python y xml

$ sudo apt-get install python python-libxml2 python-libxslt1 python-lxml para que pueda hacer peticiones de python a postgres $ sudo apt-get install python-psycopg2 python-imaging python-reportlab $ sudo apt-get install python-pyparsing python-pydot graphviz python-matplotlib python-numpy python-tz gs-gpl python-pychart python-egenix-mxdatetime python-vobject Opcional: Para permitir conexiones desde otro equipo que no sea localhost, modificar el fichero (ver manual carlos-debian) $ sudo gedit /etc/postgresql/8.3/main/pg_hba.conf

Opcional: Si debe soportarse el envo de emails mediante SSL deberamos instalar este otro paquete:
$ sudo apt-get install python-openssl

Para el mdulo PowerMail instalaremos Python Mako (Sharoon Thomas, creador del mdulo powemail)
$ sudo apt-get install python-mako Descargar el servidor de openerp en /usr/src luego al hacer la instalacin, ya colocar los archivos en la ruta correcta $ cd /usr/src $ sudo wget <copiar y pegar el enlace de openerp.com/download aqui> $ sudo tar -zxvf <fichero.tar.gz> Nos metemos en la carpeta que acabamos de descomprimir, y ejecutamos el servidor para probarlo, sin instalarlo, pero tenemos que levantarlo con el usuario de postgres postgres que es admin de todas las bbdds de postgres. Se arranca openerp y se queda esperando conexiones. $ sudo su postgres $ /usr/src/bin/openerp-server.py en la carpeta /bin/addons --> addons oficiales /bin/extra-addons --> no oficiales /bin/commynity --> los de la comunidad Ejecutar el servidor sin cambiar a usuario postgres y ejecutarlo con el usuario que hemos creado antes: $ ./openerp-server.py -r openerp -w <pass de openerp> Si le ponemos al final un -s en la ruta raiz que est ejecutando el servidor (csanchez) nos genera una plantilla del fichero de config del servidor .openerp_serverrc, si vuelvo a ejecutarlo con -s nos machacar el anterior que tenemos Si luego lanzo el servidor $./openerp-server.py (sin ms parmetros) coger el archivo de configuracin que si es que est en /home/<usuario>/.openerp_serverrc

Archivo de configuracin
Arrancamos el servidor con el usuario de postgres openerp y su password: $./openerp-server.py -r openerp -w <passopenerp> -s ctrl+z para detenerlo

NOTA: lo ideal es hacer todo esto con un usuario del sistema que sea openerp, no con el csanchez que estamos haciendo todo esto. El fichero de configuracin lo copiaremos ms adelante a /etc Parmetros importantes de fichero de configuracin: dp_port = False --> con esto ver todas las bbdds que tengo de openerp disponibles root_path --> dnde estn los ficheros .py de openerp db_password --> password del usuario openerp que hemos creado antes para la bbdd de openerp db_user --> usuario creado antes con el usuario postgres para acceso a la bbdd openerp openerp (el que ponemos despus de -r en el comando anterior) - admin_password --> cambiar la contrasea admin que tiene por defecto a la hora de crear la bbdd desde el cliente openERP la primera vez Cliente KDE de openerp, koo --> pyro : para modificar datos de ms de un registro a la vez, sin tener que cambiar uno a uno (como cuando actualizamos la informacin de ms de una cancin en Itunes). Poner el fichero de configuracin con los permisos 600 (solo lectura y escritura para el usuario) $ chmod 600 /home/<user>/.openerp_serverrc Ahora vamos a instalar openerp (para que lo copie en su sitio correcto, con los permisos correctos. El script de inicio que veremos ahora tirar de estos ficheros) $ cd /usr/src/openerp-server-5.0.12/ $sudo python setup.py install Te lo instala todo el cdigo de openERP en la ruta de python: /usr/local/python2.6/distpackages/openerp-server luego puedes borrar lo que tienes descomprimido en /usr/src Desde esa ruta se puede lanzar el servidor a mano con (pero lo arrancaremo en el init.d, en el proceso de arranque del OS): openerp-server --config=<ruta del fichero que lo dejaremos en /etc/>

Fichero de arranque del servidor


Crear el usuario de sistema que va a arrancar con en el init.d $sudo useradd openerp el script de arranque lo bajamos (de aula openerp anexo 4, script alternativo openerp-start.sh, sacado del script del appliance de Iaki) -----------#!/bin/sh ### BEGIN INIT INFO # Provides: openerp-server # Required-Start: $syslog # Required-Stop: $syslog # Should-Start: $network # Should-Stop: $network # Default-Start: 2345 # Default-Stop: 016

# Short-Description: Enterprise Resource Management software # Description: OpenERP is a complete ERP and CRM software. ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin #Al hacer el setup.py install copia en este directorio este ejecutable DAEMON=/usr/local/bin/openerp-server #Nombre del script que est en /etc/init.d NAME=openerp-server DESC=openerp-server #Usuario con el que ejecutar el servidor USER=openerp #Ruta del fichero de configuracin (Default: /etc/openerp-server.cfg). CONFIGFILE="/etc/openerpserver.cfg"

test -x ${DAEMON} || exit 0 set -e case "${1}" in start) echo -n "Starting ${DESC}: " start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \ --chuid ${USER} --background --make-pidfile \ --exec ${DAEMON} -- --config=$CONFIGFILE echo "${NAME}." ;; stop) echo -n "Stopping ${DESC}: " start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \ --oknodo echo "${NAME}." ;; restart|force-reload) echo -n "Restarting ${DESC}: " start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \ --oknodo sleep 1

start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \ --chuid ${USER} --background --make-pidfile \ --exec ${DAEMON} -- --config=/etc/openerp-server.conf echo "${NAME}." ;; *) N=/etc/init.d/${NAME} echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0

-----------lo cambiamos de nombre a openerp-server.sh lo copiamos en /etc/init.d/ le damos permisos de ejecucin para todos los usuarios $sudo chmod +x /etc/init.d/openerp-server.sh y ahora para que se arranque con el OS $sudo update-rc.d openerp-server defaults Copiar la plantilla del fichero de configuracin anterior que est en /home/<usuario>/.open-serverrc a /etc/openerp-server.conf Crear una VARIABLE en el script que sea DIRCONFIG que apunte a /etc/openerp-server.conf Cuidado que el usuario openerp del sistema tenga permisos de ejecucin de /usr/bin/openerp y lectura de /etc/openerp-server.conf Retocar el fichero de /etc/openerp-server.conf: addons_path = /usr/local/lib/ppython2.6/dist-packages/openerp-server/addons root_path = /usr/local/lib/python2.6/dist-packages/openerp-server NOTA: mirar las diapositivas de TING! para los permisos del script de arranque Primero ejecutat el servidor con 98 y luego arrancar el servidor web con 99 update-rc.d openerp-server defaults 98 update-rc.d openerp-web defautls 99

Recomendaciones: No instalar y desinstalar mdulos con ligereza, ya que puede dar un casque Tener un servidor de preproduccin para ir probando las cosas que hacemos. Tener un directorio a pelo (otra instalacin) para tema de pruebas que se ejecute a mano y no tenerlo en /etc/init.d

No tocar nada en las tablas directamente, o borrar unos registro de la BBDD

Gestin de la BBDD
$sudo apt-get install phppgadmin

Instalacin del cliente de openERP


Descargarnos el cliente de la pgina de openerp.com/download con wget

Launchpad
Todo el repositorio de openERP est en www.launchpad.net/openobject Overview: resumen del proyecto todo el cdigo est en: CODE --> proyectos independientes que est en el proyecto openobject Hay ramas: oficiales, no oficiales Quality: 25 miembros de OPENERP S.A., controla los addons 113 mdulos de la oficial Commiters: controlan los extra-addons (80 miembros de empresas que son partner y otras que no lo son). Subes unos cuantos mdulos y puedes solicitar que te cambien de estado. Community/beginners: cualquier persona que desarrolle un mdulo en su casa y lo suba. Aqu slo hay una rama. Versiones: 5.0 y la trunk (la que viene a futuro, en este caso la 6.0) commiters_trunk = mdulos extra y que son para la versin 6.0

Bazaar
Commit = una actualizacin Si nos bajasmos Idoia y yo una versin, la modifica Idoia y la sube, luego la modifico yo y la subo, machacara lo de Idoia. Eso se controla con launchpad (plataforma repositorio) y se utiliza Bazaar(un DVCS) para controlar todas estas modificaciones sean correctas y no se machaque el cdigo. Si detectamos un BUG hay que reportarlo, subir un BUG y un patch. Funciona muy bien, si es un bug muy importante te lo pueden solucionar hasta en 2 horas. Para instalar bazaar: $mkdir launchpad/openerp $sudo apt-get install bzr $bzr branch lp:openobject-client-kde (puedes bajar lo que quieras, pero si quieres subir no te va a dejar, hasta que no te registres) $nano bzr_set.py (modificar la variable VERSION para decidir qu es lo que me quiero bajar) --> luego ejecutamos ese script y nos bajar todas las ramas que seleccionemos en la variable Tener un bzr_set.py de cada versin con la que quiero probar y un directorio p.e uno para la trunk y otra para la 5.0

Lo ideal es a la hora de interactuar con Launchpad - crearnos un usuario - para bajar cdigo bzr branch lp:...rama (mirarlo en la web el nombre) - bzr pull Desarrollar una serie de mdulos y luego pedir al Commiter que te los suba de community y pasar a ser Commiter.

Instalar entorno de desarrollo Eclipse+Pydev


Para MAC
1.- Descargar Eclipse Clasic de http://www.eclipse.org/downloads/ 2.- Instalar Eclipse 3.- Configurar Eclipse para desarrollar en python: Pydev Start Eclipse and go to Help -> Install New Software. Add http://pydev.org/updates, and install the latest version (1.5.1 as of writing). Then setup your python interpreter, Auto Config should go right and choose 2.6. Now disable code analysis: Open Eclipse Preferences -> Pydev -> Editor -> Code Analysis and uncheck Do code analysis? You will be asked to specify the where Python interpreter is located: Please configure a Python or Jython interpreter in Window -> Preferences -> PyDev before creating a new Pydev project Press Apple key and , (Preferences) and browse to the Python Interpreters submenu Choose New in the upper right and browse to /usr/bin/python Eclipse will then take care of the rest for you ie. updating the $PYTHONPATH NOTE: I use Eclipse 3.3.2 on Mac OS 10.5.2.

4.- Referencias http://www.thecredence.com/lang/es/configure-eclipse-for-python/ http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=eclipseHelios http://www.leccionespracticas.com/informatica-utilidades-internet/utilizando-eclipse-para-programarpython-en-entorno-git/

Instalar la base de datos de openERP


Tenemos que abrir por primera vez el cliente openERP y desde l crearemos la base de datos:

- archvio - bases de datos - nueva base de datos --> passwd= admin por defecto (est en el fichero /etc/openerp-server.cfg) - quitar que carge los datos de demo, cuando lo hagamos en produccin - el otro usuario es el administrador de la aplicacin openerp que puede hacer todo en openerp app Perfiles = una aglutinacin de un montn de mdulos, para una instalacin en produccin tenemos que poner un perfl MINIMO (luego ya iremos aadiendo). El ms completo es Manufacturing Poner los datos de la empresa y los informes del cliente (pi de pgina y cabecera) Interfaz simplificada: seleccionar extendida ya que vemos una nueva pestaa llamada extra-info Usuarios: nada, saltar paso A partir de aqu hay que instalar la LOCALIZACIN espaola y luego los mdulos que quiere el cliente, para ello: - administracin - mdulos - pero aqu no veo los mdulos para espaa - si quisiera instalar otro mdulo - seleccionarlo - aceptar actualizaciones recomendadas y si necesita ms mdulos/dependencias las instalara. Si detecta que hay un mdulo que no lo encuentra o dependencia, habra que bajarlo de launchpad Server = 114 mdulos, extraaddons = unos 400 mdulos (si los meto en la carpeta addons, ya estarn instalados, pero hay que decirle luego desde openerp cliente -> actualizar lista de mdulos, lo que hace es verificar si en la carpeta addons hay nuevos mdulos). Luego ir a mdulos - base (dependen todos de este mdulo) --> actualizar, entonces te carga todas las actualizaciones que hay de los mdulos. No hace falta compilar (en como php). Si toca la estructura de la base de datos --> update_all Si hay que cambiar algo --> hacer un parche, subirlo a launchpad, etc..., NO TOCAR EL CDIGO FUENTE DIRECTAMENTE ya que estaramos haciendo un fork y luego al actualizar algn mdulo de los que hemos cambiado, nos machacara los nuestros. Habra que hacer una EXTENSIN de lo que viene de OpenERP. Fecha: 2010-7-20

Instalar la localizacin espaola


Descargar de https://launchpad.net/openobject --> code --> la rama de openerp-spain --> https://code.launchpad.net/~openerp-spain-team/openerp-spain/5.0 --> View the branch content --> a un directorio, 3 carpetas , extraddons --> lo que hay dentro copiarlo en /server/bin/addons, no copiar la carpeta si no sus mdulos. Ir al cliente de openERP y actualizar la lista de mdulos. l10n_ : los mdulos de localizacin espaola comienzan as mkdir /usr/src/launchpad/openerp-spain/ descargar aqu bajndolo con el comando de bazzar (estar en la web el lp:XXXXX): $ bzr branch lp:openerp-spain nos metemos en extra_addons/ de lo que nos hemos descargado y

copiar en ..../dist-pakages/apenerp-server/addons (o el directorio dnde lo tenemos instalado, ver el fichero de conf y el fichero de arranque para ver dnde lo tenemos instalado) lo que hay dentro de extra_addons (se puede hacer enlaces simblicos en vez de copiar tambin) y dentro de l10n_es y l10n_es_extras tambin Ahora entramos en el cliente de openERP y le damos a --> actualizar lista de mdulos (nos encontrar 4 nuevos) -------------------- notas web ----------------------------------------

Cmo instalar OpenERP Server y OpenERP Client en Debian con localizacin espaola (en la misma mquina)
Artilanes - Posted on 30 Marzo 2010 Versiones: Debian Squeeze PostgreSQL 8.4.2-2+b1 OpenERP Server 5.0.7-1 OpenERP Client 5.0.7-1 Bazaar 2.1.0-1 1. Instalamos los paquetes openerp-server y openerp-client y todas sus dependencias. 2. Nos aseguramos que el servidor PostgreSQL est corriendo: # /etc/init.d/postgresql-X.X restart Donde X.X es el nmero de versin de nuestro PostgreSQL 3. Creamos el usuario de la base de datos: # su - postgres -c "createuser --createdb --no-createrole --pwprompt openerp" Dejando la contrasea en blanco (ambas veces) y respondiendo afirmativamente a "Ser el nuevo rol un superusuario?" 4. Reiniciamos openerp-server # /etc/init.d/openerp-server restart El siguiente paso es generar el Plan General de Contabilidad de 2008 y de impuestos desde la plantilla correspondiente a Espaa. En el momento de redactar este artculo no figuraban como oficiales los mdulos OpenERP para Espaa, as que ser necesario descargarlos desde launchpad.net (https://launchpad.net/openerp-spain) con la aplicacin Bazaar. 5. Si no tenemos Bazaar, debemos instalar el paquete bzr. 6. Entramos en el directorio /etc/opt para no andar dejando archivos desperdigados # cd /etc/opt/ 6. Descargamos las versiones ms recientes de los mdulos openerp-spain # bzr branch lp:openerp-spain 7. Cambiamos el propietario de los archivos # chown -R openerp.root openerp-spain 8. Y copiamos todo al directorio addons de openerp-server # cp -r openerp-spain/l10n_es/* /usr/lib/openerp-server/addons # cp -r openerp-spain/l10n_es_extras/* /usr/lib/openerp-server/addons # cp -r openerp-spain/extra_addons/* /usr/lib/openerp-server/addons 9. (Opcional) Copiamos los archivos de localizacin para Catalunya en el directorio addons de openerp-server # cp -r openerp-spain/l10n_ca_ES/* /usr/lib/openerp-server/addons 10. Descargamos las versiones ms recientes de los mdulos trunk-extra-addons # bzr branch lp:~openerp-commiter/openobject-addons/trunk-extra-addons 11. Cambiamos el propietario de los archivos # chown -R openerp.root trunk-extra-addons

12. Y copiamos los siguientes mdulos al directorio addons de openerp-server # cp -r trunk-extra-addons/account_payment_extension /usr/lib/openerp-server/addons # cp -r trunk-extra-addons/sale_payment /usr/lib/openerp-server/addons # cp -r trunk-extra-addons/label /usr/lib/openerp-server/addons # cp -r trunk-extra-addons/partner_spam /usr/lib/openerp-server/addons # cp -r trunk-extra-addons/smtpclient /usr/lib/openerp-server/addons 13. Por ltimo descargamos las versiones ms recientes de los mdulos extra-5.0 # bzr branch lp:openobject-addons/extra-5.0 14. Cambiamos el propietario de los archivos # chown -R openerp.root extra-5.0 15. Y copiamos el siguiente mdulo al directorio addons de openerp-server # cp -r extra-5.0/account_financial_report /usr/lib/openerp-server/addons Ahora debemos iniciar openerp-client y en el men "Archivo" > "Bases de datos" > "Nueva base de datos" para crear una nueva base de datos y desactivamos la opcin "Cargar datos de demostracin" (de otro modo se generara un error durante el proceso de instalacin de los mdulos). Una vez creada la base de datos, continuar con el asistente de configuracin hasta definir los usuarios del sistema. Al llegar al punto "Definir ejercicios fiscales y seleccionar plan contable" hacer click en "Saltar paso" para cancelar el asistente. De esta manera evitamos los errores que surgiran al instalar la plantilla contable y los ejercicios. Desde el cliente OpenERP: Administracin > Administracin de mdulos > Actualizar lista de mdulos. Esta opcin actualiza la lista de mdulos y aade los nuevos en la lista de los "no instalados". Desde el cliente OpenERP: Administracin > Administracin de mdulos > Mdulos > Mdulos no instalados. Instalar el nuevo mdulo "l0n_ES_pyme_install" y todas sus dependencias. Crear los topnimos del Estado espaol (crear las provincias mediante el asistente que se ejecuta automticamente al instalar el anterior mdulo). Crear la cuentas del Plan General de Contabilidad a partir de la plantilla (mediante el men Contabilidad y finanzas > Configuracin > Contabilidad financiera > Plantillas > Generar plan contable a partir de una plantilla de plan contable). Instalar el mdulo l10n_ES_pyme_custom y todas sus dependencias (este mdulo crea ejercicios para 2009 y 2010).

--------------------------------------------------------------------------Copiar tambin extra_addons y community_addons en .../bin/addons del servidor, as tendremos ms de 500 mdulos para probar. (ver ms abajo cmo descargar estos mdulos) Recomendacin: no instalarlo en produccin para un cliente ----------------- web de Ana Juaristi, openerpsite.com para bajar todos los mdulos en vez de bajar uno a uno, hay un programa .py que nos descarga toda la rama ------------------

Os descargais la rama como est descrito en un montn de sitios. Vereis que baja un script python muy sencillo bzr_set.py que lo que hace es descargar todas las ramas de la distribucin que se quiera (4.2, 5.0, trunk). Para seleccionar la distribucin, es necesario editarlo y poner DEFAULT= versin que se quiera descargar Pasos para descargar las ramas de una distribucin de tirn. En el ejemplo voy a utilizar 5.0, pero sera exactamente igual con trunk o 4.2 : Abrir el script bzr_set.py, asignar DEFAULT=5.0

Crear un directorio cualquiera, por ejemplo, openerp5.0 cd openerp5.0 copiar el script bzr_set.py en ese directorio ejecutarlo de la siguiente forma pyhton2.5 bzr-set.py Vereis que dentro de openerp5.0 os crea la siguiente estructura web > ficheros servidor web para acceso con el explorador server > servidor openerp client > cliente openerp addons > Modulos oficiales versin 5.0 addons-extra > Mdulos extra de commiters addons-community > Mdulos extra de community Con esto, ya teneis los fuentes de la 5.0 descargados en vuestro ordenador. Para actualizarlos basta con ejecutar $pyhton bzr-set.py tal y como habeis hecho antes. cuando haces un $python bzr-set.py se actualiza todo lo que tenemos bajados nota: se puede actualizar el bzr-set.py y aadir que nos baje openerp-spain, powermail, etc... lo que queramos tener
-------------------------------------------------------------------------------------

Al hacer $bzr branch lp:openerp si nos da un error en debian de la versin de bazaar aadir en los repositorios

deb http://ppa.launchpad.net/bzr/ubuntu intrepid main


luego modificar el script bzr-set.py para que nos baje la versin 5.0 lanzar el .py $python bzr-set.py --> tarda un poco tener paciencia puede que nos salga un warning, no pasa nada y esperar a que termine. Luego copiar en .../bin/addons de openerpserver (ver fichero de /etc/.conf para ver la ruta donde est openerp-server) los extra-addons, comunity, etc... Desde el cliente --> actualizar lista de mdulos

Para seguir con la instalacin de la localizacin espaola, despus de aadir los mdulos de localizacin Nos vamos a los mdulos sin instalar: l10n_es_pyme_install y hacemos doble click (desde el cliente openERP) - programar para instalacin - aplicar programaciones Hay que tener los extra-addons instalados para que no nos de error nota: CUIDADO HAY QUE TENER LA INSTALACIN MNIMA (ver los pasos anteriores para la instalacin de la base de datos) Si da time-out cuando le demos a instalar el mdulo --> volver a darle a aplicar actualizaciones programadas Asistente: - saltar el plan contable (crear cuentas y dems), siguiente - especificar mensaje --> siguiente

- crear - configurar la logstica de los pedidos de venta si el envo es directo: todo disponible, entonces lo enva facturar desde: las de servicio desde pedido de venta (pues no hay albaranes) solo de entrega - seleccionar versin de los .. provincias oficial de cada comunidad, castellano: si van a venir datos de cargas de otros sitios --> seleccionar castellano, y luego poner gipuzkoa-gipuzkoa si, si : para que te recupere el cdigo de la provincia crear, siguiente ahora en install: aparecer instalado - Nos vamos al men, refrescar y veremos nuevos mdulos contabilidad - configuracin - config. financiera - plantillas - generar plan contable a partir de una plantilla - doble click nmero de dgitos --> preguntar al contable el plan general es contable o pymes? dependiendo de lo que se facture al ao - plantilla plan contable --> preguntar al contable Nos vamos a contabilidad financiera - cuentas generales - listado de cuentas - nos vamos a la lista de mdulos y buscamos custom --> l10n_es_ pyme_custom programar para la instalacin - aplicar aplicaciones programadas Nos vamos al men y refrescar ahora en contabilidad - tendremos --> informes oficiales - instalar otro asistente que est en EMPRESAS - bancos - asistente importacin de bancos - importar te aade todos los cdigos de los bancos - contabilidad - configuracin - extractos bancarios C43 - asistente de importacin (bajar de la web del banco) carga el maestro de cdigos bancarios C43 para que al importar los extractos de los bancos no nos de error

Ejercicio de instalacin de la localizacin en una base de datos nueva


Seguir los pasos anteriores

Instalacin del cliente Koo para KDE


http://www.nan-tic.com/ http://albert-nan.blogspot.com/ http://www.nan-tic.com/koo-platform_es Libreras a instalar: python-qt4, python-qt4-dev

Instalacin del servidor web

Descargar el cliente web desde openerp.com/download Si ejecuto el cliente con el comando ./openerp-web.py y me da un error instalar las dependencias: aptget install python-setuptools python-dev...(ver en aula erp) ejecutar $sudo openerp-web-5.0.12/lib/populate.sh Arquitectura: BBDD - servidor openERP - servidorWEB (no hace falta apache, pero si ests en internet es recomendable instalar Apache) - Navegador (cliente web) Para ejecutar el cliente Linux GTK de openerp en MAC nos podemos conectar con ssh -X rootipserver y luego ejecutar el cliente web con $sudo openerp-client Desde el cliente web, tenemos una opcin de personalizar (abajo a la izquierda) en el que podemos cambiar el formulario web y nos cambia lo necesario en la BBDD (p.e. crear un neuvo campo,e tc...). PERO CUIDADO YA QUE SE CREA SOBRE LA VERSIN CORE DE OPENERP Y SI ACTUALIZO ME CARGO TODO LO REALIZADO. Es mejor utilizar el cliente GTK (escritorio) que el web. Si lo queremos utilizar desde casa utilizar VPNs.

Workflows desde el interfaz web


Workfow dentro del propio objeto Pero cuidado al modificar esto. Normalmente no hara falta tocarlo Se pueden crear con DIA diagramas UML y luego hay un proyecto que te pasa esto a cdigo Python Los procesos para validar para pasar de un estado a otro, se pueden modificar tambin desde el cliente web Cliente web de la 6.0: http://87.106.151.184:8081 --> bbdd:cursos admin/admin

Arquitectura
Con la conexin XML-RPC desde php se podra hacer. El cliente no tiene nada. Modelo vista controlador: separa los datos-modelo (tablas postgres) del controlador-lgica de negocio (ficheros de python) de la interfaz-vista (xml)

Desarrollo en openERP
Introduccin

Python: Lenguaje interpretado y Orientados a objetos OpenObject: Framework orientado a objetos, creado en python y con bbdd postgres

Qu contiene un mdulo de openerp?


Para que openERP interprete un mdulo tiene que cumplir (diapo-5) unas estructuras de carpetas y ficheros. carpetas: i18n - todos los ficheros de idiomas process - diagrama de flujo que tiene definido el mdulo en concreto. Cundo y como cambia de estado el objeto/mdulo report - los informes que tiene el mdulo archivos xml: indicarle que tiene un botn y cuando pulsa decirle qu va hacer security: todos los permisos de acceso a ese mdulo test/demo: datos de prueba del mdulo (cuando cargamos datos de prueba, no estn en la bbdd, si no en estos archivos) wizard: asistentes de openerp (Informes, wizards, accesos directos estn en la parte derecha del cliente openerp) Ficheros: Siempre hay un objeto .py (con el nombre del mdulo) y otros .py con los objetos con los que est relacionado este mdulo (partnerts y stock) objeto_data-xml --> la vista del objeto

cuando arranca el servidor hace la compilacin del cdigo y convierte un archivo .py en .pyz que es el que se ejecuta en openerp Antes de ponerte a programar, hay un mdulo que me permite validar casos de uso que yo creo a la hora de crear un mdulo ORPEscenari (tienes que saber programar en Ruby). La versin 6 tiene este mdulo yamOML En todas las pantallas se pueden importar y exportar datos. P.e exportas los partnerts a un csv lo retocas y luego lo importas. Marcar import compatible para que luego te aada las FKs pero no puedes sacar datos de tablas relacionadas.

Python
Para ejecutar el interprete de python pob-ap-mbp-01:~ csanchez$ python Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> print "hola mundo" hola mundo

Si nos da un error ascii, es pq hay que definir la codificacin del fichero en python Cada sentencia en una lnea Crear un nuevo proyecto con eclipse: file - new pydev project en preferencias de python ver dnde est el ejecutable para crear un nuevo fichero: botn derecho carpeta del proyecto - new file en src - new pydev module Tipos bsicos Nmeros, cadenas de caractres, booleanos texto: entre comillas dobles y simples Para operaciones complejas aritmticas: tener el mdulo math Listas = arrays pueden contener cualquier tipo de dato (objetos, enteros, etc....) las variables se pueden crear en cualquier lnea y no hay que decir de que tipo es Tuplas son listas inmutables Diccionarios Una coleccin de elementos. i Todos los datos inmutables

No hay que poner begin, end, ni llaves, simplemente espacios en blanco Condiciones, bucles if, while, for in, para salir de los bucles: break para continuar en lo bucles: continue Declarado de funciones Clases Archivo __init__.py, tiene una serie de imports que tiene que importar Comentarios: PEP index mirar en la web de python.org http://www.python.org/dev/peps/ Gua de estilo de cdigo python: http://www.python.org/dev/peps/pep-0008/ * Una tabla en postgres = una clase en openerp / python Referencias Python

en la pgina de python - library reference http://www.python.org/doc/ -> library reference Libro: python para todos Python: http://mundogeek.net/etiqueta/python one2many - es un wigchet p.e para lneas de un pedido many2one - son los campos que sale la carpeta + lupa many2many - campos que tiene aadir y quitar (un producto tiene ms de un impuesto) preparar para instalacin - actualizar - lee una clase nueva -- entonces en la bbdd crea una tabla nueva (el mapeador de objetos, el API es osv que es del que heredan todos los objetos creados en los mdulos de pyhton) Los atributos que defines en el objeto --> se generarn como campos/etributos en una nueva tabla en postgres con el nombre de la clase del objeto Si borro un mdulo, los campos/tablas me quedarn en postgres

Archivos de un mdulo de openERP


Todos los .pyc se recompilan al arrancar el servidor/mdulo desde los .py mdulo account: - account.py : todas la clases, la propia account/objeto, todas las funciones de la clase account, siempre est nombremdulo.py - __init.py__ : carpetas: report y wizards es lo que veo en la parte de la derecha los import - primero busca el nombre.py del import, si no lo encuentra buscar una carpeta con el noombre del import y dentro el __init__.py --> y en el init le digo cual es el .py que tiene que cargar - todas tienen que tener: traducciones, la carpeta i18n

Modificar un mdulo de openerp con eclipse


referencias http://angelmoya.es/openerp/instalar-y-configurar-eclipse-para-trabajar-con-openerp/ http://www.aulaerp.com/aula/mod/resource/view.php?id=154 new - projecto pydev - openerp - en location seleccionar la carpeta de .../openerp-server/addons (antes la tenemos que tener mapeada con smb://) desmarcar: crear SRC run - create manage and run configuratins - python run - new :

Crear una nueva configuracin en el apartado Python Run, eligiendo como Project el nuestro y como Main module openerp-server.py, le damos a Apply y luego a Run y debera funcionar.
- browser project: seleccionar openerp (hemos creado en el punto anteior) - main module: seleccionar ${workspace_loc:openERP1/bin/openerp-server.py}

- en argumentos - poner el usuario de acceso a la base de datos (mirar el fichero de configuracin dbuser y dbpassword, no hace falta ponerlo!!) Si nos da un error con la librera lxml, es pq en la mquina dnde est eclipse hay que instalar las libreras lxml http://lsimons.wordpress.com/2008/08/31/how-to-install-lxml-python-module-on-mac-os-105-leopard/

Para controlar un mdulo creado: Luego en eclipse, puedo seleccionar hacer un dedug (poniendo un breakpoint en el cdigo, haciendo click a la izquierda, el servidor se para y pasa todo el dedug a eclipse para ver las variables etc...,), para ejecutar en modo degun hacer click en el bichito

Ahora tenemos que tenemos eclipse con soporte para python y xml, vamos a instalar las plantillas para completar cdigo que tenemos en esta webhttp://code.google.com/p/openerpeclipse-template/. Tenemos dos plantillas una para completar cdigo de python y otra para completar xml. Descargate las plantillas como pone en la web por svn, directamente desde aqu: template python

template xml
Instalar la plantilla de python windows/eclipse - preferencias - pydev - code completion - templates (editor/templates en eclipse para mac) - import - y seleccionar el archivo descargado - ok luego al escribir un archivo .py nuevo si escribimos al inicio __terp__ (enter) Instalar la plantilla de xml eclipse - preferencias - web y xml - templates

Instalar acceso a cdigo con conexiones remotas


Referencias

http://jpablobr.com/past/install-eclipse-rse-target-management-project-plug-in http://www.userlinux.net/1294_eclipse_rse_plugin.html
Probando Eclipse he notado que hay varias funciones esenciales -al menos para mi- que necesitan ser activadas mediante la instalacin de un plugin. Una de estas caractersticas bsicas es la edicin remota. Con el plugin RSE es muy sencillo. Para instalarlo simplemente vamos a Help Software Updates Find and Install Search for new features to install y en la ventana de dilogo que aparece seleccionamos New Remote Site. Le llamamos RSE y en url rellenamos lo siguiente: http://download.eclipse.org/dsdp/tm/updates/2.0 Luego en windows - open perpestive - other - seleccionar RSE

arriba local - boton derecho - new conexion - ssh - rellenar datos - seleccionar sftp Fecha: 21-7-2010

Realizar nuestro primer mdulo en openERP


---- de la web de Angel Moya, introduccin ---La arquitectura MVC (Modelo Vista Controlador) sirve para separar los datos, de la lgica de negocio y de la interfaz de usuario, OpenERP sigue esta arquitectura, el modelo son las tablas de postgres, la vista son los XML que definen la interfaz de usuario del mdulo y el Controlador son los Objetos creados en python. En esta entrada vamos a ver la estructura de los mdulos y como crear un primer mdulo muy sencillo. Lo primero que necesitamos saber es donde se almacenan los mdulos y la estructura que tienen. Si estas ejecutando el servidor de OpenERP como he indicado en el post anterior los mdulos se almacenan en el directorio: /home/usuario/openerp/openerp-server/bin/addons Podemos crear en este directorio la carpeta para nuestro mdulo, dentro de la carpeta del modulo se guardan los ficheros del cdigo, tanto los fuentes escritos en python, las vistas en xml, los informes en este ejemplo vamos a empezar a hacer un mdulo muy simple y luego iremos aadiendo cosas. Los archivos mnimos para este mdulo de ejemplo son los siguientes:

coche_view.xml Como los mdulos de OpenERP son paquetes python tiene que existir el fichero __init__.py que puede definir atributos y mtodos del paquete, en este caso solo contendr los import de los ficheros y directorios que contengan cdigo. En nuestro ejemplo es simplemente: import coche El fichero __terp__.py contiene la descripcin del modulo: { "name" : "coche", "author" : "Angel", "version" : "0.1", "depends" : ["base"], #esta es la lista de los mdulos de los que depende "init_xml" : [], "update_xml" : ["coche_view.xml"], #aqu indicamos la vista "category" : "Enterprise Specific Modules/Coches", "active": False, "installable": True } En coche.py tenemos tanto el controlador como el modelo, tenemos el controlador porque se trata de una clase python en la que definimos el comportamiento, y tenemos el mdelo porque esta clase hereda de la clase osv (Object Service) que implementa una capa de ORM (Object-Relational mapping), para los que venimos de java lo que sera hibernate. As las clases que creamos heredando de osv y siguiendo esta estructura crean las tablas en la base de datos. from osv import osv, fields class coche(osv.osv): _name = 'coche' _columns = { 'modelo': fields.char('Modelo', size=64),

__init__.py __terp__.py coche.py

'matricula': fields.char('Matricula', size=64), } coche() Como vemos importamos osv para que coche herede de el, e importamos tambin fields para definir el tipo de las columnas, en este ejemplo solo hemos usado cadenas de caracteres, ya veremos mas tipos de columnas. El ltimo fichero de nuestro ejemplo es coche_view.xml, en el se define la vista, en este ejemplo se ha creado la entrada para el men y la definicin de la ventana listado y formulario. <openerp> <data> <record model="ir.actions.act_window" id="action_coche_form"> <field name="res_model">coche</field> <field name="domain">[]</field> </record> <menuitem name="Coches" id="menu_coche_coche_form"/> <menuitem name="Coches" id="menu_coche_form" parent="coche.menu_coche_coche_form" action="action_coche_form"/> <record model="ir.ui.view" id="view_coche_form"> <field name="name">coche</field> <field name="model">coche</field> <field name="type">form</field> <field name="priority" eval="5"/> <field name="arch" type="xml"> <form string="Coche"> <field name="modelo" select="1"/> <field name="matricula" select="1" /> </form> </field> </record> <record model="ir.ui.view" id="view_coche_tree"> <field name="name">coche</field> <field name="model">coche</field> <field name="type">tree</field> <field name="priority" eval="5"/> <field name="arch" type="xml"> <tree string="Coche"> <field name="modelo" select="1"/> <field name="matricula" select="1" /> </tree> </field> </record> </data> </openerp> Una vez tenemos este cdigo en el directorio /openerp-server/bin/addons/coche podemos reiniciar openerpserver con la opcin -u coche para recargar el mdulo. Este ejemplo es un mdulo muy sencillo que simplemente permite gestionar en OpenERP una lista de matriculas y modelos de coches, en siguientes post ir ampliando este mdulo y mostrando otras caractersticas del desarrollo. Para profundizar mas en el desarrollo ahora que tenemos una base puedes mirar el developer book de la wiki y el memento que resume todo lo necesario para desarrollar en OpenERP.

----------------------------- fin --------------------------

Creacin de un mdulo para la gestin de instalaciones de openERP


nueva carpeta - servidores - crear los 3 archivos __init__.py y __terp__.py __terp__.py copiar la estructura de cualquier __terp__.py de cualquier mdulo (training) y cambiar los datos: name: el nombre de nuestro mdulo depends: base (el mdulo ncleo de openerp, siempre dependen de l cualquier mdulo y si necesita algn otro mdulo se aadira aqu) en demo_xml (por si tienes que dejar datos de carga de prueba) y init_xml y update_xml dejarlos sin nada 'active' : False, 'installable' : True, --> si se puede instalar __init__.py import servidores //nombre del mdulo servidores.py copiar la licencia de openERP y ... ------from osv import osv, fields #declarar la clase y que herede de osv class servidores_servidores(osv.osv): _name = 'servidores.servidores' _description = 'Mi descripcin' _columns = { 'name': fields.char('Nombre', size=64), 'ip': fields.char('Ip', size=20), 'notas': fields.text('Notas'), 'fecha_alta': fields.date('Fecha alta'), #para relacionarlo con una empresa que ya est en la bbdd, mirar en modulos personalizacion - estructura de la base de datos - campos - objeto 'cliente': fields.many2one('res.partner', 'Cliente'), 'nom_usuario': fields.char('Nom.Usuario', size=64), 'password': fields.char('Password', size=64), } servidores_servidores() -------Nos vamos al cliente - actualizar servidor - programar actualizacin - instalar, pero no veremos nada

Crear la vista
en eclipse crear un nuevo fichero servidores_view.xml para poder ver algo abrir un view de otro mdulo y copiar-pegar (lo que hay despus de <data> <record model="ir.ui.view" id="view_support_delivery_form"> aqu le damos el nombre que ser servidores_vistaprincipal si luego voy a heredar esta vista, se utilizar el id

<field name="name">view.dummy.support.delivery.form</field> nombre que quiera darle a este objeto que se ver en openerp en la lista de objetos <field name="model">dummy.support.delivery</field> a qu modelo hace referencia (el class que hemos creado en el fichero.py el name de la clase): _name = 'servidores.servidores' <field name="type">form</field> <field name="arch" type="xml"> si hay una de inherit_id quiere decir que es heredado a partir de aqu comienza la definicin de la vista (los campos) collage expand = expandir a un ancho de 4 lo que sea (para que ocupe el espacio correcto). Esta dividido en bloques de 4 la pantalla El standar te pone etiqueta-campo, etiqueta-campo Si se nos olvida un campo: - cambiar la clase y aadir el campo - parar servidor/arrancar - volver a instalar el mdulo Si cambiamos un tipo de dato (integer - double): - cambiar en la base de datos Si borramos un mdulo: - se mantiene creado en la bbdd la tabla Dentro del _terp_.py en update_xml servidores_view.xml, ahora slo queda actualizar el mdulo desde el cliente openERP - programar actualizacin (dentro del mdulo) - aplicar actualizaciones Si aado al <field name="notas" colspan="4"/> un colspan me mostrar el campo ocupando toda la pantalla (las 4 columnas en lo que lo divide), luego hay que actualizar el mdulo para que se cumpla. Ver ms tipos de campo, le aadiremos ms tipos al objeto servidores - aadir objeto cambios, aadir las relaciones - definir en las vista en el .xml el nuevo campo cambios Para colorear los XML: - help - instalar software - seleccionar: Helios - desplegar: web-xml - seleccionar: eclipse xml editor and tools - reiniciar eclipse Si nos da un error el cliente al ejecutar servidores de que nos falta el campo cambios Si no nos crea en la bbdd la nueva tabla servidores.cambios Matar el servidor kill -9 buscado por ps aux-grep openerp Arrancar el servidor

/usr/src/open../bin/openserver.py --update=all --config=/etc/openerp-server.cfg Por qu al crear el mdulo servidores lo ha cogido bien, pero luego al hacer el cambio de aadir lo de servidores.cambios aunque lo actualizabamos el mdulo desde el cliente, no se creaba en la bbdd la tabla servidores.cambios? many2many crea una tabla con 2 campos y relaciona unos con otros Ahora crearemos una pestaa en SERVIDORES archivo: servidores3 Fecha: 2010-7-22

Mtodos
http://doc.openerp.com/developer/2_5_Objects_Fields_Methods/methods.html Todos los objetos tienen de base una serie de mtodos por defecto (heredados de ovn) Desde esos mtodos de los objetos heredados los podemos ajustar. Primero tenemos que llamar al mtodo de la superclase (ovn). cursor - la instancia de la bbdd que se est ejecutando en ese momento context - idioma del cliente, grupo al que pertenece el usuario, etc... recuperar todos los campos de la bbdd de unos IDs que van entre el 4 y 27: for obj in self.browse(cursor de la bbdd, uid del usuario que est haciendo el browse, 4-27) res(obj.id) = len(obj.cambios_ids) --> recuperando un valor/campo de este objeto return res self = soy yo mismo, el objeto en el que estoy. Una nube en el que hay n objetos. P.e. un pull de pedidos. self.search = buscar algo dentro de mi propia clase, como si hicieramos un select a una bbdd

self.search y self.browse
Id_pedidos = self.search ( cursor, uid, condiciones del where select) --> un select slo de IDs --> recupera slo IDs (internos de la bbdd, se ven en las tablas de la bbdd, la clave primaria de la tabla) self.browse(cr, uid, Id_pedidos) --> select * where id=XXXXX --> recupera todos los campos

Campos de las tablas de la bbdd


ID = contador interno de la tabla Servidores.servidores
Columna id Tipo de dato integer No Nulo NOT NULL Predeterminado nextval('servidores_se Restricciones

rvidores_id_seq'::regcl ass) create_uid create_da te write_date write_uid nom_usua rio name fecha_alta ip password cliente notas integer timestamp without time zone timestamp without time zone integer character varying(64) character varying(64) date character varying(20) character varying(64) integer text

Facturas_object = self.pool.get (account.invoice) --> aqu tengo todas las facturas (un pool de facturas cuando hago un search --> Facturas_Ids = .. (pq recupero ids) cuando hago un browse --> Factura_Id A poder ser llamarle Invoice en vez de Factura

write(..) = update en la bbdd


se hace un diccionario values=(nombre=valerio, edad=11, otro=res(0)), estos datos los puedo recoger de diferentes sitios cuando tengo los values se los paso al write write(cursor, uid,id del objeto que quiero escribir, values)

create(..)
create(cursor, uid, values)

copy(..)
copiar un objeto entero de uno a otro, pero nos crea otro id diferente para ese nuevo objeto Nota: no hace falta saber python, lo importante es saber el ORM (Object-Relational mapping) y la hoja 3 de mtodos que nos han dado. http://angelmoya.es/openerp/como-empezar-a-desarrollar-modulos-en-openerp-22/ http://www.openobject.com/memento/ http://doc.openerp.com/developer/index.html

Herencia en Python-openERP
Esto es bueno, ya que si hacemos un mdulo luego podra que al actualizarse openerp y sale una versin nueva, puede que perdamos todo, pero con la herencia lo conservamos. Si tenemos que cambiar un mdulo de openERP, lo que tenemos que hacer es una extensin/herencia de ese mdulo y ese fork es el que tocamos. As cuando haya una actualizacin no le afectar a la extensin/herencia. 0.- Nos creamos un nuevo mdulo/carpeta en ../bin/addons, con la estructura de ficheros que tiene que tener __init__, etc... 1.- En __terp__ poner en depens, de dnde lo heredo Vamos a realizar una extensin del mdulo Servidores llamada Servidores_Extended Copiar el __terp__ de servidores y cambiar datos, las vistas .xml sern nuevas servidores_extended.xml y en depens aadir adems de base, servidores Nos creamos una nueva clase, aunque se llame igual (ya que si le cambiamos el nombre, nos creara otra nueva tabla en la bbdd) class servidores_servidores(osv.osv): _name= servidores.servidores --> poner el mismo nombre _inherit = servidores.servidores --> aqu heredamos, nos saca las columnas que tiene los mtodos, etc... _columns = ( # ---> aqu le aadimos los nuevos campos que queremos ponerle a este mdulo heredado # --> las columnas que hereda del padre tambin estn aqu aunque no se ponen #lista tipo combo, una tupla de tuplas tipo: fileds.selection(((linux,Linux),(tupla2),(tupla3)), Tipo) ) _defaults = ( #como le tenemos que pasar una funcin se hace con lambda tipo: lambda *a: otro, ) servidores_servidores() 2.- Luego creamos los formularios y vistas en XML

Implementar seguridad a los mdulos

Si lo hacemos sobre el mdulo original (servidores.servidores), esto se aplicar tambin sobre servidores_extended Los permisos se dejan en un .csv 3 conceptos de seguridad: grupos, roles y usuarios - grupos no son grupos de usuarios, si no bloques de permisos que puedes asignar a los usuarios. Son item que me dan permisos a a ciertos objetos. P.e. creamos un grupo servidores = directivas de grupo (un grupo de permisos). Meto en el grupo servidores todos aquellos usuarios que quiero que tengan acceso a servidores. En MENUS: defino los menus que vern los usuairos que estn metidos en ese grupo. Si no pongo nada en los menus no restringo nada, si pongo varios mens, los usuarios que pertenezcan a ese grupo slo vern esas vistas. Permisos de acceso: si quiero que el grupo Human Resouces Manager tenga acceso a ciertas partes lo definir aqu - roles Workflow: un pedido va de borrador a confirmado, si alguien lo valida. Aquellos objetos que pueden tener estados (en propuesto), y que pueden ir a otros estados dependiendo de dnde se haga click (crear factura cancelar pedido). Si el workflow tiene un muequito es que tiene que ser manual el cambio de estado por una persona. Los roles son aquellos permisos que se les definen a qu personas tienen derecho de p.e aprobar compra y otro rol de resolver compra (p.e). Si a un usuario le doy el rol de facturas --> podr confirmar facturas Por pantalla slo de puede crear un rol nuevo, pero luego para asignarlo a una persona hay que hacerlo desde el cdigo. - usuarios Un truco --> mdulo de grabacin --> record module Todo lo que hemos visto, se puede hacer desde openerp (el objeto, mdulo, __init__, __terp__, etc....), Todo lo que haces en una instalacin de openerp de pruebas te lo va grabando y luego se puede exportar e importar en otro servidor de produccin (como si fuera un mdulo).

Lgica de los workflows


nanpartnerdisk - mdulo que modifica el workflow Desde el cliente web se pueden ver los workflow (p.e de un pedido de ventas) - en el propio pedido personalizar Un workflow --> puede afectar a otros workflows (subworflows) Los rectngulos son sub-worflows Las elipses son estados

Los crculos son funciones Para definir los workfows en los xml --> ver pgina 5/7 de los doc. tcnica el memento

Todo este dibujo lo vas definiendo en los XML: - caja - estados - transiciones Estas definiciones de los XML se pueden modificar desde openERP --> no recomendable modificar un flujo desde openERP (puede que se fastidie a futuro) Administracin - objetos de bajo nivel -elementos del flujo - instancias - stcok picking base Normalmente no hace falta cambiar un workflow, ya que estn muy bien definidos ya. NO hay herencia en flujos, luego al acutalizar openERP habra que hacer las modificaciones de nuevo

Wizards
Acciones que t realizas sobre un determinado objeto (enviar un sms, ver la estructura de la compaa, ..), pueden ser genricas de un objeto. Son pantallas de asistentes, contienen una sucesin de pasos. Se puede utilizar para pedir datos.

Copias de seguridad
Bajarnos el mdulo http://www.openerp.com/download/modules/trunk/auto_backup.zip Te lo instala en administracin - configuracin - configura backup le dices dnde quieres que te deje la copia de seguridad de la base de datos 2010-7-23

Reportes, Informes
Instalacin y configuracin de Jasper reports: http://www.aulaerp.com/aula/course/view.php?id=23 SI NO VAMOS A UTLIZAR LOS MODULOS QUE NO SEAN DE JASPER, NO INSTALARLOS, PUEDE QUE NOS DE ERROR AL INSTALAR JASPER El mdulo report_designer Arquitectura de report_designer qu hace? Me crea un interfaz en openerp, exporta un .sxw a openoffice 1.0, editar el informe en openoffice (negrita, tablas, etc...) y luego subo ese .sxw modificado a openerp sxw2rmp.py: cuando yo subo el informe me hace la traduccin de openoffice al lenguaje rml, si yo modificara ese rml directamente podra modificar el informe tambin Nos bajamos ireport: http://sourceforge.net/projects/ireport/files/

Mdulo base_report_designer
Instalamos el mdulo: base_report_designer (desde los mdulos)
Administracin - personalizacin - diseador de informes seleccionamos el informe - buscamos pedido guardar como pedidooriginal.swx en el escritorio - le hago una copia y modifico esa copia (con openoffice) - luego subir ese fichero que he modificado estos informes estn en - sales / reports / sales_---.rml y sales_...sxw (si modifico el rml se ve el cambio, si modifico el sxw no se ve el cambio, tengo que subirlo con el asistente de report_designer) administracin - usuarios -arbol de la compaia - compaias (meterlo en favoritos): aqu tenemos las cabeceras, pies de pgina etc.. de informes, logos <!-- You Logo - Change X,Y,Width and Height --> <image x="1.3cm" y="27.6cm" height="40.0" >[[company.logo]]</image> el .sxw --> modifica la parte central el .SXW
[[repeatIn(objects,'o')]] // estas dos lneas se ponen siempre [[ setLang(o.partner_id.lang) ]]

[[ o.state=='draft' and removeParentNode('para') ]] Purchase Order Confirmation N [[ o.name ]] Si el estado del objeto es borrador ponme presupuesto y si no es borrador pedido
Los 0. = datos del pedido
[[repeatIn(o.order_line,'line')]]

Lo modificamos y luego los subimos - administrador - diseador de informes - subir el informe modificado selecciono de disco el que he modificado (tener la copia por si lo he hecho mal)

Administracin - objetos de bajo nivel - acciones - informes xml (aqu estn todos los informes del sistema definidos) Busco mi pedido de ventas veo la ruta del .rml --> el que me ejecuta cuando le doy al botn impresin

Tipo: pdf (puedes seleccionar p.e odt, pero parece que no funciona), si queremos que cuando le de a imprimir me salga que pueda seleccionar --> tendra que hacer un wizard (para elegir los parmetros de impresin) recargar desde adjunto: te imprime desde el que ya est en la cache de antes (adjunto viejo), si le cambian el importe y saca el viejo tendremos que desmarcar esta marca abajo en la hoja veo el id del informe(report) que luego lo utilizar en el objeto Action - report (ver siguiente) Action - wizard (vimos ayer) ahora vemos Action - report en administracin - documentos de bajo nivel - conexiones acciones cliente (los wizard tambin estn aqu definidos) - busco el presupuesto en tipo de accin - y aqu pondr el id del informe del punto anterior conexiones acciones cliente = el botn que nos sale en la parte derecha y la accin ser el rml que hemos definido antes

Ahora veremos el mdulo de pxgo_openoffice_reports para informes


Esta es otra forma de hacer informes (creo que para cambios pequeos es mucho mejor la opcin anteiror) Si nos da un error al instalar el mdulo: parar el servidor, $sudo easy_install relatorio, $sudo easy_install pycha, volver a ejecutar el servidor En administracin - personalizacin - openoffice.reports buscar el nombre del objeto: servidores abrir openoffice - crear una tabla (6 columnas, 2 filas) y se van rellenado los campos <FOR EACH=O.IN_ OBJECTS> Nombre o.name Cliente o.cliente.name Dir. IP o.ip Usuario o.usuario Password o.password Fecha Alta

Nos situamos debajo de Nombre: Insertar campos - otros - funciones - comodn - formato texto: comodn: o.name El resto de campos igual pero con otro nombre en la fecha de alta = formatLang(o.fecha_alta, date=true) --> para que me saque en formato spanish Lo guardamos con formato odt - informes_servidores volvemos a pxgo_reports en openerp : nombre: imprimir informe servidores (boton) model: darle a buscar - categoras del servidor nombre interno: servidores.servidores.print tipo: openoffice - pdf output luego seleccionamos una nueva entrada - seleccionamos el .odt que hemos creado antes

Otra forma de hacer informes - Kaspars


http://kndati.lv/index.php/en/openerp/open-erp-addons/reporting-engine/76-openofficeorg-reportingengine-installation http://kndati.lv/index.php?lang=en --> motor de informes para openerp http://www.openerpsite.com/el-nuevo-motor-de-informes-de-kaspars-sraps-para-openerp/1389.html

Mdulo base_reports_creator
Al instalar veremos que tiene dependencia de board - panel de control Es un constructor de querys SQL (contra BBDD) tableros - configuracin - informes personalizados seleccionar varios objetos (varias tablas) seleccionar los campos (e ir grabando) filtros seguridad - poner para qu grupo es este informe y luego en interrogacin SQL tendr la Query realizada Luego me voy a la empresa (a la zona que he hecho el informe), en la parte de arriba me aparecen los filtros que he seleccionado y luego nos aparecer el botn de imprimir pantalla

iReport for JasperReport


http://www.aulaerp.com/aula/course/view.php?id=23 Descargar de sourceforge, versin actual 3.7.4 Instalar el mdulo: openobject-cliente-kde Antes desde el servidor: bzr branch lp:openobject-client-kde

Entramos a la carpeta que se ha creado, el mdulo est dentro de la subcarpeta servermodules, copiamos la carpeta jasper_reports y la pegamos en el directorio addons del servidor. Instalamos el mdulo jasper_reports como cualquier otro mdulo de OpenERP.
* Si nos da un error al instalar jasper_reports, crear una base de datos nueva limpia (puede que alguno de los mdulos anteriores instalados haga conflicto). En la bbdd de produccin mirar el log. Se pude hacer comentar la lnea de __terp__.py del mdulo jasper_report la lnea de seguridad (security, ir.model.csv e instalarlo otra vez.

Podemos probar a ver si todo funciona correctamente entrando en empresas e imprimiendo el informe de prueba que se crea cuando se instala el mdulo clicando en Jasper partners, si todo ha ido bien significa que todo est bien instalado. Si ocurriese algn error lo veramos en el log del servidor. Nota: El informe de prueba slo est disponible si se ha instalado el mdulo japser reports con datos de ejemplo.

Administracin - personalizacin - Jaspert reports wizard: model: empresa, y el otro campo es profundidad de los objetos hacia abajo Nos genera un xml que es el que le pasaremos a ireport Ireport: 1.- crear una nueva conexin nueva (xml file) a partir del fichero xml creado por aopenerp - expresion: /data/record (expresin xpath) - en create definir las fechas y los nmeros 2.- seleccionar un informe, plantilla - en blanco - botn dcho sobre nombre - edit query - query language - xpath - a la derecha record - botn derecho - set record node - desplegamos record - nos sale los campos y los arrantramos a la parte de abajo ok - los tenemos en la parte izquierda en FIELDS - los arrastramos al informe - count(para contar el nmero de direcciones, o empresas ), lo normal es seleccionar el FIELD VALUE - luego en la parte derecha en propiedades podemos editar el tipo letra, etc... Las zonas del informe se dividen en:

title Aparece slo al inicio del informe. El ttulo se escribe en est seccin. Ejemplo: Mi primera factura pageHeader Aparece en la parte superior de cada pgina. Puede contener informacin como la fecha y hora, nombre de la organizacin, etc. columnHeader Sirve para listar los nombres de los campos que se van a presentar (desplegar). Por ejemplo: Nombre del Empleado, Hora de Entrada, Hora de Salida, Horas trabajadas, Fecha, etc. detail En esta seccin se despliegan los valores correspondientes a las entradas de campos definidas en la seccin anterior. Por ejemplo Juan Perez, 09:00, 18:00, 9,2005-04-27 columnFooter Puede presentar informacin sumarizada para cada uno de los campos. Por ejemplo Total de Horas Trabajadas: 180 pageFooter Aparece en la parte inferior de cada pgina. Este parte puede presentar, el contador de pginas como Pgina 1/7 summary Esta seccin se usa para proporcionar informacin sumarizada de los campos presentes en la seccin detail por ejemplo para el caso de las horas trabajadas de cada empleado se puede definir un objeto grfico tipo pie para tener una mejor comparacin y comprensin visual de los datos.
P.e una empresa puede tener ms de una direccin, hace una lnea por cada direccin: 1 a muchos (iteracin, es como un for al campo address): dejarlo en la zona de detalles y luego bton dcho sobre el nombre del informe, propiedades, y en el campo propierties, ... , aadir una nueva, ponemos el nombre de la relacin = OPENERP_RELATIONS (todo en maysculas), en el valor de la propiedad entre corchetes (address)

Para agregar nuestro informe diseado con iReport: Administracin / Jasper Reports / Jasper Reports Crearemos un nuevo registro y seleccio namos el modelo que hace uso este informe. En la pantalla siguiente vemos nuestro informe para las facturas:

Web services - XML-RPC Importacin / Exportacin de datos


1-opcin ETL (extraen datos de mltiples fuentes, hacen un transformacin y lo cargan) akretion terminatooor - video de youtube de varias fuentes (mysql, elkartuz, etc...) ---> terminatooor --> openerp hay que programar en ruby para hacer una insercin en la bbdd 2-opcin o con CSV e importar

Copias de seguridad
1-opcin Modlo auto_backup 2-opcin script utlizando el comando pg_dump

http://sourceforge.net/projects/autopgsqlbackup/files/
http://www.cyberciti.biz/tips/howto-backup-postgresql-databases.html

Referencias
Bienvenido a los foros www.openerpsite.com/foro-openerp
Los foros de openerp en launchpad (en la zona de expertos) https://launchpad.net/openerp-spain/ http://openerp.com/forum/ http://doc.openerp.com/ http://angelmoya.es/category/openerp/ http://www.openerp.com/download/modules/ --> todos los mdulos de openERP http://groups.google.es/group/openerp-spain Para la descarga de mdulos en vez de utilizar bazaar: http://openerp.com/download/modules

También podría gustarte