X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=addons%2Fstock%2Fproduct.py;fp=addons%2Fstock%2Fproduct.py;h=23f4d3f42bdbf339c3c0dae80fb1a570508f2283;hb=fcd06145dda957a83e687fd033ff294c407da5f4;hp=dd88f0067b0926559f922145df8237429b63335f;hpb=d9610efd979c974e540353716f8d0b9ecdb9d952;p=odoo%2Fodoo.git diff --git a/addons/stock/product.py b/addons/stock/product.py index dd88f00..23f4d3f 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -23,6 +23,7 @@ from openerp.osv import fields, osv from openerp.tools.translate import _ from openerp.tools.safe_eval import safe_eval as eval import openerp.addons.decimal_precision as dp +from openerp.tools.float_utils import float_round class product_product(osv.osv): _inherit = "product.product" @@ -114,8 +115,8 @@ class product_product(osv.osv): domain_products = [('product_id', 'in', ids)] domain_quant, domain_move_in, domain_move_out = self._get_domain_locations(cr, uid, ids, context=context) - domain_move_in += self._get_domain_dates(cr, uid, ids, context=context) + [('state', 'not in', ('done', 'cancel'))] + domain_products - domain_move_out += self._get_domain_dates(cr, uid, ids, context=context) + [('state', 'not in', ('done', 'cancel'))] + domain_products + domain_move_in += self._get_domain_dates(cr, uid, ids, context=context) + [('state', 'not in', ('done', 'cancel', 'draft'))] + domain_products + domain_move_out += self._get_domain_dates(cr, uid, ids, context=context) + [('state', 'not in', ('done', 'cancel', 'draft'))] + domain_products domain_quant += domain_products if context.get('lot_id') or context.get('owner_id') or context.get('package_id'): if context.get('lot_id'): @@ -136,14 +137,18 @@ class product_product(osv.osv): moves_in = dict(map(lambda x: (x['product_id'][0], x['product_qty']), moves_in)) moves_out = dict(map(lambda x: (x['product_id'][0], x['product_qty']), moves_out)) res = {} - for id in ids: + for product in self.browse(cr, uid, ids, context=context): + id = product.id + qty_available = float_round(quants.get(id, 0.0), precision_rounding=product.uom_id.rounding) + incoming_qty = float_round(moves_in.get(id, 0.0), precision_rounding=product.uom_id.rounding) + outgoing_qty = float_round(moves_out.get(id, 0.0), precision_rounding=product.uom_id.rounding) + virtual_available = float_round(quants.get(id, 0.0) + moves_in.get(id, 0.0) - moves_out.get(id, 0.0), precision_rounding=product.uom_id.rounding) res[id] = { - 'qty_available': quants.get(id, 0.0), - 'incoming_qty': moves_in.get(id, 0.0), - 'outgoing_qty': moves_out.get(id, 0.0), - 'virtual_available': quants.get(id, 0.0) + moves_in.get(id, 0.0) - moves_out.get(id, 0.0), + 'qty_available': qty_available, + 'incoming_qty': incoming_qty, + 'outgoing_qty': outgoing_qty, + 'virtual_available': virtual_available, } - return res def _search_product_quantity(self, cr, uid, obj, name, domain, context):