diff --git a/addons/point_of_sale/models/stock_picking.py b/addons/point_of_sale/models/stock_picking.py index 06da59d3f06..0eea426c9b5 100644 --- a/addons/point_of_sale/models/stock_picking.py +++ b/addons/point_of_sale/models/stock_picking.py @@ -12,6 +12,16 @@ class StockPicking(models.Model): pos_session_id = fields.Many2one('pos.session') pos_order_id = fields.Many2one('pos.order') + + def _prepare_picking_vals(self, partner, picking_type, location_id, location_dest_id): + return { + 'partner_id': partner.id if partner else False, + 'user_id': False, + 'picking_type_id': picking_type.id, + 'move_type': 'direct', + 'location_id': location_id, + 'location_dest_id': location_dest_id, + } @api.model @@ -27,14 +37,9 @@ class StockPicking(models.Model): if positive_lines: location_id = picking_type.default_location_src_id.id - positive_picking = self.env['stock.picking'].create({ - 'partner_id': partner.id if partner else False, - 'user_id': False, - 'picking_type_id': picking_type.id, - 'move_type': 'direct', - 'location_id': location_id, - 'location_dest_id': location_dest_id, - }) + positive_picking = self.env['stock.picking'].create( + self._prepare_picking_vals(partner, picking_type, location_id, location_dest_id) + ) positive_picking._create_move_from_pos_order_lines(positive_lines) try: @@ -52,14 +57,9 @@ class StockPicking(models.Model): return_picking_type = picking_type return_location_id = picking_type.default_location_src_id.id - negative_picking = self.env['stock.picking'].create({ - 'partner_id': partner.id if partner else False, - 'user_id': False, - 'picking_type_id': return_picking_type.id, - 'move_type': 'direct', - 'location_id': location_dest_id, - 'location_dest_id': return_location_id, - }) + negative_picking = self.env['stock.picking'].create( + self._prepare_picking_vals(partner, return_picking_type, location_dest_id, return_location_id) + ) negative_picking._create_move_from_pos_order_lines(negative_lines) try: with self.env.cr.savepoint(): @@ -68,7 +68,20 @@ class StockPicking(models.Model): pass pickings |= negative_picking return pickings - + + def _prepare_stock_move_vals(self, first_line, order_lines): + return { + 'name': first_line.name, + 'product_uom': first_line.product_id.uom_id.id, + 'picking_id': self.id, + 'picking_type_id': self.picking_type_id.id, + 'product_id': first_line.product_id.id, + 'product_uom_qty': abs(sum(order_lines.mapped('qty'))), + 'state': 'draft', + 'location_id': self.location_id.id, + 'location_dest_id': self.location_dest_id.id, + 'company_id': self.company_id.id, + } def _create_move_from_pos_order_lines(self, lines): self.ensure_one() @@ -76,18 +89,9 @@ class StockPicking(models.Model): for product, lines in lines_by_product: order_lines = self.env['pos.order.line'].concat(*lines) first_line = order_lines[0] - current_move = self.env['stock.move'].create({ - 'name': first_line.name, - 'product_uom': first_line.product_id.uom_id.id, - 'picking_id': self.id, - 'picking_type_id': self.picking_type_id.id, - 'product_id': first_line.product_id.id, - 'product_uom_qty': abs(sum(order_lines.mapped('qty'))), - 'state': 'draft', - 'location_id': self.location_id.id, - 'location_dest_id': self.location_dest_id.id, - 'company_id': self.company_id.id, - }) + current_move = self.env['stock.move'].create( + self._prepare_stock_move_vals(first_line, order_lines) + ) if first_line.product_id.tracking != 'none' and (self.picking_type_id.use_existing_lots or self.picking_type_id.use_create_lots): for line in order_lines: sum_of_lots = 0