[FIX] purchase: hook to allow override of domain

Add a hook to allow the hardcoded domain in the method `make_po`, in
procurement order.

Base on work by @Cedric-Pigeon

opw-744606
Closes #17147
This commit is contained in:
Nicolas Martinelli
2017-05-26 09:58:14 +02:00
parent 8f48f669a5
commit 95e0c90e63
+16 -12
View File
@@ -988,6 +988,21 @@ class ProcurementOrder(models.Model):
"""
return suppliers[0]
def _make_po_get_domain(self, partner):
gpo = self.rule_id.group_propagation_option
group = (gpo == 'fixed' and self.rule_id.group_id) or \
(gpo == 'propagate' and self.group_id) or False
domain = (
('partner_id', '=', partner.id),
('state', '=', 'draft'),
('picking_type_id', '=', self.rule_id.picking_type_id.id),
('company_id', '=', self.company_id.id),
('dest_address_id', '=', self.partner_dest_id.id))
if group:
domain += (('group_id', '=', group.id),)
return domain
@api.multi
def make_po(self):
cache = {}
@@ -1001,18 +1016,7 @@ class ProcurementOrder(models.Model):
supplier = procurement._make_po_select_supplier(suppliers)
partner = supplier.name
gpo = procurement.rule_id.group_propagation_option
group = (gpo == 'fixed' and procurement.rule_id.group_id) or \
(gpo == 'propagate' and procurement.group_id) or False
domain = (
('partner_id', '=', partner.id),
('state', '=', 'draft'),
('picking_type_id', '=', procurement.rule_id.picking_type_id.id),
('company_id', '=', procurement.company_id.id),
('dest_address_id', '=', procurement.partner_dest_id.id))
if group:
domain += (('group_id', '=', group.id),)
domain = procurement._make_po_get_domain(partner)
if domain in cache:
po = cache[domain]