diff --git a/crm_dynamic_fields/README.rst b/crm_dynamic_fields/README.rst new file mode 100644 index 000000000..d1886ed12 --- /dev/null +++ b/crm_dynamic_fields/README.rst @@ -0,0 +1,49 @@ +.. image:: https://img.shields.io/badge/licenSe-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +CRM Dynamic Fields +================== +This module helps you to create custom field in CRM without any technical knowledge. + +Configuration +============= +- Add user in create custom field group + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: (V16) Dhanya Babu, + (V17) Ayana KP, + (V18) Adarsh K, +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 +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/crm_dynamic_fields/__init__.py b/crm_dynamic_fields/__init__.py new file mode 100644 index 000000000..833d4800d --- /dev/null +++ b/crm_dynamic_fields/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Adarsh K () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models +from . import wizard diff --git a/crm_dynamic_fields/__manifest__.py b/crm_dynamic_fields/__manifest__.py new file mode 100644 index 000000000..5d152a209 --- /dev/null +++ b/crm_dynamic_fields/__manifest__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Adarsh K () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'CRM Dynamic Fields', + 'version': '18.0.1.0.0', + 'category': 'Extra Tools', + 'summary': "Helps to Add Custom Fields for Opportunity from user interface", + 'description': """Adding Custom Fields for Opportunity + without any technical knowledge""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['crm'], + 'data': [ + 'security/crm_dynamic_fields_groups.xml', + 'security/ir.model.access.csv', + 'data/crm_dynamic_fields_widget_data.xml', + 'wizard/crm_dynamic_fields_views.xml', + 'views/crm_lead_views.xml', + 'views/ir_model_fields_views.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/crm_dynamic_fields/data/crm_dynamic_fields_widget_data.xml b/crm_dynamic_fields/data/crm_dynamic_fields_widget_data.xml new file mode 100644 index 000000000..bcb8445c1 --- /dev/null +++ b/crm_dynamic_fields/data/crm_dynamic_fields_widget_data.xml @@ -0,0 +1,41 @@ + + + + + + image + Image + + + + many2many_tags + Many2many Tags + + + + binary + Binary + + + + radio + Radio + + + + priority + Priority + + + + monetary + Monetary + + + + selection + Selection + + + \ No newline at end of file diff --git a/crm_dynamic_fields/doc/RELEASE_NOTES.md b/crm_dynamic_fields/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..7b2d1b7a5 --- /dev/null +++ b/crm_dynamic_fields/doc/RELEASE_NOTES.md @@ -0,0 +1,5 @@ +## Module +#### 10.09.2024 +#### Version 17.0.1.0.0 +#### ADD +- Initial Commit for CRM Dynamic Fields diff --git a/crm_dynamic_fields/models/__init__.py b/crm_dynamic_fields/models/__init__.py new file mode 100644 index 000000000..727ff918d --- /dev/null +++ b/crm_dynamic_fields/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Adarsh K () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import crm_field_widgets +from . import ir_model_fields diff --git a/crm_dynamic_fields/models/crm_field_widgets.py b/crm_dynamic_fields/models/crm_field_widgets.py new file mode 100644 index 000000000..a276f6f42 --- /dev/null +++ b/crm_dynamic_fields/models/crm_field_widgets.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Adarsh K () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class CRMFieldWidgets(models.Model): + """We can't filter a selection field dynamically,so when we select a + field its widgets also need to change according to the selected field type, + we can't do it by a 'selection' field,need a 'Many2one' field.""" + _name = 'crm.field.widgets' + _description = 'CRM Field Widgets' + + name = fields.Char(string="Name", help='Name of the widget') + description = fields.Char(string="Description", + help='Description of the widget') diff --git a/crm_dynamic_fields/models/ir_model_fields.py b/crm_dynamic_fields/models/ir_model_fields.py new file mode 100644 index 000000000..4e19a4943 --- /dev/null +++ b/crm_dynamic_fields/models/ir_model_fields.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Adarsh K () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models + + +class IrModelFields(models.Model): + """Adding a new field to understand the dynamically created fields.""" + _inherit = 'ir.model.fields' + + is_dynamic = fields.Boolean(string="Dynamic Field", + help="Flag to indicate whether this " + "field is dynamically created or " + "not.") diff --git a/crm_dynamic_fields/security/crm_dynamic_fields_groups.xml b/crm_dynamic_fields/security/crm_dynamic_fields_groups.xml new file mode 100644 index 000000000..5df159b49 --- /dev/null +++ b/crm_dynamic_fields/security/crm_dynamic_fields_groups.xml @@ -0,0 +1,8 @@ + + + + + + Create Custom Fields in CRM + + \ No newline at end of file diff --git a/crm_dynamic_fields/security/ir.model.access.csv b/crm_dynamic_fields/security/ir.model.access.csv new file mode 100644 index 000000000..1b1af6a2a --- /dev/null +++ b/crm_dynamic_fields/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_crm_dynamic_fields_user,access.crm.dynamic.fields.user,model_crm_dynamic_fields,base.group_user,1,1,1,1 +access_crm_field_widgets_user,access.crm.field.widgets.user,model_crm_field_widgets,base.group_user,1,1,1,1 diff --git a/crm_dynamic_fields/static/description/assets/cybro-icon.png b/crm_dynamic_fields/static/description/assets/cybro-icon.png new file mode 100644 index 000000000..06e73e11d Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/cybro-icon.png differ diff --git a/crm_dynamic_fields/static/description/assets/cybro-odoo.png b/crm_dynamic_fields/static/description/assets/cybro-odoo.png new file mode 100644 index 000000000..ed02e07a4 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/cybro-odoo.png differ diff --git a/crm_dynamic_fields/static/description/assets/h2.png b/crm_dynamic_fields/static/description/assets/h2.png new file mode 100644 index 000000000..0bfc4707d Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/h2.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/arrows-repeat.svg b/crm_dynamic_fields/static/description/assets/icons/arrows-repeat.svg new file mode 100644 index 000000000..1d7efabc5 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/arrows-repeat.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-1.png b/crm_dynamic_fields/static/description/assets/icons/banner-1.png new file mode 100644 index 000000000..c180db172 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/banner-1.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-2.svg b/crm_dynamic_fields/static/description/assets/icons/banner-2.svg new file mode 100644 index 000000000..e606d97d9 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/banner-2.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-bg.png b/crm_dynamic_fields/static/description/assets/icons/banner-bg.png new file mode 100644 index 000000000..a8238d3c0 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/banner-bg.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-bg.svg b/crm_dynamic_fields/static/description/assets/icons/banner-bg.svg new file mode 100644 index 000000000..b1378103e --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/banner-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-call.svg b/crm_dynamic_fields/static/description/assets/icons/banner-call.svg new file mode 100644 index 000000000..96c687e81 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/banner-call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-mail.svg b/crm_dynamic_fields/static/description/assets/icons/banner-mail.svg new file mode 100644 index 000000000..cbf0d158d --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/banner-mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-pattern.svg b/crm_dynamic_fields/static/description/assets/icons/banner-pattern.svg new file mode 100644 index 000000000..9c1c7e101 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/banner-pattern.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/banner-promo.svg b/crm_dynamic_fields/static/description/assets/icons/banner-promo.svg new file mode 100644 index 000000000..d52791b11 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/banner-promo.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/brand-pair.svg b/crm_dynamic_fields/static/description/assets/icons/brand-pair.svg new file mode 100644 index 000000000..d8db7fc1e --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/brand-pair.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/check.png b/crm_dynamic_fields/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/check.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/chevron.png b/crm_dynamic_fields/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/chevron.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/close-icon.svg b/crm_dynamic_fields/static/description/assets/icons/close-icon.svg new file mode 100644 index 000000000..df8cce37a --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/close-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/cogs.png b/crm_dynamic_fields/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/cogs.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/collabarate-icon.svg b/crm_dynamic_fields/static/description/assets/icons/collabarate-icon.svg new file mode 100644 index 000000000..dd4e10518 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/collabarate-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/consultation.png b/crm_dynamic_fields/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/consultation.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/cybro-logo.png b/crm_dynamic_fields/static/description/assets/icons/cybro-logo.png new file mode 100644 index 000000000..ff4b78220 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/cybro-logo.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/down.svg b/crm_dynamic_fields/static/description/assets/icons/down.svg new file mode 100644 index 000000000..f21c36271 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/crm_dynamic_fields/static/description/assets/icons/ecom-black.png b/crm_dynamic_fields/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/ecom-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/education-black.png b/crm_dynamic_fields/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/education-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/faq.png b/crm_dynamic_fields/static/description/assets/icons/faq.png new file mode 100644 index 000000000..4250b5b81 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/faq.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/feature-icon.svg b/crm_dynamic_fields/static/description/assets/icons/feature-icon.svg new file mode 100644 index 000000000..fa0ea6850 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/feature-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/feature.png b/crm_dynamic_fields/static/description/assets/icons/feature.png new file mode 100644 index 000000000..ac7a785c0 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/feature.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/gear.svg b/crm_dynamic_fields/static/description/assets/icons/gear.svg new file mode 100644 index 000000000..0cc66b6ea --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/gear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/hero.gif b/crm_dynamic_fields/static/description/assets/icons/hero.gif new file mode 100644 index 000000000..3990c7415 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/hero.gif differ diff --git a/crm_dynamic_fields/static/description/assets/icons/hire-odoo.svg b/crm_dynamic_fields/static/description/assets/icons/hire-odoo.svg new file mode 100644 index 000000000..e1ac089b0 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/hire-odoo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/hotel-black.png b/crm_dynamic_fields/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/hotel-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/license.png b/crm_dynamic_fields/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/license.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/life-ring-icon.svg b/crm_dynamic_fields/static/description/assets/icons/life-ring-icon.svg new file mode 100644 index 000000000..3ae6e1d89 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/life-ring-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/lifebuoy.png b/crm_dynamic_fields/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/lifebuoy.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/mail.svg b/crm_dynamic_fields/static/description/assets/icons/mail.svg new file mode 100644 index 000000000..1eedde695 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/manufacturing-black.png b/crm_dynamic_fields/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/manufacturing-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/notes.png b/crm_dynamic_fields/static/description/assets/icons/notes.png new file mode 100644 index 000000000..ee5e95404 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/notes.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/notification icon.svg b/crm_dynamic_fields/static/description/assets/icons/notification icon.svg new file mode 100644 index 000000000..053189973 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/notification icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/odoo-consultancy.svg b/crm_dynamic_fields/static/description/assets/icons/odoo-consultancy.svg new file mode 100644 index 000000000..e05f65bde --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/odoo-consultancy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/odoo-licencing.svg b/crm_dynamic_fields/static/description/assets/icons/odoo-licencing.svg new file mode 100644 index 000000000..2606c88b0 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/odoo-licencing.svg @@ -0,0 +1,3 @@ + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/odoo-logo.png b/crm_dynamic_fields/static/description/assets/icons/odoo-logo.png new file mode 100644 index 000000000..0e4d0eb5a Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/odoo-logo.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/patter.svg b/crm_dynamic_fields/static/description/assets/icons/patter.svg new file mode 100644 index 000000000..25c9c0a8f --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/patter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/pattern1.png b/crm_dynamic_fields/static/description/assets/icons/pattern1.png new file mode 100644 index 000000000..09ab0fb2d Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/pattern1.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/pos-black.png b/crm_dynamic_fields/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/pos-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/puzzle-piece-icon.svg b/crm_dynamic_fields/static/description/assets/icons/puzzle-piece-icon.svg new file mode 100644 index 000000000..3e9ad9373 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/puzzle-piece-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/puzzle.png b/crm_dynamic_fields/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/puzzle.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/replace-icon.svg b/crm_dynamic_fields/static/description/assets/icons/replace-icon.svg new file mode 100644 index 000000000..d0e3a7af1 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/replace-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/restaurant-black.png b/crm_dynamic_fields/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/restaurant-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/screenshot-main.png b/crm_dynamic_fields/static/description/assets/icons/screenshot-main.png new file mode 100644 index 000000000..575f8e676 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/screenshot-main.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/screenshot.png b/crm_dynamic_fields/static/description/assets/icons/screenshot.png new file mode 100644 index 000000000..cef272529 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/screenshot.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/service-black.png b/crm_dynamic_fields/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/service-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/skype-fill.svg b/crm_dynamic_fields/static/description/assets/icons/skype-fill.svg new file mode 100644 index 000000000..c17423639 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/skype-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/skype.png b/crm_dynamic_fields/static/description/assets/icons/skype.png new file mode 100644 index 000000000..51b409fb3 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/skype.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/skype.svg b/crm_dynamic_fields/static/description/assets/icons/skype.svg new file mode 100644 index 000000000..df3dad39b --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/skype.svg @@ -0,0 +1,3 @@ + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/star-1.svg b/crm_dynamic_fields/static/description/assets/icons/star-1.svg new file mode 100644 index 000000000..7e55ab162 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/star-1.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/star-2.svg b/crm_dynamic_fields/static/description/assets/icons/star-2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/star-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/support.png b/crm_dynamic_fields/static/description/assets/icons/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/support.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/test-1 - Copy.png b/crm_dynamic_fields/static/description/assets/icons/test-1 - Copy.png new file mode 100644 index 000000000..f6a902663 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/test-1 - Copy.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/test-1.png b/crm_dynamic_fields/static/description/assets/icons/test-1.png new file mode 100644 index 000000000..0908add2b Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/test-1.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/test-2.png b/crm_dynamic_fields/static/description/assets/icons/test-2.png new file mode 100644 index 000000000..4671fe91e Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/test-2.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/trading-black.png b/crm_dynamic_fields/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/trading-black.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/training.png b/crm_dynamic_fields/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/training.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/translate.svg b/crm_dynamic_fields/static/description/assets/icons/translate.svg new file mode 100644 index 000000000..af9c8a1aa --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/translate.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/update.png b/crm_dynamic_fields/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/update.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/user.png b/crm_dynamic_fields/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/user.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/video.png b/crm_dynamic_fields/static/description/assets/icons/video.png new file mode 100644 index 000000000..576705b17 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/video.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/whatsapp.png b/crm_dynamic_fields/static/description/assets/icons/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/whatsapp.png differ diff --git a/crm_dynamic_fields/static/description/assets/icons/wrench-icon.svg b/crm_dynamic_fields/static/description/assets/icons/wrench-icon.svg new file mode 100644 index 000000000..174b5a465 --- /dev/null +++ b/crm_dynamic_fields/static/description/assets/icons/wrench-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/crm_dynamic_fields/static/description/assets/icons/wrench.png b/crm_dynamic_fields/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/icons/wrench.png differ diff --git a/crm_dynamic_fields/static/description/assets/modules/1.gif b/crm_dynamic_fields/static/description/assets/modules/1.gif new file mode 100644 index 000000000..ae3a880a2 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/modules/1.gif differ diff --git a/crm_dynamic_fields/static/description/assets/modules/2.gif b/crm_dynamic_fields/static/description/assets/modules/2.gif new file mode 100644 index 000000000..d19e2b352 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/modules/2.gif differ diff --git a/crm_dynamic_fields/static/description/assets/modules/3.png b/crm_dynamic_fields/static/description/assets/modules/3.png new file mode 100644 index 000000000..8513873ea Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/modules/3.png differ diff --git a/crm_dynamic_fields/static/description/assets/modules/4.png b/crm_dynamic_fields/static/description/assets/modules/4.png new file mode 100644 index 000000000..3bedf7981 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/modules/4.png differ diff --git a/crm_dynamic_fields/static/description/assets/modules/5.png b/crm_dynamic_fields/static/description/assets/modules/5.png new file mode 100644 index 000000000..0e311ca87 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/modules/5.png differ diff --git a/crm_dynamic_fields/static/description/assets/modules/6.jpg b/crm_dynamic_fields/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..67c7f7062 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/modules/6.jpg differ diff --git a/crm_dynamic_fields/static/description/assets/screenshots/ss1.png b/crm_dynamic_fields/static/description/assets/screenshots/ss1.png new file mode 100644 index 000000000..e268a251a Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/screenshots/ss1.png differ diff --git a/crm_dynamic_fields/static/description/assets/screenshots/ss2.png b/crm_dynamic_fields/static/description/assets/screenshots/ss2.png new file mode 100644 index 000000000..4dfa2f5f3 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/screenshots/ss2.png differ diff --git a/crm_dynamic_fields/static/description/assets/screenshots/ss3.png b/crm_dynamic_fields/static/description/assets/screenshots/ss3.png new file mode 100644 index 000000000..6318a957d Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/screenshots/ss3.png differ diff --git a/crm_dynamic_fields/static/description/assets/screenshots/ss4.png b/crm_dynamic_fields/static/description/assets/screenshots/ss4.png new file mode 100644 index 000000000..a1c2bf5c5 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/screenshots/ss4.png differ diff --git a/crm_dynamic_fields/static/description/assets/screenshots/ss5.png b/crm_dynamic_fields/static/description/assets/screenshots/ss5.png new file mode 100644 index 000000000..dd4b56d73 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/screenshots/ss5.png differ diff --git a/crm_dynamic_fields/static/description/assets/screenshots/ss6.png b/crm_dynamic_fields/static/description/assets/screenshots/ss6.png new file mode 100644 index 000000000..c1769d067 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/screenshots/ss6.png differ diff --git a/crm_dynamic_fields/static/description/assets/screenshots/ss7.png b/crm_dynamic_fields/static/description/assets/screenshots/ss7.png new file mode 100644 index 000000000..29fff21b0 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/screenshots/ss7.png differ diff --git a/crm_dynamic_fields/static/description/assets/y18.jpg b/crm_dynamic_fields/static/description/assets/y18.jpg new file mode 100644 index 000000000..eea1714f2 Binary files /dev/null and b/crm_dynamic_fields/static/description/assets/y18.jpg differ diff --git a/crm_dynamic_fields/static/description/banner.png b/crm_dynamic_fields/static/description/banner.png new file mode 100644 index 000000000..72d099b49 Binary files /dev/null and b/crm_dynamic_fields/static/description/banner.png differ diff --git a/crm_dynamic_fields/static/description/icon.png b/crm_dynamic_fields/static/description/icon.png new file mode 100644 index 000000000..1751b0d0a Binary files /dev/null and b/crm_dynamic_fields/static/description/icon.png differ diff --git a/crm_dynamic_fields/static/description/index.html b/crm_dynamic_fields/static/description/index.html new file mode 100644 index 000000000..570071fa2 --- /dev/null +++ b/crm_dynamic_fields/static/description/index.html @@ -0,0 +1,991 @@ + + + + + + CRM Dynamic Fields + + + + + + + + + + +
+
+ + + +
+
+ Community +
+
+ Enterprise +
+ + + + +
+
+ +
+
+
+
+

