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 Lie ana carlos!lie ana"tin#!es $ %u#o &antos hu#o!santos"tin#!es (e'presa: tin#(, de Leon)

Curso de open)*P +ntroducci,n +niciaci,n al entorno -pen)*P " -pen- jet .a/aar Launchpad +nstalaci,n $ 'anteni'iento del ser0idor +nstalaci,n so re 1 untu 10!02 &er0er L3& +nstalaci,n de Post#res +nstalaci,n de dependencias p$thon $ 4'l Archi0o de con5i#uraci,n Fichero de arran6ue del ser0idor 7esti,n de la ..88 +nstalaci,n del cliente de open)*P Launchpad .a/aar +nstalar entorno de desarrollo )clipse9P$de0 Para :AC +nstalar la ase de datos de open)*P +nstalar la locali/aci,n espa;ola )jercicio de instalaci,n de la locali/aci,n en una ase de datos nue0a +nstalaci,n del cliente <oo para <8) +nstalaci,n del ser0idor =e >or?5lo=s desde el inter5a/ =e Ar6uitectura 8esarrollo en open)*P +ntroducci,n @AuB contiene un ',dulo de openerpC P$thon Archi0os de un ',dulo de open)*P :odi5icar un ',dulo de openerp con eclipse +nstalar acceso a c,di#o con cone4iones re'otas *eali/ar nuestro pri'er ',dulo en open)*P Creaci,n de un ',dulo para la #esti,n de instalaciones de open)*P Crear la 0ista :Btodos sel5!search $ sel5! ro=se

Ca'pos de las ta las de la dd =rite(!!) D update en la dd create(!!) cop$(!!) %erencia en P$thon"open)*P +'ple'entar se#uridad a los ',dulos L,#ica de los =or?5lo=s >i/ards Copias de se#uridad *eportes, +n5or'es :,dulo aseEreportEdesi#ner Ahora 0ere'os el ',dulo de p4#oEopeno55iceEreports para in5or'es -tra 5or'a de hacer in5or'es " <aspars :,dulo aseEreportsEcreator i*eport 5or Jasper*eport >e ser0ices " F:L"*PC +'portaci,n G )4portaci,n de datos Copias de se#uridad *e5erencias

Fecha: 2010"H"19

Introduccin
" :odular " Iacio en el a;o 2002 " Jersi,n actual: K!0!12 (@octu re 2010, 0L!0C), el cliente =e de la L!0 estM 'u$ 'ejorado con respecto a la 0!K! Al 'i#rar de la K!0 a la L!0 ha rM 6ue tocar al#o del c,di#o, o ien al#Nn script de 'i#raci,n 6ue prepare la co'unidad! Los ',dulos 6ue adaptan la 5iscalidad a un pMis concreto D ',dulos de locali/aci,n, en la 0ersi,n L!0 6uieren certi5icar (incluirlos en el core) los 6ue $a ha$ espa;oles (para la K!0!12 ha$ una ra'a aparte en open- ject), la Nnica pe#a es 6ue lue#o open)*P tiene 6ue apro ar cual6uier su#erencia $ tardarM 'Ms la ra'a en actuali/arla $ pierdes un poco la independencia!

Iniciacin al entorno OpenERP - OpenObjet


" -pen- jet D Fra'e=or? (*A8) para hacer cual6uier aplicaci,n! -rientado a o jetos, P$thon, post#res&AL! Lo ueno de este 5ra'e=or? es 6ue se puede aplicar a cual6uier cosa 6ue ha#a'os! " 1na de las aplicaciones de open- jet es open)*P " La propiedad de herencia 6ue tiene al ser orientado a o jetos te per'ite a;adir ',dulos nue0os o 'odi5icarlos 'u$ 5acil'ente! " .+ (.ussines inteli#ence), toda0Oa no estM 'aduro, no estM operati0o " )l 5ra'e=or? 5uB consecuencia del pro$ecto! )l desarrollo se hace so re open- ject (open)*P es una aplicaci,n de open- ject)

Bazaar
http:GGan#el'o$a!esGopenerpGlaunchpad"$" a/aar"para"cola orar"con"openerpG 112 ',dulos o5iciales e4traEaddons 9 co''unit$ unos 200

Launchpad
P esto @6uB esC! )s un sitio >e donde los cola oradores de -pen)*P de todo el 'undo, co'parten $ pu lican sus pro$ectos! Cual6uier ',dulo en desarrollo estM en el launchpad, las traducciones, los errores, las su#erencias de 'ejora o de desarrollo de nue0os ',dulos estMn en el launchpad!

Instalacin y mantenimiento del servidor


&iste'a operati0o reco'endado: 1 untu &er0er 10!2 L3&

3res o cuatro 'aneras de instalaci,n: " desde las 5uentes (donde open)*P cuel#an su c,di#o) " desde los pa6uetes co'pilados, repositorios de 1 untu! Pueden estar desactuali/ados, $a 6ue puede 6ue 1 untu cuando lo co'pil, 5uera una 0ersi,n anterior! " &cripts auto'ati/ados (+;a?i Fernande/)! ===!openerpappliance!co'! All"in"one para 1 untu! 3e aja la ra'a " Appliance! ===!openerpappliance!co'! 3iene $a todo instalado 1 untu9open)*P! Jersiones K!0, K!0 spanish (tiene la locali/aci,n espa;ola)! &,lo ter'inal (no des?top)! 3a' iBn la 0ersi,n L!0 (con $ sin des?top) $ la K!0 des?top! Para actuali/ar entre 0ersiones (secundarias) K!4, nin#Nn pro le'a, con el atri uto ""updateall, pero reco'enda le pro ar antes en entornos no p )ntra'os en aulaerp!co' ""Q +nstalaci,n so re Linu4 1 untu La 0ersi,n 1 untu 10!02 L3& tiene la 0ersi,n L!0 de p$thon Para te'as de instalarlo so re ser0idores 0irtuali/ados: " Pro4'o4 " )&Fi de J>are (es un linu4 'Oni'o #ratuito para instalarlo ajo =indo=s) " :o?a5i0e :,dulo de 'i#raci,n de datos: http:GG?ndati!l0 tiene un script para 'i#rar de la 2!2 a la K!0 open)*P 'adre sacarM un script o5icial

Instalacin sobre buntu !"#"$ %erver L&%


R sudo apt"#et update R sudo apt"#et up#rade

Instalacin de Post'res
+nstalar post#re&AL ser0idor, cliente $ la inter5a/ =e de control phpp#ad'in R sudo apt"#et install post#res6l post#res6l"client phpp#ad'in &e ha instalado la 0ersi,n de post#res6l S!2!2 Creaci,n de un usuario TopenerpU para la dd post#res para acceder s,lo a la ..88 de open)*P, para ello entra'os con el usuario post#res 6ue es ad'inistrador total en la ..88 $ lo crea'os $ sudo su postgres $ createuser --pwprompt --createdb --no-createrole --encrypted --no-superuser openerp $ exit Aue pueda crear dds en post#res, no puede crear roles $ no es superusuario, la contrase;a se #uarda encriptada

Instalacin de dependencias python y (ml

$ 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 -pcional: Para per'itir cone4iones desde otro e6uipo 6ue no sea localhost, 'odi5icar el 5ichero (0er 'anual carlos"de ian) $ sudo gedit /etc/postgresql/8 !/main/pg"hba con#

$pcional% &i debe soportarse el env'o de emails mediante &&( deber'amos instalar este otro paquete%
$ sudo apt-get install python-openssl

)ara el m*dulo )ower+ail instalaremos )ython +a,o -&haroon .homas/ creador del m*dulo powemail0
$ sudo apt-get install python-ma,o 8escar#ar el ser0idor de openerp en GusrGsrc lue#o al hacer la instalaci,n, $a colocarM los archi0os en la ruta correcta R cd GusrGsrc R sudo =#et Vcopiar $ pe#ar el enlace de openerp!co'Gdo=nload a6uiQ R sudo tar "/405 V5ichero!tar!#/Q Ios 'ete'os en la carpeta 6ue aca a'os de desco'pri'ir, $ ejecuta'os el ser0idor para pro arlo, sin instalarlo, pero tene'os 6ue le0antarlo con el usuario de post#res Tpost#resU 6ue es ad'in de todas las dds de post#res! &e arranca openerp $ se 6ueda esperando cone4iones! R sudo su post#res R GusrGsrcG inGopenerp"ser0er!p$ en la carpeta G inGaddons ""Q addons o5iciales G inGe4tra"addons ""Q no o5iciales G inGco''$nit$ ""Q los de la co'unidad )jecutar el ser0idor sin ca' iar a usuario post#res $ ejecutarlo con el usuario 6ue he'os creado antes: R !Gopenerp"ser0er!p$ "r openerp "= Vpass de openerpQ &i le pone'os al 5inal un T"sU en la ruta rai/ 6ue estM ejecutando el ser0idor (csanche/) nos #enera una plantilla del 5ichero de con5i# del ser0idor !openerpEser0errc, si 0uel0o a ejecutarlo con "s nos 'achacarM el anterior 6ue tene'os &i lue#o lan/o el ser0idor R!Gopenerp"ser0er!p$ (sin 'Ms parM'etros) co#erM el archi0o de con5i#uraci,n 6ue si es 6ue estM en Gho'eGVusuarioQG!openerpEser0errc

)rchivo de con*i'uracin
Arranca'os el ser0idor con el usuario de post#res TopenerpU $ su pass=ord: R!Gopenerp"ser0er!p$ "r openerp "= VpassopenerpQ "s ctrl9/ para detenerlo

I-3A: lo ideal es hacer todo esto con un usuario del siste'a 6ue sea TopenerpU, no con el Tcsanche/U 6ue esta'os haciendo todo esto! )l 5ichero de con5i#uraci,n lo copiare'os 'Ms adelante a Getc ParM'etros i'portantes de 5ichero de con5i#uraci,n: dpEport D False ""Q con esto 0erB todas las dds 6ue ten#o de openerp disponi les rootEpath ""Q d,nde estMn los 5icheros !p$ de openerp d Epass=ord ""Q pass=ord del usuario TopenerpU 6ue he'os creado antes para la dd de openerp d Euser ""Q usuario creado antes con el usuario post#res para acceso a la dd openerp TopenerpU (el 6ue pone'os despuBs de "r en el co'ando anterior) " ad'inEpass=ord ""Q ca' iar la contrase;a Tad'inU 6ue tiene por de5ecto a la hora de crear la dd desde el cliente open)*P la pri'era 0e/ Cliente <8) de openerp, ?oo ""Q p$ro : para 'odi5icar datos de 'Ms de un re#istro a la 0e/, sin tener 6ue ca' iar uno a uno (co'o cuando actuali/a'os la in5or'aci,n de 'Ms de una canci,n en +tunes)! Poner el 5ichero de con5i#uraci,n con los per'isos L00 (solo lectura $ escritura para el usuario) R ch'od L00 Gho'eGVuserQG!openerpEser0errc Ahora 0a'os a instalar openerp (para 6ue lo copie en su sitio correcto, con los per'isos correctos! )l script de inicio 6ue 0ere'os ahora tirarM de estos 5icheros) R cd GusrGsrcGopenerp"ser0er"K!0!12G Rsudo p$thon setup!p$ install 3e lo instala todo el c,di#o de open)*P en la ruta de p$thon: GusrGlocalGp$thon2!LGdist" pac?a#esGopenerp"ser0er lue#o puedes orrar lo 6ue tienes desco'pri'ido en GusrGsrc 8esde esa ruta se puede lan/ar el ser0idor a 'ano con (pero lo arrancare'o en el init!d, en el proceso de arran6ue del -&): openerp"ser0er ""con5i#DVruta del 5ichero 6ue lo dejare'os en GetcGQ

