130287173 Apuntes Curso OpenERP PDF

download 130287173 Apuntes Curso OpenERP PDF

of 35

Transcript of 130287173 Apuntes Curso OpenERP PDF

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

    Curso de openERPIntroduccinIniciacin al entorno OpenERP - OpenObjet

    BazaarLaunchpad

    Instalacin y mantenimiento del servidorInstalacin sobre Ubuntu 10.04 Server LTS

    Instalacin de PostgresInstalacin de dependencias python y xmlArchivo de configuracinFichero de arranque del servidorGestin de la BBDD

    Instalacin del cliente de openERPLaunchpad

    BazaarInstalar entorno de desarrollo Eclipse+Pydev

    Para MACInstalar la base de datos de openERP

    Instalar la localizacin espaolaEjercicio de instalacin de la localizacin en una base de datos nuevaInstalacin del cliente Koo para KDE

    Instalacin del servidor webWorkflows desde el interfaz web

    ArquitecturaDesarrollo en openERP

    IntroduccinQu contiene un mdulo de openerp?

    PythonArchivos de un mdulo de openERPModificar un mdulo de openerp con eclipseInstalar acceso a cdigo con conexiones remotas

    Realizar nuestro primer mdulo en openERPCreacin de un mdulo para la gestin de instalaciones de openERP

    Crear la vistaMtodos

    self.search y self.browse

  • Campos de las tablas de la bbddwrite(..) = update en la bbddcreate(..)copy(..)

    Herencia en Python-openERPImplementar seguridad a los mdulos

    Lgica de los workflowsWizardsCopias de seguridadReportes, Informes

    Mdulo base_report_designerAhora veremos el mdulo de pxgo_openoffice_reports para informesOtra forma de hacer informes - KasparsMdulo base_reports_creatoriReport for JasperReport

    Web services - XML-RPCImportacin / Exportacin de datosCopias 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)

    Bazaarhttp://angelmoya.es/openerp/launchpad-y-bazaar-para-colaborar-con-openerp/114 mdulos oficialesextra_addons + community unos 400

    LaunchpadY 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 servidorSistema 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 UbuntuLa 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.0openERP madre sacar un script oficial

    Instalacin sobre Ubuntu 10.04 Server LTS$ sudo apt-get update$ sudo apt-get upgrade

    Instalacin de PostgresInstalar postgreSQL servidor, cliente y la interfaz web de control phppgadmin$ sudo apt-get install postgresql postgresql-client phppgadminSe 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$ exitQue 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-lxmlpara 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 $ sudo tar -zxvf 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 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 tenemosSi luego lanzo el servidor $./openerp-server.py (sin ms parmetros) coger el archivo de configuracin que si es que est en /home//.openerp_serverrc

    Archivo de configuracinArrancamos el servidor con el usuario de postgres openerp y su password:$./openerp-server.py -r openerp -w -sctrl+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 disponiblesroot_path --> dnde estn los ficheros .py de openerpdb_password --> password del usuario openerp que hemos creado antes para la bbdd de openerpdb_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//.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 installTe lo instala todo el cdigo de openERP en la ruta de python: /usr/local/python2.6/dist-packages/openerp-serverluego puedes borrar lo que tienes descomprimido en /usr/srcDesde 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=

    Fichero de arranque del servidorCrear el usuario de sistema que va a arrancar con en el init.d$sudo useradd openerpel 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: 2 3 4 5 # Default-Stop: 0 1 6

  • # 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 ejecutableDAEMON=/usr/local/bin/openerp-server #Nombre del script que est en /etc/init.dNAME=openerp-server DESC=openerp-server #Usuario con el que ejecutar el servidorUSER=openerp#Ruta del fichero de configuracin (Default: /etc/openerp-server.cfg). CONFIGFILE="/etc/openerp-server.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.shlo copiamos en /etc/init.d/le damos permisos de ejecucin para todos los usuarios$sudo chmod +x /etc/init.d/openerp-server.shy 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//.open-serverrc a /etc/openerp-server.confCrear 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/addonsroot_path = /usr/local/lib/python2.6/dist-packages/openerp-server

    NOTA: mirar las diapositivas de TING! para los permisos del script de arranquePrimero ejecutat el servidor con 98 y luego arrancar el servidor web con 99update-rc.d openerp-server defaults 98update-rc.d openerp-web defautls 99

    Recomendaciones:No instalar y desinstalar mdulos con ligereza, ya que puede dar un casqueTener 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 openERPDescargarnos el cliente de la pgina de openerp.com/download con wget

    LaunchpadTodo el repositorio de openERP est en www.launchpad.net/openobjectOverview: resumen del proyectotodo el cdigo est en: CODE --> proyectos independientes que est en el proyecto openobjectHay ramas: oficiales, no oficiales

    Quality: 25 miembros de OPENERP S.A., controla los addons 113 mdulos de la oficialCommiters: 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

    BazaarCommit = una actualizacinSi 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 variableTener 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 MAC1.- Descargar Eclipse Clasic de http://www.eclipse.org/downloads/2.- Instalar Eclipse3.- Configurar Eclipse para desarrollar en python:

    PydevStart 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 -> PyDevbefore creating a new Pydev project

    Press Apple key and , (Preferences) and browse to the Python Interpreters submenuChoose New in the upper right and browse to /usr/bin/pythonEclipse will then take care of the rest for you ie. updating the $PYTHONPATHNOTE: I use Eclipse 3.3.2 on Mac OS 10.5.2.

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

    Instalar la base de datos de openERPTenemos 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-infoUsuarios: 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 espaolaDescargar 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-spainnos 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 tambinAhora 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 2010Versiones:Debian SqueezePostgreSQL 8.4.2-2+b1OpenERP Server 5.0.7-1OpenERP Client 5.0.7-1Bazaar 2.1.0-11. 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 restartDonde X.X es el nmero de versin de nuestro PostgreSQL3. 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 restartEl 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-spain7. Cambiamos el propietario de los archivos# chown -R openerp.root openerp-spain8. 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/addons9. (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/addons10. Descargamos las versiones ms recientes de los mdulos trunk-extra-addons# bzr branch lp:~openerp-commiter/openobject-addons/trunk-extra-addons11. 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/addons13. Por ltimo descargamos las versiones ms recientes de los mdulos extra-5.0# bzr branch lp:openobject-addons/extra-5.014. Cambiamos el propietario de los archivos# chown -R openerp.root extra-5.015. Y copiamos el siguiente mdulo al directorio addons de openerp-server# cp -r extra-5.0/account_financial_report /usr/lib/openerp-server/addonsAhora 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 sencillobzr_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 descargarPasos 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 bajadosnota: 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:openerpsi nos da un error en debian de la versin de bazaar aadir en los repositoriosdeb http://ppa.launchpad.net/bzr/ubuntu intrepid mainluego modificar el script bzr-set.py para que nos baje la versin 5.0lanzar el .py$python bzr-set.py --> tarda un poco tener pacienciapuede 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 localizacinNos vamos a los mdulos sin instalar: l10n_es_pyme_install y hacemos doble click (desde el cliente openERP) - programar para instalacin - aplicar programacionesHay que tener los extra-addons instalados para que no nos de errornota: 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 ventasi el envo es directo: todo disponible, entonces lo envafacturar desde: las de servicio desde pedido de venta (pues no hay albaranes)solo de entrega- seleccionar versin de los .. provinciasoficial de cada comunidad, castellano: si van a venir datos de cargas de otros sitios --> seleccionar castellano, y luego poner gipuzkoa-gipuzkoasi, si : para que te recupere el cdigo de la provinciacrear, siguienteahora en install: aparecer instalado

    - Nos vamos al men, refrescar y veremos nuevos mduloscontabilidad - configuracin - config. financiera - plantillas - generar plan contable a partir de una plantilla - doble clicknmero de dgitos --> preguntar al contableel plan general es contable o pymes? dependiendo de lo que se facture al ao - plantilla plan contable --> preguntar al contableNos vamos a contabilidad financiera - cuentas generales - listado de cuentas

    - nos vamos a la lista de mdulos y buscamos custom --> l10n_es_ pyme_customprogramar para la instalacin - aplicar aplicaciones programadasNos vamos al men y refrescarahora en contabilidad - tendremos --> informes oficiales

    - instalar otro asistente que est en EMPRESAS - bancos - asistente importacin de bancos - importarte 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 nuevaSeguir los pasos anteriores

    Instalacin del cliente Koo para KDEhttp://www.nan-tic.com/http://albert-nan.blogspot.com/http://www.nan-tic.com/koo-platform_esLibreras a instalar: python-qt4, python-qt4-dev

    Instalacin del servidor web

  • Descargar el cliente web desde openerp.com/downloadSi ejecuto el cliente con el comando ./openerp-web.py y me da un error instalar las dependencias: apt-get 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 root-ipserver 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 webWorkfow dentro del propio objetoPero 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

    ArquitecturaCon 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 objetosOpenObject: 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 idiomasprocess - diagrama de flujo que tiene definido el mdulo en concreto. Cundo y como cambia de estado el objeto/mduloreport - los informes que tiene el mduloarchivos xml: indicarle que tiene un botn y cuando pulsa decirle qu va hacersecurity: todos los permisos de acceso a ese mdulotest/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.

    PythonPara ejecutar el interprete de pythonpob-ap-mbp-01:~ csanchez$ pythonPython 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] on darwinType "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 lneaCrear un nuevo proyecto con eclipse:file - new pydev projecten preferencias de python ver dnde est el ejecutablepara crear un nuevo fichero: botn derecho carpeta del proyecto - new fileen src - new pydev module

    Tipos bsicosNmeros, cadenas de caractres, booleanostexto: entre comillas dobles y simples

    Para operaciones complejas aritmticas: tener el mdulo math

    Listas = arrayspueden 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

    Tuplasson listas inmutables

    DiccionariosUna coleccin de elementos. i Todos los datos inmutables

    No hay que poner begin, end, ni llaves, simplemente espacios en blanco

    Condiciones, buclesif, while, for in, para salir de los bucles: breakpara continuar en lo bucles: continue

    Declarado de funcionesClases

    Archivo __init__.py, tiene una serie de imports que tiene que importar

    Comentarios: PEP index mirar en la web de python.orghttp://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 referencehttp://www.python.org/doc/ -> library referenceLibro: python para todosPython: http://mundogeek.net/etiqueta/python

    one2many - es un wigchet p.e para lneas de un pedidomany2one - son los campos que sale la carpeta + lupamany2many - 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 objetoSi borro un mdulo, los campos/tablas me quedarn en postgres

    Archivos de un mdulo de openERPTodos los .pyc se recompilan al arrancar el servidor/mdulo desde los .pymdulo 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 eclipsereferenciashttp://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 lxmlhttp://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/openerp-eclipse-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 pythonwindows/eclipse - preferencias - pydev - code completion - templates (editor/templates en eclipse para mac) - import - y seleccionar el archivo descargado - okluego al escribir un archivo .py nuevo si escribimos al inicio __terp__ (enter)

    Instalar la plantilla de xmleclipse - preferencias - web y xml - templates

    Instalar acceso a cdigo con conexiones remotasReferenciashttp://jpablobr.com/past/install-eclipse-rse-target-management-project-plug-inhttp://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/addonsPodemos 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:

    __init__.py __terp__.py coche.py 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 cocheEl 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, fieldsclass coche(osv.osv):_name = 'coche'_columns = {'modelo': fields.char('Modelo', size=64),

  • '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.

    coche [] coche coche form coche coche tree

    Una vez tenemos este cdigo en el directorio /openerp-server/bin/addons/coche podemos reiniciar openerp-server 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 openERPnueva carpeta - servidores - crear los 3 archivos __init__.py y __terp__.py

    __terp__.pycopiar la estructura de cualquier __terp__.py de cualquier mdulo (training) y cambiar los datos:name: el nombre de nuestro mdulodepends: 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__.pyimport servidores //nombre del mdulo

    servidores.pycopiar la licencia de openERP y ...-------from osv import osv, fields

    #declarar la clase y que herede de osvclass 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 vistaen eclipse crear un nuevo fichero servidores_view.xml para poder ver algoabrir un view de otro mdulo y copiar-pegar (lo que hay despus de

    aqu le damos el nombre que ser servidores_vistaprincipalsi luego voy a heredar esta vista, se utilizar el id

  • view.dummy.support.delivery.formnombre que quiera darle a este objeto que se ver en openerp en la lista de objetos dummy.support.deliverya qu modelo hace referencia (el class que hemos creado en el fichero.py el name de la clase): _name = 'servidores.servidores' form si hay una de inherit_id quiere decir que es heredadoa 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 pantallaEl 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_.pyen update_xml

    servidores_view.xml,

    ahora slo queda actualizar el mdulo desde el cliente openERP - programar actualizacin (dentro del mdulo) - aplicar actualizacionesSi aado al 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 cambiosSi no nos crea en la bbdd la nueva tabla servidores.cambiosMatar el servidor kill -9 buscado por ps aux-grep openerpArrancar el servidor

  • /usr/src/open../bin/openserver.py --update=all --config=/etc/openerp-server.cfgPor 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?

    many2manycrea una tabla con 2 campos y relaciona unos con otros

    Ahora crearemos una pestaa en SERVIDORESarchivo: servidores3

    Fecha: 2010-7-22

    Mtodoshttp://doc.openerp.com/developer/2_5_Objects_Fields_Methods/methods.htmlTodos 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 momentocontext - 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 objetoreturn 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.browseId_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 bbddID = contador interno de la tabla

    Servidores.servidores

    Columna Tipo de dato No Nulo Predeterminado Restricciones

    id integer NOT NULL nextval('servidores_se

  • rvidores_id_seq'::regclass)

    create_uid integer

    create_date

    timestamp without time zone

    write_date timestamp without time zone

    write_uid integer

    nom_usuario

    character varying(64)

    name character varying(64)

    fecha_alta date

    ip character varying(20)

    password character varying(64)

    cliente integer

    notas text

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

    write(..) = update en la bbddse hace un diccionario values=(nombre=valerio, edad=11, otro=res(0)), estos datos los puedo recoger de diferentes sitioscuando tengo los values se los paso al writewrite(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-openERPEsto 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 heredoVamos a realizar una extensin del mdulo Servidores llamada Servidores_ExtendedCopiar 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 tuplastipo: fileds.selection(((linux,Linux),(tupla2),(tupla3)), Tipo)

    )_defaults = (

    #como le tenemos que pasar una funcin se hace con lambdatipo: 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_extendedLos permisos se dejan en un .csv

    3 conceptos de seguridad: grupos, roles y usuarios

    - gruposno 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

    - rolesWorkflow: 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 facturasPor 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 moduleTodo 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 workflowsnanpartnerdisk - 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 - personalizarUn workflow --> puede afectar a otros workflows (subworflows)Los rectngulos son sub-worflowsLas elipses son estados

  • Los crculos son funcionesPara 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- transicionesEstas 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

    WizardsAcciones 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 seguridadBajarnos el mdulo http://www.openerp.com/download/modules/trunk/auto_backup.zipTe lo instala en administracin - configuracin - configura backuple dices dnde quieres que te deje la copia de seguridad de la base de datos

    2010-7-23

  • Reportes, InformesInstalacin y configuracin de Jasper reports: http://www.aulaerp.com/aula/course/view.php?id=23SI NO VAMOS A UTLIZAR LOS MODULOS QUE NO SEAN DE JASPER, NO INSTALARLOS, PUEDE QUE NOS DE ERROR AL INSTALAR JASPER

    El mdulo report_designerArquitectura 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 openerpsxw2rmp.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_designerInstalamos el mdulo: base_report_designer (desde los mdulos)Administracin - personalizacin - diseador de informesseleccionamos el informe - buscamos pedidoguardar como pedidooriginal.swx en el escritorio - le hago una copia y modifico esa copia (con openoffice) - luego subir ese fichero que he modificadoestos 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 [[company.logo]]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 ventasveo 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 marcaabajo 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 anteriorconexiones 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 informesEsta 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 servidorEn administracin - personalizacin - openoffice.reportsbuscar el nombre del objeto: servidoresabrir openoffice - crear una tabla (6 columnas, 2 filas) y se van rellenado los campos

    Nombre Cliente Dir. IP Usuario Password Fecha Alta

    o.name o.cliente.name o.ip o.usuario o.password

    Nos situamos debajo de Nombre:Insertar campos - otros - funciones - comodn - formato texto:comodn: o.nameEl 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 spanishLo guardamos con formato odt - informes_servidores

    volvemos a pxgo_reports en openerp :nombre: imprimir informe servidores (boton)model: darle a buscar - categoras del servidornombre interno: servidores.servidores.printtipo: openoffice - pdf outputluego seleccionamos una nueva entrada - seleccionamos el .odt que hemos creado antes

  • Otra forma de hacer informes - Kasparshttp://kndati.lv/index.php/en/openerp/open-erp-addons/reporting-engine/76-openofficeorg-reporting-engine-installationhttp://kndati.lv/index.php?lang=en --> motor de informes para openerphttp://www.openerpsite.com/el-nuevo-motor-de-informes-de-kaspars-sraps-para-openerp/1389.html

    Mdulo base_reports_creatorAl instalar veremos que tiene dependencia de board - panel de controlEs un constructor de querys SQL (contra BBDD)tableros - configuracin - informes personalizados seleccionar varios objetos (varias tablas)seleccionar los campos (e ir grabando)filtrosseguridad - poner para qu grupo es este informey 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 JasperReporthttp://www.aulaerp.com/aula/course/view.php?id=23

    Descargar de sourceforge, versin actual 3.7.4

    Instalar el mdulo: openobject-cliente-kdeAntes desde el servidor: bzr branch lp:openobject-client-kdeEntramos a la carpeta que se ha creado, el mdulo est dentro de la subcarpeta server-modules, 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 abajoNos 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 ReportsCrearemos un nuevo registro y seleccionamos el modelo que hace uso este informe. En la pantalla siguiente vemos nuestro informe para las facturas:

    Web services - XML-RPC

    Importacin / Exportacin de datos1-opcinETL (extraen datos de mltiples fuentes, hacen un transformacin y lo cargan)akretion terminatooor - video de youtubede varias fuentes (mysql, elkartuz, etc...) ---> terminatooor --> openerphay que programar en ruby para hacer una insercin en la bbdd

    2-opcino con CSV e importar

    Copias de seguridad1-opcinModlo auto_backup

    2-opcinscript utlizando el comando pg_dumphttp://sourceforge.net/projects/autopgsqlbackup/files/ http://www.cyberciti.biz/tips/howto-backup-postgresql-databases.html

  • Referencias

    Bienvenido a los foros www.openerpsite.com/foro-openerpLos 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 openERPhttp://groups.google.es/group/openerp-spain

    Para la descarga de mdulos en vez de utilizar bazaar:http://openerp.com/download/modules