diff --git a/addons/stock/wizard/stock_picking_return.py b/addons/stock/wizard/stock_picking_return.py index eb2c5328352..23240eb1e88 100644 --- a/addons/stock/wizard/stock_picking_return.py +++ b/addons/stock/wizard/stock_picking_return.py @@ -4,6 +4,7 @@ from odoo import api, fields, models, _ from odoo.addons import decimal_precision as dp from odoo.exceptions import UserError +from odoo.tools.float_utils import float_round class ReturnPickingLine(models.TransientModel): @@ -12,6 +13,7 @@ class ReturnPickingLine(models.TransientModel): product_id = fields.Many2one('product.product', string="Product", required=True, domain="[('id', '=', product_id)]") quantity = fields.Float("Quantity", digits=dp.get_precision('Product Unit of Measure'), required=True) + uom_id = fields.Many2one('product.uom', string='Unit of Measure', related='move_id.product_uom') wizard_id = fields.Many2one('stock.return.picking', string="Wizard") move_id = fields.Many2one('stock.move', "Move") @@ -49,7 +51,8 @@ class ReturnPicking(models.TransientModel): move_dest_exists = True quantity = move.product_qty - sum(move.move_dest_ids.filtered(lambda m: m.state in ['partially_available', 'assigned', 'done']).\ mapped('move_line_ids').mapped('product_qty')) - product_return_moves.append((0, 0, {'product_id': move.product_id.id, 'quantity': quantity, 'move_id': move.id})) + quantity = float_round(quantity, precision_rounding=move.product_uom.rounding) + product_return_moves.append((0, 0, {'product_id': move.product_id.id, 'quantity': quantity, 'move_id': move.id, 'uom_id': move.product_id.uom_id.id})) if not product_return_moves: raise UserError(_("No products to return (only lines in Done state and not fully returned yet can be returned)!")) @@ -72,6 +75,7 @@ class ReturnPicking(models.TransientModel): vals = { 'product_id': return_line.product_id.id, 'product_uom_qty': return_line.quantity, + 'product_uom': return_line.product_id.uom_id.id, 'picking_id': new_picking.id, 'state': 'draft', 'location_id': return_line.move_id.location_dest_id.id, diff --git a/addons/stock/wizard/stock_picking_return_views.xml b/addons/stock/wizard/stock_picking_return_views.xml index b7f15e73dbb..797eab283c3 100644 --- a/addons/stock/wizard/stock_picking_return_views.xml +++ b/addons/stock/wizard/stock_picking_return_views.xml @@ -20,6 +20,7 @@ + diff --git a/addons/stock_account/views/stock_account_views.xml b/addons/stock_account/views/stock_account_views.xml index 20c8f9fcd3b..e169a2b7a8d 100644 --- a/addons/stock_account/views/stock_account_views.xml +++ b/addons/stock_account/views/stock_account_views.xml @@ -43,7 +43,7 @@ stock.return.picking - +