diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index 12de338bca9..536ac2a5e6d 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -617,25 +617,28 @@ class Picking(models.Model): # Check backorder should check for other barcodes if self.check_backorder(): - view = self.env.ref('stock.view_backorder_confirmation') - wiz = self.env['stock.backorder.confirmation'].create({'pick_id': self.id}) - return { - 'name': _('Create Backorder?'), - 'type': 'ir.actions.act_window', - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'stock.backorder.confirmation', - 'views': [(view.id, 'form')], - 'view_id': view.id, - 'target': 'new', - 'res_id': wiz.id, - 'context': self.env.context, - } + return self.action_generate_backorder_wizard() self.action_done() return do_new_transfer = button_validate #TODO: replace later + def action_generate_backorder_wizard(self): + view = self.env.ref('stock.view_backorder_confirmation') + wiz = self.env['stock.backorder.confirmation'].create({'pick_id': self.id}) + return { + 'name': _('Create Backorder?'), + 'type': 'ir.actions.act_window', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'stock.backorder.confirmation', + 'views': [(view.id, 'form')], + 'view_id': view.id, + 'target': 'new', + 'res_id': wiz.id, + 'context': self.env.context, + } + def check_backorder(self): self.ensure_one() quantity_todo = {} diff --git a/addons/stock/tests/test_move.py b/addons/stock/tests/test_move.py index 6c5e8c1f3a0..338208e48e3 100644 --- a/addons/stock/tests/test_move.py +++ b/addons/stock/tests/test_move.py @@ -2184,7 +2184,9 @@ class StockMove(TransactionCase): picking.action_assign() res_dict = picking.button_validate() wizard = self.env[(res_dict.get('res_model'))].browse(res_dict.get('res_id')) - wizard.process() + res_dict_for_back_order = wizard.process() + backorder_wizard = self.env[(res_dict_for_back_order.get('res_model'))].browse(res_dict_for_back_order.get('res_id')) + backorder_wizard.process() self.assertEqual(len(picking.move_lines.move_line_ids), 1) self.assertEqual(picking.move_lines.quantity_done, 5.0) diff --git a/addons/stock/tests/test_stock_flow.py b/addons/stock/tests/test_stock_flow.py index 7e44febe1e9..d6e3fa838c4 100644 --- a/addons/stock/tests/test_stock_flow.py +++ b/addons/stock/tests/test_stock_flow.py @@ -649,7 +649,9 @@ class TestStockFlow(TestStockCommon): res_dict = picking_in_B.button_validate() wizard = self.env[(res_dict.get('res_model'))].browse(res_dict.get('res_id')) - wizard.process() + res_dict_for_back_order = wizard.process() + backorder_wizard = self.env[(res_dict_for_back_order.get('res_model'))].browse(res_dict_for_back_order.get('res_id')) + backorder_wizard.process() # ----------------------------------------------------------------------- # Check incoming shipment @@ -846,7 +848,9 @@ class TestStockFlow(TestStockCommon): res_dict = picking_out.button_validate() wizard = self.env[(res_dict.get('res_model'))].browse(res_dict.get('res_id')) - wizard.process() + res_dict_for_back_order = wizard.process() + backorder_wizard = self.env[(res_dict_for_back_order.get('res_model'))].browse(res_dict_for_back_order.get('res_id')) + backorder_wizard.process() # ---------------------------------------------------------------------- # Check product stock location quantity and quantity available. @@ -927,7 +931,9 @@ class TestStockFlow(TestStockCommon): # Transfer Incoming shipment. res_dict = picking_in.button_validate() wizard = self.env[(res_dict.get('res_model'))].browse(res_dict.get('res_id')) - wizard.process() + res_dict_for_back_order = wizard.process() + backorder_wizard = self.env[(res_dict_for_back_order.get('res_model'))].browse(res_dict_for_back_order.get('res_id')) + backorder_wizard.process() # ----------------------------------------------------------------------- # Check incoming shipment after transfer. diff --git a/addons/stock/wizard/stock_immediate_transfer.py b/addons/stock/wizard/stock_immediate_transfer.py index eecb6a70b95..05d7b38ab32 100644 --- a/addons/stock/wizard/stock_immediate_transfer.py +++ b/addons/stock/wizard/stock_immediate_transfer.py @@ -34,4 +34,6 @@ class StockImmediateTransfer(models.TransientModel): move_line.qty_done = move_line.product_uom_qty else: move.quantity_done = move.product_uom_qty + if self.pick_id.check_backorder(): + return self.pick_id.action_generate_backorder_wizard() self.pick_id.do_transfer()