+ichero de arran,ue del servidor


Crear el usuario de siste'a 6ue 0a a arrancar con en el init!d Rsudo useradd openerp el script de arran6ue lo aja'os (de aula openerp ane4o 2, script alternati0o openerp"start!sh, sacado del script del appliance de +;a?i) """""""""""" W(G inGsh WWW .)7+I +I+3 +IFW Pro0ides: openerp"ser0er W *e6uired"&tart: Rs$slo# W *e6uired"&top: Rs$slo# W &hould"&tart: Rnet=or? W &hould"&top: Rnet=or? W 8e5ault"&tart: 232K W 8e5ault"&top: 01L

W &hort"8escription: )nterprise *esource :ana#e'ent so5t=are W 8escription: -pen)*P is a co'plete )*P and C*: so5t=are! WWW )I8 +I+3 +IFPA3%DGs in:G in:GusrGs in:GusrG in:GusrGlocalG in WAl hacer el setup!p$ install copia en este directorio este ejecuta le 8A):-IDGusrGlocalG inGopenerp"ser0er WIo' re del script 6ue estM en GetcGinit!d IA:)Dopenerp"ser0er 8)&CDopenerp"ser0er W1suario con el 6ue ejecutarM el ser0idor 1&)*Dopenerp W*uta del 5ichero de con5i#uraci,n (8e5ault: GetcGopenerp"ser0er!c5#)! C-IF+7F+L)DXGetcGopenerp" ser0er!c5#X

test "4 RY8A):-IZ [[ e4it 0 set "e case XRY1ZX in start) echo "n X&tartin# RY8)&CZ: X start"stop"dae'on ""start ""6uiet ""pid5ile G0arGrunGRYIA:)Z!pid \ ""chuid RY1&)*Z "" ac?#round ""'a?e"pid5ile \ ""e4ec RY8A):-IZ "" ""con5i#DRC-IF+7F+L) echo XRYIA:)Z!X ]] stop) echo "n X&toppin# RY8)&CZ: X start"stop"dae'on ""stop ""6uiet ""pid5ile G0arGrunGRYIA:)Z!pid \ ""o?nodo echo XRYIA:)Z!X ]] restart[5orce"reload) echo "n X*estartin# RY8)&CZ: X start"stop"dae'on ""stop ""6uiet ""pid5ile G0arGrunGRYIA:)Z!pid \ ""o?nodo sleep 1

start"stop"dae'on ""start ""6uiet ""pid5ile G0arGrunGRYIA:)Z!pid \ ""chuid RY1&)*Z "" ac?#round ""'a?e"pid5ile \ ""e4ec RY8A):-IZ "" ""con5i#DGetcGopenerp"ser0er!con5 echo XRYIA:)Z!X ]] ^) IDGetcGinit!dGRYIA:)Z echo X1sa#e: RYIA:)Z Ystart[stop[restart[5orce"reloadZX Q_2 e4it 1 ]] esac e4it 0

"""""""""""" lo ca' ia'os de no' re a openerp"ser0er!sh lo copia'os en GetcGinit!dG le da'os per'isos de ejecuci,n para todos los usuarios Rsudo ch'od 94 GetcGinit!dGopenerp"ser0er!sh $ ahora para 6ue se arran6ue con el -& Rsudo update"rc!d openerp"ser0er de5aults Copiar la plantilla del 5ichero de con5i#uraci,n anterior 6ue estM en Gho'eGVusuarioQG!open"ser0errc a GetcGopenerp"ser0er!con5 Crear una JA*+A.L) en el script 6ue sea 8+*C-IF+7 6ue apunte a GetcGopenerp"ser0er!con5 Cuidado 6ue el usuario TopenerpU del siste'a ten#a per'isos de ejecuci,n de GusrG inGopenerp $ lectura de GetcGopenerp"ser0er!con5 *etocar el 5ichero de GetcGopenerp"ser0er!con5: addonsEpath D GusrGlocalGli Gpp$thon2!LGdist"pac?a#esGopenerp"ser0erGaddons rootEpath D GusrGlocalGli Gp$thon2!LGdist"pac?a#esGopenerp"ser0er I-3A: 'irar las diapositi0as de 3+I7( para los per'isos del script de arran6ue Pri'ero ejecutat el ser0idor con 9S $ lue#o arrancar el ser0idor =e con 99 update"rc!d openerp"ser0er de5aults 9S update"rc!d openerp"=e de5autls 99

*eco'endaciones: Io instalar $ desinstalar ',dulos con li#ere/a, $a 6ue puede dar un cas6ue 3ener un ser0idor de preproducci,n para ir pro ando las cosas 6ue hace'os! 3ener un directorio a pelo (otra instalaci,n) para te'a de prue as 6ue se ejecute a 'ano $ no tenerlo en GetcGinit!d

Io tocar nada en las ta las directa'ente, o orrar unos re#istro de la ..88

-estin de la BB..
Rsudo apt"#et install phpp#ad'in

Instalacin del cliente de openERP


8escar#arnos el cliente de la pM#ina de openerp!co'Gdo=nload con =#et

Launchpad
3odo el repositorio de open)*P estM en ===!launchpad!netGopeno ject -0er0ie=: resu'en del pro$ecto todo el c,di#o estM en: C-8) ""Q pro$ectos independientes 6ue estM en el pro$ecto openo ject %a$ ra'as: o5iciales, no o5iciales Aualit$: 2K 'ie' ros de -P)I)*P &!A!, controla los addons 113 ',dulos de la o5icial Co''iters: controlan los e4tra"addons (S0 'ie' ros de e'presas 6ue son partner $ otras 6ue no lo son)! &u es unos cuantos ',dulos $ puedes solicitar 6ue te ca' ien de estado! Co''unit$G e#inners: cual6uier persona 6ue desarrolle un ',dulo en su casa $ lo su a! A6uO s,lo ha$ una ra'a! Jersiones: K!0 $ la trun? (la 6ue 0iene a 5uturo, en este caso la L!0) co''itersEtrun? D ',dulos e4tra $ 6ue son para la 0ersi,n L!0

Bazaar
Co''it D una actuali/aci,n &i nos ajas'os +doia $ $o una 0ersi,n, la 'odi5ica +doia $ la su e, lue#o la 'odi5ico $o $ la su o, 'achacarOa lo de +doia! )so se controla con launchpad (plata5or'a repositorio) $ se utili/a .a/aar(un 8JC&) para controlar todas estas 'odi5icaciones sean correctas $ no se 'acha6ue el c,di#o! &i detecta'os un .17 ha$ 6ue reportarlo, su ir un .17 $ un patch! Funciona 'u$ ien, si es un u# 'u$ i'portante te lo pueden solucionar hasta en 2 horas! Para instalar a/aar: R'?dir launchpadGopenerp Rsudo apt"#et install /r R /r ranch lp:openo ject"client"?de (puedes ajar lo 6ue 6uieras, pero si 6uieres su ir no te 0a a dejar, hasta 6ue no te re#istres) Rnano /rEset!p$ ('odi5icar la 0aria le J)*&+-I para decidir 6uB es lo 6ue 'e 6uiero ajar) ""Q lue#o ejecuta'os ese script $ nos ajarM todas las ra'as 6ue seleccione'os en la 0aria le 3ener un /rEset!p$ de cada 0ersi,n con la 6ue 6uiero pro ar $ un directorio p!e uno para la trun? $ otra para la K!0

Lo ideal es a la hora de interactuar con Launchpad " crearnos un usuario " para ajar c,di#o /r ranch lp:!!!ra'a ('irarlo en la =e el no' re) " /r pull 8esarrollar una serie de ',dulos $ lue#o pedir al Co''iter 6ue te los su a de co''unit$ $ pasar a ser Co''iter!

Instalar entorno de desarrollo Eclipse/Pydev


Para 0)C
1!" 8escar#ar )clipse Clasic de http:GG===!eclipse!or#Gdo=nloadsG 2!" +nstalar )clipse 3!" Con5i#urar )clipse para desarrollar en p$thon: P$de0 &tart )clipse and #o to %elp "Q +nstall Ie= &o5t=are! Add http:GGp$de0!or#Gupdates, and install the latest 0ersion (1!K!1 as o5 =ritin#)! 3hen setup $our p$thon interpreter, Auto Con5i# should #o ri#ht and choose 2!L! Io= disa le code anal$sis: -pen )clipse Pre5erences "Q P$de0 "Q )ditor "Q Code Anal$sis and unchec? 8o code anal$sisC Pou =ill e as?ed to speci5$ the =here P$thon interpreter is located: Please con5i#ure a P$thon or J$thon interpreter in >indo= "Q Pre5erences "Q P$8e0 e5ore creatin# a ne= P$de0 project Press Apple ?e$ and , (Pre5erences) and ro=se to the P$thon +nterpreters su 'enu Choose Ie= in the upper ri#ht and ro=se to GusrG inGp$thon )clipse =ill then ta?e care o5 the rest 5or $ou ` ie! updatin# the RPP3%-IPA3% I-3): + use )clipse 3!3!2 on :ac -& 10!K!2!

2!" *e5erencias http:GG===!thecredence!co'Glan#GesGcon5i#ure"eclipse"5or"p$thonG http:GG===!adictosaltra ajo!co'GtutorialesGtutoriales!phpCpa#inaDeclipse%elios http:GG===!leccionespracticas!co'Gin5or'atica"utilidades"internetGutili/ando"eclipse"para"pro#ra'ar" p$thon"en"entorno"#itG

Instalar la base de datos de openERP


3ene'os 6ue a rir por pri'era 0e/ el cliente open)*P $ desde Bl creare'os la ase de datos:

" arch0io " ases de datos " nue0a ase de datos ""Q pass=dD ad'in por de5ecto (estM en el 5ichero GetcGopenerp"ser0er!c5#) " 6uitar 6ue car#e los datos de de'o, cuando lo ha#a'os en producci,n " el otro usuario es el ad'inistrador de la aplicaci,n openerp 6ue puede hacer todo en openerp app Per5iles D una a#lutinaci,n de un 'ont,n de ',dulos, para una instalaci,n en producci,n tene'os 6ue poner un per5Ol :+I+:- (lue#o $a ire'os a;adiendo)! )l 'Ms co'pleto es :anu5acturin# Poner los datos de la e'presa $ los in5or'es del cliente (piB de pM#ina $ ca ecera) +nter5a/ si'pli5icada: seleccionar e4tendida $a 6ue 0e'os una nue0a pesta;a lla'ada Te4tra"in5oU 1suarios: nada, saltar paso A partir de a6uO ha$ 6ue instalar la L-CAL+aAC+bI espa;ola $ lue#o los ',dulos 6ue 6uiere el cliente, para ello: " ad'inistraci,n " ',dulos " pero a6uO no 0eo los ',dulos para espa;a " si 6uisiera instalar otro ',dulo " seleccionarlo " aceptar actuali/aciones reco'endadas $ si necesita 'Ms ',dulosGdependencias las instalarOa! &i detecta 6ue ha$ un ',dulo 6ue no lo encuentra o dependencia, ha rOa 6ue ajarlo de launchpad &er0er D 112 ',dulos, e4traaddons D unos 200 ',dulos (si los 'eto en la carpeta addons, $a estarMn instalados, pero ha$ 6ue decirle lue#o desde openerp cliente "Q actuali/ar lista de ',dulos, lo 6ue hace es 0eri5icar si en la carpeta addons ha$ nue0os ',dulos)! Lue#o ir a ',dulos " ase (dependen todos de este ',dulo) ""Q actuali/ar, entonces te car#a todas las actuali/aciones 6ue ha$ de los ',dulos! Io hace 5alta co'pilar (en co'o php)! &i toca la estructura de la ase de datos ""Q updateEall &i ha$ 6ue ca' iar al#o ""Q hacer un parche, su irlo a launchpad, etc!!!, I- 3-CA* )L Cb8+7F1)I3) 8+*)C3A:)I3) $a 6ue estarOa'os haciendo un 5or? $ lue#o al actuali/ar al#Nn ',dulo de los 6ue he'os ca' iado, nos 'achacarOa los nuestros! %a rOa 6ue hacer una )F3)I&+bI de lo 6ue 0iene de -pen)*P! Fecha: 2010"H"20

Instalar la localizacin espa1ola


8escar#ar de https:GGlaunchpad!netGopeno ject ""Q code ""Q la ra'a de openerp"spain ""Q https:GGcode!launchpad!netGcopenerp"spain"tea'Gopenerp"spainGK!0 ""Q View the branch content --> a un directorio, 3 carpetas , e4traddons ""Q lo 6ue ha$ dentro copiarlo en Gser0erG inGaddons, no copiar la carpeta si no sus ',dulos! +r al cliente de open)*P $ actuali/ar la lista de ',dulos! l10nE : los ',dulos de locali/aci,n espa;ola co'ien/an asO '?dir GusrGsrcGlaunchpadGopenerp"spainG descar#ar a6uO ajMndolo con el co'ando de a//ar (estarM en la =e el lp:FFFFF): R bzr branch lp:openerp-spain nos 'ete'os en e4traEaddonsG de lo 6ue nos he'os descar#ado $

copiar en !!!!Gdist"pa?a#esGapenerp"ser0erGaddons (o el directorio d,nde lo tene'os instalado, 0er el 5ichero de con5 $ el 5ichero de arran6ue para 0er d,nde lo tene'os instalado) lo 6ue ha$ dentro de e4traEaddons (se puede hacer enlaces si' ,licos en 0e/ de copiar ta' iBn) $ dentro de l10nEes $ l10nEesEe4tras ta' iBn Ahora entra'os en el cliente de open)*P $ le da'os a ""Q actuali/ar lista de ',dulos (nos encontrarM 2 nue0os) """""""""""""""""""" notas =e """"""""""""""""""""""""""""""""""""""""

1*mo instalar $pen23) &erver y $pen23) 1lient en 4ebian con localizaci*n espa5ola -en la misma m6quina0
Artilanes - Posted on 30 Marzo 2010 Versiones: Debian Squeeze PostgreSQL 8.4. - !b" #pen$%P Ser&er '.(.)-" #pen$%P *lient '.(.)-" +azaar .".(-" ". ,nstala-os los paquetes openerp-ser&er . openerp-client . to/as sus /epen/encias. . 0os asegura-os que el ser&i/or PostgreSQL est1 corrien/o: 2 3etc3init./3postgresql-4.4 restart Don/e 4.4 es el n5-ero /e &ersi6n /e nuestro PostgreSQL 7. *rea-os el usuario /e la base /e /atos: 2 su - postgres -c 8createuser --create/b --no-createrole --pwpro-pt openerp8 De9an/o la contrase:a en blanco ;a-bas &eces< . respon/ien/o a=ir-ati&a-ente a 8>Ser1 el nue&o rol un superusuario?8 4. %einicia-os openerp-ser&er 2 3etc3init./3openerp-ser&er restart $l siguiente paso es generar el Plan @eneral /e *ontabili/a/ /e ((8 . /e i-puestos /es/e la plantilla correspon/iente a $spa:a. $n el -o-ento /e re/actar este artAculo no =iguraban co-o o=iciales los -6/ulos #pen$%P para $spa:aB asA que ser1 necesario /escargarlos /es/e launchpa/.net ;https:33launchpa/.net3openerp-spain< con la aplicaci6n +azaar. '. Si no tene-os +azaarB /ebe-os instalar el paquete bzr. C. $ntra-os en el /irectorio 3etc3opt para no an/ar /e9an/o archi&os /esper/iga/os 2 c/ 3etc3opt3 C. Descarga-os las &ersiones -1s recientes /e los -6/ulos openerp-spain 2 bzr branch lp:openerp-spain ). *a-bia-os el propietario /e los archi&os 2 chown -% openerp.root openerp-spain 8. D copia-os to/o al /irectorio a//ons /e openerp-ser&er 2 cp -r openerp-spain3l"(nEes3F 3usr3lib3openerp-ser&er3a//ons 2 cp -r openerp-spain3l"(nEesEeGtras3F 3usr3lib3openerp-ser&er3a//ons 2 cp -r openerp-spain3eGtraEa//ons3F 3usr3lib3openerp-ser&er3a//ons H. ;#pcional< *opia-os los archi&os /e localizaci6n para *atalun.a en el /irectorio a//ons /e openerp-ser&er 2 cp -r openerp-spain3l"(nEcaE$S3F 3usr3lib3openerp-ser&er3a//ons "(. Descarga-os las &ersiones -1s recientes /e los -6/ulos trunI-eGtra-a//ons 2 bzr branch lp:Jopenerp-co--iter3openob9ect-a//ons3trunI-eGtra-a//ons "". *a-bia-os el propietario /e los archi&os 2 chown -% openerp.root trunI-eGtra-a//ons

