From 3e87ec567ee73b754b06088df2d82294bcf7a30c Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Thu, 16 Jan 2014 14:39:05 +0100 Subject: [PATCH 1/3] [FIX]remove unneeded code to compute qty available in product module, use the one defined in stock instead lp bug: https://launchpad.net/bugs/1268989 fixed bzr revid: csn@openerp.com-20140116133905-en7y1b9tibstcou3 --- addons/product/product.py | 14 -------------- addons/product/product_view.xml | 4 +--- addons/stock/product_view.xml | 16 ++++++++++++++++ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/addons/product/product.py b/addons/product/product.py index 4b63100dbee..20346d0a0ee 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -508,16 +508,6 @@ class product_product(osv.osv): res.setdefault(id, 0.0) return res - def _get_product_available_func(states, what): - def _product_available(self, cr, uid, ids, name, arg, context=None): - return {}.fromkeys(ids, 0.0) - return _product_available - - _product_qty_available = _get_product_available_func(('done',), ('in', 'out')) - _product_virtual_available = _get_product_available_func(('confirmed','waiting','assigned','done'), ('in', 'out')) - _product_outgoing_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('out',)) - _product_incoming_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('in',)) - def _product_lst_price(self, cr, uid, ids, name, arg, context=None): res = {} product_uom_obj = self.pool.get('product.uom') @@ -622,10 +612,6 @@ class product_product(osv.osv): _inherit = ['mail.thread'] _order = 'default_code,name_template' _columns = { - 'qty_available': fields.function(_product_qty_available, type='float', string='Quantity On Hand'), - 'virtual_available': fields.function(_product_virtual_available, type='float', string='Quantity Available'), - 'incoming_qty': fields.function(_product_incoming_qty, type='float', string='Incoming'), - 'outgoing_qty': fields.function(_product_outgoing_qty, type='float', string='Outgoing'), 'price': fields.function(_product_price, type='float', string='Price', digits_compute=dp.get_precision('Product Price')), 'lst_price' : fields.function(_product_lst_price, type='float', string='Public Price', digits_compute=dp.get_precision('Product Price')), 'code': fields.function(_product_code, type='char', string='Internal Reference'), diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index e9aac7419c8..241087c56e2 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -33,14 +33,12 @@ product.product - + - - diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index 277ec5b40e5..583a9585374 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -14,6 +14,22 @@ + + product.stock.tree.inherit + product.product + + + + + + + + + {'red':virtual_available<0, 'blue':virtual_available>=0 and state in ('draft', 'end', 'obsolete'), 'black':virtual_available>=0 and state not in ('draft', 'end', 'obsolete')} + + + + product.template.stock.property.form.inherit product.template From 9dc64a216be3b3b5b893c7c9be6b9c14ef6b56c3 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Fri, 17 Jan 2014 10:20:11 +0100 Subject: [PATCH 2/3] [FIX]add search function and filter for virtual_available and qty_available on product bzr revid: csn@openerp.com-20140117092011-5c0qu2a2xor29g7u --- addons/stock/product.py | 18 ++++++++++++++++++ addons/stock/product_view.xml | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/addons/stock/product.py b/addons/stock/product.py index 6ca53a5ad0d..ff39190355a 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -148,12 +148,29 @@ class product_product(osv.osv): return res + def _search_product_quantity(self, cr, uid, obj, name, args, context): + res = [] + for field, operator, value in args: + if operator == '=': + operator = '==' + + product_ids = self.search(cr, uid, [], context=context) + ids = [] + if product_ids: + for element in self.browse(cr, uid, product_ids, context=context): + if eval(str(element[field]) + operator + str(value)): + ids.append(element.id) + res.append(('id', 'in', ids)) + return res + + _columns = { 'reception_count': fields.function(_stock_move_count, string="Reception", type='integer', multi='pickings'), 'delivery_count': fields.function(_stock_move_count, string="Delivery", type='integer', multi='pickings'), 'qty_available': fields.function(_product_available, multi='qty_available', type='float', digits_compute=dp.get_precision('Product Unit of Measure'), string='Quantity On Hand', + fnct_search=_search_product_quantity, help="Current quantity of products.\n" "In a context with a single Stock Location, this includes " "goods stored at this Location, or any of its children.\n" @@ -167,6 +184,7 @@ class product_product(osv.osv): 'virtual_available': fields.function(_product_available, multi='qty_available', type='float', digits_compute=dp.get_precision('Product Unit of Measure'), string='Forecasted Quantity', + fnct_search=_search_product_quantity, help="Forecast quantity (computed as Quantity On Hand " "- Outgoing + Incoming)\n" "In a context with a single Stock Location, this includes " diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index 583a9585374..7a9218436af 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -11,6 +11,12 @@ + + + + + + From 86e7d60e23643b4cadd32a7273824e5845fc2dc9 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Tue, 21 Jan 2014 11:51:00 +0100 Subject: [PATCH 3/3] [FIX]add some filter to search product qty bzr revid: csn@openerp.com-20140121105100-offsz1so77u4z0x8 --- addons/stock/product_view.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index 7a9218436af..76ae15475ce 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -13,9 +13,11 @@ - - - + + + + +