From 40033880f2d1eef0dca096601d4757a99a102950 Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Mon, 24 Sep 2018 11:27:07 -0700 Subject: [PATCH] IMP `sale_planner` backport partner specific geo_localize from 11.0 --- sale_planner/models/__init__.py | 1 + sale_planner/models/partner.py | 29 ++++++++++++++++++++++++++++ sale_planner/wizard/order_planner.py | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 sale_planner/models/partner.py diff --git a/sale_planner/models/__init__.py b/sale_planner/models/__init__.py index 35dedabf..85458b58 100644 --- a/sale_planner/models/__init__.py +++ b/sale_planner/models/__init__.py @@ -1,3 +1,4 @@ from . import sale from . import stock from . import delivery +from . import partner diff --git a/sale_planner/models/partner.py b/sale_planner/models/partner.py new file mode 100644 index 00000000..a14c45d3 --- /dev/null +++ b/sale_planner/models/partner.py @@ -0,0 +1,29 @@ +from odoo import api, fields, models + +try: + from uszipcode import ZipcodeSearchEngine +except ImportError: + ZipcodeSearchEngine = None + + +class Partner(models.Model): + _inherit = 'res.partner' + + @api.multi + def geo_localize(self): + # We need country names in English below + for partner in self.with_context(lang='en_US'): + if ZipcodeSearchEngine and partner.zip: + with ZipcodeSearchEngine() as search: + zipcode = search.by_zipcode(str(self.zip).split('-')[0]) + if zipcode and zipcode['Latitude']: + partner.write({ + 'partner_latitude': zipcode['Latitude'], + 'partner_longitude': zipcode['Longitude'], + 'date_localization': fields.Date.context_today(partner), + }) + else: + super(Partner, partner).geo_localize() + else: + super(Partner, partner).geo_localize() + return True diff --git a/sale_planner/wizard/order_planner.py b/sale_planner/wizard/order_planner.py index 56633d7b..7926a42a 100644 --- a/sale_planner/wizard/order_planner.py +++ b/sale_planner/wizard/order_planner.py @@ -55,7 +55,7 @@ class FakePartner(): @property def date_localization(self): - if not hasattr(self, 'date_localization'): + if not hasattr(self, 'date_localization') or not self.date_localization: self.date_localization = 'TODAY!' # The fast way. if ZipcodeSearchEngine and self.zip: