pos_reverse_downpayment/models/pos_session.py
2026-02-27 17:58:49 +07:00

37 lines
1.5 KiB
Python

# -*- 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})