diff --git a/modules/web_shop/__init__.py b/modules/web_shop/__init__.py index 3d9af691e3..e9e390d36c 100644 --- a/modules/web_shop/__init__.py +++ b/modules/web_shop/__init__.py @@ -32,3 +32,6 @@ def register(): Pool.register( web.Shop_PriceList, module='web_shop', type_='model', depends=['sale_price_list']) + 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 3808e6283b..ae324e9255 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'), get_require_version('trytond_sale_price_list'), diff --git a/modules/web_shop/tests/test_module.py b/modules/web_shop/tests/test_module.py index 9b92b689ec..f6904abe5f 100644 --- a/modules/web_shop/tests/test_module.py +++ b/modules/web_shop/tests/test_module.py @@ -8,7 +8,9 @@ from trytond.tests.test_tryton import ModuleTestCase class WebShopTestCase(CompanyTestMixin, ModuleTestCase): 'Test Web Shop module' module = 'web_shop' - extras = ['product_attribute', 'product_image', 'sale_price_list'] + extras = [ + 'account_tax_rule_country', 'product_attribute', 'product_image', + 'sale_price_list'] del ModuleTestCase diff --git a/modules/web_shop/tryton.cfg b/modules/web_shop/tryton.cfg index 3ef5b953d1..7fa184947d 100644 --- a/modules/web_shop/tryton.cfg +++ b/modules/web_shop/tryton.cfg @@ -11,6 +11,7 @@ depends: stock web_user extras_depend: + account_tax_rule_country product_attribute product_image sale_price_list diff --git a/modules/web_shop/web.py b/modules/web_shop/web.py index 8959017373..c16076be3b 100644 --- a/modules/web_shop/web.py +++ b/modules/web_shop/web.py @@ -297,6 +297,22 @@ class Shop_PriceList(metaclass=PoolMeta): 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' diff --git a/modules/web_shop_product_data_feed/__init__.py b/modules/web_shop_product_data_feed/__init__.py index 01b2bb0505..4500ca3f19 100644 --- a/modules/web_shop_product_data_feed/__init__.py +++ b/modules/web_shop_product_data_feed/__init__.py @@ -29,3 +29,7 @@ def register(): web.Shop_ShipmentCost, module='web_shop_product_data_feed', type_='model', depends=['sale_shipment_cost']) + Pool.register( + web.Shop_TaxRuleCountry, + module='web_shop_product_data_feed', type_='model', + depends=['account_tax_rule_country']) diff --git a/modules/web_shop_product_data_feed/setup.py b/modules/web_shop_product_data_feed/setup.py index f2479a26fa..58be18d967 100755 --- a/modules/web_shop_product_data_feed/setup.py +++ b/modules/web_shop_product_data_feed/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_kit'), get_require_version('trytond_product_measurements'), get_require_version('trytond_sale_shipment_cost'), diff --git a/modules/web_shop_product_data_feed/tests/test_module.py b/modules/web_shop_product_data_feed/tests/test_module.py index 6ab60e0056..85d6dfcee9 100644 --- a/modules/web_shop_product_data_feed/tests/test_module.py +++ b/modules/web_shop_product_data_feed/tests/test_module.py @@ -17,7 +17,9 @@ from trytond.tests.test_tryton import ( class WebShopProductDataFeedTestCase(ModuleTestCase): "Test Web Shop Product Data Feed module" module = 'web_shop_product_data_feed' - extras = ['product_kit', 'product_measurements', 'sale_shipment_cost'] + extras = [ + 'account_tax_rule_country', 'product_kit', 'product_measurements', + 'sale_shipment_cost'] @with_transaction() def test_data_feed(self): diff --git a/modules/web_shop_product_data_feed/tryton.cfg b/modules/web_shop_product_data_feed/tryton.cfg index a465c73f8b..389d0d8e23 100644 --- a/modules/web_shop_product_data_feed/tryton.cfg +++ b/modules/web_shop_product_data_feed/tryton.cfg @@ -5,6 +5,7 @@ depends: product web_shop extras_depend: + account_tax_rule_country product_kit product_measurements sale_shipment_cost diff --git a/modules/web_shop_product_data_feed/web.py b/modules/web_shop_product_data_feed/web.py index ac9211f176..cd7061b38b 100644 --- a/modules/web_shop_product_data_feed/web.py +++ b/modules/web_shop_product_data_feed/web.py @@ -396,3 +396,21 @@ class Shop_ShipmentCost(metaclass=PoolMeta): f'{cost} {self.currency.code}') row['shipping'] = ','.join(shipping) return row + + +class Shop_TaxRuleCountry(metaclass=PoolMeta): + __name__ = 'web.shop' + + def _product_data_feed_carrier_cost( + self, product, country, carrier, price, 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', country.id) + return super()._product_data_feed_carrier_cost( + product, country, carrier, price, pattern=pattern)