changeset 6e928c04e573 in modules/purchase_requisition:default
details: 
https://hg.tryton.org/modules/purchase_requisition?cmd=changeset;node=6e928c04e573
description:
        Set a category domain on requisition line unit

        The unit is used to create a purchase request which has such 
constraint. But as
        they are created by the process method which is queued, the user does 
not get
        any error message.

        issue8610
        review267971003
diffstat:

 purchase.py |  21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diffs (38 lines):

diff -r 00f8bcb08425 -r 6e928c04e573 purchase.py
--- a/purchase.py       Fri Sep 20 11:47:15 2019 +0200
+++ b/purchase.py       Sat Sep 28 23:13:08 2019 +0200
@@ -433,6 +433,9 @@
             ('purchasable', '=', True),
             ],
         states=_states, depends=_depends)
+    product_uom_category = fields.Function(
+        fields.Many2One('product.uom.category', "Product UOM Category"),
+        'on_change_with_product_uom_category')
     description = fields.Text("Description", states=_states, depends=_depends)
     quantity = fields.Float(
         'Quantity', digits=(16, Eval('unit_digits', 2)), required=True,
@@ -461,6 +464,24 @@
 
     del _states
 
+    @classmethod
+    def __setup__(cls):
+        super().__setup__()
+        unit_categories = cls._unit_categories()
+        cls.unit.domain = [
+            ('category', 'in', [Eval(c) for c in unit_categories]),
+            ]
+        cls.unit.depends.extend(unit_categories)
+
+    @classmethod
+    def _unit_categories(cls):
+        return ['product_uom_category']
+
+    @fields.depends('product')
+    def on_change_with_product_uom_category(self, name=None):
+        if self.product:
+            return self.product.default_uom_category.id
+
     @fields.depends('requisition', '_parent_requisition.state')
     def on_change_with_purchase_requisition_state(self, name=None):
         if self.requisition:

Reply via email to