summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/purchase_mrp/tests/test_purchase_mrp_flow.py28
-rw-r--r--addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py8
-rw-r--r--addons/purchase_stock/tests/test_fifo_returns.py8
-rw-r--r--addons/purchase_stock/tests/test_purchase_order.py11
-rw-r--r--addons/purchase_stock/tests/test_stockvaluation.py7
-rw-r--r--addons/sale_mrp/tests/test_sale_mrp_flow.py16
-rw-r--r--addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py8
-rw-r--r--addons/sale_stock/tests/test_sale_stock.py9
-rw-r--r--addons/stock/tests/test_move2.py69
-rw-r--r--addons/stock/tests/test_warehouse.py7
-rw-r--r--addons/stock/wizard/stock_picking_return.py75
-rw-r--r--addons/stock/wizard/stock_picking_return_views.xml2
-rw-r--r--addons/stock_account/tests/test_stockvaluation.py9
-rw-r--r--addons/stock_dropshipping/tests/test_stockvaluation.py9
14 files changed, 141 insertions, 125 deletions
diff --git a/addons/purchase_mrp/tests/test_purchase_mrp_flow.py b/addons/purchase_mrp/tests/test_purchase_mrp_flow.py
index 617f84b73c2..ea99478a93b 100644
--- a/addons/purchase_mrp/tests/test_purchase_mrp_flow.py
+++ b/addons/purchase_mrp/tests/test_purchase_mrp_flow.py
@@ -1,10 +1,10 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo.tests import common, Form
+from odoo.tests.common import Form, TransactionCase
-class TestSaleMrpFlow(common.TransactionCase):
+class TestSaleMrpFlow(TransactionCase):
def setUp(self):
super(TestSaleMrpFlow, self).setUp()
@@ -355,14 +355,10 @@ class TestSaleMrpFlow(common.TransactionCase):
self.assertEquals(order_line.qty_received, 7.0)
# Return all components processed by backorder_3
- default_data = self.env['stock.return.picking'].with_context(
- active_ids=backorder_3.ids,
- active_id=backorder_3.ids[0]
- ).default_get(['move_dest_exists', 'original_location_id', 'product_return_moves', 'parent_location_id', 'location_id'])
- return_wiz = self.env['stock.return.picking'].with_context(
- active_ids=backorder_3.ids,
- active_id=backorder_3.ids[0]
- ).create(default_data)
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=backorder_3.ids, active_id=backorder_3.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
for return_move in return_wiz.product_return_moves:
return_move.write({
'quantity': expected_quantities[return_move.product_id],
@@ -379,14 +375,10 @@ class TestSaleMrpFlow(common.TransactionCase):
# Now quantity received should be 3 again
self.assertEquals(order_line.qty_received, 3)
- default_data = self.env['stock.return.picking'].with_context(
- active_ids=return_pick.ids,
- active_id=return_pick.ids[0]
- ).default_get(['move_dest_exists', 'original_location_id', 'product_return_moves', 'parent_location_id', 'location_id'])
- return_wiz = self.env['stock.return.picking'].with_context(
- active_ids=return_pick.ids,
- active_id=return_pick.ids[0]
- ).create(default_data)
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=return_pick.ids, active_id=return_pick.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
for move in return_wiz.product_return_moves:
move.quantity = expected_quantities[move.product_id]
res = return_wiz.create_returns()
diff --git a/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py b/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py
index 5b466f75078..93192940cd5 100644
--- a/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py
+++ b/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py
@@ -6,7 +6,7 @@ from datetime import datetime
import time
from odoo.addons.stock_account.tests.test_anglo_saxon_valuation_reconciliation_common import ValuationReconciliationTestCase
-from odoo.tests import tagged
+from odoo.tests.common import Form, tagged
@tagged('post_install', '-at_install')
@@ -113,8 +113,10 @@ class TestValuationReconciliation(ValuationReconciliationTestCase):
})
# Return the goods and refund the invoice
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=[picking.id], active_id=picking.id).create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking.ids, active_id=picking.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 1.0
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
diff --git a/addons/purchase_stock/tests/test_fifo_returns.py b/addons/purchase_stock/tests/test_fifo_returns.py
index 9a2811ac45b..8bc12d28733 100644
--- a/addons/purchase_stock/tests/test_fifo_returns.py
+++ b/addons/purchase_stock/tests/test_fifo_returns.py
@@ -3,7 +3,7 @@
import time
from .common import TestPurchase
-
+from odoo.tests.common import Form
class TestFifoReturns(TestPurchase):
@@ -72,8 +72,10 @@ class TestFifoReturns(TestPurchase):
# Return the goods of purchase order 2
picking = purchase_order_2.picking_ids[0]
- return_pick_wiz = self.env['stock.return.picking'].with_context(
- active_model='stock.picking', active_id=picking.id).create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking.ids, active_id=picking.ids[0],
+ active_model='stock.picking'))
+ return_pick_wiz = stock_return_picking_form.save()
return_picking_id, dummy = return_pick_wiz.with_context(active_id=picking.id)._create_returns()
# Important to pass through confirmation and assignation
diff --git a/addons/purchase_stock/tests/test_purchase_order.py b/addons/purchase_stock/tests/test_purchase_order.py
index 60f91a9c196..1367604d118 100644
--- a/addons/purchase_stock/tests/test_purchase_order.py
+++ b/addons/purchase_stock/tests/test_purchase_order.py
@@ -5,7 +5,7 @@ from datetime import datetime
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
from odoo.addons.account.tests.account_test_classes import AccountingTestCase
-from odoo.tests import tagged
+from odoo.tests import Form, tagged
@tagged('post_install', '-at_install')
@@ -129,11 +129,12 @@ class TestPurchaseOrder(AccountingTestCase):
self.assertEqual(received_qty, 10.0, 'Purchase: Received quantity should be 10.0 instead of %s after validating incoming shipment' % received_qty)
# Create return picking
- StockReturnPicking = self.env['stock.return.picking']
pick = self.po.picking_ids
- default_data = StockReturnPicking.with_context(active_ids=pick.ids, active_id=pick.ids[0]).default_get(['move_dest_exists', 'original_location_id', 'product_return_moves', 'parent_location_id', 'location_id'])
- return_wiz = StockReturnPicking.with_context(active_ids=pick.ids, active_id=pick.ids[0]).create(default_data)
- return_wiz.product_return_moves.write({'quantity': 2.0, 'to_refund': True}) # Return only 2
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=pick.ids, active_id=pick.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
+ return_wiz.product_return_moves.write({'quantity': 2.0, 'to_refund': True}) # Return only 2
res = return_wiz.create_returns()
return_pick = self.env['stock.picking'].browse(res['res_id'])
diff --git a/addons/purchase_stock/tests/test_stockvaluation.py b/addons/purchase_stock/tests/test_stockvaluation.py
index 920d6e4872a..a72c4d4b633 100644
--- a/addons/purchase_stock/tests/test_stockvaluation.py
+++ b/addons/purchase_stock/tests/test_stockvaluation.py
@@ -391,9 +391,10 @@ class TestStockValuationWithCOA(AccountingTestCase):
self.assertEqual(self.product1.stock_value, 300)
# return the second po
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=receipt_po2.ids, active_id=receipt_po2.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=receipt_po2.ids, active_id=receipt_po2.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 10
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
diff --git a/addons/sale_mrp/tests/test_sale_mrp_flow.py b/addons/sale_mrp/tests/test_sale_mrp_flow.py
index 5f46e0b969e..d4cae275bd4 100644
--- a/addons/sale_mrp/tests/test_sale_mrp_flow.py
+++ b/addons/sale_mrp/tests/test_sale_mrp_flow.py
@@ -921,10 +921,10 @@ class TestSaleMrpFlow(common.TransactionCase):
self.assertEquals(order_line.qty_delivered, 7.0)
# Return all components processed by backorder_3
- StockReturnPicking = self.env['stock.return.picking']
- default_data = StockReturnPicking.with_context(active_ids=backorder_3.ids, active_id=backorder_3.ids[0]).default_get(
- ['move_dest_exists', 'original_location_id', 'product_return_moves', 'parent_location_id', 'location_id'])
- return_wiz = StockReturnPicking.with_context(active_ids=backorder_3.ids, active_id=backorder_3.ids[0]).create(default_data)
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=backorder_3.ids, active_id=backorder_3.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
for return_move in return_wiz.product_return_moves:
return_move.write({
'quantity': expected_quantities[return_move.product_id],
@@ -941,10 +941,10 @@ class TestSaleMrpFlow(common.TransactionCase):
# Now quantity delivered should be 3 again
self.assertEquals(order_line.qty_delivered, 3)
- default_data = StockReturnPicking.with_context(active_ids=return_pick.ids, active_id=return_pick.ids[0]).default_get(
- ['move_dest_exists', 'original_location_id', 'product_return_moves', 'parent_location_id', 'location_id'])
- return_wiz = StockReturnPicking.with_context(active_ids=return_pick.ids, active_id=return_pick.ids[0]).create(
- default_data)
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=return_pick.ids, active_id=return_pick.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
for move in return_wiz.product_return_moves:
move.quantity = expected_quantities[move.product_id]
res = return_wiz.create_returns()
diff --git a/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py b/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py
index f80c4bf758c..cf444c56bb3 100644
--- a/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py
+++ b/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py
@@ -4,7 +4,7 @@
import time
from odoo.addons.stock_account.tests.test_anglo_saxon_valuation_reconciliation_common import ValuationReconciliationTestCase
-from odoo.tests import tagged
+from odoo.tests import Form, tagged
@tagged('post_install', '-at_install')
@@ -139,8 +139,10 @@ class TestValuationReconciliation(ValuationReconciliationTestCase):
'rate': 10.54739702,
'name': '2018-03-01',
})
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=[picking.id], active_id=picking.id).create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking.ids, active_id=picking.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 1.0
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
diff --git a/addons/sale_stock/tests/test_sale_stock.py b/addons/sale_stock/tests/test_sale_stock.py
index 7782ecdc7f1..9bea6fa8847 100644
--- a/addons/sale_stock/tests/test_sale_stock.py
+++ b/addons/sale_stock/tests/test_sale_stock.py
@@ -3,7 +3,7 @@
from odoo.addons.sale.tests.test_sale_common import TestSale
from odoo.exceptions import UserError
-from odoo.tests import tagged
+from odoo.tests import Form, tagged
@tagged('post_install', '-at_install')
@@ -159,9 +159,10 @@ class TestSaleStock(TestSale):
self.inv_1.action_invoice_open()
# Create return picking
- StockReturnPicking = self.env['stock.return.picking']
- default_data = StockReturnPicking.with_context(active_ids=pick.ids, active_id=pick.ids[0]).default_get(['move_dest_exists', 'original_location_id', 'product_return_moves', 'parent_location_id', 'location_id'])
- return_wiz = StockReturnPicking.with_context(active_ids=pick.ids, active_id=pick.ids[0]).create(default_data)
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=pick.ids, active_id=pick.ids[0],
+ active_model='stock.picking'))
+ return_wiz = stock_return_picking_form.save()
return_wiz.product_return_moves.quantity = 2.0 # Return only 2
return_wiz.product_return_moves.to_refund = True # Refund these 2
res = return_wiz.create_returns()
diff --git a/addons/stock/tests/test_move2.py b/addons/stock/tests/test_move2.py
index dd75243ffa3..a62ff9fef98 100644
--- a/addons/stock/tests/test_move2.py
+++ b/addons/stock/tests/test_move2.py
@@ -3,8 +3,7 @@
from odoo.addons.stock.tests.common import TestStockCommon
from odoo.exceptions import UserError
-from odoo import api, registry
-from odoo.tests.common import TransactionCase
+from odoo.tests import Form
class TestPickShip(TestStockCommon):
@@ -174,10 +173,12 @@ class TestPickShip(TestStockCommon):
self.assertEqual(picking_client.state, 'assigned')
# return a part of what we've done
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0])\
- .create({})
- stock_return_picking.product_return_moves.quantity = 2.0 # Return only 2
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
+ stock_return_picking = stock_return_picking_form.save()
+ stock_return_picking.product_return_moves.quantity = 2.0 # Return only 2
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
return_pick.move_lines[0].move_line_ids[0].qty_done = 2.0
@@ -197,9 +198,10 @@ class TestPickShip(TestStockCommon):
self.assertEqual(picking_client.state, 'assigned')
# return more than we've done
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 12.0 # Return 2 extra
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
@@ -440,18 +442,20 @@ class TestPickShip(TestStockCommon):
output. This return should not be available and should only have
picking pick as origin move.
"""
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 10.0
stock_return_picking_action = stock_return_picking.create_returns()
return_pick_picking = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
self.assertEqual(return_pick_picking.state, 'waiting')
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_ship.ids, active_id=picking_ship.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_ship.ids, active_id=picking_ship.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 10.0
stock_return_picking_action = stock_return_picking.create_returns()
return_ship_picking = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
@@ -514,9 +518,10 @@ class TestPickShip(TestStockCommon):
picking_ship.move_lines[0].move_line_ids[0].qty_done = 1.0
picking_ship.action_done()
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_ship.ids, active_id=picking_ship.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_ship.ids, active_id=picking_ship.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 1.0
stock_return_picking_action = stock_return_picking.create_returns()
return_ship_picking = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
@@ -527,9 +532,10 @@ class TestPickShip(TestStockCommon):
})
return_ship_picking.action_done()
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_pack.ids, active_id=picking_pack.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_pack.ids, active_id=picking_pack.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 1.0
stock_return_picking_action = stock_return_picking.create_returns()
return_pack_picking = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
@@ -537,9 +543,10 @@ class TestPickShip(TestStockCommon):
return_pack_picking.move_lines[0].move_line_ids[0].qty_done = 1.0
return_pack_picking.action_done()
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_pick.ids, active_id=picking_pick.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 1.0
stock_return_picking_action = stock_return_picking.create_returns()
return_pick_picking = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
@@ -680,9 +687,10 @@ class TestPickShip(TestStockCommon):
picking_client.action_done()
# return half in the pick location
- return1 = self.env['stock.return.picking']\
- .with_context(active_ids=picking_pick.ids, active_id=picking_client.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_client.ids, active_id=picking_client.ids[0],
+ active_model='stock.picking'))
+ return1 = stock_return_picking_form.save()
return1.product_return_moves.quantity = 5.0
return1.location_id = pick_location.id
return_to_pick_picking_action = return1.create_returns()
@@ -692,9 +700,10 @@ class TestPickShip(TestStockCommon):
return_to_pick_picking.action_done()
# return the remainig products in the return warehouse
- return2 = self.env['stock.return.picking']\
- .with_context(active_ids=picking_pick.ids, active_id=picking_client.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_client.ids, active_id=picking_client.ids[0],
+ active_model='stock.picking'))
+ return2 = stock_return_picking_form.save()
return2.product_return_moves.quantity = 5.0
return2.location_id = return_location.id
return_to_return_picking_action = return2.create_returns()
diff --git a/addons/stock/tests/test_warehouse.py b/addons/stock/tests/test_warehouse.py
index 9a93da5c939..7288e4eb58e 100644
--- a/addons/stock/tests/test_warehouse.py
+++ b/addons/stock/tests/test_warehouse.py
@@ -158,9 +158,10 @@ class TestWarehouse(TestStockCommon):
quant = self.env['stock.quant'].search([('product_id', '=', productA.id), ('location_id', '=', stock_location.id)])
self.assertEqual(len(quant), 1)
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=picking_out.ids, active_id=picking_out.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=picking_out.ids, active_id=picking_out.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 1.0
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
diff --git a/addons/stock/wizard/stock_picking_return.py b/addons/stock/wizard/stock_picking_return.py
index 0a836c93499..eba3a4c3f74 100644
--- a/addons/stock/wizard/stock_picking_return.py
+++ b/addons/stock/wizard/stock_picking_return.py
@@ -23,6 +23,17 @@ class ReturnPicking(models.TransientModel):
_name = 'stock.return.picking'
_description = 'Return Picking'
+ @api.model
+ def default_get(self, fields):
+ if len(self.env.context.get('active_ids', list())) > 1:
+ raise UserError(_("You may only return one picking at a time."))
+ res = super(ReturnPicking, self).default_get(fields)
+ if self.env.context.get('active_id') and self.env.context.get('active_model') == 'stock.picking':
+ picking = self.env['stock.picking'].browse(self.env.context.get('active_id'))
+ if picking.exists():
+ res.update({'picking_id': picking.id})
+ return res
+
picking_id = fields.Many2one('stock.picking')
product_return_moves = fields.One2many('stock.return.picking.line', 'wizard_id', 'Moves')
move_dest_exists = fields.Boolean('Chained Move Exists', readonly=True)
@@ -32,45 +43,35 @@ class ReturnPicking(models.TransientModel):
'stock.location', 'Return Location',
domain="['|', ('id', '=', original_location_id), ('return_location', '=', True)]")
- @api.model
- def default_get(self, fields):
- if len(self.env.context.get('active_ids', list())) > 1:
- raise UserError(_("You may only return one picking at a time."))
- res = super(ReturnPicking, self).default_get(fields)
-
+ @api.onchange('picking_id')
+ def _onchange_picking_id(self):
move_dest_exists = False
product_return_moves = []
- picking = self.env['stock.picking'].browse(self.env.context.get('active_id'))
- if picking:
- res.update({'picking_id': picking.id})
- if picking.state != 'done':
- raise UserError(_("You may only return Done pickings."))
- for move in picking.move_lines:
- if move.scrapped:
- 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}))
-
- if not product_return_moves:
- raise UserError(_("No products to return (only lines in Done state and not fully returned yet can be returned)."))
- if 'product_return_moves' in fields:
- res.update({'product_return_moves': product_return_moves})
- if 'move_dest_exists' in fields:
- res.update({'move_dest_exists': move_dest_exists})
- if 'parent_location_id' in fields and picking.location_id.usage == 'internal':
- res.update({'parent_location_id': picking.picking_type_id.warehouse_id and picking.picking_type_id.warehouse_id.view_location_id.id or picking.location_id.location_id.id})
- if 'original_location_id' in fields:
- res.update({'original_location_id': picking.location_id.id})
- if 'location_id' in fields:
- location_id = picking.location_id.id
- if picking.picking_type_id.return_picking_type_id.default_location_dest_id.return_location:
- location_id = picking.picking_type_id.return_picking_type_id.default_location_dest_id.id
- res['location_id'] = location_id
- return res
+ if self.picking_id and self.picking_id.state != 'done':
+ raise UserError(_("You may only return Done pickings."))
+ for move in self.picking_id.move_lines:
+ if move.scrapped:
+ 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}))
+
+ 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:
+ self.product_return_moves = product_return_moves
+ self.move_dest_exists = move_dest_exists
+ self.parent_location_id = self.picking_id.picking_type_id.warehouse_id and self.picking_id.picking_type_id.warehouse_id.view_location_id.id or self.picking_id.location_id.location_id.id
+ self.original_location_id = self.picking_id.location_id.id
+ location_id = self.picking_id.location_id.id
+ if self.picking_id.picking_type_id.return_picking_type_id.default_location_dest_id.return_location:
+ location_id = self.picking_id.picking_type_id.return_picking_type_id.default_location_dest_id.id
+ self.location_id = location_id
def _prepare_move_default_values(self, return_line, new_picking):
vals = {
diff --git a/addons/stock/wizard/stock_picking_return_views.xml b/addons/stock/wizard/stock_picking_return_views.xml
index 3bbba44a176..3c901072aa7 100644
--- a/addons/stock/wizard/stock_picking_return_views.xml
+++ b/addons/stock/wizard/stock_picking_return_views.xml
@@ -10,6 +10,7 @@
<field name="arch" type="xml">
<form>
<field name="move_dest_exists" invisible="1"/>
+ <field name="picking_id" invisible="1"/>
<group attrs="{'invisible': [('move_dest_exists', '=', False)]}">
<div class="oe_grey">
<p>This picking appears to be chained with another operation. Later, if you receive the goods you are returning now, make sure to <b>reverse</b> the returned picking in order to avoid logistic rules to be applied again (which would create duplicated operations)</p>
@@ -21,6 +22,7 @@
<field name="product_id" options="{'no_create': True, 'no_open': True}" force_save="1"/>
<field name="quantity"/>
<field name="uom_id" readonly="1" groups="uom.group_uom"/>
+ <field name="move_id" invisible="1"/>
</tree>
</field>
</group>
diff --git a/addons/stock_account/tests/test_stockvaluation.py b/addons/stock_account/tests/test_stockvaluation.py
index 775bba724b4..55d3e241ec6 100644
--- a/addons/stock_account/tests/test_stockvaluation.py
+++ b/addons/stock_account/tests/test_stockvaluation.py
@@ -5,7 +5,7 @@ from datetime import timedelta
from odoo.exceptions import UserError
from odoo.fields import Date, Datetime
-from odoo.tests.common import TransactionCase
+from odoo.tests.common import Form, TransactionCase
class TestStockValuation(TransactionCase):
@@ -1206,9 +1206,10 @@ class TestStockValuation(TransactionCase):
self.assertEqual(self.product1.standard_price, 16)
# return
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=[out_pick.id], active_id=out_pick.id)\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=out_pick.ids, active_id=out_pick.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking.product_return_moves.quantity = 1.0 # Return only 2
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
diff --git a/addons/stock_dropshipping/tests/test_stockvaluation.py b/addons/stock_dropshipping/tests/test_stockvaluation.py
index 70cf614b16c..08f81173375 100644
--- a/addons/stock_dropshipping/tests/test_stockvaluation.py
+++ b/addons/stock_dropshipping/tests/test_stockvaluation.py
@@ -2,7 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.account.tests.account_test_classes import AccountingTestCase
-from odoo.tests import tagged
+from odoo.tests import Form, tagged
@tagged('post_install', '-at_install')
class TestStockValuation(AccountingTestCase):
@@ -278,9 +278,10 @@ class TestStockValuation(AccountingTestCase):
all_amls = self._dropship_product1()
# return what we've done
- stock_return_picking = self.env['stock.return.picking']\
- .with_context(active_ids=self.sale_order1.picking_ids.ids, active_id=self.sale_order1.picking_ids.ids[0])\
- .create({})
+ stock_return_picking_form = Form(self.env['stock.return.picking']
+ .with_context(active_ids=self.sale_order1.picking_ids.ids, active_id=self.sale_order1.picking_ids.ids[0],
+ active_model='stock.picking'))
+ stock_return_picking = stock_return_picking_form.save()
stock_return_picking_action = stock_return_picking.create_returns()
return_pick = self.env['stock.picking'].browse(stock_return_picking_action['res_id'])
return_pick.move_lines[0].move_line_ids[0].qty_done = 1.0