<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Angel Moya</title>
	<atom:link href="http://angelmoya.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://angelmoya.es</link>
	<description>Soluciones Open Source</description>
	<lastBuildDate>Mon, 09 Jan 2012 08:26:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Tryton ERP</title>
		<link>http://angelmoya.es/sin-categoria/tryton-erp/</link>
		<comments>http://angelmoya.es/sin-categoria/tryton-erp/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 08:26:47 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[Sin categoría]]></category>
		<category><![CDATA[Mis Proyectos]]></category>
		<category><![CDATA[Tryton]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=560</guid>
		<description><![CDATA[Llevo un tiempo estudiando y siguiendo el fork de OpenERP Tryton, en mi opinión personal aún está muy verde y aunque puede que técnicamente sea superior a OpenERP por el momento creo que OpenERP es mas ágil para realizar implantaciones. En Domatix he publicado un par de artículos, uno explicando que es tryton y otro [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo un tiempo estudiando y siguiendo el fork de OpenERP Tryton, en mi opinión personal aún está muy verde y aunque puede que técnicamente sea superior a OpenERP por el momento creo que OpenERP es mas ágil para realizar implantaciones. En Domatix he publicado un par de artículos, uno explicando<a href="http://www.domatix.com/tryton"> que es tryton</a> y otro mostrando la <a href="http://www.domatix.com/instalacion_de_tryton_en_ubuntu">instalación en ubuntu 11.10</a>, los podéis encontrar en el blog de <a href="http://www.domatix.com/noticias">Domatix</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/sin-categoria/tryton-erp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multidivisa con multicompañía en OpenERP</title>
		<link>http://angelmoya.es/sin-categoria/multidivisa-con-multicompania-en-openerp/</link>
		<comments>http://angelmoya.es/sin-categoria/multidivisa-con-multicompania-en-openerp/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 15:00:51 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[Sin categoría]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=555</guid>
		<description><![CDATA[Desde hace un tiempo estoy metido en una implantación de OpenERP en una empresa internacional, la implantación requería multicompañía y multidivisa, el siguiente post lo escribí en el blog de Domatix para documentar el proceso de configuración y funcionamiento de multidivisa con multicompañía en OpenERP. OpenERP permite trabajar con múltiples divisas, la forma en la [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Desde hace un tiempo estoy metido en una implantación de OpenERP en una empresa internacional, la implantación requería multicompañía y multidivisa, el siguiente post lo escribí en el blog de Domatix para documentar el proceso de configuración y funcionamiento de multidivisa con multicompañía en OpenERP.</p>
<p>OpenERP  permite trabajar con múltiples divisas, la forma en la que permite  trabajar con multidivisa es asociando una moneda principal para la  compañía y un listado de monedas con su tasa de cambio para cada fecha.</p>
<p><span id="more-555"></span></p>
<p>Se  pueden definir tarifas para cada moneda y usarlas en pedidos y  facturas, en los pedidos se indicará la tarifa de la moneda que queramos  utilizar, y en la facturación podremos usar la misma moneda o hacer el  cambio de divisa. Al validar la factura los movimientos contables se  generarán en la moneda principal de la compañía con el cambio divisas  actual almacenado en el sistema.</p>
<p>En este artículo se muestra como configurar y trabajar con varias monedas.</p>
<p>&nbsp;</p>
</div>
<div>
<h1>Configuración de monedas</h1>
<p>La configuración de monedas se encuentra en Contabilidad/Configuración/Varios/Monedas</p>
<p><a rel="rokbox[552 415](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/01.menu_moneda.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/01.menu_moneda.png" alt="" width="552" height="415" /></a></p>
<p>En el listado de monedas aparecen las monedas disponibles en cada  compañía, en este ejemplo se han borrado las monedas que no se van a  utilizar y se ha quitado la información de la compañía para que las  tasas de cambio estén para todas las compañías.</p>
<p><a rel="rokbox[1294 194](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/02.lista_moneda.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/02.lista_moneda.png" alt="" width="550" height="82" /></a></p>
<p>En el formulario de cada moneda esta disponible un listado con las diferentes tasas de cambio en cada fecha.</p>
<p><a rel="rokbox[1296 301](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/03_formulario_moneda.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/03_formulario_moneda.png" alt="" width="550" height="128" /></a></p>
<p>Por comodidad lo ideal es desactivar las monedas que no se utilicen.  Al crear la base de datos de OpenERP creará todas las monedas  disponibles y las asociará a la primera compañía creada.</p>
<p>Trabajando en multicompañía habrá que crear las monedas para cada  compañía y comprobar las reglas de acceso para que desde cada compañía  solo se tenga acceso a las monedas asociadas a si misma. O no asociar la  moneda a ninguna compañía para que estén disponibles para todas las  compañías.</p>
<p>Para cada compañía en el formulario de compañías en el menú  Administración/Compañías/Compañías se indicará la moneda principal de la  compañía.</p>
<p><a rel="rokbox[1288 379](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/04.compaa_moneda.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/04.compaa_moneda.png" alt="" width="552" height="162" /></a></p>
<h1>Actualización de tasas de cambio</h1>
<p>Para actualizar las tasas de cambio se puede hacer manual o  automáticamente obteniendo los datos de internet. Para hacerlo  automáticamente se tendrá que instalar el módulo currency_rate_update y  configurar el actualizador de divisas para cada compañía.</p>
<p>En el formulario de compañías después de instalar el módulo   currency_rate_update habrá una nueva solapa en la que se podrá  configurar la actualización de cambios de divisas.</p>
<p><a rel="rokbox[1293 584](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/06.compaa_tasa_cambio_automatico.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/06.compaa_tasa_cambio_automatico.png" alt="" width="552" height="249" /></a></p>
<p>En cada linea de “Currency updates services” se podrá indicar el  servicio del que obtener el cambio de divisas y para que monedas.</p>
<p><a rel="rokbox[762 528](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/05.webservice_tasa_cambio_automatico.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/05.webservice_tasa_cambio_automatico.png" alt="" width="552" height="382" /></a></p>
<p>Con esto el sistema estará configurado para actualizar los cambios de  divisas. Clickando el botón “Refresh Currencies” se actualizarán las  tasas de cambio en este momento.</p>
<h1>Configuración de tarifas multidivisas</h1>
<p>Para trabajar con multidivisa desde el pedido habrá que crear una tarifa para cada moneda.</p>
<p><a rel="rokbox[436 173](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/07.tarifas_moneda.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/07.tarifas_moneda.png" alt="" width="552" height="219" /></a></p>
<p>La forma mas sencilla es crear primero la tarifa para la moneda  principal con las reglas necesarias y para cada moneda crear una tarifa  con una única regla que indique que el precio lo tomamos de la tarifa  principal, esto hará que las tarifas del resto de monedas serán  dinámicas cogiendo el cambio disponible en cada fecha, pudiendo indicar  un incremento como tanto por ciento o fijo.</p>
<p>En este ejemplo se muestra la regla por defecto para la tarifa en $ usando como base la tarifa en €</p>
<p><a rel="rokbox[792 524](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/08.regla_tarifa_multidivisa.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/08.regla_tarifa_multidivisa.png" alt="" width="552" height="365" /></a></p>
<p>También, si en una regla de tarifa de una una tarifa con una moneda  distinta de la principal de la compañía indicamos que el precio de  tarifa depende del precio de compra o de venta del producto el precio de  tarifa también será dinámico y dependerá del cambio de la moneda.</p>
<p>Un desarrollo interesante sería hacer multidivisa los precios de  compra y venta de la ficha del producto así en las reglas de tarifas se  podría escoger por ejemplo entre el precio de venta en la moneda  principal de la compañía y el precio de venta de la moneda de la tarifa.  Con esto se conseguiría hacer tarifas independientes para cada moneda,  esto por el momento se puede solventar sin desarrollo haciendo una  tarifa indicando un precio fijo para cada producto.</p>
<h1>Pedidos y Facturas</h1>
<p>En el momento de crear un pedido si se indica que use una tarifa con  una moneda distinta de la moneda principal de la compañía se trabajará  con es moneda exactamente igual que con la principal, todo el trabajo de  cambio de divisas lo está haciendo por debajo el sistema de tarifas  para recuperar el precio que corresponda.</p>
<p><a rel="rokbox[751 605](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/09.pedido_multidivisa.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/09.pedido_multidivisa.png" alt="" width="552" height="444" /></a></p>
<p>En la captura del ejemplo el producto tenía un precio de venta de 1  euro, al usar la tarifa en dolares usará la tarifa de cambio para  recuperar el precio de venta en dolares.</p>
<p>&nbsp;</p>
<p>Al crear una factura a partir de un pedido, la factura se creará en  la moneda de la tarifa del pedido. También se puede crear la factura  directamente en la moneda que nos interese y si es necesario realizar  luego el cambio de moneda.</p>
<p><a rel="rokbox[1290 586](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/10.factura_multidivisa_euro.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/10.factura_multidivisa_euro.png" alt="" width="552" height="250" /></a></p>
<p>Con el botón de cambio de divisa permitirá cambiar la divisa de la factura usando el cambio asociado en la fecha actual.</p>
<p><a rel="rokbox[380 184](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/11.cambio_divisa_factura.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/11.cambio_divisa_factura.png" alt="" width="552" height="267" /></a></p>
<p>Después de indicar la nueva moneda y clickar el botón de cambio de moneda actualizará los importes.</p>
<p><a rel="rokbox[1291 586](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/12.factura_multidivisa_dolar.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/12.factura_multidivisa_dolar.png" alt="" width="552" height="250" /></a></p>
<h1>Pago de facturas</h1>
<p>Al realizar el pago de la factura y seleccionar el modo de pago  aparecerán los vencimientos en la moneda principal de la compañía con la  tasa de cambio del momento en el que se validó la factura. Si al  realizar el pago el importe pagado es distinto del importe del  vencimiento por diferencias en las tasas de cambio, habrá que conciliar  el pago con un desajuste, indicando que el desajuste irá contra la  cuenta contable correspondiente (Diferencias positivas de cambio).</p>
<p><a rel="rokbox[1106 577](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/13.pago_multidivisa_dolar.png" rel="lightbox[555]"><img src="http://www.domatix.com/images/stories/articulos/openerp/multidivisa/13.pago_multidivisa_dolar.png" alt="" width="552" height="288" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/sin-categoria/multidivisa-con-multicompania-en-openerp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuevo proceso de instalación de la localización española en OpenERP</title>
		<link>http://angelmoya.es/openerp/nuevo-proceso-de-instalacion-de-la-localizacion-espanola-en-openerp/</link>
		<comments>http://angelmoya.es/openerp/nuevo-proceso-de-instalacion-de-la-localizacion-espanola-en-openerp/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 11:06:57 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Empezar con OpenERP]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=550</guid>
		<description><![CDATA[Este es un artículo que he publicado en el blog de Domatix http://www.domatix.com/noticias: Hace unos días se publicó el nuevo sistema de instalación de la localización española del módulo l10n_account_pyme que se ha sido desarrollado por Domatix. Este desarrollo realizado para OpenERP versión 6 permite instalar la localización española de una forma mucho mas simple [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un artículo que he publicado en el blog de Domatix <a href="http://www.domatix.com/noticias">http://www.domatix.com/noticias</a>:</p>
<div>
<p>Hace unos días se publicó el nuevo sistema de instalación de la  localización española del módulo l10n_account_pyme que se ha sido  desarrollado por <a href="http://www.domatix.com/">Domatix</a>. Este  desarrollo realizado para OpenERP versión 6 permite instalar la  localización española de una forma mucho mas simple y teniendo en cuenta  mas casos.</p>
<p>Vamos a ver lo que se ha conseguido con este nuevo proceso de instalación.</p>
<ul>
<li>La instalación se hace como la instalación estandar de otro módulo,  ya no habrá que cancelar la instalación de la contabilidad a medio.</li>
<li>Instalación del plan contable y creación de periodos y diarios en multicompañía.</li>
<li>La configuración del ejercicio antes era estática comenzando el día 1  de enero y terminando el 31 de diciembre, ahora se puede configurar el  inicio y fin para casos especificos como en educación que comienzan  ejercicio en septiembre.</li>
<li>La configuración de los periodos antes era estatico por trimestres, ahora se puede utilizar periodos mensuales.</li>
<li>Posibilidad de crear o no periodos de apertura y cierre.</li>
</ul>
<p>La instalación de la localización española ahora es tan sencillo como  instalar el módulo l10n_es_account_pyme y ejecutar el asistente de  configuración.</p>
</div>
<div>
<p>Al configurar la contabilidad y seleccionar el plan de cuentas  español se podrá seleccionar para que compañía realizar la instalación,  las fechas de inicio y fin del periodo, la duración de los periodos  (mensuales o trimestrales) y si se desea crear los periodos de apertura,  cierre y para Perdidas y Ganancias.</p>
<p><a rel="rokbox[803 490](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/instalacion_localizacion/01.png" rel="lightbox[550]"><img src="http://www.domatix.com/images/stories/articulos/openerp/instalacion_localizacion/01.png" alt="" width="550" height="336" /></a></p>
<p>En el siguiente paso igual que antes se podrá seleccionar el número de dígitos para las cuentas y los diarios a crear.</p>
<p>Una vez terminado el asistente se podrá abrir el ejercicio creado y  comprobar que se han creado los periodos de Apertura, Cierre y PG</p>
<p><a rel="rokbox[1050 586](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/instalacion_localizacion/02.png" rel="lightbox[550]"><img src="http://www.domatix.com/images/stories/articulos/openerp/instalacion_localizacion/02.png" alt="" width="550" height="307" /></a></p>
<p>Si por cualquier motivo no se marca en la instalación también se  podrán crear estos periodos en un ejercicio que no los tenga con el  botón que se muestra a continuación</p>
<p><a rel="rokbox[1056 490](capturas_openerp)" href="http://www.domatix.com/images/stories/articulos/openerp/instalacion_localizacion/03.png" rel="lightbox[550]"><img src="http://www.domatix.com/images/stories/articulos/openerp/instalacion_localizacion/03.png" alt="" width="550" height="256" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openerp/nuevo-proceso-de-instalacion-de-la-localizacion-espanola-en-openerp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De vuelta de las jornadas OpenERP de Lugo</title>
		<link>http://angelmoya.es/openerp/de-vuelta-de-las-jornadas-openerp-de-lugo/</link>
		<comments>http://angelmoya.es/openerp/de-vuelta-de-las-jornadas-openerp-de-lugo/#comments</comments>
		<pubDate>Tue, 31 May 2011 08:54:55 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Mis Proyectos]]></category>
		<category><![CDATA[Openbravo vs OpenERP]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=542</guid>
		<description><![CDATA[La semana pasada estuve en Lugo, en las jornadas de OpenERP. Como el año pasado tuve la oportunidad de hablar cara a cara con el resto de la comunidad de OpenERP en España y este año me animé a dar una charla explicando mi experiencia con OpenERP y Openbravo y comparándolos a nivel técnico y [...]]]></description>
			<content:encoded><![CDATA[<p>La semana pasada estuve en Lugo, en las jornadas de OpenERP. Como el año pasado tuve la oportunidad de hablar cara a cara con el resto de la comunidad de OpenERP en España y este año me animé a dar una charla explicando mi experiencia con OpenERP y Openbravo y comparándolos a nivel técnico y funcional. También se aprovechó para repartir los trabajos pendientes de la localización y espero ponerme pronto con ello.</p>
<p><span id="more-542"></span></p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/05/angelmoya_lugo.jpg" rel="lightbox[542]"><img class="aligncenter size-medium wp-image-543" title="Angel Moya en las Jornadas OpenERP Spain Lugo 2011" src="http://angelmoya.es/wp-content/uploads/2011/05/angelmoya_lugo-300x201.jpg" alt="Angel Moya en las Jornadas OpenERP Spain Lugo 2011" width="300" height="201" /></a></p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/05/angelmoya_lugo.jpg" rel="lightbox[542]"></a>Enlazo la <a href="http://www.domatix.com/noticias/noticias-open-erp/de-vuelta-de-las-jornadas">entrada del blog de domatix</a>, escrito por Nacho, donde cuenta como fue nuestra asistencia con Domatix en las jornadas.</p>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openerp/de-vuelta-de-las-jornadas-openerp-de-lugo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiempresa en OpenERP V6</title>
		<link>http://angelmoya.es/openerp/multiempresa-en-openerp-v6/</link>
		<comments>http://angelmoya.es/openerp/multiempresa-en-openerp-v6/#comments</comments>
		<pubDate>Tue, 24 May 2011 11:10:08 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Empezar con OpenERP]]></category>
		<category><![CDATA[multicompañía]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=469</guid>
		<description><![CDATA[Este artículo lo he publicado en el blog de OpenERPSpain: Una de las mejoras esperadas en la versión 6 de OpenERP era el soporte multiempresa o multicompañía incluido en el módulo base. En este artículo vamos a ver como configurar la multicompañía y como restringir el acceso de los usuarios. Lo primero que necesitamos para [...]]]></description>
			<content:encoded><![CDATA[<p>Este artículo lo he publicado en el blog de <a href="http://www.openerpspain.com/blog-erp">OpenERPSpain</a>:</p>
<p>Una de las mejoras esperadas en la versión 6 de OpenERP era el soporte multiempresa o multicompañía incluido en el módulo base. En este artículo vamos a ver como configurar la multicompañía y como restringir el acceso de los usuarios.</p>
<p>Lo primero que necesitamos para trabajar con OpenERP en multicompañía es añadir a nuestro usuario el grupo “Useability / Multi companies”, de esta forma podremos ver los campos referentes a la multicompañía.</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/05/multi.01.png" rel="lightbox[469]"><img class="aligncenter size-medium wp-image-531" title="Grupo multi companies manager" src="http://angelmoya.es/wp-content/uploads/2011/05/multi.01-300x175.png" alt="" width="300" height="175" /></a></p>
<p>Si nuestro usuario tiene asignado este grupo podremos ver el menú /Administración/Compañías, en la ventana de Compañías podremos dar de alta las compañías.</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/05/multi.02.png" rel="lightbox[469]"><img class="aligncenter size-medium wp-image-532" title="Administración de compañías" src="http://angelmoya.es/wp-content/uploads/2011/05/multi.02-300x106.png" alt="" width="300" height="106" /></a></p>
<p>Las diferentes compañías se pueden crear en OpenERP en una estructura de jerárquica. Así, si queremos crear un grupo de empresas llamado A formado por las empresas B y C primero crearemos la compañía A y luego al crear las compañías B y C completaremos el campo compañía padre con la compañía A.</p>
<p>En el menú compañía árbol de compañías podemos ver esta estructura.</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/05/multi.03.png" rel="lightbox[469]"><img class="aligncenter size-medium wp-image-533" title="Arbol de compañías" src="http://angelmoya.es/wp-content/uploads/2011/05/multi.03-300x84.png" alt="" width="300" height="84" /></a></p>
<p>Una vez creadas las compañías tenemos que configurar el acceso a los diferentes documentos, pero antes tenemos que tener claro como funciona el control de acceso a cada compañía. Cada usuario tendrá una lista de compañías a las que se le permite el acceso, y entre esas compañías una será la compañía actual.</p>
<p>Si vamos al menú de usuarios podemos ver la compañía actual del usuario:</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/05/multi.04.png" rel="lightbox[469]"><img class="aligncenter size-medium wp-image-534" title="Compañía por defecto del usuario" src="http://angelmoya.es/wp-content/uploads/2011/05/multi.04-300x168.png" alt="" width="300" height="168" /></a></p>
<p>y la lista de compañías a las que tiene acceso:</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/05/multi.05.png" rel="lightbox[469]"><img class="aligncenter size-medium wp-image-535" title="Listado de compañías accesibles" src="http://angelmoya.es/wp-content/uploads/2011/05/multi.05-300x169.png" alt="" width="300" height="169" /></a></p>
<p>De esta forma cuando un usuario se conecte a OpenERP lo hará con una compañía, y no tendrá acceso a los datos de otras compañías aunque esté en su lista de compañías autorizadas.<br />
Importante: Hay que tener cuidado de no trabajar con el usuario admin en multicompañía, ya que este usuario se salta los controles de acceso multicompañía. Así que lo mejor es cuando se cree una compañía crear un usuario administrador de esa compañía con el que hacer toda la configuración.</p>
<p>Ahora que tenemos claro como funciona el control de acceso podemos ver las “reglas de registro”.  Las reglas de registro se encuentran en el menú “Administración/Seguridad” y nos sirven para definir quien va a tener acceso a cada documento. Por ejemplo con reglas de registro podríamos hacer que los comerciales solo puedan ver los pedidos que han creado ellos mismos.</p>
<p>Esto nos va a servir en un entorno multicompañía para definir que documentos podemos ver, por ejemplo:</p>
<ul>
<li>Un pedido de venta lo podrémos ver si no está asociado a ninguna compañía o si esta asociado a nuestra compañía o alguna compañía que esté por debajo en el árbol de compañías:</li>
</ul>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</div></div>
<ul>
<li>Una empresa la podremos ver si no está asociada a ninguna compañía o está asociada a nuestra compañía o alguna compañía por encima o por debajo en el arbol de compañías:</li>
</ul>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">['|','|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</div></div>
<p>Hasta aquí hemos visto como crear las compañías y dar acceso a usuarios y documentos, todavía quedan problemas por resolver para hacer totalmente funcional el sistema multicompañía.</p>
<p>El primer problema que nos encontramos es que la instalación de muchos módulos no está pensada para la multicompañía, así que los objetos creados automáticamente en la instalación de un módulo, como pueden ser las secuencias de pedidos en la instalación del módulo de ventas, sólo se crean para la primera compañía que se ha creado. Lo ideal sería que la creación de esos objetos se crease mediante un wizard, y poder lanzarlo en cada compañía, pero de momento nos toca crear esos datos a mano para cada compañía.</p>
<p>Aunque podemos definir una estructura de árbol en las compañías, la consolidación de la contabilidad no está contemplada en este sistema, aunque tenemos cuentas contables virtuales, pero no una forma automática de crear todas las correspondencias.</p>
<p>Otro problema que se está planteando en el canal irc de openobjects es como podemos restringir diferentes accesos de un usuario para cada compañía, por ejemplo un usuario que tenga acceso a compras y ventas en una compañía pero solo a ventas en otra compañía. De momento tampoco podemos contemplar esto y la solución sería crear dos usuarios distintos.</p>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openerp/multiempresa-en-openerp-v6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Campos multi-idioma en OpenERP</title>
		<link>http://angelmoya.es/openerp/campos-multi-idioma-en-openerp/</link>
		<comments>http://angelmoya.es/openerp/campos-multi-idioma-en-openerp/#comments</comments>
		<pubDate>Tue, 10 May 2011 20:25:19 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Empezar con OpenERP]]></category>
		<category><![CDATA[openerpspain]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=520</guid>
		<description><![CDATA[Llevo una temporada conectándome al canal de IRC de OpenERP (irc://irc.freenode.net/#openobject), es interesante porque siempre hay dudas nuevas para el que esté aprendiendo a programar en OpenERP, puedes ver como otros programadores solucionan los mismos problemas que tu has tenido&#8230; y además practicar inglés. Hace un par de días un programador compartió un problema que [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo una temporada conectándome al canal de IRC de OpenERP (<a href="irc://irc.freenode.net/#openobject.">irc://irc.freenode.net/#openobject</a>), es interesante porque siempre hay dudas nuevas para el que esté aprendiendo a programar en OpenERP, puedes ver como otros programadores solucionan los mismos problemas que tu has tenido&#8230; y además practicar inglés.</p>
<p>Hace un par de días un programador compartió un problema que tenía en el chat, si tienes un campo al que quieres añadir un sufijo que tienes en otro campo, y los dos campos están definidos como traducibles&#8230; ¿ como puedes hacer para combinar los dos campos en todos los idiomas disponibles?<br />
<span id="more-520"></span></p>
<p>Lo primero que tenemos que saber es que cuando llamamos a uno de los métodos del orm en el context le estamos pasando la información del idioma.  </p>
<p>Por otro lado tenemos que tener en cuenta que los idiomas disponibles en nuestra instancia de OpenERP se encuentran en &#8216;res.lang&#8217;.</p>
<p>Así cuando hacemos una operación sobre un campo que tiene habilitada la traducción si le pasamos en el context la información del idioma sólo realizará la operación sobre ese idioma, y si no pasamos la información del idioma realizará la operación sobre el primer idioma (por defecto en_US).</p>
<p>Para hacer una operación sobre todos los idiomas en un campo, tendremos que realizar esa operación tantas veces como idiomas tengamos disponibles en &#8216;res.lang&#8217;, pasando en cada iteración el idioma en el context para realizar la operación.</p>
<p>En el siguiente código de ejemplo lo que hago es cambiar el nombre de un producto por nombre-nombre en todos los idiomas, por ejemplo en mi instalación de OpenERP tengo un producto con el nombre en español &#8216;prueba&#8217; y en inglés &#8216;test&#8217;, después de pasar este código cambia el nombre en español por &#8216;prueba-prueba&#8217; y en inglés &#8216;test-test&#8217;.</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; lang_obj <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">pool</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'res.lang'</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; user_obj <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">pool</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'res.user'</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; product_obj <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">pool</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'product.obj'</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> context <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #008000;">None</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context <span style="color: #66cc66;">=</span> <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># obtengo el idioma del context</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; previous_lang <span style="color: #66cc66;">=</span> context.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'lang'</span><span style="color: black;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># recorro todos los idiomas</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; lang_ids <span style="color: #66cc66;">=</span> lang_obj.<span style="color: black;">search</span><span style="color: black;">&#40;</span>cr<span style="color: #66cc66;">,</span> uid<span style="color: #66cc66;">,</span><span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> lang <span style="color: #ff7700;font-weight:bold;">in</span> lang_obj.<span style="color: black;">browse</span><span style="color: black;">&#40;</span>cr<span style="color: #66cc66;">,</span>uid<span style="color: #66cc66;">,</span>lang_ids<span style="color: black;">&#41;</span>: <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># guardo el idioma en el context</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lang'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> lang.<span style="color: #dc143c;">code</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># obtengo en producto, pasando el nuevo context para que me devuelva en nombre en el idioma pasado</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> product <span style="color: #ff7700;font-weight:bold;">in</span> product_obj.<span style="color: black;">browse</span><span style="color: black;">&#40;</span>cr<span style="color: #66cc66;">,</span>uid<span style="color: #66cc66;">,</span>ids<span style="color: #66cc66;">,</span> context<span style="color: black;">&#41;</span>: <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># escribo el producto con los cambios, pasando el nuevo context para que escriba el nombre en el idioma pasado</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; product_obj.<span style="color: black;">write</span><span style="color: black;">&#40;</span>cr<span style="color: #66cc66;">,</span> uid<span style="color: #66cc66;">,</span> product.<span style="color: #008000;">id</span><span style="color: #66cc66;">,</span> <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:product.<span style="color: black;">name</span>+<span style="color: #483d8b;">'-'</span>+product.<span style="color: black;">name</span><span style="color: black;">&#125;</span><span style="color: #66cc66;">,</span> context<span style="color: black;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; context<span style="color: black;">&#91;</span><span style="color: #483d8b;">'lang'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> previous_lang</div></div>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openerp/campos-multi-idioma-en-openerp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POS en OpenERP</title>
		<link>http://angelmoya.es/openbravo/pos-en-openerp/</link>
		<comments>http://angelmoya.es/openbravo/pos-en-openerp/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 12:03:49 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[Openbravo]]></category>
		<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[POS]]></category>
		<category><![CDATA[openerpspain]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=504</guid>
		<description><![CDATA[Hace unos días conocíamos por medio de http://www.openerpsite.com que se están realizando unos conectores para usar OpenbravoPOS (el TPV de Openbravo) con OpenERP, esto pareció una buena noticia, porque hacía falta un POS que fuese táctil y productivo para OpenERP. Pero viendo el programa del Community Days de la próxima semana hemos visto que hay [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días conocíamos por medio de <a href="http://www.openerpsite.com">http://www.openerpsite.com</a> que se están realizando unos conectores para usar OpenbravoPOS (el TPV de Openbravo) con OpenERP, esto pareció una buena noticia, porque hacía falta un POS que fuese táctil y productivo para OpenERP. Pero viendo el programa del Community Days de la próxima semana hemos visto que hay una presentación de un nuevo POS tactil para OpenERP, en este pos vamos a ver las ventajas e inconvenientes de la integración de OpenbravoPOS con OpenERP y un avance de lo que será el POS tactil de OpenERP.</p>
<p><span id="more-504"></span></p>
<p>La forma de trabajar de OpenbravoPOS con Openbravo es mediante un ETL que llama a los webservices de Openbravo, para la integración con OpenERP habrán usado este mecanismo, supongo que tomando como base los ETL preparados para Openbravo. Al hacerse mediante ETL implica que los datos tienen que replicarse cada cierto tiempo, copiándose del POS al ERP y viceversa. De esta forma es complicado llevar el control del stock desde el POS, aunque se puede configurar para ejecutar el ETL continuamente y que se vallan actualizando casi en tiempo real. La ventaja al usar de esta forma, con bases de datos independientes conectadas por ETL, es que podemos usar el POS aun sin tener conexión al servidor de OpenERP, y cuando retome la conexión sincronizar los datos.</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/04/Openbravo-POS_4.png" rel="lightbox[504]"><img src="http://angelmoya.es/wp-content/uploads/2011/04/Openbravo-POS_4-300x231.png" alt="" title="Openbravo-POS_4" width="300" height="231" class="aligncenter size-medium wp-image-507" /></a></p>
<p>La ventaja que tiene OpenbravoPOS es que es mas visual, mas cómodo para usar con interfaces táctiles, mucho mas productivo. Como inconvenientes, prácticamente no lo actualizan nada, lo tienen muy abandonado. La comunidad ha hecho cosas que no Openbravo no han añadido al código. Por ejemplo OpenTPV es el fork de los que hicieron la implantación en la cadena de comida rápida &#8220;Bocata&#8221;, que para restaurantes es mucho mejor, desarrollaron muchas mejoras que Openbravo no han incluido en su código.</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2010/04/opentpv.png" rel="lightbox[504]"><img src="http://angelmoya.es/wp-content/uploads/2010/04/opentpv-300x216.png" alt="" title="opentpv" width="300" height="216" class="aligncenter size-medium wp-image-126" /></a></p>
<p>Otro inconveniente, por lo menos para mi, es que el código no está tan bien estructurado como OpenERP, es java con swing, y es complicado de extender&#8230; por eso han echo los  ETL llamando desde fuera de la aplicación, en lugar de llamar a los webservices directamente desde la aplicación.</p>
<p>Como conclusión, lo que le falta al POS de OpenERP es una interfaz táctil mas productiva, en mi opinión no necesita un sistema POS completo, ya que toda el backoffice se puede llevar desde un pc con el un cliente de OpenERP. Para mi la solución óptima sería hacer un cliente especifico para usar con el módulo point_of_sales de OpenERP, que permita ver, crear, modificar y pagar los tickets del pos desde otra interface mas productiva.</p>
<p>Esto parece que es lo que se va a presentar en los Community Days de OpenERP, un POS basado en web, enfocado a ser mas productivo con interfaces táctil. Los inconvenientes del ETL ya no los tenemos, por que se conecta directamente a la base de datos de OpenERP, pero ¿qué pasa si se cae la conexión? Parece que también lo han tenido en cuenta, y haciendo uso de “localStorage” de HTML5 podrá almacenar las operaciones que se realicen fuera de linea y enviarlas cuando se retome la conexión. Y para la conexión con hardware propio de los post lo hará mediante un proxy “HTTP → Puerto Serie”, con lo que se aseguran la compatibilidad con el hardware aun siendo una aplicación web.</p>
<p>Como avance aquí tenéis una captura de pantalla:<br />
<a href="http://angelmoya.es/wp-content/uploads/2011/04/openerppos.png" rel="lightbox[504]"><img src="http://angelmoya.es/wp-content/uploads/2011/04/openerppos-300x202.png" alt="" title="openerppos" width="300" height="202" class="aligncenter size-medium wp-image-505" /></a></p>
<p>La presentación del POS:</p>
<div style="width:425px" id="__ss_7547302"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/openobject/openerp-touchscreen-point-of-sale" title="OpenERP Touchscreen Point of Sale">OpenERP Touchscreen Point of Sale</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/7547302" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more presentations from <a href="http://www.slideshare.net/openobject">OpenERP.tv</a> </div>
</p></div>
<p>Y ahora a esperar que lo presenten la semana que viene.</p>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openbravo/pos-en-openerp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Charlas para las Jornadas de OpenERP 2011 en Lugo</title>
		<link>http://angelmoya.es/openerp/charlas-para-las-jornadas-de-openerp-2011-en-lugo/</link>
		<comments>http://angelmoya.es/openerp/charlas-para-las-jornadas-de-openerp-2011-en-lugo/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 17:37:24 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Openbravo]]></category>
		<category><![CDATA[Openbravo vs OpenERP]]></category>
		<category><![CDATA[openerpspain]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=499</guid>
		<description><![CDATA[El 26 y 27 de Mayo en Lugo se van a celebrar las Jornadas de OpenERP 2011. Tenéis mas información en la web del evento. http://www.jornadasopenerp.com/ Para estas jornadas han puesto un sistema de votación para las posibles charlas o ponencias, si quieres ver las posibles charlas y votar por la que mas te interese [...]]]></description>
			<content:encoded><![CDATA[<p>El 26 y 27 de Mayo en Lugo se van a celebrar las Jornadas de OpenERP 2011. Tenéis mas información en la web del evento.</p>
<p><a href="http://www.jornadasopenerp.com/">http://www.jornadasopenerp.com/</a></p>
<p>Para estas jornadas han puesto un sistema de votación para las posibles charlas o ponencias, si quieres ver las posibles charlas y votar por la que mas te interese puedes verlo en esta web.</p>
<p><a href="http://jornadasopenerp2011.uservoice.com/forums/109421-ponencias-y-charlas-jornadas">http://jornadasopenerp2011.uservoice.com/forums/109421-ponencias-y-charlas-jornadas</a></p>
<p>Desde Domatix ya hemos confirmado nuestra asistencia y colaboración, una de las charlas ha sido propuesta por nosotros, y si todo sale bien yo seré el ponente. En la charla &#8220;OpenERP vs Openbravo&#8221; explicare mi experiencia con Openbravo, y los motivos por los que he encaminado mi carrera profesional hacia OpenERP.</p>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openerp/charlas-para-las-jornadas-de-openerp-2011-en-lugo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Documentación de OpenERP V6</title>
		<link>http://angelmoya.es/openerp/documentacion-de-openerp-v6/</link>
		<comments>http://angelmoya.es/openerp/documentacion-de-openerp-v6/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 20:45:57 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Empezar con OpenERP]]></category>
		<category><![CDATA[openerpspain]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=465</guid>
		<description><![CDATA[Ya han actualizado http://doc.openerp.com a la versión 6, parece que han ampliado algunos puntos&#8230; habrá que verlo a fondo. Pero lo que mas me ha llamado la atención es que por fin han añadido otros idiomas. Si miras en la parte superior derecha hay un enlace para ver la documentación de la versión 5 y [...]]]></description>
			<content:encoded><![CDATA[<p>Ya han actualizado <a href="http://doc.openerp.com">http://doc.openerp.com</a> a la versión 6, parece que han ampliado algunos puntos&#8230; habrá que verlo a fondo. Pero lo que mas me ha llamado la atención es que por fin han añadido otros idiomas. Si miras en la parte superior derecha hay un enlace para ver la documentación de la versión 5 y otro para cambiar de idioma. Entre los idiomas disponibles está el español, pero en realidad a primera vista lo único que hay traducido es el prefacio y poco mas, que traduje cuando hice el manual para colaborar en la traducción.</p>
<p>Ahora que esta accesible a ver si retomamos lo de traducir la documentación, si quieres empezar puedes ver como colaborar en la traducción en esta entrada <a href="http://angelmoya.es/openerp/traduccion-de-la-documentacion-de-open-erp/">http://angelmoya.es/openerp/traduccion-de-la-documentacion-de-open-erp/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openerp/documentacion-de-openerp-v6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Como crear informes RML desde OpenOffice para OpenERP</title>
		<link>http://angelmoya.es/openerp/como-crear-informes-rml-desde-openoffice-para-openerp/</link>
		<comments>http://angelmoya.es/openerp/como-crear-informes-rml-desde-openoffice-para-openerp/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 19:51:41 +0000</pubDate>
		<dc:creator>Angel Moya</dc:creator>
				<category><![CDATA[OpenERP]]></category>
		<category><![CDATA[Empezar con OpenERP]]></category>

		<guid isPermaLink="false">http://angelmoya.es/?p=435</guid>
		<description><![CDATA[En OpenERP hay muchas alternativas a la hora de hacer informes, personalmente me gusta mucho Jasper, porque visualmente puedes hacer lo que quieras, pero el motor por defecto de OpenERP es OpenReports, este motor permite imprimir informes a partir de ficheros RML. Un fichero RML es un fichero XML que define unos datos y una [...]]]></description>
			<content:encoded><![CDATA[<p>En OpenERP hay muchas alternativas a la hora de hacer informes, personalmente me gusta mucho Jasper, porque visualmente puedes hacer lo que quieras, pero el motor por defecto de OpenERP es OpenReports, este motor permite imprimir informes a partir de ficheros RML. Un fichero RML es un fichero XML que define unos datos y una estructura para que el motor de OpenReport pueda transformarlo en un informe HTML o PDF. El RML que se transforma en HTML o en PDF tiene los datos en bruto, es decir si quiero imprimir un listado de clientes, el RML tiene ese listado que voy a imprimir, pero puedo crear un RML con etiquetas y el motor de OpenERP se encargará de sustituirlas por los datos referenciados. Pero&#8230; ¿Como puedo crear ese informe RML? Hacer un XML e intentar que salga como queremos visualmente es muy pesado, vamos a ver como hacer un informe en OpenOffice, transformarlo en RML con SXW2RML y añadirlo a nuestro módulo.</p>
<p><span id="more-435"></span><br />
La información de este manual la he sacado del capítulo <a href="http://doc.openerp.com/developer/3_11_reports/11_1_openoffice_report.html"><em>OpenOffice.org Reports</em> del developer book</a>, puedes consultarlo si algo no queda claro o para ampliar información.</p>
<p>Para añadir un informe en nuestro módulo tenemos que crear una carpeta reports y dentro crearemos el fichero.rml que es el propio informe , otro fichero con la clase python para imprimir el informe, el __init__.py, un fichero xml para la vista, define donde lo vamos a imprimir, y añadiremos la ruta del xml al fichero __openerp__.py del modulo y el import report al __init__.py.</p>
<h2>Preparando el informe en OpenOffice</h2>
<p>Vamos por partes, lo primero es obtener el informe.rml, vamos ha obtenerlo a partir de un documento de OpenOffice. Vamos a crear en OpenOffice un documento con los la estructura que queramos para nuestro informe, para que OpenERP complete nuestro informe con datos dinamicos tendremos que indicar los objetos que queremos mostrar con etiquetas escritas entre corchetes.</p>
<p>Lo normal es lanzar el informe asociándolo a un objeto desde la vista del grid seleccionando varias instancias o desde la vista para una única instancia del objeto. Para hacer esto tendremos que indicar en nuestro informa que vamos a imprimir los campos repitiendo sobre un objeto.</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[[repeatIn(objects,'o')]</div></div>
<p>donde &#8220;objects&#8221; es el parámetro del que obtenemos el objeto a imprimir de OpenERP y &#8220;o&#8221; es el nombre que le hemos dado para referenciarlo en el informe.</p>
<p>después de esta instrucción podremos imprimir cualquier campo del objeto sobre el que lancemos el objeto de la siguiente forma</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[[o.campo]]</div></div>
<p>donde &#8220;campo&#8221; es un campo simple del objeto &#8220;o&#8221; pasado para ejecutar el informe.</p>
<p>Si uno de los campos del objeto es otro objeto y la relación es one2many podemos imprimir los campos así:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[[o.campo_one2many.campo1]]<br />
[[o.campo_one2many.campo2]]</div></div>
<p>donde &#8220;campo1&#8243; y &#8220;campo2&#8243; son campos del objeto asociado en el campo &#8220;campo_one2many&#8221; del objeto &#8220;o&#8221;.</p>
<p>Para los campos del tipo many2many o many2one, tendremos que iterar, porque el objeto que estamos imprimiendo puede tener varios objetos asociados, esto lo podemos hacer así:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[[repeatIn(o.many_ids,'many_etiq')]]<br />
[[many_etiq.campo1]]<br />
[[many_etiq.campo2]]</div></div>
<p>donde &#8220;many_ids&#8221; es un campo del tipo many2many o many2one del objeto &#8220;o&#8221;, &#8220;many_etiq&#8221; es el nombre que le hemos dado para referenciarlo y &#8220;campo1&#8243; y &#8220;campo2&#8243; son campos del objeto relacionado en el campo &#8220;many_ids&#8221;.</p>
<p>Una vez tienes has creado el documento, para poder convertirlo en rml hay que guardarlo con la extensión .swx.<br />
Para ver un ejemplo puedes mirar en el modulo sale, el informe sale-order.sxw en addons/sale/report, y para verlo impreso ve al formulario de pedidos de venta y dale a imprimir.</p>
<h2>De OpenOffice a RML</h2>
<p>Ahora vamos a ver como transformar este documento .sxw a uno .rml. Para hacerlo vamos ha utilizar sxw2rml, si miras en la documentación, a dia de hoy está indicado para la versión 5, ha cambiado un poco para la versión 6 de OpenERP.</p>
<p>En la versión 5 el ejecutable erá tiny_swx2rml.py y se podía encontrar en:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">server<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>addons<span style="color: #000000; font-weight: bold;">/</span>base_report_designer<span style="color: #000000; font-weight: bold;">/</span>wizard<span style="color: #000000; font-weight: bold;">/</span>tiny_sxw2rml<span style="color: #000000; font-weight: bold;">/</span>tiny_sxw2rml.py</div></div>
<p>Para la versión 6 se llama openerp_sxw2rml.py y se encuentra en:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">server<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>addons<span style="color: #000000; font-weight: bold;">/</span>base_report_designer<span style="color: #000000; font-weight: bold;">/</span>wizard<span style="color: #000000; font-weight: bold;">/</span>openerp_sxw2rml<span style="color: #000000; font-weight: bold;">/</span>openerp_sxw2rml.py</div></div>
<p>Suponiendo que queremos añadir el informe en un módulo que estamos desarrollando al que llamamos &#8220;mi_modulo&#8221; y tenemos su carpeta en el directorio addons del servidor y nuestro documento de openoffice lo llamamos &#8220;mi_informe.sxw&#8221; y lo tenemos en la carpeta &#8220;reports&#8221; de nuestro informe, para convertir nuestro informe a rml trabajando con la versión 6 podemos hacer lo siguiente:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> server<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>addons<span style="color: #000000; font-weight: bold;">/</span>base_report_designer<span style="color: #000000; font-weight: bold;">/</span>wizard<span style="color: #000000; font-weight: bold;">/</span>openerp_sxw2rml<span style="color: #000000; font-weight: bold;">/</span><br />
python .<span style="color: #000000; font-weight: bold;">/</span>openerp_sxw2rml.py ..<span style="color: #000000; font-weight: bold;">/</span>..<span style="color: #000000; font-weight: bold;">/</span>mi_modulo<span style="color: #000000; font-weight: bold;">/</span>report<span style="color: #000000; font-weight: bold;">/</span>mi_informe.sxw <span style="color: #000000; font-weight: bold;">&amp;</span>gt; ..<span style="color: #000000; font-weight: bold;">/</span>..<span style="color: #000000; font-weight: bold;">/</span>mi_modulo<span style="color: #000000; font-weight: bold;">/</span>report<span style="color: #000000; font-weight: bold;">/</span>mi_informe.rml</div></div>
<h2>Añadiendo el informe al módulo</h2>
<p>Hasta aquí ya tenemos nuestro informe rml, vamos a ver como imprimirlo desde OpenERP. Lo primero que necesitamos es crear el directorio report en nuestro módulo, dentro de este directorio incluiremos el informe rml, opcionalmente el swx para poder modificarlo luego. Necesitaremos también dentro de este directorio un fichero .py que será la clase que generará el report y el __init__.py con el import del fichero anterior. Para incluir el enlace en una ventana determinada tendrémos que crear un xml, en el que indicaremos desde donde lo imprimimos. Por último tendremos que incluir el una línea con &#8220;import report&#8221; dentro del __init__.py del módulo y incluir el xml en el __openerp__.py. Podemos ver estos archivos tomando como ejemplo el pedido de venta ( sale order), que esta en el módulo sale.</p>
<p><a href="http://angelmoya.es/wp-content/uploads/2011/01/files.png" rel="lightbox[435]"><img class="aligncenter size-medium wp-image-450" title="files rml openerp" src="http://angelmoya.es/wp-content/uploads/2011/01/files-191x300.png" alt="" width="191" height="300" /></a></p>
<p>Si miramos el contenido de sale_order.py</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span></div></div>
<p>from report import report_sxw</p>
<p>class order(report_sxw.rml_parse):<br />
def __init__(self, cr, uid, name, context=None):<br />
super(order, self).__init__(cr, uid, name, context=context)<br />
self.localcontext.update({<br />
&#8216;time&#8217;: time,<br />
})</p>
<p>report_sxw.report_sxw(&#8216;report.sale.order&#8217;, &#8216;sale.order&#8217;, &#8216;addons/sale/report/sale_order.rml&#8217;, parser=order, header=&#8221;external&#8221;)</p>
<p>La clase order es el parser, que hereda de report_sxw.rml_parse, y genera el informe, reemplazando las etiquetas por los datos del objeto. En la llamada a report_sxw.report_sxw(&#8230;) le pasamos esta clase como parser. El primer parámetro es el nombre del propio informe, el segundo sobre que clase se van a sacar los datos, el tercero es la ruta del fichero rml, y el último indica si queremos imprimir la cabecera, si ponemos &#8220;true&#8221; imprimirá la cabecera configurada en OpenERP.</p>
<p>Vamos a ver el xml de la vista que indica que se puede imprimir este informe desde la ventana de pedidos de venta, el fichero es sale_report.xml</p>
<p>Por último para añadir estos fichero al módulo tendremos que añadir en el __init__.py del módulo:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">import</span> report</div></div>
<p>en el en el __init__.py del directorio report:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">import</span> sale_order</div></div>
<p>Y en el __openerp__.py, tenemos que añadir el sale_report.xml para que lo cargue con el módulo.</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;'update_xml': [... ,'sale_report.xml', ]</div></div>
<p>Y con esto ya tenemos el informe metido en el módulo, si quieres probarlo recuerda que tendrás que reiniciar el servidor con la opción -u y el nombre del módulo para recargarlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://angelmoya.es/openerp/como-crear-informes-rml-desde-openoffice-para-openerp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

