From 5df351493eeee0c93a6806b3da61dc14282d8f74 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 7 Mar 2021 12:28:47 +0100 Subject: [PATCH] differentiate between EU / outside EU services --- models/dp_delivery_carrier.py | 14 +++++++++++++- models/dp_shipping_service.py | 4 ++++ views/dp_delivery_carrier.xml | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/models/dp_delivery_carrier.py b/models/dp_delivery_carrier.py index e6ebdab..88c116f 100644 --- a/models/dp_delivery_carrier.py +++ b/models/dp_delivery_carrier.py @@ -86,11 +86,23 @@ class DPDeliveryCarrier(models.Model): last = last, address = addr) + def _get_eu_res_country_group(self): + eu_group = self.env.ref("base.europe", raise_if_not_found=False) + if not eu_group: + raise Warning(_('The Europe country group cannot be found. ' + 'Please update the base module.')) + return eu_group + def get_services_by_country(self, service_class, country_code): if country_code == 'DE': return service_class.services_natl else: - return service_class.services_intl + eu_country_group = self._get_eu_res_country_group() + country_id = self.env['res.country'].search([('code','=',country_code)]) + if country_id in eu_country_group.country_ids.ids: + return service_class.services_eu + else: + return service_class.services_intl # determine lowest-matching-max-weight service within same class def get_service_by_class(self, recipient, weight, service_class): diff --git a/models/dp_shipping_service.py b/models/dp_shipping_service.py index 047d92d..cef502c 100644 --- a/models/dp_shipping_service.py +++ b/models/dp_shipping_service.py @@ -13,6 +13,9 @@ class SMCShippingDpClass(models.Model): # list of services in this class for national delivery services_natl = fields.Many2many(comodel_name = 'delivery.carrier.dp.service', relation = 'dp_class_natl_services_rel') + # list of services in this class for EU delivery + services_eu = fields.Many2many(comodel_name = 'delivery.carrier.dp.service', + relation = 'dp_class_eu_services_rel') # list of services in this class for international delivery services_intl = fields.Many2many(comodel_name = 'delivery.carrier.dp.service', relation = 'dp_class_intl_services_rel') @@ -30,6 +33,7 @@ class SMCShippingDpService(models.Model): width = fields.Integer("Width") length = fields.Integer("Length") international = fields.Boolean("International") + eu = fields.Boolean("EU") # extend stock.picking with fields for Shipment and Voucher ID class SMCStockPickingDp(models.Model): diff --git a/views/dp_delivery_carrier.xml b/views/dp_delivery_carrier.xml index 6b6fe15..5863e00 100644 --- a/views/dp_delivery_carrier.xml +++ b/views/dp_delivery_carrier.xml @@ -40,6 +40,7 @@ + @@ -68,6 +69,7 @@ + @@ -82,6 +84,7 @@ + @@ -95,6 +98,7 @@ +