OpenERP: El ERP de software libre
Archivo categoría Tutorial OpenERP
Configuración multicompañía en OpenERP 6.0
Por Ana Juaristi Olalde - Funcionalidad OpenERP, Manuales técnicos OpenERP, Tutorial OpenERP, modulos openerp - 5 Diciembre 2011
Ultimamente me están llegando algunos correos donde nos preguntan si la multicompañía en OpenERP 6.0 funciona y en caso de que sí, cómo se configura.
Tenemos un par de clientes que arrancarán en Enero con multicompañía y por las pruebas que llevamos hechas, en principio, funciona y es usable. Ahora bien… hay que tener en cuenta algunas cosas y seguir una guía estricta para su configuración. También nos preguntan exactamente en qué consiste y cuándo es mejor opción poner una base de datos en multicompañía o una base de datos independiente para cada compañía. En cuanto a esto último, os pongo la claves para tomar la decisión.
- Se hace todo en una única base de datos por lo que posteriormente es más fácil sacar informes globales tomando de datos de todas las compañías.
- Se puede “compartir” la tabla de clientes/proveedores y la de productos por todas las compañías.
- Se puede especificar que un cliente/proveedor o un producto concreto sólo sea visible y utilizabe por una única compañía
- No se permite que un cliente/proveedor o producto sea asignado a más de una compañía. Es decir, será visible por todas o sólo por una por defecto. Si jugamos con la configuración de compañías padres e hijas, se puede hacer que un cliente / producto sea visible en el padre y todas sus hijas por ejemplo.
- Cada compañía tiene sus usuarios.
- Los datos de operativa de una compañía no los ve la otra, si no se permite. Es decir, un usuario que tiene acceso a pedidos, albaranes, facturas de una compañía, no verá por defecto los de otra compañía.
- Se puede definir un superusuario de una compañía “padre” que vea todo de todas las compañías. Esta compañía padre, solo vale para visualizar datos conjuntos de todas pero no vale para operar, es decir, para crear pedidos, facturas y demás… Esta compañía “padre” no existe legalmente, solo es una compañía ficticia, que se usa para configurar los maestros de todo el resto de compañías y para ver informes globales de todas.
- Cada compañía puede tener sus propios precios por los productos “compartidos”, sus impuestos, su propia tabla de cuentas contables. Cada cliente “compartido” también tendrá una cuenta contable propia en cada compañía.
Es decir, un usuario que entre a ver un producto en la compañía A verá un precio y un usuario que entre a ver el mismo producto en la compañía B verá otro precio (si lo tienen distinto). Igual pasa cuando ves un cliente. - Cada compañía también tiene sus propios almacenes.
- Seguro que me dejo muchas otras cosas pero básicamente esto os puede hacer tener una idea de si poner una multicompañía o hacer cada compañía en una base de datos independiente.
A continuación os pongo una lista de las tareas que hay que llevar a cabo para configurar una multicompañía en OpenERP 6.0
- Crear la nueva compañía en administración / compañías. Esto crea el cliente asociado a la compañía. Completar los datos básicos de cada una, incluido logo y datos básicos para informes, moneda… etc.
- Completar direcciones, sedes y contactos del cliente asociado a cada compañía.
- En contabilidad / configuración / configuración financiera / ejecutar asistente configuración financiera para nueva compañía. Siguiendo los datos del asistente crear la nueva configuración financiera, teniendo en cuenta haber instalado previamente los módulos de localización de cada país.
- Hasta aquí, lo más básico… Curiosamente cuando instalamos una monocompañía, el sistema de base nos carga una serie de datos de configuración que no se incluyen cuando creamos una nueva compañía. Entre ellos:
- Ventas: Crear la/s tienda/s de ventas para cada compañía
- Almacén: Crear la/s ubicación/es y almacén/es de cada compañía.
- Usuarios: Crear los usuarios de cada compañía
- Secuencias: Hay que duplicar manualmente todas las secuencias de la compañía “muestra” creando y asociando al menos las mismas para cada compañía. Cuidado con los nombres ya que posteriormente utilizaremos dichas secuencias para que sean asociadas a los diarios contables. Si no marcamos con un tag o un nombre distinto cada país/compañía, luego nos será complicado asociar la secuencia correcta.
- Diarios: Igual que con las secuencias, hay que crear manualmente muchos de los diarios. Algunos ya se crean durante la ejecución del asistente de configuración financiera pero otros no. Cuidado al asignar las secuencias. Coged en cada diario asociado a cada pais/compañía, las que correspondan. Si no, dará errores al operar. En España, tanto para multicompañía como para monocompañía, es requerido instalar nan_account_invoice_sequence. En los diarios de compra, venta y devolución de facturas, asignar la secuencia de factura correcta a cada tipo de diario.
- Configuración de divisas:
- Si requerimos además de multicompañía, que sea multidivisa, será necesario establecer una base de moneda para cada compañía. Es decir, en España la base monetaria será el Euro pero en USA será el dolar. Por lo tanto, debemos configurar cada moneda con su propia base para cada compañía. El resto de monedas serán calculadas como divisa con respecto a esta base.
- Recomendable instalar el módulo currency_rate_update. Permite que openERP se conecte a un Webservice para la actualización automática de los cambios de divisa. Puede ser ejecutado manualmente o puede establecerse una periodicidad para su ejecución, de forma desatendida.
- Configuración de tarifas:
- Cuidado aquí. Las tarifas de venta y compra deben ser creadas para cada compañía. Cada tarifa Base, debe llevar asignada la moneda base de dicha compañía.
- Se pueden establecer tarifas en otra moneda distinta a la de la compañía, basadas en la tarifa base, de tal forma que se mostrará la moneda en la que se compra o vende, durante todo el ciclo hasta la factura. Sin embargo, al realizar el asiento contable de la factura de compra o venta realizará la conversión a la moneda base en el asiento contable y marcará el importe en divisa. Cuidado también aquí con la moneda base establecida en el diario en que se hace el apunte. Debe ser igual que el de la compañía, si queremos contabilizar todo en moneda única.
- Precios de productos:
- Si se requiere establecer un precio base para cada producto en cada país/moneda, recomendamos instalar product_multi_company. Esto convierte el campo precio en un campo property, lo cual nos permite tener un precio base del producto para cada compañía.
Y creo que es todo. Con esto, hemos conseguido configurar una base de datos multicompañía, con los elementos básicos para funcionar en las áreas de gestión (ventas, compras, almacén, facturación y contabilidad)
Esperando sea de vuestro interés, cordiales saludos:
Ana
Presentación de nuevos módulos de fabricación OpenERP 6.0
Por Ana Juaristi Olalde - Funcionalidad OpenERP, Tutorial OpenERP, modulos openerp - 7 Abril 2011
Por fin puedo presentaros un par de videos sobre la ampliación de funcionalidad que entre Ting y Avanzosc hemos realizado a los módulos de fabricación de OpenERP 6.0.
Aquí va la primera parte, donde se muestra cómo realizar la configuración de los maestros (operaciones, fábrica, máquinas, hoja de ruta o proceso, listas de materiales …)
http://www.openerpsite.com/wp-content/uploads/advanced_manufacturing_tutorial.htm
A continuación la segunda parte de operativa de fabricación en OpenERP donde se muestra cómo crear la orden de fabricación basada en una lista de materiales y un proceso predefinidos además de cómo operar y gestionar dicha orden, sus operaciones, la asignación de operarios y las imputaciones de tiempo de operarios y máquinas.
http://www.openerpsite.com/wp-content/uploads/advanced_manufacturing_tutorial_Second part.htm
Recordaros que los módulos están publicados en nuestra rama en launchpad:
https://launchpad.net/avanzosc
Estamos testeando los módulos y os solicitamos colaboración en esta tarea. Estaremos encantados de que nos registreis bugs en nuestra rama y puesto que aún tenemos funcionalidad pendiente de desarrollar en la Fase 2, también nos gustaría que nos remitais mejoras tanto en funcionalidad como en usabilidad.
Para preguntas funcionales o de uso, por favor utilizad los foros oficiales de openerp, los propios de openerpsite o consultad próximamente el curso que publicaré al respecto en AulaERP.
Muchas gracias por vuestra colaboración:
Ana
Búsquedas completas y amigables
Por Ana Juaristi Olalde - Trucos Openerp, Tutorial OpenERP - 12 Agosto 2009
Uno de los aspectos más importantes en el manejo un ERP es buscar la información que necesitas de una forma fácil y amigable. El siguiente video muestra esta funcionalidad en OpenERP que si en la versión anterior ya era buena, en esta se han superado.
A petición de Nhomar, publico el video donde se muestra.
Saludos!!!
Ana
Integración de OpenERP con Google Maps (No tiene pérdida)
Por Ana Juaristi Olalde - Tutorial OpenERP, modulos openerp - 6 Agosto 2009
Os invito a ver esta demo que muestra como integrar openerp con google maps.
El módulo recientemente publicado, os permitira ubicar a todos los Clientes registrados en OpenERP en un google map, sin necesidad de registrar los datos uno a uno… Además, os permitirá ver la facturación por paises, u os mostrará las rutas y el número de envíos realizados a cada Cliente…
IMPRESIONANTEEEEE!!!!!!
Backup Restore de Base de Datos OpenERP en Windows
Por Ana Juaristi Olalde - Tutorial OpenERP - 31 Julio 2009
Buenas… Acabo de recibir este e-mail de Javier Peirats…
Hola Ana, te paso esta información por si la crees interesante para publicarla en opernerpsite.com
En la versión 5.0.1 para windows, no funciona el sistema de hacer backups y restores desde el cliente GTK.
Me lo he estado mirando y haciendo un par de truquitos… se puede hacer funcionar, te lo detallo al final del email.
Un saludo cordial
Javier Peirats.
Inercia.com
Por supuesto que interesa recibir y publicar este tipo de información. De hecho, este es el objetivo de OpenERPsite. Muchísimas gracias Javier por tu aportación. Aquí van los truquitos que nos envías, tal cual me lo pasas:
Descargar las fuentes de linux, buscar y editar el fichero /src/bin/service/web_services.py
Compilar el fichero utilizando el motor de python:
c:\python25\python -O C:\Python25\Lib\py_compile.py web_services.py
Esto nos generará el fichero web_services.pyo
Detener el servicio de OpenERP Server. Buscar el fichero library.zip y sustituir el fichero web_services.pyo (dentro de la carpeta service) por el que acabamos de compilar.
Para acabar hay que generar los ficheros .bat “pg_dump.bat” y “pg_restore.bat” en el directorio bin del motor de base de datos Postgre (normalmente C:\Archivos de programa\PostgreSQL\8.3\bin)
Hay que poner el password correspondiente a la conexión de base de datos,
se puede encontrar en C:\Archivos de programa\OpenERP Server\ openerp-server.conf en el campo “db_password”
pg_dump.bat
@echo off
set PGPASSWORD=openpgpwd
pg_dump.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
pg_restore.bat:
@echo off
set PGPASSWORD=openpgpwd
pg_restore.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
Como ejecutar varias empresas independientes en un único openERP
Por Ana Juaristi Olalde - Instalación OpenERP, Tutorial OpenERP - 8 Julio 2009
Posteo este minimanual de Nhomar (desde Venezuela) quien ha publicado en nuestros foros las pautas para tener varias empresas independientes en un único OpenERP.
Aquí va.
- Corre el Servidor OpenERP si instalarlo directo desde el Script (esto no es imperativo yo lo hago para sentirme con mayor control)
- Ejecutalo utilizando el parámetro “-c /ruta/fichero/config”
- Crea Varios Ficheros de configuración con distintos “puertos” de conexión.
-8069
-8071
-8073 por ejemplo.
De esta forma tendrás Varios Servers corriendo, si estas manipulando tu servidor vía ssh te recomiendo uses “Screen” programa para enviar la consola a segundo plano, bien útil.
- Para el Servidor Web harás lo mismo, con el parámetro “-c” lo mandas a buscar ficheros con distintos puertos 8080, 8081, 8082… respectivamente.
- Luego configura tu servidor DNS para que reconozca cada dominio de cada empresa.
de esta forma podras tener varias empresas…. y las llamarás de la siguiente forma.
http://www.empresa1.com:8080
http://www.empresa2.com:8081
http://www.empresa3.com:8082
Recuerda que el servidor web “escucha” un único puerto en este caso el 8080, por ende “todo” lo que pida …:8080 verá la empresa asociada a ese puerto, por esto deberás usar claves super-administradores diferentes, y nombres de usuarios y paswds distintos entre empresas, por seguridad.
Para evitar que algunos vean las empresas de otros, puedes dedicarte a configurar IPtables, filtrando las Ip’s de Origen y esas cosas, pero eso es cuento de otro manual…
Para levantarlos automáticamente te recomiendo le eches un ojo al curso gratuito de instalación de openERP en “aulaerp.com” donde incluso hay unos scripts de arranque de varias empresas-servidores ya hechos…
Espero te sirva, si alguien conoce una mejor metodología sería genial saberla.
Esperando sea de vuestro interés…
Ana
Ver stock consolidado de 5 almacenes
Por Ana Juaristi Olalde - Trucos Openerp, Tutorial OpenERP - 28 Junio 2009
Os posteo una pregunta que hicieron en los foros de openerp y que contesté pensando que es algo tan genérico que puede ser válido para todo el mundo.
La pregunta era ¿como ver el stock total de 5 almacenes distintos y que se pueda controlar el stock individual en cada uno de ellos?
Aquí va la respuesta:
Almacén y ubicación en openerp son conceptos distintos
Un almacén en openerp es un objeto que agrupa un sitio de entrada de materiales, otro de salida y una ubicación de stock como tal.
Un almacén cualquiera, es así. Hay una puerta de entrada, una de salida y un sitio donde se ubica el material.
A veces el material va directamente a su ubicación cuando se recibe. No necesita ser chequeado o confirmado a la entrada o a la salida, por lo lo que no es necesario controlar la cantidad de stock en estas ubicaciones y el almacén debería ser configurado poniendo la misma ubicación en los 3 campos
Por lo tanto, si hay 5 tiendas, deberían ser configurados 5 almacenes distintos.
En cuanto a las ubicaciones, se requiere un almacén “principal” que permitirá ver el stock total de las 5 ubicaciones de forma individual y el total de todos ellos.
Por lo tanto… configurad una ubicación “padre” denominada “principal”
Si requerís controlar el material en entrada o salida de cada una de las tiendas, configurad 3 ubicaciones distintas para cada una:
entrada_stock_tienda1
salida_stock_tienda1
stock_tienda1
Si no lo requerís, deberíais configurar solo stock_tienda1, stock_tienda2… etc
Una vez configuradas las ubicaciones, asignadlas a los respectivos almacenes.
Cuando se realizan movimientos de stock en OpenERP, se realizan entre ubicaciones, no entre almacenes
Como una structura de ubicaciones es una estructura en árbol, se puede consultar el stock consolidado en la ubicación principal y el stock individual en cada una de las ubicaciones de cada tienda.
Esperando sea de vuestro interés…
Como asignar campos many to many en OpenERP
Por Ana Juaristi Olalde - Manuales técnicos OpenERP, Tutorial OpenERP - 28 Junio 2009
Buenas…
Os incluyo estos ejemplos de Jordi que me han ayudado a encontrar cómo asociar a un Partner a una categoría por código. Es un pelín enrevesado y por eso os lo pongo. Estuve buscando por ahí y no encontré nada relacionado.
Puedes ver un ejemplo en base/res/partner/partner_demo.
<field eval=”[(6, 0, [ref('res_partner_category_10' ), ref('res_partner_category_5')])]” name=”category_id”/>
Lo importante es asignar al campo
category_id
un valor que sea
[(6, 0, [lista de categorías del partner])]
Por ej al final del archivo sale/stock.py puedes ver como se crean facturas a partir de albaranes, verás cosas como:
self.pool.get(’sale.order. line’).write(cursor, user, [sale_line.id], {‘invoiced’:True, ‘invoice_lines’: [(6, 0, [invoice_line_id])], })
ya que una línea de pedido puede estar relacionada con una o varis lineas de factura (en este caso sólo una, la lista tiene un sólo elemento [invoice_line_id]).
Jordi
pcategory_id = cat_oscom.category_id.id –> Recojo Id categoría OpenERP
self.pool.get(‘res.partner’).write(cr, uid, [partner_id], {‘category_id’:[(6, 0, [pcategory_id])]}) –> Asocio categoría a Parner según ejemplo de Jordi…
return True