+ Tool For Adding New Fields In Odoo CRM Without Any Technical knowledge. +

+

CRM Dynamic Fields +

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

Key + Heighlights

+
+
+
+
+ +
+
+ Create custom fields +
+
+
+
+
+
+ +
+
+ Different field types can choose +
+
+
+
+
+
+ +
+
+ Delete the Custom created Fields +
+
+
+
+
+
+ +
+
+ Supports both Community and Enterprise +
+
+
+
+
+ +
+
+
+ CRM Dynamic Fields +

+ Are you ready to make your business more + organized? +
Improve now! +

+ +
+
+ +
+
+
+ + + + +
+
+ +
+
+
+
+ acc_bg +
+ +
+
+
+
+

+ Create Custom Fields in CRM +

+
+
+

+ Go to users & Companies -> Users -> enable Create Custom Fields in CRM for user. +

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

+ Create Fields Smart Button +

+
+
+

+ Go to CRM. Now a "Create Fields" smart button will appear on form view. +

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

+ Please enter the details which you want to display the screen. You can select different field type for fields.Then Click "Create" button. Then You can see the corresponding field in the screen. +

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

+ The Newly created field will be generated and that will be visible in the CRM view. +

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

+ The Newly created field can be deleted from CRM view. +

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

+ Select the Fields need to be deleted.And delete it using delete from action button. +

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