" . D copia-os los siguientes -6/ulos al /irectorio a//ons /e openerp-ser&er 2 cp -r trunI-eGtra-a//ons3accountEpa.-entEeGtension 3usr3lib3openerp-ser&er3a//ons 2 cp -r trunI-eGtra-a//ons3saleEpa.-ent 3usr3lib3openerp-ser&er3a//ons 2 cp -r trunI-eGtra-a//ons3label 3usr3lib3openerp-ser&er3a//ons 2 cp -r trunI-eGtra-a//ons3partnerEspa- 3usr3lib3openerp-ser&er3a//ons 2 cp -r trunI-eGtra-a//ons3s-tpclient 3usr3lib3openerp-ser&er3a//ons "7. Por 5lti-o /escarga-os las &ersiones -1s recientes /e los -6/ulos eGtra-'.( 2 bzr branch lp:openob9ect-a//ons3eGtra-'.( "4. *a-bia-os el propietario /e los archi&os 2 chown -% openerp.root eGtra-'.( "'. D copia-os el siguiente -6/ulo al /irectorio a//ons /e openerp-ser&er 2 cp -r eGtra-'.(3accountE=inancialEreport 3usr3lib3openerp-ser&er3a//ons Khora /ebe-os iniciar openerp-client . en el -en5 8Krchi&o8 > 8+ases /e /atos8 > 80ue&a base /e /atos8 para crear una nue&a base /e /atos . /esacti&a-os la opci6n 8*argar /atos /e /e-ostraci6n8 ;/e otro -o/o se generarAa un error /urante el proceso /e instalaci6n /e los -6/ulos<. Lna &ez crea/a la base /e /atosB continuar con el asistente /e con=iguraci6n hasta /e=inir los usuarios /el siste-a. Kl llegar al punto 8De=inir e9ercicios =iscales . seleccionar plan contable8 hacer clicI en 8Saltar paso8 para cancelar el asistente. De esta -anera e&ita-os los errores que surgirAan al instalar la plantilla contable . los e9ercicios. Des/e el cliente #pen$%P: K/-inistraci6n > K/-inistraci6n /e -6/ulos > Kctualizar lista /e -6/ulos. $sta opci6n actualiza la lista /e -6/ulos . a:a/e los nue&os en la lista /e los 8no instala/os8. Des/e el cliente #pen$%P: K/-inistraci6n > K/-inistraci6n /e -6/ulos > M6/ulos > M6/ulos no instala/os. ,nstalar el nue&o -6/ulo 8l(nE$SEp.-eEinstall8 . to/as sus /epen/encias. *rear los top6ni-os /el $sta/o espa:ol ;crear las pro&incias -e/iante el asistente que se e9ecuta auto-1tica-ente al instalar el anterior -6/ulo<. *rear la cuentas /el Plan @eneral /e *ontabili/a/ a partir /e la plantilla ;-e/iante el -en5 *ontabili/a/ . =inanzas > *on=iguraci6n > *ontabili/a/ =inanciera > Plantillas > @enerar plan contable a partir /e una plantilla /e plan contable<. ,nstalar el -6/ulo l"(nE$SEp.-eEcusto- . to/as sus /epen/encias ;este -6/ulo crea e9ercicios para ((H . ("(<.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Copiar ta' iBn e4traEaddons $ co''unit$Eaddons en !!!G inGaddons del ser0idor, asO tendre'os 'Ms de K00 ',dulos para pro ar! (0er 'Ms a ajo c,'o descar#ar estos ',dulos) *eco'endaci,n: no instalarlo en producci,n para un cliente """"""""""""""""" =e de Ana Juaristi, openerpsite!co' para ajar todos los ',dulos en 0e/ de ajar uno a uno, ha$ un pro#ra'a !p$ 6ue nos descar#a toda la ra'a """"""""""""""""""

-s descar#ais la ra'a co'o estM descrito en un 'ont,n de sitios! Jereis 6ue aja un script p$thon 'u$ sencillo /rEset!p$ 6ue lo 6ue hace es descar#ar todas las ra'as de la distri uci,n 6ue se 6uiera (2!2, K!0, trun?d)! Para seleccionar la distri uci,n, es necesario editarlo $ poner 8)FA1L3D T0ersi,n 6ue se 6uiera descar#arU Pasos para descar#ar las ra'as de una distri uci,n Tde tir,nU! )n el eje'plo 0o$ a utili/ar K!0, pero serOa e4acta'ente i#ual con trun? o 2!2 : e A rir el script /rEset!p$, asi#nar 8)FA1L3DfK!0g

e e e e e

Crear un directorio cual6uiera, por eje'plo, openerpK!0 cd openerpK!0 copiar el script /rEset!p$ en ese directorio ejecutarlo de la si#uiente 5or'a p$hton2!K /r"set!p$ Jereis 6ue dentro de openerpK!0 os crea la si#uiente estructura h =e `Q 5icheros ser0idor =e para acceso con el e4plorador h ser0er `Q ser0idor openerp h client `Q cliente openerp h addons `Q :odulos To5icialesU 0ersi,n K!0 h addons"e4tra `Q :,dulos e4tra de co''iters h addons"co''unit$ `Q :,dulos e4tra de co''unit$ e Con esto, $a teneis los 5uentes de la K!0 descar#ados en 0uestro ordenador! Para actuali/arlos asta con ejecutar Rp$hton /r"set!p$ tal $ co'o ha eis hecho antes! cuando haces un Rp$thon /r"set!p$ se actuali/a todo lo 6ue tene'os ajados nota: se puede actuali/ar el /r"set!p$ $ a;adir 6ue nos aje openerp"spain, po=er'ail, etc!!! lo 6ue 6uera'os tener
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Al hacer R /r ranch lp:openerp si nos da un error en de ian de la 0ersi,n de a/aar a;adir en los repositorios

de http:GGppa!launchpad!netG /rGu untu intrepid 'ain


lue#o 'odi5icar el script /r"set!p$ para 6ue nos aje la 0ersi,n K!0 lan/ar el !p$ Rp$thon /r"set!p$ ""Q tarda un poco tener paciencia puede 6ue nos sal#a un =arnin#, no pasa nada $ esperar a 6ue ter'ine! Lue#o copiar en !!!G inGaddons de openerpser0er (0er 5ichero de GetcG!con5 para 0er la ruta donde estM openerp"ser0er) los e4tra"addons, co'unit$, etc!!! 8esde el cliente ""Q actuali/ar lista de ',dulos

Para se#uir con la instalaci,n de la locali/aci,n espa;ola, despuBs de a;adir los ',dulos de locali/aci,n Ios 0a'os a los ',dulos sin instalar: l10nEesEp$'eEinstall $ hace'os do le clic? (desde el cliente open)*P) " pro#ra'ar para instalaci,n " aplicar pro#ra'aciones %a$ 6ue tener los e4tra"addons instalados para 6ue no nos de error nota: C1+8A8- %AP A1) 3)I)* LA +I&3ALAC+bI :iI+:A (0er los pasos anteriores para la instalaci,n de la ase de datos) &i da ti'e"out cuando le de'os a instalar el ',dulo ""Q 0ol0er a darle a Taplicar actuali/aciones pro#ra'adasU Asistente: " saltar el plan conta le (crear cuentas $ de'Ms), si#uiente " especi5icar 'ensaje ""Q si#uiente

" crear " con5i#urar la lo#Ostica de los pedidos de 0enta si el en0Oo es directo: todo disponi le, entonces lo en0Oa 5acturar desde: las de ser0icio desde pedido de 0enta (pues no ha$ al aranes) solo de entre#a " seleccionar 0ersi,n de los !! pro0incias o5icial de cada co'unidad, castellano: si 0an a 0enir datos de car#as de otros sitios ""Q seleccionar castellano, $ lue#o poner #ipu/?oa"#ipu/?oa si, si : para 6ue te recupere el c,di#o de la pro0incia crear, si#uiente ahora en install: aparecerM instalado " Ios 0a'os al 'enN, re5rescar $ 0ere'os nue0os ',dulos conta ilidad " con5i#uraci,n " con5i#! 5inanciera " plantillas " #enerar plan conta le a partir de una plantilla " do le clic? nN'ero de dO#itos ""Q pre#untar al conta le el plan #eneral es @conta le o p$'esC dependiendo de lo 6ue se 5acture al a;o " plantilla plan conta le ""Q pre#untar al conta le Ios 0a'os a conta ilidad 5inanciera " cuentas #enerales " listado de cuentas " nos 0a'os a la lista de ',dulos $ usca'os custo' ""Q l10nEesE p$'eEcusto' pro#ra'ar para la instalaci,n " aplicar aplicaciones pro#ra'adas Ios 0a'os al 'enN $ re5rescar ahora en conta ilidad " tendre'os ""Q in5or'es o5iciales " instalar otro asistente 6ue estM en ):P*)&A& " ancos " asistente i'portaci,n de ancos " i'portar te a;ade todos los c,di#os de los ancos " conta ilidad " con5i#uraci,n " e4tractos ancarios C23 " asistente de i'portaci,n ( ajar de la =e del anco) car#a el 'aestro de c,di#os ancarios C23 para 6ue al i'portar los e4tractos de los ancos no nos de error

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


&e#uir los pasos anteriores

Instalacin del cliente 2oo para 2.E


http:GG===!nan"tic!co'G http:GGal ert"nan! lo#spot!co'G http:GG===!nan"tic!co'G?oo"plat5or'Ees Li rerOas a instalar: p$thon"6t2, p$thon"6t2"de0

Instalacin del servidor 3eb

8escar#ar el cliente =e desde openerp!co'Gdo=nload &i ejecuto el cliente con el co'ando !Gopenerp"=e !p$ $ 'e da un error instalar las dependencias: apt" #et install p$thon"setuptools p$thon"de0!!!(0er en aula erp) ejecutar Rsudo openerp"=e "K!0!12Gli Gpopulate!sh Ar6uitectura: ..88 " ser0idor open)*P " ser0idor>). (no hace 5alta apache, pero si estMs en internet es reco'enda le instalar Apache) " Ia0e#ador (cliente =e ) Para ejecutar el cliente Linu4 73< de openerp en :AC nos pode'os conectar con ssh "F root" ipser0er $ lue#o ejecutar el cliente =e con Rsudo openerp"client 8esde el cliente =e , tene'os una opci,n de personali/ar (a ajo a la i/6uierda) en el 6ue pode'os ca' iar el 5or'ulario =e $ nos ca' ia lo necesario en la ..88 (p!e! crear un neu0o ca'po,e tc!!!)! P)*- C1+8A8- PA A1) &) C*)A &-.*) LA J)*&+bI C-*) 8) -P)I)*P P &+ AC31AL+a:) CA*7- 3-8- L- *)AL+aA8-! )s 'ejor utili/ar el cliente 73< (escritorio) 6ue el =e ! &i lo 6uere'os utili/ar desde casa utili/ar JPIs!

4or5*lo3s desde el inter*az 3eb


>or?5o= dentro del propio o jeto Pero cuidado al 'odi5icar esto! Ior'al'ente no harOa 5alta tocarlo &e pueden crear con 8+A dia#ra'as 1:L $ lue#o ha$ un pro$ecto 6ue te pasa esto a c,di#o P$thon Los procesos para 0alidar para pasar de un estado a otro, se pueden 'odi5icar ta' iBn desde el cliente =e Cliente =e de la L!0: http:GGSH!10L!1K1!1S2:S0S1 ""Q dd:cursos ad'inGad'in

)r,uitectura
Con la cone4i,n F:L"*PC desde php se podrOa hacer! )l cliente no tiene nada! :odelo 0ista controlador: separa los datos"'odelo (ta las post#res) del controlador"l,#ica de ne#ocio (5icheros de p$thon) de la inter5a/"0ista (4'l)

