diff --git a/contacts_timezone/README.rst b/contacts_timezone/README.rst new file mode 100644 index 000000000..b99697b6b --- /dev/null +++ b/contacts_timezone/README.rst @@ -0,0 +1,47 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Contacts Timezone +================== +* Display a contacts local time and time zone based on their address. + +Configuration +============ + - www.odoo.com/documentation/16.0/setup/install.html + - Install our custom addon + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +AFFERO GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +* Developer: (V16) GION DANY, Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +-------- +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com" + +Further Information +----------- +HTML Description: ``__ diff --git a/contacts_timezone/__init__.py b/contacts_timezone/__init__.py new file mode 100644 index 000000000..573e9b4cd --- /dev/null +++ b/contacts_timezone/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import models diff --git a/contacts_timezone/__manifest__.py b/contacts_timezone/__manifest__.py new file mode 100644 index 000000000..175bfeb57 --- /dev/null +++ b/contacts_timezone/__manifest__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': 'Contacts Timezone', + 'version': '16.0.1.0.0', + 'category': 'Contact', + 'summary': 'Display a contacts local time and time zone based on their address.', + 'description': """This module helps to get access to contact's local time and timezone using the address values in the partner form.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['contacts'], + 'data': [ + 'views/res_partner_views.xml', + ], + 'images': [ + 'static/description/banner.jpg', + 'static/description/icon.png', + ], + 'external_dependencies': { + 'python': ['geopy','timezonefinder'], + }, + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} + + diff --git a/contacts_timezone/doc/RELEASE_NOTES.md b/contacts_timezone/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..d7b9de4f8 --- /dev/null +++ b/contacts_timezone/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 05.05.2025 +#### Version 16.0.1.0.0 +#### ADD +- Initial Commit Contacts timezone diff --git a/contacts_timezone/models/__init__.py b/contacts_timezone/models/__init__.py new file mode 100644 index 000000000..8c594e63f --- /dev/null +++ b/contacts_timezone/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import res_partner diff --git a/contacts_timezone/models/res_partner.py b/contacts_timezone/models/res_partner.py new file mode 100644 index 000000000..30b714db5 --- /dev/null +++ b/contacts_timezone/models/res_partner.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +import logging +import pytz +from odoo import api, fields, models +from datetime import datetime +from geopy.geocoders import Nominatim +from timezonefinder import TimezoneFinder + + +_logger = logging.getLogger(__name__) + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + contact_local_time_tz = fields.Char( + string="Local Time",readonly=True, + help="Local Time based on address" + ) + contact_local_tz = fields.Selection( + lambda self: [(tz, tz) for tz in + sorted(pytz.all_timezones, key=lambda tz: tz if not tz.startswith('Etc/') else '_')], + string='Timezone', + compute='_get_timezone_from_address', + store=True, + help="Timezone based on address" + ) + + def action_compute_contact_local_time_tz(self): + """Compute the local time based on the contact's timezone.""" + for record in self: + if record.contact_local_tz: + try: + # Get the timezone and compute the local time + tz = pytz.timezone(record.contact_local_tz) + local_time = datetime.now(tz) + local_time_naive = local_time.replace(tzinfo=None) + record.contact_local_time_tz = local_time_naive + except Exception as e: + record.contact_local_time_tz = False + _logger.exception(f"Error computing local time for {record.name}: {e}") + + else: + record.contact_local_time_tz = False + + @api.depends('country_id', 'state_id', 'street', 'city') + def _get_timezone_from_address(self): + """Compute the timezone based on the partner's address.""" + for record in self: + record.contact_local_tz = False + # Prepare address for geolocation + address = f"{record.state_id.name or ''}, {record.country_id.name or ''}" + geolocator = Nominatim(user_agent="odoo_timezone_app") + tz_finder = TimezoneFinder() + try: + # Get location from address + location = geolocator.geocode(address) + if location: + # Get timezone based on latitude and longitude + tz_str = tz_finder.timezone_at(lat=location.latitude, lng=location.longitude) + if tz_str: + record.contact_local_tz = tz_str + except Exception as e: + _logger.exception(f"Error retrieving timezone for {record.name}: {e}") + record.contact_local_tz = False diff --git a/contacts_timezone/static/description/assets/icons/check.png b/contacts_timezone/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/check.png differ diff --git a/contacts_timezone/static/description/assets/icons/chevron.png b/contacts_timezone/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/chevron.png differ diff --git a/contacts_timezone/static/description/assets/icons/cogs.png b/contacts_timezone/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/cogs.png differ diff --git a/contacts_timezone/static/description/assets/icons/consultation.png b/contacts_timezone/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/consultation.png differ diff --git a/contacts_timezone/static/description/assets/icons/ecom-black.png b/contacts_timezone/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/ecom-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/education-black.png b/contacts_timezone/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/education-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/hotel-black.png b/contacts_timezone/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/hotel-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/license.png b/contacts_timezone/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/license.png differ diff --git a/contacts_timezone/static/description/assets/icons/lifebuoy.png b/contacts_timezone/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/lifebuoy.png differ diff --git a/contacts_timezone/static/description/assets/icons/manufacturing-black.png b/contacts_timezone/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/manufacturing-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/pos-black.png b/contacts_timezone/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/pos-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/puzzle.png b/contacts_timezone/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/puzzle.png differ diff --git a/contacts_timezone/static/description/assets/icons/restaurant-black.png b/contacts_timezone/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/restaurant-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/service-black.png b/contacts_timezone/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/service-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/trading-black.png b/contacts_timezone/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/trading-black.png differ diff --git a/contacts_timezone/static/description/assets/icons/training.png b/contacts_timezone/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/training.png differ diff --git a/contacts_timezone/static/description/assets/icons/update.png b/contacts_timezone/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/update.png differ diff --git a/contacts_timezone/static/description/assets/icons/user.png b/contacts_timezone/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/user.png differ diff --git a/contacts_timezone/static/description/assets/icons/wrench.png b/contacts_timezone/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/contacts_timezone/static/description/assets/icons/wrench.png differ diff --git a/contacts_timezone/static/description/assets/misc/categories.png b/contacts_timezone/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/categories.png differ diff --git a/contacts_timezone/static/description/assets/misc/check-box.png b/contacts_timezone/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/check-box.png differ diff --git a/contacts_timezone/static/description/assets/misc/compass.png b/contacts_timezone/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/compass.png differ diff --git a/contacts_timezone/static/description/assets/misc/corporate.png b/contacts_timezone/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/corporate.png differ diff --git a/contacts_timezone/static/description/assets/misc/customer-support.png b/contacts_timezone/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/customer-support.png differ diff --git a/contacts_timezone/static/description/assets/misc/cybrosys-logo.png b/contacts_timezone/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/cybrosys-logo.png differ diff --git a/contacts_timezone/static/description/assets/misc/features.png b/contacts_timezone/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/features.png differ diff --git a/contacts_timezone/static/description/assets/misc/logo.png b/contacts_timezone/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/logo.png differ diff --git a/contacts_timezone/static/description/assets/misc/pictures.png b/contacts_timezone/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/pictures.png differ diff --git a/contacts_timezone/static/description/assets/misc/pie-chart.png b/contacts_timezone/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/pie-chart.png differ diff --git a/contacts_timezone/static/description/assets/misc/right-arrow.png b/contacts_timezone/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/right-arrow.png differ diff --git a/contacts_timezone/static/description/assets/misc/star.png b/contacts_timezone/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/star.png differ diff --git a/contacts_timezone/static/description/assets/misc/support.png b/contacts_timezone/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/support.png differ diff --git a/contacts_timezone/static/description/assets/misc/whatsapp.png b/contacts_timezone/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/contacts_timezone/static/description/assets/misc/whatsapp.png differ diff --git a/contacts_timezone/static/description/assets/modules/1.png b/contacts_timezone/static/description/assets/modules/1.png new file mode 100644 index 000000000..bd1a82caa Binary files /dev/null and b/contacts_timezone/static/description/assets/modules/1.png differ diff --git a/contacts_timezone/static/description/assets/modules/2.png b/contacts_timezone/static/description/assets/modules/2.png new file mode 100644 index 000000000..7323ebf6d Binary files /dev/null and b/contacts_timezone/static/description/assets/modules/2.png differ diff --git a/contacts_timezone/static/description/assets/modules/3.jpg b/contacts_timezone/static/description/assets/modules/3.jpg new file mode 100755 index 000000000..15892a150 Binary files /dev/null and b/contacts_timezone/static/description/assets/modules/3.jpg differ diff --git a/contacts_timezone/static/description/assets/modules/4.png b/contacts_timezone/static/description/assets/modules/4.png new file mode 100644 index 000000000..fc6659119 Binary files /dev/null and b/contacts_timezone/static/description/assets/modules/4.png differ diff --git a/contacts_timezone/static/description/assets/modules/5.png b/contacts_timezone/static/description/assets/modules/5.png new file mode 100644 index 000000000..c925eee5d Binary files /dev/null and b/contacts_timezone/static/description/assets/modules/5.png differ diff --git a/contacts_timezone/static/description/assets/modules/6.png b/contacts_timezone/static/description/assets/modules/6.png new file mode 100644 index 000000000..a78662b18 Binary files /dev/null and b/contacts_timezone/static/description/assets/modules/6.png differ diff --git a/contacts_timezone/static/description/assets/screenshots/1.png b/contacts_timezone/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..ba97fa74b Binary files /dev/null and b/contacts_timezone/static/description/assets/screenshots/1.png differ diff --git a/contacts_timezone/static/description/assets/screenshots/2.png b/contacts_timezone/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..266ac20ed Binary files /dev/null and b/contacts_timezone/static/description/assets/screenshots/2.png differ diff --git a/contacts_timezone/static/description/assets/screenshots/3.png b/contacts_timezone/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..3883885b7 Binary files /dev/null and b/contacts_timezone/static/description/assets/screenshots/3.png differ diff --git a/contacts_timezone/static/description/assets/screenshots/hero.gif b/contacts_timezone/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..1d11e2456 Binary files /dev/null and b/contacts_timezone/static/description/assets/screenshots/hero.gif differ diff --git a/contacts_timezone/static/description/banner.jpg b/contacts_timezone/static/description/banner.jpg new file mode 100644 index 000000000..9e7a3f724 Binary files /dev/null and b/contacts_timezone/static/description/banner.jpg differ diff --git a/contacts_timezone/static/description/icon.png b/contacts_timezone/static/description/icon.png new file mode 100644 index 000000000..ddfb81dbe Binary files /dev/null and b/contacts_timezone/static/description/icon.png differ diff --git a/contacts_timezone/static/description/index.html b/contacts_timezone/static/description/index.html new file mode 100644 index 000000000..1749ac5b2 --- /dev/null +++ b/contacts_timezone/static/description/index.html @@ -0,0 +1,663 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+ +

