diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 1f53b902761..a734348d8ab 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -404,6 +404,7 @@ class product_pricelist_version(osv.osv): 'company_id': fields.related('pricelist_id','company_id',type='many2one', readonly=True, relation='res.company', string='Company', store={ 'product.pricelist': (_get_product_pricelist, ['company_id'], 20), + 'product.pricelist.version': (lambda self, cr, uid, ids, c=None: ids, ['pricelist_id'], 20), }) } _defaults = { @@ -505,6 +506,13 @@ class product_pricelist_item(osv.osv): result.add(item_id.id) return list(result) + def _get_product_pricelist_version(self, cr, uid, ids, context=None): + result = set() + for version in self.pool['product.pricelist.version'].browse(cr, uid, ids, context=context): + for item_id in version.items_id: + result.add(item_id.id) + return list(result) + _columns = { 'name': fields.char('Rule Name', help="Explicit rule name for this pricelist line."), 'price_version_id': fields.many2one('product.pricelist.version', 'Price List Version', required=True, select=True, ondelete='cascade'), @@ -536,6 +544,8 @@ class product_pricelist_item(osv.osv): 'company_id': fields.related('price_version_id','company_id',type='many2one', readonly=True, relation='res.company', string='Company', store={ 'product.pricelist': (_get_product_pricelist, ['company_id'], 30), + 'product.pricelist.version': (_get_product_pricelist_version, ['pricelist_id'], 30), + 'product.pricelist.item': (lambda self, cr, uid, ids, c=None: ids, ['price_version_id'], 30), }) } diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 7f16023cad4..3cbdcade93e 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -928,6 +928,7 @@ class sale_order_line(osv.osv): 'salesman_id':fields.related('order_id', 'user_id', type='many2one', relation='res.users', store=True, string='Salesperson'), 'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store={ 'sale.order': (_get_sale_order, ['company_id'], 20), + 'sale.order.line': (lambda self, cr, uid, ids, c=None: ids, ['order_id'], 20), }, readonly=True), 'delay': fields.float('Delivery Lead Time', required=True, help="Number of days between the order confirmation and the shipping of the products to the customer", readonly=True, states={'draft': [('readonly', False)]}), 'procurement_ids': fields.one2many('procurement.order', 'sale_line_id', 'Procurements'), diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 37658f14383..53693db61f8 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -4030,7 +4030,6 @@ class stock_package(osv.osv): context = dict(context or {}, active_ids=ids) return self.pool.get("report").get_action(cr, uid, ids, 'stock.report_package_barcode_small', context=context) - def unpack(self, cr, uid, ids, context=None): quant_obj = self.pool.get('stock.quant') for package in self.browse(cr, uid, ids, context=context): @@ -4038,8 +4037,6 @@ class stock_package(osv.osv): quant_obj.write(cr, SUPERUSER_ID, quant_ids, {'package_id': package.parent_id.id or False}, context=context) children_package_ids = [child_package.id for child_package in package.children_ids] self.write(cr, uid, children_package_ids, {'parent_id': package.parent_id.id or False}, context=context) - #delete current package since it contains nothing anymore - self.unlink(cr, uid, ids, context=context) return self.pool.get('ir.actions.act_window').for_xml_id(cr, uid, 'stock', 'action_package_view', context=context) def get_content(self, cr, uid, ids, context=None): diff --git a/addons/web_gantt/static/src/js/gantt.js b/addons/web_gantt/static/src/js/gantt.js index 47692571f4c..fe9cfdf23d4 100644 --- a/addons/web_gantt/static/src/js/gantt.js +++ b/addons/web_gantt/static/src/js/gantt.js @@ -84,7 +84,7 @@ instance.web_gantt.GanttView = instance.web.View.extend({ if (group_bys.length == 0) { group_bys = ["_pseudo_group_by"]; _.each(tasks, function(el) { - el._pseudo_group_by = "Gantt View"; + el._pseudo_group_by = _t("Gantt View"); }); this.fields._pseudo_group_by = {type: "string"}; } diff --git a/openerp/models.py b/openerp/models.py index b5273d466b8..b15276eaf46 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -740,8 +740,11 @@ class BaseModel(object): cls = type(self) methods = [] for attr, func in getmembers(cls, is_constraint): - if not all(name in cls._fields for name in func._constrains): - _logger.warning("@constrains%r parameters must be field names", func._constrains) + for name in func._constrains: + if name not in cls._fields: + _logger.warning("method %s.%s: @constrains parameter %r is not a field name", cls._name, attr, name) + if not cls._fields[name].store: + _logger.warning("method %s.%s: @constrains parameter %r is not stored", cls._name, attr, name) methods.append(func) # optimization: memoize result on cls, it will not be recomputed