.esarrollo en openERP
Introduccin

P$thon: Len#uaje interpretado $ -rientados a o jetos -pen- ject: Fra'e=or? orientado a o jetos, creado en p$thon $ con

dd post#res

67u8 contiene un mdulo de openerp9


Para 6ue open)*P interprete un ',dulo tiene 6ue cu'plir (diapo"K) unas estructuras de carpetas $ 5icheros! carpetas: i1Sn " todos los 5icheros de idio'as process " dia#ra'a de 5lujo 6ue tiene de5inido el ',dulo en concreto! CuMndo $ co'o ca' ia de estado el o jetoG',dulo report " los in5or'es 6ue tiene el ',dulo archi0os 4'l: indicarle 6ue tiene un ot,n $ cuando pulsa decirle 6uB 0a hacer securit$: todos los per'isos de acceso a ese ',dulo testGde'o: datos de prue a del ',dulo (cuando car#a'os datos de prue a, no estMn en la dd, si no en estos archi0os) =i/ard: asistentes de openerp (+n5or'es, =i/ards, accesos directos estMn en la parte derecha del cliente openerp) Ficheros: &ie'pre ha$ un o jeto !p$ (con el no' re del ',dulo) $ otros !p$ con los o jetos con los 6ue estM relacionado este ',dulo (partnerts $ stoc?) o jetoEdata"4'l ""Q la 0ista del o jeto

cuando arranca el ser0idor hace la co'pilaci,n del c,di#o $ con0ierte un archi0o !p$ en !p$/ 6ue es el 6ue se ejecuta en openerp Antes de ponerte a pro#ra'ar, ha$ un ',dulo 6ue 'e per'ite 0alidar casos de uso 6ue $o creo a la hora de crear un ',dulo -*P)scenari (tienes 6ue sa er pro#ra'ar en *u $)! La 0ersi,n L tiene este ',dulo $a'-:L )n todas las pantallas se pueden i'portar $ e4portar datos! P!e e4portas los partnerts a un cs0 lo retocas $ lue#o lo i'portas! :arcar i'port co'pati le para 6ue lue#o te a;ada las F<s pero no puedes sacar datos de ta las relacionadas!

Python
Para ejecutar el interprete de p$thon po "ap"' p"01:c csanche/R p$thon P$thon 2!L!1 (r2L1:LHK1K, Fe 11 2010, 00:K1:29) j7CC 2!2!1 (Apple +nc! uild KL2L)k on dar=in 3$pe XhelpX, Xcop$ri#htX, XcreditsX or XlicenseX 5or 'ore in5or'ation! QQQ print Xhola 'undoX hola 'undo

&i nos da un error ascii, es p6 ha$ 6ue de5inir la codi5icaci,n del 5ichero en p$thon Cada sentencia en una lOnea Crear un nue0o pro$ecto con eclipse: 5ile " ne= p$de0 project en pre5erencias de p$thon 0er d,nde estM el ejecuta le para crear un nue0o 5ichero: ot,n derecho carpeta del pro$ecto " ne= 5ile en src " ne= p$de0 'odule &ipos b:sicos IN'eros, cadenas de caractBres, ooleanos te4to: entre co'illas do les $ si'ples Para operaciones co'plejas arit'Bticas: tener el ',dulo 'ath Listas ; arrays pueden contener cual6uier tipo de dato (o jetos, enteros, etc!!!!) las 0aria les se pueden crear en cual6uier lOnea $ no ha$ 6ue decir de 6ue tipo es &uplas son listas in'uta les .iccionarios 1na colecci,n de ele'entos! i 3odos los datos in'uta les

Io ha$ 6ue poner e#in, end, ni lla0es, si'ple'ente espacios en lanco Condiciones< bucles i5, =hile, 5or in, para salir de los ucles: rea? para continuar en lo ucles: continue .eclarado de *unciones Clases Archi0o EEinitEE!p$, tiene una serie de i'ports 6ue tiene 6ue i'portar Co'entarios: P)P inde4 'irar en la =e de p$thon!or# http:GG===!p$thon!or#Gde0GpepsG 7uOa de estilo de c,di#o p$thon: http:GG===!p$thon!or#Gde0GpepsGpep"000SG ^ 1na ta la en post#res D una clase en openerp G p$thon Re*erencias Python

en la pM#ina de p$thon " li rar$ re5erence http:GG===!p$thon!or#GdocG "Q li rar$ re5erence Li ro: p$thon para todos P$thon: http:GG'undo#ee?!netGeti6uetaGp$thon one2'an$ " es un =i#chet p!e para lOneas de un pedido 'an$2one " son los ca'pos 6ue sale la carpeta 9 lupa 'an$2'an$ " ca'pos 6ue tiene a;adir $ 6uitar (un producto tiene 'Ms de un i'puesto) preparar para instalaci,n " actuali/ar " lee una clase nue0a "" entonces en la dd crea una ta la nue0a (el 'apeador de o jetos, el AP+ es os0 6ue es del 6ue heredan todos los o jetos creados en los ',dulos de p$hton) Los atri utos 6ue de5ines en el o jeto ""Q se #enerarMn co'o ca'posGetri utos en una nue0a ta la en post#res con el no' re de la clase del o jeto &i orro un ',dulo, los ca'posGta las 'e 6uedarMn en post#res

)rchivos de un mdulo de openERP