+ Contacts Timezone

+

+ This Odoo app allows users to access a contact's local time and timezone based on the address information provided in the partner form. + +

+
+
+ + +
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ This Odoo app enables users to access a contact's local time and timezone based on the address details in the partner form. It automatically detects the timezone using the contact's location, making it easier to manage communication across different time zones. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Automatic Timezone Detection +
+

Automatically retrieves and displays the contact's local time and timezone based on the address information + in the partner form.

+ +
+ + Enhanced Communication Management +
+

Helps users schedule and manage interactions by showing the contact's local time, ensuring better + coordination across different time zones.

+ + +
+
+ + + +
+
+ +
+

+ Configuration +

+
+
+
+ There is a python dependencies for this module called 'geopy' and 'timezonefinder'. You have to install these python dependency before installing this module. You can use sudo pip3 install geopy and sudo pip3 install timezonefinder for installing these dependencies in ubuntu by running the command in terminal.
+
+ + + +
+
+ +
+

+ Screenshots +

+
+
+
+ +
+

+ To Add a new contact, Navigate to Contacts -> Create. +

+ +
+ +
+

+ Enter the state and country in the contact's address. +

+ +
+ +
+

+ Click the clock button to fetch and display the contact's timezone and local time. +

+ +
+
+
+ + + +
+
+ +
+

+ Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

+ Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

+ Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/contacts_timezone/views/res_partner_views.xml b/contacts_timezone/views/res_partner_views.xml new file mode 100644 index 000000000..ec4ded5c2 --- /dev/null +++ b/contacts_timezone/views/res_partner_views.xml @@ -0,0 +1,21 @@ + + + + + res.partner.view.form.inherit.contacts.timezone + + res.partner + + + + + + +