From 8502d3854cdafc40db80151c2cc418448d5292d8 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Wed, 3 Sep 2014 22:25:00 +0200 Subject: [PATCH] [IMP] Courtesy of kevin3274 issue 1258: orderpoint should have float multiple instead of integer --- addons/stock/procurement.py | 2 +- addons/stock/stock.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/addons/stock/procurement.py b/addons/stock/procurement.py index aa097cc664a..444bc9ec72c 100644 --- a/addons/stock/procurement.py +++ b/addons/stock/procurement.py @@ -350,7 +350,7 @@ class procurement_order(osv.osv): if prods < op.product_min_qty: qty = max(op.product_min_qty, op.product_max_qty) - prods - reste = qty % op.qty_multiple + reste = op.qty_multiple > 0 and qty % op.qty_multiple or 0.0 if reste > 0: qty += op.qty_multiple - reste diff --git a/addons/stock/stock.py b/addons/stock/stock.py index bbfa193b748..9207e279970 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -3991,13 +3991,16 @@ class stock_warehouse_orderpoint(osv.osv): 'product_id': fields.many2one('product.product', 'Product', required=True, ondelete='cascade', domain=[('type', '=', 'product')]), 'product_uom': fields.related('product_id', 'uom_id', type='many2one', relation='product.uom', string='Product Unit of Measure', readonly=True, required=True), 'product_min_qty': fields.float('Minimum Quantity', required=True, + digits_compute=dp.get_precision('Product Unit of Measure'), help="When the virtual stock goes below the Min Quantity specified for this field, Odoo generates "\ "a procurement to bring the forecasted quantity to the Max Quantity."), 'product_max_qty': fields.float('Maximum Quantity', required=True, + digits_compute=dp.get_precision('Product Unit of Measure'), help="When the virtual stock goes below the Min Quantity, Odoo generates "\ "a procurement to bring the forecasted quantity to the Quantity specified as Max Quantity."), - 'qty_multiple': fields.integer('Qty Multiple', required=True, - help="The procurement quantity will be rounded up to this multiple."), + 'qty_multiple': fields.float('Qty Multiple', required=True, + digits_compute=dp.get_precision('Product Unit of Measure'), + help="The procurement quantity will be rounded up to this multiple. If it is 0, the exact quantity will be used. "), 'procurement_ids': fields.one2many('procurement.order', 'orderpoint_id', 'Created Procurements'), 'group_id': fields.many2one('procurement.group', 'Procurement Group', help="Moves created through this orderpoint will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.", copy=False), 'company_id': fields.many2one('res.company', 'Company', required=True), @@ -4011,7 +4014,7 @@ class stock_warehouse_orderpoint(osv.osv): 'company_id': lambda self, cr, uid, context: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.warehouse.orderpoint', context=context) } _sql_constraints = [ - ('qty_multiple_check', 'CHECK( qty_multiple > 0 )', 'Qty Multiple must be greater than zero.'), + ('qty_multiple_check', 'CHECK( qty_multiple >= 0 )', 'Qty Multiple must be greater than or equal to zero.'), ] _constraints = [ (_check_product_uom, 'You have to select a product unit of measure in the same category than the default unit of measure of the product', ['product_id', 'product_uom']),