3odos los !p$c se reco'pilan al arrancar el ser0idorG',dulo desde los !p$ ',dulo account: " account!p$ : todas la clases, la propia accountGo jeto, todas las 5unciones de la clase account, sie'pre estM no' re',dulo!p$ " EEinit!p$EE : carpetas: report $ =i/ards es lo 6ue 0eo en la parte de la derecha los i'port " pri'ero usca el no' re!p$ del i'port, si no lo encuentra uscarM una carpeta con el noo' re del i'port $ dentro el EEinitEE!p$ ""Q $ en el init le di#o cual es el !p$ 6ue tiene 6ue car#ar " todas tienen 6ue tener: traducciones, la carpeta i1Sn

0odi*icar un mdulo de openerp con eclipse


re*erencias http:GGan#el'o$a!esGopenerpGinstalar"$"con5i#urar"eclipse"para"tra ajar"con"openerpG http:GG===!aulaerp!co'GaulaG'odGresourceG0ie=!phpCidD1K2 ne= " projecto p$de0 " openerp " en location seleccionar la carpeta de !!!Gopenerp"ser0erGaddons (antes la tene'os 6ue tener 'apeada con s' :GG) des'arcar: crear &*C run " create 'ana#e and run con5i#urati,ns " p$thon run " ne= :

1rear una nueva con#iguraci*n en el apartado 7)ython 3un8/ eligiendo como 7)roject8 el nuestro y como 7+ain module8 openerp-server py/ le damos a 79pply8 y luego a 73un8 y deber'a #uncionar
" ro=ser project: seleccionar openerp (he'os creado en el punto anteior) " 'ain 'odule: seleccionar RY=or?spaceEloc:open)*P1G inGopenerp"ser0er!p$Z

" en ar#u'entos " poner el usuario de acceso a la ase de datos ('irar el 5ichero de con5i#uraci,n d user $ d pass=ord, no hace 5alta ponerlo(() &i nos da un error con la li rerOa l4'l, es p6 en la 'M6uina d,nde estM eclipse ha$ 6ue instalar las li rerOas l4'l http:GGlsi'ons!=ordpress!co'G200SG0SG31Gho="to"install"l4'l"p$thon"'odule"on"'ac"os"10K"leopardG

Para controlar un ',dulo creado: Lue#o en eclipse, puedo seleccionar hacer un dedu# (poniendo un rea?point en el c,di#o, haciendo clic? a la i/6uierda, el ser0idor se para $ pasa todo el dedu# a eclipse para 0er las 0aria les etc!!!,), para ejecutar en 'odo de#un hacer clic? en el ichito

Ahora tene'os 6ue tene'os eclipse con soporte para p$thon $ 4'l, 0a'os a instalar las plantillas para co'pletar c,di#o 6ue tene'os en esta =e http:GGcode!#oo#le!co'GpGopenerp" eclipse"te'plateG! 3ene'os dos plantillas una para co'pletar c,di#o de p$thon $ otra para co'pletar 4'l! 8escar#ate las plantillas co'o pone en la =e por s0n, directa'ente desde a6uO: e te'plate p$thon

e te'plate 4'l
+nstalar la plantilla de p$thon =indo=sGeclipse " pre5erencias " p$de0 " code co'pletion " te'plates (editorGte'plates en eclipse para 'ac) " i'port " $ seleccionar el archi0o descar#ado " o? lue#o al escri ir un archi0o !p$ nue0o si escri i'os al inicio EEterpEE (enter) +nstalar la plantilla de 4'l eclipse " pre5erencias " =e $ 4'l " te'plates

Instalar acceso a cdi'o con cone(iones remotas


Re*erencias

http:GGjpa lo r!co'GpastGinstall"eclipse"rse"tar#et"'ana#e'ent"project"plu#"in http:GG===!userlinu4!netG1292EeclipseErseEplu#in!ht'l


Probando )clipse 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 *&) 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:GGdo=nload!eclipse!or#GdsdpGt'GupdatesG2!0 Lue#o en =indo=s " open perpesti0e " other " seleccionar *&)

arri a local " oton derecho " ne= cone4ion " ssh " rellenar datos " seleccionar s5tp Fecha: 21"H"2010

Realizar nuestro primer mdulo en openERP


"""" de la =e de An#el :o$a, introducci,n """"
La ar6uitectura :JC (:odelo Jista Controlador) sir0e para separar los datos, de la l,#ica de ne#ocio $ de la inter5a/ de usuario, -pen)*P si#ue esta ar6uitectura, el 'odelo son las ta las de post#res, la 0ista son los F:L 6ue de5inen la inter5a/ de usuario del ',dulo $ el Controlador son los - jetos creados en p$thon! )n esta entrada 0a'os a 0er la estructura de los ',dulos $ co'o crear un pri'er ',dulo 'u$ sencillo! Lo pri'ero 6ue necesita'os sa er es donde se al'acenan los ',dulos $ la estructura 6ue tienen! &i estas ejecutando el ser0idor de -pen)*P co'o he indicado en el post anterior los ',dulos se al'acenan en el directorio: Gho'eGusuarioGopenerpGopenerp"ser0erG inGaddons Pode'os crear en este directorio la carpeta para nuestro ',dulo, dentro de la carpeta del 'odulo se #uardan los 5icheros del c,di#o, tanto los 5uentes escritos en p$thon, las 0istas en 4'l, los in5or'esd en este eje'plo 0a'os a e'pe/ar a hacer un ',dulo 'u$ si'ple $ lue#o ire'os a;adiendo cosas! Los archi0os 'Oni'os para este ',dulo de eje'plo son los si#uientes:

cocheE0ie=!4'l Co'o los ',dulos de -pen)*P son pa6uetes p$thon tiene 6ue e4istir el 5ichero EEinitEE!p$ 6ue puede de5inir atri utos $ 'Btodos del pa6uete, en este caso solo contendrM los i'port de los 5icheros $ directorios 6ue conten#an c,di#o! )n nuestro eje'plo es si'ple'ente: i'port coche )l 5ichero EEterpEE!p$ contiene la descripci,n del 'odulo: Y Xna'eX : XcocheX, XauthorX : XAn#elX, X0ersionX : X0!1X, XdependsX : jX aseXk, Westa es la lista de los ',dulos de los 6ue depende XinitE4'lX : jk, XupdateE4'lX : jXcocheE0ie=!4'lXk, Wa6uO indica'os la 0ista Xcate#or$X : X)nterprise &peci5ic :odulesGCochesX, Xacti0eX: False, Xinstalla leX: 3rue Z )n coche!p$ tene'os tanto el controlador co'o el 'odelo, tene'os el controlador por6ue se trata de una clase p$thon en la 6ue de5ini'os el co'porta'iento, $ tene'os el ',delo por6ue esta clase hereda de la clase os0 (- ject &er0ice) 6ue i'ple'enta una capa de -*: (- ject"*elational 'appin#), para los 6ue 0eni'os de ja0a lo 6ue serOa hi ernate! AsO las clases 6ue crea'os heredando de os0 $ si#uiendo esta estructura crean las ta las en la ase de datos! 5ro' os0 i'port os0, 5ields class coche(os0!os0): Ena'e D lcochel Ecolu'ns D Y l'odelol: 5ields!char(l:odelol, si/eDL2),

e e e e

EEinitEE!p$ EEterpEE!p$ coche!p$

