Conocer la estructura de la base de datos de OpenERP o Tryton es necesario cuando entras en el mundo de terceras aplicaciones como tiendas virtuales o business inteligent. También os puede ser de ayuda en la importación de datos en massa como documentamos en el artículo Importar/Exportar datos maestros en OpenERP.
Tanto OpenERP como Tryton los modelos son clases. Dentro de estas clases definimos los campos del modelo (columns en el caso de OpenERP y atributos de la clase en el caso de Tryton). La comparación entre esta terminología y de la base de datos es:
- Modelo/Objecto: Tabla base de datos
- Atributos/Columns (dicc): Campos de la base de datos
Todo programador que trabaja con python sabe que cualquier clase la podemos heredar y ampliar/modificar su comportamiento. Por tanto, dependiendo de nuestros módulos instalados, cada modelo/objeto (tabla de la base de datos) variará los campos que disponemos. No existe un OpenERP o Tryton igual. Según los módulos, tendremos menos o más campos.
Para saber que campos disponemos, lo podemos consultar gráficamente a nuestro OpenERP o Tryton. Tan fácil como ir a Administración -> Personalización -> Estructura de la base de datos -> Objetos o Campos. Para saber que modelo debemos consultar, ya es conocer un poco la nomenclatura en inglés. Por ejemplo, si busco un pedido de venta, sabré que el modelo es sale.order. Y si busco una linea del pedido de venta, el modelo es sale.order.line. En el caso de la factura, similar. El nombre de la factura es account.invoice y las lineas de las facturas account.invoice.line. Para saber si esta factura es de venta o de compra, o abono, lo dispondremos esta información en el campo tipo de account.invoice:
- out_invoice: Factura de cliente
- in_invoice: Factura de proveedor
- out_refund: Factura de cliente abono
- in_refund: Factura de proveedor abono
Para conocer más a fondo la relación de los modelos/objetos es mirar el código fuente de cada módulo que campos contiene o revisar la documentación de diagramas de los objetos.
Modelos básicos
A continuación se listan los modelos básicos de OpenERP o Tryton:
- res.partner / party.party: Las empresas. La diferencia si es cliente o proveedor es el campo supplier o customer (boleano)
- res.company / company.company: La compañía. Nosotros. Todos los modelos que trabajen en multicompañía, contendrán el campo company_id que relaciona la compañía
- product.product y product.template: Los productos. El modelo product.product hereda de product.template. A nivel de la base de datos en modelo product.product tiene el campo product_tmpl_id que relaciona con la plantilla. Esta diseñado de esta forma para las variantes de productos. Los campos generales, los encontraremos en la plantilla. En los campos concretos de la variante del producto, los encontraremos en product.product. Por ejemplo, una Camiseta Tux, el precio es común en todas las variantes. El color, es por producto. Para trabajar con variantes debemos activar el módulo product_variant_multi que cambia completamente la manera de gestionar los productos.
- sale.order: Pedidos de venta
- purchase.order: Pedidos de compra
- stock.warehouse: Almacenes. Relacionado con una compañía y una dirección
- stock.picking: Albarán. Hay de tres tipos (campo type): entrada, interno y de salida
- stock.move: Movimiento de albarán
- account.invoice: Facturas (el campo tipo diferencia cliente o proveedor y abono). Una factura está relacionado con una cuenta (account.account), dispone varias lineas de impuestos (account.invoice.tax), un diario (account.journal) y movimientos (account.move)
OpenERP le permite la gestión completa de recursos de la empresa (ERP-CRM) para la gestión de la información de la empresa, organización o departamento a través de la aplicación web o de escritorio.