+ Click Delete for the confirmation. +

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

+ Can Create custom fields.

+
+ +
+
+
+
+
+
+ +
+

+ You can Delete the Custom created Fields.

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

+ Yes, there’s no limit on the number of custom fields you can create. You can add multiple custom fields, one after the other, based on your business requirements. +

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

+ Latest Release 18.0.1.0.0 +

+ + 8th October, 2024 + +
+
+
+
+
+ Add +
+
+
+
    +
  • + Initial Commit +
  • + +
+
+
+
+
+
+
+
+
+
+ + + + + + +
+

+ Our Services

+ +
+ +
+
+ .... +
+
+ +
+ + +
+
+ + + + + + diff --git a/crm_dynamic_fields/views/crm_lead_views.xml b/crm_dynamic_fields/views/crm_lead_views.xml new file mode 100644 index 000000000..62703b76e --- /dev/null +++ b/crm_dynamic_fields/views/crm_lead_views.xml @@ -0,0 +1,22 @@ + + + + + crm.lead.view.form.inherit.crm.dynamic.fields + crm.lead + + + +
+
+
+
+
diff --git a/crm_dynamic_fields/views/ir_model_fields_views.xml b/crm_dynamic_fields/views/ir_model_fields_views.xml new file mode 100644 index 000000000..8ee969f41 --- /dev/null +++ b/crm_dynamic_fields/views/ir_model_fields_views.xml @@ -0,0 +1,17 @@ + + + + + ir.model.fields.view.search.inherit.crm.dynamic.fields + ir.model.fields + + + + + + + + + diff --git a/crm_dynamic_fields/wizard/__init__.py b/crm_dynamic_fields/wizard/__init__.py new file mode 100644 index 000000000..4ddf361bd --- /dev/null +++ b/crm_dynamic_fields/wizard/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Adarsh K () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import crm_dynamic_fields diff --git a/crm_dynamic_fields/wizard/crm_dynamic_fields.py b/crm_dynamic_fields/wizard/crm_dynamic_fields.py new file mode 100644 index 000000000..45304f6d2 --- /dev/null +++ b/crm_dynamic_fields/wizard/crm_dynamic_fields.py @@ -0,0 +1,265 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Adarsh K () +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +import xml.etree.ElementTree as xee +from bs4 import BeautifulSoup +from odoo import api, fields, models, _ + + +class CRMDynamicFields(models.TransientModel): + """Creating new transient model for the wizard from""" + _name = 'crm.dynamic.fields' + _description = 'CRM Dynamic Fields' + _inherit = ['ir.model.fields'] + + form_view_id = fields.Many2one('ir.ui.view', string="Form View ID", + help="Select the view to be used as" + "the form view for this field.") + + @api.model + def get_possible_field_types(self): + """Return all available field types other than + 'one2many' and 'reference' fields.""" + field_list = sorted((key, key) for key in fields.MetaField.by_type) + field_list.remove(('one2many', 'one2many')) + field_list.remove(('reference', 'reference')) + return field_list + + def set_domain(self): + """Return the fields that are currently present in the form""" + view_id = self.env.ref('crm.crm_lead_view_form') + view_arch = str(view_id.arch_base) + doc = xee.fromstring(view_arch) + field_list_1 = [tag.attrib['name'] for tag in doc.findall('.//field') + if 'invisible' not in tag.attrib and 'attrs' + not in tag.attrib] + model_id = self.env['ir.model'].sudo().search( + [('model', '=', 'crm.lead')]) + return [('model_id', '=', model_id.id), ('state', '=', 'base'), + ('name', 'in', field_list_1)] + + def _set_default(self): + """setting the default model""" + model_id = self.env['ir.model'].sudo().search( + [('model', '=', 'crm.lead')]) + return [('id', '=', model_id.id)] + + position_field_id = fields.Many2one('ir.model.fields', + string='Field Name', + domain=set_domain, required=True, + help="Select the field that will " + "determine the position of" + " the custom field.") + position = fields.Selection([('before', 'Before'), + ('after', 'After')], + string='Position in Backend', + required=True, help="Position of field") + model_id = fields.Many2one('ir.model', string='Model', + required=True, + index=True, ondelete='cascade', + help="The models this field belongs to", + domain=_set_default) + ref_model_id = fields.Many2one('ir.model', string='Model', + index=True, + help="This field is used to specify the " + "model that the dynamic field will be " + "associated with.") + selection_field = fields.Char(string="Selection Options", + help='Enter selection value') + rel_field_id = fields.Many2one('ir.model.fields', + string='Related Field', + help='Related field') + field_type = fields.Selection(selection='get_possible_field_types', + string='Field Type', required=True, + help='The type of field that will be ' + 'created for this dynamic field.' + 'This field is required and must be ' + 'set to one of the possible' + 'field types returned by the ' + '"get_possible_field_types" method.') + ttype = fields.Selection(string="Field Type", related='field_type', + help='The type of field that this dynamic field ' + 'corresponds to.') + widget_id = fields.Many2one('crm.field.widgets', string='Widget', + help='Select widget') + # Already existing field. + groups = fields.Many2many('res.groups', + 'product_dynamic_fields_group_rel', + 'field_id', 'group_id', + help='The security groups that have access to ' + 'this dynamic field.') + extra_features = fields.Boolean(string="Show Extra Properties", + help="A boolean field that determines " + "whether to display extra properties " + "for this dynamic field in the user " + "interface") + + def action_create_fields(self): + """ Creates a new custom field for the project.project model and adds + it to the project form view.""" + self.env['ir.model.fields'].sudo().create( + {'name': self.name, + 'field_description': self.field_description, + 'model_id': self.model_id.id, + 'ttype': self.field_type, + 'relation': self.ref_model_id.model, + 'required': self.required, + 'index': self.index, + 'store': self.store, + 'help': self.help, + 'readonly': self.readonly, + 'selection': self.selection_field, + 'copied': self.copied, + 'is_dynamic': True + }) + inherit_id = self.env.ref('crm.crm_lead_view_form') + view_id = self.env.ref('crm.crm_lead_view_form') + view_arch = str(view_id.arch_base) + soup = BeautifulSoup(view_arch, 'html.parser') + fields_all = soup.find_all('field', + attrs={"name": self.position_field_id.name}) + for field in fields_all: + if field.parent.name == "div": + parent_div = field.parent + class_name_string = ' '.join(parent_div['class']) + if self.position == 'before': + if self.widget_id: + arch_base = _('' + '' + '' + '').format( + self.position_field_id.name, self.position, + self.name, + self.widget_id.name) + else: + arch_base = ('' + '' + '' + '').format( + self.position_field_id.name, + self.position, self.name) + else: + if self.widget_id: + arch_base = _('' + '' + '
' + '' + '
' + '
').format( + class_name_string, self.position, + self.name, + self.widget_id.name) + else: + arch_base = ('' + '' + '
' + '' + '
' + '
').format(class_name_string, + self.position, + self.name) + else: + arch_base = _('' + '' + '' + '' + '' + '') % ( + self.position_field_id.name, self.position, + self.name) + if self.widget_id: + arch_base = _('' + '' + '' + '' + '' + '') % ( + self.position_field_id.name, self.position, + self.name, + self.widget_id.name) + if self.position_field_id.name == 'partner_id': + arch_base = ( + f"""""") + if self.widget_id: + arch_base = ( + f"""""") + self.form_view_id = self.env['ir.ui.view'].sudo().create( + { + 'name': 'crm.dynamic.fields', + 'type': 'form', + 'model': 'crm.lead', + 'mode': 'extension', + 'inherit_id': inherit_id.id, + 'arch_base': arch_base, + 'active': True, + }) + return { + 'type': 'ir.actions.client', + 'tag': 'reload', + } + + @api.depends('field_type') + @api.onchange('field_type') + def onchange_field_type(self): + """ This method is triggered when the field_type field is changed. + It updates the domain of the widget field based on the + selected field_type.""" + if self.field_type: + if self.field_type == 'binary': + return {'domain': {'widget_id': [('name', '=', 'image')]}} + elif self.field_type == 'many2many': + return {'domain': { + 'widget_id': [ + ('name', 'in', ['many2many_tags', 'binary'])]}} + elif self.field_type == 'selection': + return {'domain': { + 'widget_id': [('name', 'in', ['radio', 'priority'])]}} + elif self.field_type == 'float': + return {'domain': {'widget_id': [('name', '=', 'monetary')]}} + elif self.field_type == 'many2one': + return {'domain': {'widget_id': [('name', '=', 'selection')]}} + elif self.field_type == 'Boolean': + return {'domain': {'widget_id': [('name', '=', 'checkbox')]}} + else: + return {'domain': {'widget_id': [('id', '=', False)]}} + return {'domain': {'widget_id': [('id', '=', False)]}} + + def unlink(self): + """Overrides the default 'unlink' method of the + 'CRMDynamicFields' model to perform custom deletion logic.""" + if self.form_view_id: + self.form_view_id.active = False + for field in self: + if field.ttype == 'many2many': + field: [(5, 0, 0)] + else: + query = """delete FROM ir_model_fields WHERE name = %s""" + self.env.cr.execute(query, [field.name]) + return super(CRMDynamicFields, self).unlink() diff --git a/crm_dynamic_fields/wizard/crm_dynamic_fields_views.xml b/crm_dynamic_fields/wizard/crm_dynamic_fields_views.xml new file mode 100644 index 000000000..61e141b36 --- /dev/null +++ b/crm_dynamic_fields/wizard/crm_dynamic_fields_views.xml @@ -0,0 +1,105 @@ + + + + + crm.dynamic.fields.view.form + crm.dynamic.fields + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + Create Custom Fields + crm.dynamic.fields + form + + new + + + + crm.dynamic.fields.view.tree + crm.dynamic.fields + + + + + + + + + + + Delete Custom Fields + crm.dynamic.fields + list + + +

Delete created custom + fields +

+
+
+ + +