l'atriculal: 5ields!char(l:atriculal, si/eDL2), Z coche() Co'o 0e'os i'porta'os os0 para 6ue coche herede de el, e i'porta'os ta' iBn 5ields para de5inir el tipo de las colu'nas, en este eje'plo solo he'os usado cadenas de caracteres, $a 0ere'os 'as tipos de colu'nas! )l Nlti'o 5ichero de nuestro eje'plo es cocheE0ie=!4'l, en el se de5ine la 0ista, en este eje'plo se ha creado la entrada para el 'enN $ la de5inici,n de la 0entana listado $ 5or'ulario! VopenerpQ VdataQ Vrecord 'odelDXir!actions!actE=indo=X idDXactionEcocheE5or'XQ V5ield na'eDXresE'odelXQcocheVG5ieldQ V5ield na'eDXdo'ainXQjkVG5ieldQ VGrecordQ V'enuite' na'eDXCochesX idDX'enuEcocheEcocheE5or'XGQ V'enuite' na'eDXCochesX idDX'enuEcocheE5or'X parentDXcoche!'enuEcocheEcocheE5or'X actionDXactionEcocheE5or'XGQ Vrecord 'odelDXir!ui!0ie=X idDX0ie=EcocheE5or'XQ V5ield na'eDXna'eXQcocheVG5ieldQ V5ield na'eDX'odelXQcocheVG5ieldQ V5ield na'eDXt$peXQ5or'VG5ieldQ V5ield na'eDXpriorit$X e0alDXKXGQ V5ield na'eDXarchX t$peDX4'lXQ V5or' strin#DXCocheXQ V5ield na'eDX'odeloX selectDX1XGQ V5ield na'eDX'atriculaX selectDX1X GQ VG5or'Q VG5ieldQ VGrecordQ Vrecord 'odelDXir!ui!0ie=X idDX0ie=EcocheEtreeXQ V5ield na'eDXna'eXQcocheVG5ieldQ V5ield na'eDX'odelXQcocheVG5ieldQ V5ield na'eDXt$peXQtreeVG5ieldQ V5ield na'eDXpriorit$X e0alDXKXGQ V5ield na'eDXarchX t$peDX4'lXQ Vtree strin#DXCocheXQ V5ield na'eDX'odeloX selectDX1XGQ V5ield na'eDX'atriculaX selectDX1X GQ VGtreeQ VG5ieldQ VGrecordQ VGdataQ VGopenerpQ 1na 0e/ tene'os este c,di#o en el directorio Gopenerp"ser0erG inGaddonsGcoche pode'os reiniciar openerp" ser0er con la opci,n T"u cocheU para recar#ar el ',dulo! )ste eje'plo es un ',dulo 'u$ sencillo 6ue si'ple'ente per'ite #estionar en -pen)*P una lista de 'atriculas $ 'odelos de coches, en si#uientes post irB a'pliando este ',dulo $ 'ostrando otras caracterOsticas del desarrollo! Para pro5undi/ar 'as en el desarrollo ahora 6ue tene'os una ase puedes 'irar el de0eloper oo? de la =i?i $ el 'e'ento 6ue resu'e todo lo necesario para desarrollar en -pen)*P!

""""""""""""""""""""""""""""" 5in """"""""""""""""""""""""""

Creacin de un mdulo para la 'estin de instalaciones de openERP


nue0a carpeta " ser0idores " crear los 3 archi0os EEinitEE!p$ $ EEterpEE!p$ EEterpEE!p$ copiar la estructura de cual6uier EEterpEE!p$ de cual6uier ',dulo (trainin#) $ ca' iar los datos: na'e: el no' re de nuestro ',dulo depends: ase (el ',dulo nNcleo de openerp, sie'pre dependen de Bl cual6uier ',dulo $ si necesita al#Nn otro ',dulo se a;adirOa a6uO) en de'oE4'l (por si tienes 6ue dejar datos de car#a de prue a) $ initE4'l $ updateE4'l dejarlos sin nada lacti0el : False, linstalla lel : 3rue, ""Q si se puede instalar EEinitEE!p$ i'port ser0idores GGno' re del ',dulo ser0idores!p$ copiar la licencia de open)*P $ !!! """"""" 5ro' os0 i'port os0, 5ields Wdeclarar la clase $ 6ue herede de os0 class ser0idoresEser0idores(os0!os0): Ena'e D lser0idores!ser0idoresl Edescription D l:i descripci,nl Ecolu'ns D Y lna'el: 5ields!char(lIo' rel, si/eDL2), lipl: 5ields!char(l+pl, si/eD20), lnotasl: 5ields!te4t(lIotasl), l5echaEaltal: 5ields!date(lFecha altal), Wpara relacionarlo con una e'presa 6ue $a estM en la dd, 'irar en 'odulos personali/acion " estructura de la ase de datos " ca'pos " o jeto lclientel: 5ields!'an$2one(lres!partnerl, lClientel), lno'Eusuariol: 5ields!char(lIo'!1suariol, si/eDL2), lpass=ordl: 5ields!char(lPass=ordl, si/eDL2), Z ser0idoresEser0idores() """""""" Ios 0a'os al cliente " actuali/ar ser0idor " pro#ra'ar actuali/aci,n " instalar, pero no 0ere'os nada

Crear la vista
en eclipse crear un nue0o 5ichero ser0idoresE0ie=!4'l para poder 0er al#o a rir un 0ie= de otro ',dulo $ copiar"pe#ar (lo 6ue ha$ despuBs de VdataQ Vrecord 'odelDXir!ui!0ie=X idDX0ie=EsupportEdeli0er$E5or'XQ a6uO le da'os el no' re 6ue serM ser0idoresE0istaprincipal si lue#o 0o$ a heredar esta 0ista, se utili/arM el id

V5ield na'eDXna'eXQ0ie=!du''$!support!deli0er$!5or'VG5ieldQ no' re 6ue 6uiera darle a este o jeto 6ue se 0erM en openerp en la lista de o jetos V5ield na'eDX'odelXQdu''$!support!deli0er$VG5ieldQ a 6uB 'odelo hace re5erencia (el class 6ue he'os creado en el 5ichero!p$ el na'e de la clase): Ena'e D lser0idores!ser0idoresl V5ield na'eDXt$peXQ5or'VG5ieldQ V5ield na'eDXarchX t$peDX4'lXQ si ha$ una de inheritEid 6uiere decir 6ue es heredado a partir de a6uO co'ien/a la de5inici,n de la 0ista (los ca'pos) colla#e e4pand D e4pandir a un ancho de 2 lo 6ue sea (para 6ue ocupe el espacio correcto)! )sta di0idido en lo6ues de 2 la pantalla )l standar te pone eti6ueta"ca'po, eti6ueta"ca'po &i se nos ol0ida un ca'po: " ca' iar la clase $ a;adir el ca'po " parar ser0idorGarrancar " 0ol0er a instalar el ',dulo &i ca' ia'os un tipo de dato (inte#er " dou le): " ca' iar en la ase de datos &i orra'os un ',dulo: " se 'antiene creado en la 8entro del EterpE!p$ en updateE4'l mser0idoresE0ie=!4'lf, ahora s,lo 6ueda actuali/ar el ',dulo desde el cliente open)*P " pro#ra'ar actuali/aci,n (dentro del ',dulo) " aplicar actuali/aciones &i a;ado al V5ield na'eDXnotasX colspanDX2XGQ un colspan 'e 'ostrarM el ca'po ocupando toda la pantalla (las 2 colu'nas en lo 6ue lo di0ide), lue#o ha$ 6ue actuali/ar el ',dulo para 6ue se cu'pla! Jer 'Ms tipos de ca'po, le a;adire'os 'Ms tipos al o jeto ser0idores " a;adir o jeto ca' ios, a;adir las relaciones " de5inir en las 0ista en el !4'l el nue0o ca'po ca' ios Para colorear los F:L: " help " instalar so5t=are " seleccionar: %elios " desple#ar: =e "4'l " seleccionar: eclipse 4'l editor and tools " reiniciar eclipse &i nos da un error el cliente al ejecutar ser0idores de 6ue nos 5alta el ca'po Tca' iosU &i no nos crea en la dd la nue0a ta la ser0idores!ca' ios :atar el ser0idor ?ill "9 uscado por ps au4"#rep openerp Arrancar el ser0idor

dd la ta la

GusrGsrcGopen!!G inGopenser0er!p$ ""updateDall ""con5i#DGetcGopenerp"ser0er!c5# @Por 6uB al crear el ',dulo ser0idores lo ha co#ido ien, pero lue#o al hacer el ca' io de a;adir lo de ser0idores!ca' ios aun6ue lo actuali/a a'os el ',dulo desde el cliente, no se crea a en la dd la ta la ser0idores!ca' iosC 'an$2'an$ crea una ta la con 2 ca'pos $ relaciona unos con otros Ahora creare'os una pesta;a en &)*J+8-*)& archi0o: ser0idores3 Fecha: 2010"H"22

08todos
http:GGdoc!openerp!co'Gde0eloperG2EKE- jectsEFieldsE:ethodsG'ethods!ht'l 3odos los o jetos tienen de ase una serie de 'Btodos por de5ecto (heredados de o0n) 8esde esos 'Btodos de los o jetos heredados los pode'os ajustar! Pri'ero tene'os 6ue lla'ar al 'Btodo de la superclase (o0n)! cursor " la instancia de la dd 6ue se estM ejecutando en ese 'o'ento conte4t " idio'a del cliente, #rupo al 6ue pertenece el usuario, etc!!! recuperar todos los ca'pos de la dd de unos +8s 6ue 0an entre el 2 $ 2H: 5or o j in sel5! ro=se(cursor de la dd, uid del usuario 6ue estM haciendo el ro=se, 2"2H) res(o j!id) D len(o j!ca' iosEids) ""Q recuperando un 0alorGca'po de este o jeto return res sel5 D so$ $o 'is'o, el o jeto en el 6ue esto$! 1na nu e en el 6ue ha$ n o jetos! P!e! un pull de pedidos! sel5!search D uscar al#o dentro de 'i propia clase, co'o si hiciera'os un select a una dd

sel*#search y sel*#bro3se
+dEpedidos D sel5!search ( cursor, uid, condiciones del =here select) ""Q un select s,lo de +8s ""Q recupera s,lo +8s (internos de la dd, se 0en en las ta las de la dd, la cla0e pri'aria de la ta la) sel5! ro=se(cr, uid, +dEpedidos) ""Q select ^ =here idDFFFFF ""Q recupera todos los ca'pos

Campos de las tablas de la bbdd


+8 D contador interno de la ta la &er0idores!ser0idores
Colu'na id 3ipo de dato inte#er Io Iulo I-3 I1LL Predeter'inado ne4t0al(lser0idoresEse *estricciones

r0idoresEidEse6l::re#cl ass) createEuid createEda te =riteEdate =riteEuid no'Eusua rio na'e 5echaEalta ip pass=ord cliente notas inte#er ti'esta'p =ithout ti'e /one ti'esta'p =ithout ti'e /one inte#er character 0ar$in#(L2) character 0ar$in#(L2) date character 0ar$in#(20) character 0ar$in#(L2) inte#er te4t

FacturasEo ject D sel5!pool!#et (account!in0oice) ""Q a6uO ten#o todas las 5acturas (un pool de 5acturas cuando ha#o un search ""Q FacturasE+ds D !! (p6 recupero ids) cuando ha#o un ro=se ""Q FacturaE+d A poder ser lla'arle +n0oice en 0e/ de Factura

3rite=##> ; update en la bbdd


se hace un diccionario 0aluesD(mno' refD0alerio, medadfD11, motrofDres(0)), estos datos los puedo reco#er de di5erentes sitios cuando ten#o los 0alues se los paso al =rite =rite(cursor, uid,id del o jeto 6ue 6uiero escri ir, 0alues)

create=##>
create(cursor, uid, 0alues)

copy=##>
copiar un o jeto entero de uno a otro, pero nos crea otro id di5erente para ese nue0o o jeto Iota: no hace 5alta sa er p$thon, lo i'portante es sa er el -*: (- ject"*elational 'appin#) $ la hoja 3 de 'Btodos 6ue nos han dado! http:GGan#el'o$a!esGopenerpGco'o"e'pe/ar"a"desarrollar"'odulos"en"openerp"22G http:GG===!openo ject!co'G'e'entoG http:GGdoc!openerp!co'Gde0eloperGinde4!ht'l

?erencia en Python-openERP
)sto es ueno, $a 6ue si hace'os un ',dulo lue#o podrOa 6ue al actuali/arse openerp $ sale una 0ersi,n nue0a, puede 6ue perda'os todo, pero con la herencia lo conser0a'os! &i tene'os 6ue ca' iar un ',dulo de open)*P, lo 6ue tene'os 6ue hacer es una e4tensi,nGherencia de ese ',dulo $ ese 5or? es el 6ue toca'os! AsO cuando ha$a una actuali/aci,n no le a5ectarM a la e4tensi,nGherencia! 0!" Ios crea'os un nue0o ',duloGcarpeta en !!G inGaddons, con la estructura de 5icheros 6ue tiene 6ue tener EEinitEE, etc!!! 1!" )n EEterpEE poner en depens, de d,nde lo heredo Ja'os a reali/ar una e4tensi,n del ',dulo &er0idores lla'ada &er0idoresE)4tended Copiar el EEterpEE de ser0idores $ ca' iar datos, las 0istas !4'l serMn nue0as ser0idoresEe4tended!4'l $ en depens a;adir ade'Ms de ase, ser0idores Ios crea'os una nue0a clase, aun6ue se lla'e i#ual ($a 6ue si le ca' ia'os el no' re, nos crearOa otra nue0a ta la en la dd) class ser0idoresEser0idores(os0!os0): Ena'eD mser0idores!ser0idoresf ""Q poner el 'is'o no' re Einherit D mser0idores!ser0idoresf ""Q a6uO hereda'os, nos saca las colu'nas 6ue tiene los 'Btodos, etc!!! Ecolu'ns D ( W """Q a6uO le a;adi'os los nue0os ca'pos 6ue 6uere'os ponerle a este ',dulo heredado W ""Q las colu'nas 6ue hereda del padre ta' iBn estMn a6uO aun6ue no se ponen Wlista tipo co' o, una tupla de tuplas mtipof: 5ileds!selection(((mlinu4f,fLinu4f),(tupla2),(tupla3)), m3ipof) ) Ede5aults D ( Wco'o le tene'os 6ue pasar una 5unci,n se hace con la' da mtipof: la' da ^a: motrof, ) ser0idoresEser0idores() 2!" Lue#o crea'os los 5or'ularios $ 0istas en F:L

