# Copyright 2011-2020 Camptocamp SA # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) from odoo import fields, models, api from pyproj import Transformer from datetime import datetime class ResPartner(models.Model): """Add geo_point to partner using a function filed""" _inherit = "res.partner" geo_point = fields.GeoPoint("Geopoint") """ TODO: Implement a call to GeoPoint.from_latlon(...) @api.onchange('partner_latitude', 'partner_longitude') def _onchange_coordinates(self): """ @api.onchange('geo_point') def _onchange_geo_point(self): odoo_proj = 'epsg:3857' gps_proj = 'epsg:4326' transformer = Transformer.from_crs(odoo_proj, gps_proj) gps_point = transformer.transform( self.geo_point.context[0], self.geo_point.context[1]) self.partner_longitude = gps_point[0] self.partner_latitude = gps_point[1] self.date_localization = datetime.today() def navigate_from_noc(self): NOC_LONGITUDE = 34.1244 NOC_LATITUDE = 35.6666 longitude = self.partner_longitude latitude = self.partner_latitude url = "https://www.openstreetmap.org/directions?engine=" + \ f"fossgis_osrm_car&route={NOC_LONGITUDE}%2C{NOC_LATITUDE}" + \ f"%3B{longitude}%2C{latitude}" return { 'type': 'ir.actions.act_url', 'name': 'Navigate From NOC', "url" : url, 'target': 'new', }