From 8739885586af6b1b36781c27249d1a60e405b2f4 Mon Sep 17 00:00:00 2001 From: Leonardo Pistone Date: Mon, 30 Mar 2015 12:23:58 +0200 Subject: [PATCH] fix reservation_count computation 1. Make it float, because quantity is float. 2. Respect unit of measure (instead of adding apples and pears). 3. Do that for both product and template. 4. Test the above. --- stock_reserve/model/product.py | 8 ++++---- stock_reserve/test/stock_reserve.yml | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/stock_reserve/model/product.py b/stock_reserve/model/product.py index 5256f3d16..46e394e57 100644 --- a/stock_reserve/model/product.py +++ b/stock_reserve/model/product.py @@ -25,7 +25,7 @@ from openerp import models, fields, api class ProductTemplate(models.Model): _inherit = 'product.template' - reservation_count = fields.Integer( + reservation_count = fields.Float( compute='_reservation_count', string='# Sales') @@ -36,7 +36,7 @@ class ProductTemplate(models.Model): domain = [('product_id', 'in', product_ids), ('state', 'in', ['draft', 'assigned'])] reservations = StockReservation.search(domain) - self.reservation_count = sum(reserv.product_uom_qty + self.reservation_count = sum(reserv.product_qty for reserv in reservations) @api.multi @@ -56,7 +56,7 @@ class ProductTemplate(models.Model): class ProductProduct(models.Model): _inherit = 'product.product' - reservation_count = fields.Integer( + reservation_count = fields.Float( compute='_reservation_count', string='# Sales') @@ -67,7 +67,7 @@ class ProductProduct(models.Model): domain = [('product_id', '=', product_id), ('state', 'in', ['draft', 'assigned'])] reservations = StockReservation.search(domain) - self.reservation_count = sum(reserv.product_uom_qty + self.reservation_count = sum(reserv.product_qty for reserv in reservations) @api.multi diff --git a/stock_reserve/test/stock_reserve.yml b/stock_reserve/test/stock_reserve.yml index 66b6f412e..0a4e58adb 100644 --- a/stock_reserve/test/stock_reserve.yml +++ b/stock_reserve/test/stock_reserve.yml @@ -62,6 +62,13 @@ - !python {model: stock.reservation}: | self.reserve(cr, uid, [ref('reserv_sorbet2')], context=context) +- + I check the reserved amount of the product and the template +- + !python {model: product.product, id: product_sorbet}: | + from nose.tools import * + assert_almost_equal(6.5, self.reservation_count) + assert_almost_equal(6.5, self.product_tmpl_id.reservation_count) - Then the reservation should be assigned and have reserved a quant -