[REF] stock: action_done cleaning
* rewrite the docstring * rename pick -> picking * rename ops -> move_line * remove commented code task-1938108
This commit is contained in:
committed by
Simon Lejeune
parent
d128200f18
commit
3e9a74aed4
@@ -648,60 +648,44 @@ class Picking(models.Model):
|
||||
return True
|
||||
|
||||
def action_done(self):
|
||||
"""Changes picking state to done by processing the Stock Moves of the Picking
|
||||
"""Call `_action_done` on the `stock.move` of the `stock.picking` in `self`.
|
||||
This method makes sure every `stock.move.line` is linked to a `stock.move` by either
|
||||
linking them to an existing one or a newly created one.
|
||||
|
||||
Normally that happens when the button "Done" is pressed on a Picking view.
|
||||
@return: True
|
||||
If the context key `cancel_backorder` is present, backorders won't be created.
|
||||
|
||||
:return: True
|
||||
:rtype: bool
|
||||
"""
|
||||
self._check_company()
|
||||
|
||||
todo_moves = self.mapped('move_lines').filtered(lambda self: self.state in ['draft', 'waiting', 'partially_available', 'assigned', 'confirmed'])
|
||||
# Check if there are ops not linked to moves yet
|
||||
for pick in self:
|
||||
if pick.owner_id:
|
||||
pick.move_lines.write({'restrict_partner_id': pick.owner_id.id})
|
||||
pick.move_line_ids.write({'owner_id': pick.owner_id.id})
|
||||
|
||||
# # Explode manually added packages
|
||||
# for ops in pick.move_line_ids.filtered(lambda x: not x.move_id and not x.product_id):
|
||||
# for quant in ops.package_id.quant_ids: #Or use get_content for multiple levels
|
||||
# self.move_line_ids.create({'product_id': quant.product_id.id,
|
||||
# 'package_id': quant.package_id.id,
|
||||
# 'result_package_id': ops.result_package_id,
|
||||
# 'lot_id': quant.lot_id.id,
|
||||
# 'owner_id': quant.owner_id.id,
|
||||
# 'product_uom_id': quant.product_id.uom_id.id,
|
||||
# 'product_qty': quant.qty,
|
||||
# 'qty_done': quant.qty,
|
||||
# 'location_id': quant.location_id.id, # Could be ops too
|
||||
# 'location_dest_id': ops.location_dest_id.id,
|
||||
# 'picking_id': pick.id
|
||||
# }) # Might change first element
|
||||
# # Link existing moves or add moves when no one is related
|
||||
for ops in pick.move_line_ids.filtered(lambda x: not x.move_id):
|
||||
# Search move with this product
|
||||
moves = pick.move_lines.filtered(lambda x: x.product_id == ops.product_id)
|
||||
for picking in self:
|
||||
if picking.owner_id:
|
||||
picking.move_lines.write({'restrict_partner_id': picking.owner_id.id})
|
||||
picking.move_line_ids.write({'owner_id': picking.owner_id.id})
|
||||
for move_line in picking.move_line_ids.filtered(lambda x: not x.move_id):
|
||||
moves = picking.move_lines.filtered(lambda x: x.product_id == move_line.product_id)
|
||||
moves = sorted(moves, key=lambda m: m.quantity_done < m.product_qty, reverse=True)
|
||||
if moves:
|
||||
ops.move_id = moves[0].id
|
||||
move_line.move_id = moves[0].id
|
||||
else:
|
||||
new_move = self.env['stock.move'].create({
|
||||
'name': _('New Move:') + ops.product_id.display_name,
|
||||
'product_id': ops.product_id.id,
|
||||
'product_uom_qty': ops.qty_done,
|
||||
'product_uom': ops.product_uom_id.id,
|
||||
'description_picking': ops.description_picking,
|
||||
'location_id': pick.location_id.id,
|
||||
'location_dest_id': pick.location_dest_id.id,
|
||||
'picking_id': pick.id,
|
||||
'picking_type_id': pick.picking_type_id.id,
|
||||
'restrict_partner_id': pick.owner_id.id,
|
||||
'company_id': pick.company_id.id,
|
||||
})
|
||||
ops.move_id = new_move.id
|
||||
'name': _('New Move:') + move_line.product_id.display_name,
|
||||
'product_id': move_line.product_id.id,
|
||||
'product_uom_qty': move_line.qty_done,
|
||||
'product_uom': move_line.product_uom_id.id,
|
||||
'description_picking': move_line.description_picking,
|
||||
'location_id': picking.location_id.id,
|
||||
'location_dest_id': picking.location_dest_id.id,
|
||||
'picking_id': picking.id,
|
||||
'picking_type_id': picking.picking_type_id.id,
|
||||
'restrict_partner_id': picking.owner_id.id,
|
||||
'company_id': picking.company_id.id,
|
||||
})
|
||||
move_line.move_id = new_move.id
|
||||
new_move._action_confirm()
|
||||
todo_moves |= new_move
|
||||
#'qty_done': ops.qty_done})
|
||||
todo_moves._action_done(cancel_backorder=self.env.context.get('cancel_backorder'))
|
||||
self.write({'date_done': fields.Datetime.now()})
|
||||
self._send_confirmation_email()
|
||||
|
||||
Reference in New Issue
Block a user