[FIX] stock : no more automatic backorder
When validating a stock picking there were 2 different cases: (1) If all qty are equal to 0 it will display a wizard asking if the user want to set the quantity done to the reserved quantity for all moves. If the user accept it will automatically perform the moves after setting the quantity done. (2) If the user set a quantity on a move, it will check if there is a need for a back order. If yes it will display a wizard asking if a back order is needed or not. However the check if a back order was needed or not was never perform in case 1. If the quantity reserved was lower than the initial demand a back order was automatically created. This commit add the step 2 in the procedure of step 1 (after setting the quantity done).
This commit is contained in:
@@ -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 = {}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user