[FIX] stock: picking to scratch location with BO
Usecase to reproduce:
- Create an internal picking from stock to scrap
- Add some scrap move inside due to scrap button in header
- Add some move with initial demand for future
- Mark the picking as done and validate it
- The wizard asking for a backorder appear -> Validate or No backorder
The moves with initial demand are duplicated(one new move for each
without intial demand nor quantity done)
A note is logged in the chatter with backorder False has been created.
There is a problem since _action_done on a scrap move from scrap model
will process the scrap move individualy but will create a back order
(commit e088acbc0f try to fix this issue)
However when we create a picking that goes to scrap location, the back
order will not be created since all moves are scrapped.
With the current configuration we can't guess in _action_done if
it comes from scrap or picking validate that goes to a scrap location.
The current solution is to use a context key in order to indicate if the
call come from picking validate or scrap. If it comes from scrap do not
create a back order no matter the case. If it comes from picking, follow
the standard beahvior with a backorder or not.
opw-1934835
This commit is contained in:
@@ -1139,7 +1139,8 @@ class StockMove(models.Model):
|
||||
moves_todo.mapped('move_dest_ids')._action_assign()
|
||||
|
||||
# We don't want to create back order for scrap moves
|
||||
if all(move_todo.scrapped for move_todo in moves_todo):
|
||||
# Replace by a kwarg in master
|
||||
if self.env.context.get('is_scrap'):
|
||||
return moves_todo
|
||||
|
||||
if picking:
|
||||
|
||||
@@ -105,7 +105,8 @@ class StockScrap(models.Model):
|
||||
def do_scrap(self):
|
||||
for scrap in self:
|
||||
move = self.env['stock.move'].create(scrap._prepare_move_values())
|
||||
move._action_done()
|
||||
# master: replace context by cancel_backorder
|
||||
move.with_context(is_scrap=True)._action_done()
|
||||
scrap.write({'move_id': move.id, 'state': 'done'})
|
||||
return True
|
||||
|
||||
|
||||
Reference in New Issue
Block a user