38 lines
1.5 KiB
Python
Executable File
38 lines
1.5 KiB
Python
Executable File
# Copyright 2017 Denis Leemann, Camptocamp SA
|
|
# Copyright 2021 Iván Todorovich, Camptocamp SA
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo import models
|
|
|
|
|
|
class StockMove(models.Model):
|
|
_inherit = "stock.move"
|
|
|
|
def _get_new_picking_values(self):
|
|
# Overload to set carrier_id from the manual delivery wizard
|
|
# Note: sale_manual_delivery is expected to be a manual.delivery record
|
|
res = super()._get_new_picking_values()
|
|
manual_delivery = self.env.context.get("sale_manual_delivery")
|
|
if manual_delivery:
|
|
if manual_delivery.partner_id:
|
|
res["partner_id"] = manual_delivery.partner_id.id
|
|
if manual_delivery.carrier_id:
|
|
res["carrier_id"] = manual_delivery.carrier_id.id
|
|
return res
|
|
|
|
def _search_picking_for_assignation(self):
|
|
# Overload to filter carrier_id
|
|
# Note: sale_manual_delivery is expected to be a manual.delivery record
|
|
manual_delivery = self.env.context.get("sale_manual_delivery")
|
|
if manual_delivery:
|
|
# original domain used in super()
|
|
domain = self._search_picking_for_assignation_domain()
|
|
# Filter on carrier
|
|
if manual_delivery.carrier_id:
|
|
domain += [
|
|
("carrier_id", "=", manual_delivery.carrier_id.id),
|
|
]
|
|
return self.env["stock.picking"].search(domain, limit=1)
|
|
else:
|
|
return super()._search_picking_for_assignation()
|