# -*- coding: utf-8 -*- from odoo import models class PosSession(models.Model): _inherit = 'pos.session' def _create_picking_at_end_of_session(self): self.ensure_one() lines_grouped_by_dest_location = {} picking_type = self.config_id.picking_type_id if not picking_type or not picking_type.default_location_dest_id: session_destination_id = self.env['stock.warehouse']._get_partner_locations()[0].id else: session_destination_id = picking_type.default_location_dest_id.id for order in self._get_closed_orders(): if order.company_id.anglo_saxon_accounting and order.is_invoiced or order.shipping_date: continue destination_id = order.partner_id.property_stock_customer.id or session_destination_id # Filter out lines that were converted to Quotation valid_lines = order.lines.filtered(lambda l: not l.is_quotation_line) if not valid_lines: continue if destination_id in lines_grouped_by_dest_location: lines_grouped_by_dest_location[destination_id] |= valid_lines else: lines_grouped_by_dest_location[destination_id] = valid_lines for location_dest_id, lines in lines_grouped_by_dest_location.items(): pickings = self.env['stock.picking']._create_picking_from_pos_order_lines(location_dest_id, lines, picking_type) pickings.write({'pos_session_id': self.id, 'origin': self.name})