Implementar se'uridad a los mdulos

&i lo hace'os so re el ',dulo ori#inal (ser0idores!ser0idores), esto se aplicarM ta' iBn so re ser0idoresEe4tended Los per'isos se dejan en un !cs0 3 conceptos de se#uridad: #rupos, roles $ usuarios " #rupos no son #rupos de usuarios, si no lo6ues de per'isos 6ue puedes asi#nar a los usuarios! &on ite' 6ue 'e dan per'isos a a ciertos o jetos! P!e! crea'os un #rupo ser0idores D directi0as de #rupo (un #rupo de per'isos)! :eto en el #rupo ser0idores todos a6uellos usuarios 6ue 6uiero 6ue ten#an acceso a ser0idores! )n :)I1&: de5ino los 'enus 6ue 0erMn los usuairos 6ue estMn 'etidos en ese #rupo! &i no pon#o nada en los 'enus no restrin#o nada, si pon#o 0arios 'enNs, los usuarios 6ue pertene/can a ese #rupo s,lo 0erMn esas 0istas! Per'isos de acceso: si 6uiero 6ue el #rupo %u'an *esouces :ana#er ten#a acceso a ciertas partes lo de5inirB a6uO " roles >or?5lo=: un pedido 0a de orrador a con5ir'ado, si al#uien lo 0alida! A6uellos o jetos 6ue pueden tener estados (en propuesto), $ 6ue pueden ir a otros estados dependiendo de d,nde se ha#a clic? (crear 5actura , cancelar pedido)! &i el =or?5lo= tiene un 'u;e6uito es 6ue tiene 6ue ser 'anual el ca' io de estado por una persona! Los roles son a6uellos per'isos 6ue se les de5inen a 6uB personas tienen derecho de p!e apro ar co'pra $ otro rol de resol0er co'pra (p!e)! &i a un usuario le do$ el rol de 5acturas ""Q podrM con5ir'ar 5acturas Por pantalla s,lo de puede crear un rol nue0o, pero lue#o para asi#narlo a una persona ha$ 6ue hacerlo desde el c,di#o! " usuarios 1n truco ""Q ',dulo de #ra aci,n ""Q record 'odule 3odo lo 6ue he'os 0isto, se puede hacer desde openerp (el o jeto, ',dulo, EEinitEE, EEterpEE, etc!!!!), 3odo lo 6ue haces en una instalaci,n de openerp de prue as te lo 0a #ra ando $ lue#o se puede e4portar e i'portar en otro ser0idor de producci,n (co'o si 5uera un ',dulo)!

L'ica de los 3or5*lo3s


nanpartnerdis? " ',dulo 6ue 'odi5ica el =or?5lo= 8esde el cliente =e se pueden 0er los =or?5lo= (p!e de un pedido de 0entas) " en el propio pedido " personali/ar 1n =or?5lo= ""Q puede a5ectar a otros =or?5lo=s (su =or5lo=s) Los rectMn#ulos son su "=or5lo=s Las elipses son estados

Los cOrculos son 5unciones Para de5inir los =or?5o=s en los 4'l ""Q 0er pM#ina KGH de los doc! tBcnica el 'e'ento

3odo este di ujo lo 0as de5iniendo en los F:L: " caja " estados " transiciones )stas de5iniciones de los F:L se pueden 'odi5icar desde open)*P ""Q no reco'enda le 'odi5icar un 5lujo desde open)*P (puede 6ue se 5astidie a 5uturo) Ad'inistraci,n " o jetos de ajo ni0el "ele'entos del 5lujo " instancias " stco? pic?in# ase Ior'al'ente no hace 5alta ca' iar un =or?5lo=, $a 6ue estMn 'u$ ien de5inidos $a! I- ha$ herencia en 5lujos, lue#o al acutali/ar open)*P ha rOa 6ue hacer las 'odi5icaciones de nue0o

4izards
Acciones 6ue tN reali/as so re un deter'inado o jeto (en0iar un s's, 0er la estructura de la co'pa;Oa, !!), pueden ser #enBricas de un o jeto! &on pantallas de asistentes, contienen una sucesi,n de pasos! &e puede utili/ar para pedir datos!

Copias de se'uridad
.ajarnos el ',dulo http:GG===!openerp!co'Gdo=nloadG'odulesGtrun?GautoE ac?up!/ip 3e lo instala en ad'inistraci,n " con5i#uraci,n " con5i#ura ac?up le dices d,nde 6uieres 6ue te deje la copia de se#uridad de la ase de datos 2010"H"23

Reportes< In*ormes
+nstalaci,n $ con5i#uraci,n de Jasper reports: http:GG===!aulaerp!co'GaulaGcourseG0ie=!phpCidD23 &+ I- JA:-& A 13L+aA* L-& :-81L-& A1) I- &)AI 8) JA&P)*, I- +I&3ALA*L-&, P1)8) A1) I-& 8) )**-* AL +I&3ALA* JA&P)* )l ',dulo TreportEdesi#nerU Ar6uitectura de reportEdesi#ner @6uB haceC :e crea un inter5a/ en openerp, e4porta un !s4= a openo55ice 1!0, editar el in5or'e en openo55ice (ne#rita, ta las, etc!!!) $ lue#o su o ese !s4= 'odi5icado a openerp s4=2r'p!p$: cuando $o su o el in5or'e 'e hace la traducci,n de openo55ice al len#uaje r'l, si $o 'odi5icara ese r'l directa'ente podrOa 'odi5icar el in5or'e ta' iBn Ios aja'os ireport: http:GGsource5or#e!netGprojectsGireportG5ilesG

0dulo base@report@desi'ner
+nstala'os el ',dulo: aseEreportEdesi#ner (desde los ',dulos)
Ad'inistraci,n " personali/aci,n " dise;ador de in5or'es selecciona'os el in5or'e " usca'os pedido #uardar co'o pedidoori#inal!s=4 en el escritorio " le ha#o una copia $ 'odi5ico esa copia (con openo55ice) " lue#o su irB ese 5ichero 6ue he 'odi5icado estos in5or'es estMn en " sales G reports G salesE"""!r'l $ salesE!!!s4= (si 'odi5ico el r'l se 0e el ca' io, si 'odi5ico el s4= no se 0e el ca' io, ten#o 6ue su irlo con el asistente de reportEdesi#ner) ad'inistraci,n " usuarios "ar ol de la co'pa;ia " co'pa;ias ('eterlo en 5a0oritos): a6uO tene'os las ca eceras, pies de pM#ina etc!! de in5or'es, lo#os V("" Pou Lo#o " Chan#e F,P,>idth and %ei#ht ""Q Vi'a#e 4DX1!3c'X $DX2H!Lc'X hei#htDX20!0X Qjjco'pan$!lo#okkVGi'a#eQ el !s4= ""Q 'odi5ica la parte central el !&F>
jjrepeat+n(o jects,lol)kk GG estas dos lOneas se ponen sie'pre jj setLan#(o!partnerEid!lan#) kk

AA o#state;;Bdra*tB and removeParentCode=BparaB> DD Purchase Order Con*irmation CE AA o#name DD &i el estado del o jeto es orrador pon'e presupuesto $ si no es orrador pedido
Los 0! D datos del pedido
jjrepeat+n(o!orderEline,llinel)kk

Lo 'odi5ica'os $ lue#o los su i'os " ad'inistrador " dise;ador de in5or'es " su ir el in5or'e 'odi5icado " selecciono de disco el 6ue he 'odi5icado (tener la copia por si lo he hecho 'al)

