summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/stock/wizard/stock_picking_return.py23
-rw-r--r--addons/stock_account/models/stock.py12
2 files changed, 21 insertions, 14 deletions
diff --git a/addons/stock/wizard/stock_picking_return.py b/addons/stock/wizard/stock_picking_return.py
index eba3a4c3f74..c7b0ed32733 100644
--- a/addons/stock/wizard/stock_picking_return.py
+++ b/addons/stock/wizard/stock_picking_return.py
@@ -54,13 +54,7 @@ class ReturnPicking(models.TransientModel):
continue
if move.move_dest_ids:
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')
- )
- 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}))
-
+ product_return_moves.append((0, 0, self._prepare_stock_return_picking_line_vals_from_move(move)))
if self.picking_id and not product_return_moves:
raise UserError(_("No products to return (only lines in Done state and not fully returned yet can be returned)."))
if self.picking_id:
@@ -73,6 +67,21 @@ class ReturnPicking(models.TransientModel):
location_id = self.picking_id.picking_type_id.return_picking_type_id.default_location_dest_id.id
self.location_id = location_id
+ @api.model
+ def _prepare_stock_return_picking_line_vals_from_move(self, stock_move):
+ quantity = stock_move.product_qty - sum(
+ stock_move.move_dest_ids
+ .filtered(lambda m: m.state in ['partially_available', 'assigned', 'done'])
+ .mapped('move_line_ids.product_qty')
+ )
+ quantity = float_round(quantity, precision_rounding=stock_move.product_uom.rounding)
+ return {
+ 'product_id': stock_move.product_id.id,
+ 'quantity': quantity,
+ 'move_id': stock_move.id,
+ 'uom_id': stock_move.product_id.uom_id.id,
+ }
+
def _prepare_move_default_values(self, return_line, new_picking):
vals = {
'product_id': return_line.product_id.id,
diff --git a/addons/stock_account/models/stock.py b/addons/stock_account/models/stock.py
index 2b462600d79..7ee06791991 100644
--- a/addons/stock_account/models/stock.py
+++ b/addons/stock_account/models/stock.py
@@ -716,13 +716,6 @@ class StockMove(models.Model):
class StockReturnPicking(models.TransientModel):
_inherit = "stock.return.picking"
- @api.model
- def default_get(self, default_fields):
- res = super(StockReturnPicking, self).default_get(default_fields)
- for i, k, vals in res.get('product_return_moves', []):
- vals.update({'to_refund': True})
- return res
-
@api.multi
def _create_returns(self):
new_picking_id, pick_type_id = super(StockReturnPicking, self)._create_returns()
@@ -733,6 +726,11 @@ class StockReturnPicking(models.TransientModel):
move.to_refund = True
return new_picking_id, pick_type_id
+ def _prepare_stock_return_picking_line_vals_from_move(self, stock_move):
+ res = super(StockReturnPicking, self)._prepare_stock_return_picking_line_vals_from_move(stock_move)
+ res['to_refund'] = True
+ return res
+
class StockReturnPickingLine(models.TransientModel):
_inherit = "stock.return.picking.line"