changeset 117f556e4c23 in modules/customs:default
details: https://hg.tryton.org/modules/customs?cmd=changeset&node=117f556e4c23
description:
        Add country of origin

        issue10669
        review362271002
diffstat:

 CHANGELOG              |   2 ++
 product.py             |  36 ++++++++++++++++++++++++++++++------
 view/template_form.xml |   4 +++-
 3 files changed, 35 insertions(+), 7 deletions(-)

diffs (95 lines):

diff -r d2f6c841e74e -r 117f556e4c23 CHANGELOG
--- a/CHANGELOG Sun Jul 04 17:54:47 2021 +0200
+++ b/CHANGELOG Tue Oct 12 10:08:42 2021 +0200
@@ -1,3 +1,5 @@
+* Add country of origin
+
 Version 6.0.0 - 2021-05-03
 * Bug fixes (see mercurial logs for details)
 
diff -r d2f6c841e74e -r 117f556e4c23 product.py
--- a/product.py        Sun Jul 04 17:54:47 2021 +0200
+++ b/product.py        Tue Oct 12 10:08:42 2021 +0200
@@ -55,13 +55,19 @@
             return self.parent.customs
         return self.customs
 
-    def get_tariff_code(self, pattern):
+    def get_tariff_codes(self, pattern):
         if not self.tariff_codes_parent:
             for link in self.tariff_codes:
                 if link.tariff_code.match(pattern):
-                    return link.tariff_code
+                    yield link.tariff_code
         else:
-            return self.parent.get_tariff_code(pattern)
+            yield from self.parent.get_tariff_codes(pattern)
+
+    def get_tariff_code(self, pattern):
+        try:
+            return next(self.get_tariff_codes(pattern))
+        except StopIteration:
+            pass
 
     @classmethod
     def view_attributes(cls):
@@ -105,6 +111,12 @@
                 | Eval('tariff_codes_category', False)),
             },
         depends=['type', 'tariff_codes_category'])
+    country_of_origin = fields.Many2One(
+        'country.country', "Country",
+        states={
+            'invisible': Eval('type') == 'service',
+            },
+        depends=['type'])
 
     @classmethod
     def __register__(cls, module_name):
@@ -131,13 +143,19 @@
     def default_tariff_codes_category(cls):
         return False
 
-    def get_tariff_code(self, pattern):
+    def get_tariff_codes(self, pattern):
         if not self.tariff_codes_category:
             for link in self.tariff_codes:
                 if link.tariff_code.match(pattern):
-                    return link.tariff_code
+                    yield link.tariff_code
         else:
-            return self.customs_category.get_tariff_code(pattern)
+            yield from self.customs_category.get_tariff_codes(pattern)
+
+    def get_tariff_code(self, pattern):
+        try:
+            return next(self.get_tariff_codes(pattern))
+        except StopIteration:
+            pass
 
     @classmethod
     def view_attributes(cls):
@@ -182,3 +200,9 @@
 
 class Product(metaclass=PoolMeta):
     __name__ = 'product.product'
+
+    def get_tariff_codes(self, pattern):
+        yield from self.template.get_tariff_codes(pattern)
+
+    def get_tariff_code(self, pattern):
+        return self.template.get_tariff_code(pattern)
diff -r d2f6c841e74e -r 117f556e4c23 view/template_form.xml
--- a/view/template_form.xml    Sun Jul 04 17:54:47 2021 +0200
+++ b/view/template_form.xml    Tue Oct 12 10:08:42 2021 +0200
@@ -6,7 +6,9 @@
         <page string="Customs" id="customs">
             <label name="customs_category"/>
             <field name="customs_category"/>
-            <newline/>
+            <label name="country_of_origin"/>
+            <field name="country_of_origin"/>
+
             <label name="tariff_codes_category"/>
             <field name="tariff_codes_category"/>
             <field name="tariff_codes" colspan="4"

Reply via email to