changeset 30c2e07f9b8b in modules/production_outsourcing:default
details:
https://hg.tryton.org/modules/production_outsourcing?cmd=changeset;node=30c2e07f9b8b
description:
Replace product_suppliers by product_suppliers_used
issue6799
diffstat:
production.py | 49 ++++++++++++++++++++++++++++++-------------------
1 files changed, 30 insertions(+), 19 deletions(-)
diffs (82 lines):
diff -r 7651677f119d -r 30c2e07f9b8b production.py
--- a/production.py Sat Jan 26 01:10:48 2019 +0100
+++ b/production.py Fri Mar 15 19:27:33 2019 +0100
@@ -24,9 +24,6 @@
domain=[
('purchasable', '=', True),
('template.type', '=', 'service'),
- If(Bool(Eval('supplier_service_supplier')),
- ('product_suppliers', '=', Eval('supplier_service_supplier')),
- ()),
],
states={
'required': Bool(Eval('supplier')),
@@ -38,10 +35,16 @@
'purchase.product_supplier', "Supplier's Service",
ondelete='RESTRICT',
domain=[
- ('product.type', '=', 'service'),
+ ('template.type', '=', 'service'),
If(Bool('supplier_service'),
- ('product.products', '=', Eval('supplier_service')),
- ()),
+ ['OR',
+ [
+ ('template.products', '=', Eval('supplier_service')),
+ ('product', '=', None),
+ ],
+ ('product', '=', Eval('supplier_service')),
+ ],
+ []),
('party', '=', Eval('supplier', -1)),
],
states={
@@ -61,27 +64,35 @@
def default_supplier_quantity(cls):
return 1
+ @fields.depends('supplier')
+ def _get_product_supplier_pattern(self):
+ return {
+ 'party': self.supplier.id if self.supplier else -1,
+ }
+
@fields.depends('supplier', 'supplier_service',
'supplier_service_supplier')
def on_change_supplier_service(self):
- if self.supplier and self.supplier_service:
- product_suppliers = [ps for ps in
- self.supplier_service.product_suppliers
- if ps.party == self.supplier]
+ if self.supplier_service:
+ product_suppliers = list(
+ self.supplier_service.product_suppliers_used(
+ **self._get_product_supplier_pattern()))
if len(product_suppliers) == 1:
self.supplier_service_supplier, = product_suppliers
- if (self.supplier_service
- and self.supplier_service_supplier
- and (self.supplier_service_supplier
- not in self.supplier_service.product_suppliers)):
- self.supplier_service = None
+ elif (self.supplier_service_supplier
+ and (self.supplier_service_supplier
+ not in product_suppliers)):
+ self.supplier_service = None
@fields.depends('supplier_service', 'supplier_service_supplier')
def on_change_supplier_service_supplier(self):
- if not self.supplier_service and self.supplier_service_supplier:
- products = self.supplier_service_supplier.product.products
- if len(products) == 1:
- self.supplier_service, = products
+ if self.supplier_service_supplier:
+ if self.supplier_service_supplier.product:
+ self.supplier_service = self.supplier_service_supplier.product
+ elif not self.supplier_service:
+ products = self.supplier_service_supplier.template.products
+ if len(products) == 1:
+ self.supplier_service, = products
@classmethod
def view_attributes(cls):