Ad'inistraci,n " o jetos de ajo ni0el " acciones " in5or'es 4'l (a6uO estMn todos los in5or'es del siste'a de5inidos) .usco 'i pedido de 0entas 0eo la ruta del !r'l ""Q el 6ue 'e ejecuta cuando le do$ al ot,n i'presi,n

3ipo: pd5 (puedes seleccionar p!e odt, pero parece 6ue no 5unciona), si 6uere'os 6ue cuando le de a i'pri'ir 'e sal#a 6ue pueda seleccionar ""Q tendrOa 6ue hacer un =i/ard (para ele#ir los parM'etros de i'presi,n) recar#ar desde adjunto: te i'pri'e desde el 6ue $a estM en la cache de antes (adjunto 0iejo), si le ca' ian el i'porte $ saca el 0iejo tendre'os 6ue des'arcar esta 'arca a ajo en la hoja 0eo el id del in5or'e(report) 6ue lue#o lo utili/arB en el o jeto Action " report (0er si#uiente) Action " =i/ard (0i'os a$er) ahora 0e'os Action " report en ad'inistraci,n " docu'entos de ajo ni0el " cone4iones acciones cliente (los =i/ard ta' iBn estMn a6uO de5inidos) " usco el presupuesto en tipo de acci,n " $ a6uO pondrB el id del in5or'e del punto anterior cone4iones acciones cliente D el ot,n 6ue nos sale en la parte derecha $ la acci,n serM el r'l 6ue he'os de5inido antes

)hora veremos el mdulo de p('o@openo**ice@reports para in*ormes


)sta es otra 5or'a de hacer in5or'es (creo 6ue para ca' ios pe6ue;os es 'ucho 'ejor la opci,n anteiror) &i nos da un error al instalar el ',dulo: parar el ser0idor, Rsudo eas$Einstall relatorio, Rsudo eas$Einstall p$cha, 0ol0er a ejecutar el ser0idor )n ad'inistraci,n " personali/aci,n " openo55ice!reports uscar el no' re del o jeto: ser0idores a rir openo55ice " crear una ta la (L colu'nas, 2 5ilas) $ se 0an rellenado los ca'pos VF-* )AC%DU-!+IE -.J)C3&Q Io' re o!na'e Cliente o!cliente!na'e 8ir! +P o!ip 1suario o!usuario Pass=ord o!pass=ord Fecha Alta

Ios situa'os de ajo de Io' re: +nsertar ca'pos " otros " 5unciones " co'odOn " 5or'ato te4to: co'odOn: o!na'e )l resto de ca'pos i#ual pero con otro no' re en la 5echa de alta D 5or'atLan#(o!5echaEalta, dateDtrue) ""Q para 6ue 'e sa6ue en 5or'ato spanish Lo #uarda'os con 5or'ato odt " in5or'esEser0idores 0ol0e'os a p4#oEreports en openerp : no' re: i'pri'ir in5or'e ser0idores ( oton) 'odel: darle a uscar " cate#orOas del ser0idor no' re interno: ser0idores!ser0idores!print tipo: openo55ice " pd5 output lue#o selecciona'os una nue0a entrada " selecciona'os el !odt 6ue he'os creado antes

Otra *orma de hacer in*ormes - 2aspars


http:GG?ndati!l0Ginde4!phpGenGopenerpGopen"erp"addonsGreportin#"en#ineGHL"openo55iceor#"reportin#" en#ine"installation http:GG?ndati!l0Ginde4!phpClan#Den ""Q 'otor de in5or'es para openerp http:GG===!openerpsite!co'Gel"nue0o"'otor"de"in5or'es"de"?aspars"sraps"para"openerpG13S9!ht'l

0dulo base@reports@creator
Al instalar 0ere'os 6ue tiene dependencia de T oardU " panel de control )s un constructor de 6uer$s &AL (contra ..88) ta leros " con5i#uraci,n " in5or'es personali/ados seleccionar 0arios o jetos (0arias ta las) seleccionar los ca'pos (e ir #ra ando) 5iltros se#uridad " poner para 6uB #rupo es este in5or'e $ lue#o en interro#aci,n &AL tendrB la Auer$ reali/ada Lue#o 'e 0o$ a la e'presa (a la /ona 6ue he hecho el in5or'e), en la parte de arri a 'e aparecen los 5iltros 6ue he seleccionado $ lue#o nos aparecerM el ot,n de i'pri'ir pantalla

iReport *or FasperReport


http:GG===!aulaerp!co'GaulaGcourseG0ie=!phpCidD23 8escar#ar de source5or#e, 0ersi,n actual 3!H!2 +nstalar el ',dulo: openo ject"cliente"?de Antes desde el ser0idor: bzr branch lp:openobject-client-kde

2ntramos a la carpeta que se ha creado/ el m*dulo est6 dentro de la subcarpeta servermodules/ copiamos la carpeta jasper"reports y la pegamos en el directorio addons del servidor :nstalamos el m*dulo jasper"reports como cualquier otro m*dulo de $pen23)
^ &i nos da un error al instalar jasperEreports, crear una ase de datos nue0a li'pia (puede 6ue al#uno de los ',dulos anteriores instalados ha#a con5licto)! )n la dd de producci,n 'irar el lo#! &e pude hacer co'entar la lOnea de EEterpEE!p$ del ',dulo jasperEreport la lOnea de se#uridad (securit$, ir!'odel!cs0 e instalarlo otra 0e/!

)odemos probar a ver si todo #unciona correctamente entrando en empresas e imprimiendo el in#orme de prueba que se crea cuando se instala el m*dulo clicando en ;asper partners/ si todo ha ido bien signi#ica que todo est6 bien instalado &i ocurriese alg<n error lo ver'amos en el log del servidor =ota% 2l in#orme de prueba s*lo est6 disponible si se ha instalado el m*dulo japser reports con datos de ejemplo

Ad'inistraci,n " personali/aci,n " Jaspert reports " =i/ard: 'odel: e'presa, $ el otro ca'po es pro5undidad de los o jetos hacia a ajo Ios #enera un 4'l 6ue es el 6ue le pasare'os a ireport +report: 1!" crear una nue0a cone4i,n nue0a (4'l 5ile) a partir del 5ichero 4'l creado por aopenerp " e4presion: GdataGrecord (e4presi,n 4path) " en create de5inir las 5echas $ los nN'eros 2!" seleccionar un in5or'e, plantilla " en lanco " ot,n dcho so re no' re " edit 6uer$ " 6uer$ lan#ua#e " 4path " a la derecha record " ot,n derecho " set record node " desple#a'os record " nos sale los ca'pos $ los arrantra'os a la parte de a ajo " o? " los tene'os en la parte i/6uierda en F+)L8& " los arrastra'os al in5or'e " count(para contar el nN'ero de direcciones, o e'presas ), lo nor'al es seleccionar el F+)L8 JAL1) " lue#o en la parte derecha en propiedades pode'os editar el tipo letra, etc!!! Las /onas del in5or'e se di0iden en:

> title 9parece s*lo al inicio del in#orme 2l t'tulo se escribe en est6 secci*n 2jemplo% 7+i primera #actura8 > pageHeader 9parece en la parte superior de cada p6gina )uede contener in#ormaci*n como la #echa y hora/ nombre de la organizaci*n/ etc > columnHeader &irve para listar los nombres de los campos que se van a presentar -desplegar0 )or ejemplo% 7=ombre del 2mpleado8/ 7?ora de 2ntrada8/ 7?ora de &alida8/ 7?oras trabajadas8/ 7@echa8/ etc > detail 2n esta secci*n se despliegan los valores correspondientes a las entradas de campos de#inidas en la secci*n anterior )or ejemplo 7;uan )erez8/ 7AB%AA8/ 718%AA8/ 7B8/82AAC-AD-2E8 > columnFooter )uede presentar in#ormaci*n sumarizada para cada uno de los campos )or ejemplo 7.otal de ?oras .rabajadas% 18A8 > pageFooter 9parece en la parte in#erior de cada p6gina 2ste parte puede presentar/ el contador de p6ginas como 7)6gina 1/E8 > summary 2sta secci*n se usa para proporcionar in#ormaci*n sumarizada de los campos presentes en la secci*n 7detail8 por ejemplo para el caso de las horas trabajadas de cada empleado se puede de#inir un objeto gr6#ico tipo 7pie8 para tener una mejor comparaci*n y comprensi*n visual de los datos
P!e una e'presa puede tener 'Ms de una direcci,n, hace una lOnea por cada direcci,n: 1 a 'uchos (iteraci,n, es co'o un 5or al ca'po address): dejarlo en la /ona de detalles $ lue#o ton dcho so re el no' re del in5or'e, propiedades, $ en el ca'po propierties, !!! , a;adir una nue0a, pone'os el no' re de la relaci,n D -P)I)*PE*)LA3+-I& (todo en 'a$Nsculas), en el 0alor de la propiedad entre corchetes (maddressf)

)ara agregar nuestro in#orme dise5ado con i3eport% 9dministraci*n / ;asper 3eports / ;asper 3eports 1rearemos un nuevo registro y seleccio namos el modelo que hace uso este in#orme 2n la pantalla siguiente vemos nuestro in#orme para las #acturas%

4eb services - G0L-RPC Importacin H E(portacin de datos


1"opci,n )3L (e4traen datos de 'Nltiples 5uentes, hacen un trans5or'aci,n $ lo car#an) a?retion ter'inatooor " 0ideo de $outu e de 0arias 5uentes ('$s6l, el?artu/, etc!!!) """Q ter'inatooor ""Q openerp ha$ 6ue pro#ra'ar en ru $ para hacer una inserci,n en la dd 2"opci,n o con C&J e i'portar

Copias de se'uridad
1"opci,n :odNlo autoE ac?up 2"opci,n script utli/ando el co'ando p#Edu'p

http:GGsource5or#e!netGprojectsGautop#s6l ac?upG5ilesG
http:GG===!c$ erciti! i/GtipsGho=to" ac?up"post#res6l"data ases!ht'l

Re*erencias
.ien0enido a los 5oros ===!openerpsite!co'G5oro"openerp
Los 5oros de openerp en launchpad (en la /ona de e4pertos) https:GGlaunchpad!netGopenerp"spainG http:GGopenerp!co'G5oru'G http:GGdoc!openerp!co'G http:GGan#el'o$a!esGcate#or$GopenerpG http:GG===!openerp!co'Gdo=nloadG'odulesG ""Q todos los ',dulos de open)*P http:GG#roups!#oo#le!esG#roupGopenerp"spain Para la descar#a de ',dulos en 0e/ de utili/ar a/aar: http:GGopenerp!co'Gdo=nloadG'odules

También podría gustarte