Viele Verhaltensweisen in OpenERP/Odoo lassen sich an die individuellen Bedürfnisse des Anwenders anpassen. Oft kann schon mit kleinen Änderungen das ERP-System schneller und fehlerfreier bedient werden. In OpenERP/Odoo gibt es von Haus aus keine Möglichkeit die standardmäßig verwendete Mengeneinheit zu konfigurieren; es wird immer die zuerst in der Datenbank gespeicherte herangezogen: Einheit(en). Diese fehlende Flexibilität kann mit unserer Erweiterung „Product Default UoM“ nachgerüstet werden.
Über ein Konfigurationsmenü kann die gewünschte Mengeneinheit festgelegt werden. Diese ist dann beispielsweise beim Anlegen eines neuen Produktes schon vorausgewählt.
Technisch wird das ganze realisiert, indem die relevanten Datenmodelle (product.template und sale.order.line) so überladen werden, dass sie den Standardwert für Mengeneinheiten aus einem Systemparameter „product.default_uom“ beziehen. Auf solch einen Systemparameter, der immer ein String ist, kann man in einem Model mittels
self.pool.get("ir.config_parameter").get_param(cr, uid, "product.default_uom")
zugreifen. Solch ein Parameter kann zwar über das Menü Einstellungen > Technisch > Parameter > Systemparameter verwaltet werden; dies ist jedoch für den Endanwender nicht komfortabel. Um eine Konfigurationsmöglichkeit per Drop-Down-Auswahl (wie oben in Screenshot 1 gezeigt) zu erhalten, muss man eines der Konfigurations-Models überladen. Für die Standard-Mengeneinheit passt sale.config.settings am besten. Das überladende Model benötigt ein Feld, das dem zu konfigurierenden Wert entspricht. In diesem Fall ist es ein fields.many2one(‚product.uom‘), da es sich um eine Mengeneinheit handelt. Zusätzlich zum Feld (hier product_default_uom) benötigt man noch zwei Methoden get_default_product_default_uom und set_product_default_uom. Diese diesen als Schnittstelle zwischen dem Systemparameter, der immer ein String ist, und dem Konfigurationseintrag, der vom Typ Mengeneinheit ist.
from openerp.osv import fields, osv class sale_configuration(osv.TransientModel): _inherit = 'sale.config.settings' _columns = { 'product_default_uom': fields.many2one('product.uom', 'Default Unit of Measure') } def get_default_product_default_uom(self, cr, uid, ids, context=None): product_uom = self.pool.get('product.uom') default_id = self.pool.get("ir.config_parameter").get_param(cr, uid, "product.default_uom") default_uom = None if default_id: default_uom = product_uom.browse(cr, uid, int(default_id), context=context) if default_uom: default_uom = default_uom.id return {'product_default_uom' : default_uom } def set_product_default_uom(self, cr, uid, ids, context=None): config = self.browse(cr, uid, ids) config = config and config[0] self.pool.get('ir.config_parameter').set_param(cr,uid, 'product.default_uom', str(config.product_default_uom.id)) return True
Man findet das Modul bei den OpenERP/Odoo Apps:
https://apps.openerp.com/apps/7.0/product_default_uom/
oder als Source:
https://code.launchpad.net/~initos.com/initos.com-openerp-addons/7.0
Falls Sie auch Interesse an OpenERP/Odoo haben oder unsere Expertise für Ihr ERP-Projekt benötigen, dann nehmen Sie mit uns Kontakt auf. Wir helfen Ihnen gerne weiter! Sie erreichen uns entweder telefonisch unter +49 4105 135 03 99, per Mail an sales@initos.com oder über unser Kontaktformular.