diff --git a/modules/web_shop/__init__.py b/modules/web_shop/__init__.py index be3b04238d..f60a4bd19d 100644 --- a/modules/web_shop/__init__.py +++ b/modules/web_shop/__init__.py @@ -28,3 +28,6 @@ def register(): Pool.register( product.Image, module='web_shop', type_='model', depends=['product_image']) + Pool.register( + web.Shop_TaxRuleCountry, + module='web_shop', type_='model', depends=['account_tax_rule_country']) diff --git a/modules/web_shop/setup.py b/modules/web_shop/setup.py index 57f6a835ce..4e646d82e2 100755 --- a/modules/web_shop/setup.py +++ b/modules/web_shop/setup.py @@ -51,6 +51,7 @@ for dep in info.get('depends', []): requires.append(get_require_version('trytond')) tests_require = [ + get_require_version('trytond_account_tax_rule_country'), get_require_version('trytond_product_attribute'), get_require_version('trytond_product_image'), ] diff --git a/modules/web_shop/tests/test_module.py b/modules/web_shop/tests/test_module.py index 923b136ea0..7403715606 100644 --- a/modules/web_shop/tests/test_module.py +++ b/modules/web_shop/tests/test_module.py @@ -8,7 +8,8 @@ from trytond.tests.test_tryton import ModuleTestCase class WebShopTestCase(CompanyTestMixin, ModuleTestCase): 'Test Web Shop module' module = 'web_shop' - extras = ['product_attribute', 'product_image'] + extras = [ + 'account_tax_rule_country', 'product_attribute', 'product_image'] del ModuleTestCase diff --git a/modules/web_shop/tryton.cfg b/modules/web_shop/tryton.cfg index d016109c6c..c966f9fd2b 100644 --- a/modules/web_shop/tryton.cfg +++ b/modules/web_shop/tryton.cfg @@ -10,6 +10,7 @@ depends: stock web_user extras_depend: + account_tax_rule_country product_attribute product_image xml: diff --git a/modules/web_shop/web.py b/modules/web_shop/web.py index 6d7b725d94..d46cde95b2 100644 --- a/modules/web_shop/web.py +++ b/modules/web_shop/web.py @@ -252,6 +252,22 @@ class Shop(DeactivableMixin, ModelSQL, ModelView): return sale +class Shop_TaxRuleCountry(metaclass=PoolMeta): + __name__ = 'web.shop' + + def get_products(self, pattern=None): + pattern = pattern.copy() if pattern is not None else {} + if (self.warehouse + and self.warehouse.address + and self.warehouse.address.country): + pattern.setdefault( + 'from_country', self.warehouse.address.country.id) + else: + pattern.setdefault('from_country') + pattern.setdefault('to_country') + return super().get_products(pattern=pattern) + + class Shop_Warehouse(ModelSQL): "Web Shop - Warehouse" __name__ = 'web.shop-stock.location'