[IMP] point_of_sale: facilite inheritance to create picking from pos
closes odoo/odoo#52946 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
This commit is contained in:
committed by
Martin Trigaux
parent
000a329f8f
commit
5899fb36bb
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user