From f009b190c557a661e8d7dd1fb0ef59a8533f7331 Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Wed, 8 Oct 2025 11:46:51 -0600 Subject: [PATCH 1/9] Adding a module that makes the lost reason on crm leds mandatory --- crm_lost_reason_required/__init__.py | 3 +++ crm_lost_reason_required/__manifest__.py | 16 ++++++++++++++++ crm_lost_reason_required/models/crm_lead.py | 6 ++++++ .../views/crm_lead_views.xml | 19 +++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 crm_lost_reason_required/__init__.py create mode 100644 crm_lost_reason_required/__manifest__.py create mode 100644 crm_lost_reason_required/models/crm_lead.py create mode 100644 crm_lost_reason_required/views/crm_lead_views.xml diff --git a/crm_lost_reason_required/__init__.py b/crm_lost_reason_required/__init__.py new file mode 100644 index 00000000000..ab69f6ee4e6 --- /dev/null +++ b/crm_lost_reason_required/__init__.py @@ -0,0 +1,3 @@ +from . import models + +from odoo import api, SUPERUSER_ID \ No newline at end of file diff --git a/crm_lost_reason_required/__manifest__.py b/crm_lost_reason_required/__manifest__.py new file mode 100644 index 00000000000..17957b3d01a --- /dev/null +++ b/crm_lost_reason_required/__manifest__.py @@ -0,0 +1,16 @@ +{ + "name":"CRM Lost reason required", + "version": "1.0", + "author": "Hector del Reguero", + "category": "Custom", + "depends": ["crm"], + 'data': [ + "views/crm_lead_views.xml", + ], + "installable": True, + "application": True, + "auto_install": False, + "license": "LGPL-3", + + +} \ No newline at end of file diff --git a/crm_lost_reason_required/models/crm_lead.py b/crm_lost_reason_required/models/crm_lead.py new file mode 100644 index 00000000000..ca7bdb75c44 --- /dev/null +++ b/crm_lost_reason_required/models/crm_lead.py @@ -0,0 +1,6 @@ +from odoo import models, fields, api +from odoo.exceptions import ValidationError + +class CrmLead(models.Model): + _inherit = 'crm.lead' + diff --git a/crm_lost_reason_required/views/crm_lead_views.xml b/crm_lost_reason_required/views/crm_lead_views.xml new file mode 100644 index 00000000000..d1b5403a16a --- /dev/null +++ b/crm_lost_reason_required/views/crm_lead_views.xml @@ -0,0 +1,19 @@ + + + + + + crm.lead.lost.wizard.required + crm.lead.lost + + + + + True + + + + + + + \ No newline at end of file From 6d968d3e521d75668122b2ed8854bcbc9d931aca Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Fri, 10 Oct 2025 10:31:29 -0600 Subject: [PATCH 2/9] add changes specified on the pull request --- crm_lost_reason_required/__manifest__.py | 8 +++----- crm_lost_reason_required/models/crm_lead.py | 6 ------ key | 8 ++++++++ key.pub | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) delete mode 100644 crm_lost_reason_required/models/crm_lead.py create mode 100644 key create mode 100644 key.pub diff --git a/crm_lost_reason_required/__manifest__.py b/crm_lost_reason_required/__manifest__.py index 17957b3d01a..59effbbc1df 100644 --- a/crm_lost_reason_required/__manifest__.py +++ b/crm_lost_reason_required/__manifest__.py @@ -1,8 +1,8 @@ { "name":"CRM Lost reason required", - "version": "1.0", - "author": "Hector del Reguero", - "category": "Custom", + "version": "17.0.1.0.0", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "category": "Custom Relationship managmentgit", "depends": ["crm"], 'data': [ "views/crm_lead_views.xml", @@ -11,6 +11,4 @@ "application": True, "auto_install": False, "license": "LGPL-3", - - } \ No newline at end of file diff --git a/crm_lost_reason_required/models/crm_lead.py b/crm_lost_reason_required/models/crm_lead.py deleted file mode 100644 index ca7bdb75c44..00000000000 --- a/crm_lost_reason_required/models/crm_lead.py +++ /dev/null @@ -1,6 +0,0 @@ -from odoo import models, fields, api -from odoo.exceptions import ValidationError - -class CrmLead(models.Model): - _inherit = 'crm.lead' - diff --git a/key b/key new file mode 100644 index 00000000000..730a41dd323 --- /dev/null +++ b/key @@ -0,0 +1,8 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAcDBBPvJ +sfivZCiEARmdTsAAAAGAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIJTJHSGl4GcYmKX7 +2J1y/3nkCVye7/cedi6TiJqD/+Q2AAAAoMMGwYs93fksZqMPyn8FIxukHTp3v5PiITiphX +rYdugYs3ywv8pUNGFwWO4LdWp5clwXDnPguvbsgT5gKWt0YPRrvHpfVRFqMgf86n4AwAKQ +Hl4mkhIzMcf8bafm/K0qeS1cUihZy6+t2EgyNLeLbjWe55h/ZzshXJ028nNxgKuID35219 +OQkHap6sQg3VmTEXzCWNky9nnIWLLKGzVWEdg= +-----END OPENSSH PRIVATE KEY----- diff --git a/key.pub b/key.pub new file mode 100644 index 00000000000..866bcf3597e --- /dev/null +++ b/key.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJTJHSGl4GcYmKX72J1y/3nkCVye7/cedi6TiJqD/+Q2 hector.drv.frontend@gmail.com From 60b7fabd06d11cd27f627d69bf18615428ac6600 Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Fri, 10 Oct 2025 12:30:43 -0600 Subject: [PATCH 3/9] adding the CRM lost reason Module for ASM --- key | 8 -------- key.pub | 1 - 2 files changed, 9 deletions(-) delete mode 100644 key delete mode 100644 key.pub diff --git a/key b/key deleted file mode 100644 index 730a41dd323..00000000000 --- a/key +++ /dev/null @@ -1,8 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAcDBBPvJ -sfivZCiEARmdTsAAAAGAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIJTJHSGl4GcYmKX7 -2J1y/3nkCVye7/cedi6TiJqD/+Q2AAAAoMMGwYs93fksZqMPyn8FIxukHTp3v5PiITiphX -rYdugYs3ywv8pUNGFwWO4LdWp5clwXDnPguvbsgT5gKWt0YPRrvHpfVRFqMgf86n4AwAKQ -Hl4mkhIzMcf8bafm/K0qeS1cUihZy6+t2EgyNLeLbjWe55h/ZzshXJ028nNxgKuID35219 -OQkHap6sQg3VmTEXzCWNky9nnIWLLKGzVWEdg= ------END OPENSSH PRIVATE KEY----- diff --git a/key.pub b/key.pub deleted file mode 100644 index 866bcf3597e..00000000000 --- a/key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJTJHSGl4GcYmKX72J1y/3nkCVye7/cedi6TiJqD/+Q2 hector.drv.frontend@gmail.com From 25aa8faa6e9cf5538dbe974ae38a081d9b72239d Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Mon, 13 Oct 2025 09:03:48 -0600 Subject: [PATCH 4/9] Correction for crm lost reason Correction for crm lost reason test checks delete import models since there is no models fix Typo fix --- crm_lead_to_task/README.rst | 8 +- crm_lost_reason_required/README.rst | 211 +++++++ crm_lost_reason_required/__init__.py | 1 + crm_lost_reason_required/__manifest__.py | 15 + crm_lost_reason_required/pyproject.toml | 3 + crm_lost_reason_required/readme/CONFIGURE.md | 10 + crm_lost_reason_required/readme/CONTEXT.md | 16 + .../readme/CONTRIBUTORS.md | 2 + crm_lost_reason_required/readme/CREDITS.md | 7 + .../readme/DESCRIPTION.md | 7 + crm_lost_reason_required/readme/HISTORY.md | 22 + crm_lost_reason_required/readme/INSTALL.md | 7 + crm_lost_reason_required/readme/ROADMAP.md | 5 + crm_lost_reason_required/readme/USAGE.md | 21 + .../readme/newsfragments/.gitkeep | 0 .../static/description/index.html | 555 ++++++++++++++++++ .../views/crm_lead_views.xml | 15 + 17 files changed, 901 insertions(+), 4 deletions(-) create mode 100644 crm_lost_reason_required/README.rst create mode 100644 crm_lost_reason_required/__init__.py create mode 100644 crm_lost_reason_required/__manifest__.py create mode 100644 crm_lost_reason_required/pyproject.toml create mode 100644 crm_lost_reason_required/readme/CONFIGURE.md create mode 100644 crm_lost_reason_required/readme/CONTEXT.md create mode 100644 crm_lost_reason_required/readme/CONTRIBUTORS.md create mode 100644 crm_lost_reason_required/readme/CREDITS.md create mode 100644 crm_lost_reason_required/readme/DESCRIPTION.md create mode 100644 crm_lost_reason_required/readme/HISTORY.md create mode 100644 crm_lost_reason_required/readme/INSTALL.md create mode 100644 crm_lost_reason_required/readme/ROADMAP.md create mode 100644 crm_lost_reason_required/readme/USAGE.md create mode 100644 crm_lost_reason_required/readme/newsfragments/.gitkeep create mode 100644 crm_lost_reason_required/static/description/index.html create mode 100644 crm_lost_reason_required/views/crm_lead_views.xml diff --git a/crm_lead_to_task/README.rst b/crm_lead_to_task/README.rst index ef266f365bf..c006137d749 100644 --- a/crm_lead_to_task/README.rst +++ b/crm_lead_to_task/README.rst @@ -79,12 +79,12 @@ Authors Contributors ------------ -- `Tecnativa `__: +- `Tecnativa `__: - - Pedro M. Baeza - - Carolina Fernandez + - Pedro M. Baeza + - Carolina Fernandez -- Ruchir Shukla +- Ruchir Shukla Maintainers ----------- diff --git a/crm_lost_reason_required/README.rst b/crm_lost_reason_required/README.rst new file mode 100644 index 00000000000..3f2c6a0cb89 --- /dev/null +++ b/crm_lost_reason_required/README.rst @@ -0,0 +1,211 @@ +======================== +CRM Lost reason required +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:da5bab7b967b7997174e39561b449109b18102b38a52f356b32e633fcf1010e4 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcrm-lightgray.png?logo=github + :target: https://github.com/OCA/crm/tree/17.0/crm_lost_reason_required + :alt: OCA/crm +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/crm-17-0/crm-17-0-crm_lost_reason_required + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/crm&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +[ This file must be max 2-3 paragraphs, and is required. + +The goal of this document is to explain quickly the features of this +module: “what” this module does and “what” it is for. ] + +Example: + +This module extends the functionality of ... to support ... and to allow +users to ... + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +[ This file is optional but strongly suggested to allow end-users to +evaluate the module's usefulness in their context. ] + +BUSINESS NEED: It should explain the “why” of the module: + +- what is the business requirement that generated the need to develop + this module +- in which context or use cases this module can be useful (practical + examples are welcome!). + +APPROACH: It could also explain the approach to address the mentioned +need. + +USEFUL INFORMATION: It can also inform on related modules: + +- modules it depends on and their features +- other modules that can work well together with this one +- suggested setups where the module is useful (eg: multicompany, + multi-website) + +Installation +============ + +[ This file must only be present if there are very specific installation +instructions, such as installing non-python dependencies. The audience +is systems administrators. ] + +To install this module, you need to: + +1. Do this ... + +Configuration +============= + +[ This file is not always required; it should explain **how to configure +the module before using it**; it is aimed at users with administration +privileges. + +Please be detailed on the path to configuration (eg: do you need to +activate developer mode?), describe step by step configurations and the +use of screenshots is strongly recommended.] + +To configure this module, you need to: + +- Go to *App* > Menu > Menu item +- Activate boolean… > save +- … + +Usage +===== + +[ This file is required and contains the instructions on **“how”** to +use the module for end-users. + +If the module does not have a visible impact on the user interface, just +add the following sentence: + + This module does not impact the user interface. + +If that’s not the case, please make sure that every usage step is +covered and remember that images speak more than words!] + +To use this module, you need to: + +- Go to *App* > Menu > Menu item + + *insert screenshot!* + +- In “Contact” form, add a value to field *xyz* > save + + *insert screenshot!* + +- The value of *xyz* is now displayed in the list view. + + *insert screenshot!* + +Known issues / Roadmap +====================== + +[ Enumerate known caveats and future potential improvements. It is +mostly intended for end-users, and can also help potential new +contributors discovering new features to implement. ] + +- ... + +Changelog +========= + +[ The change log. The goal of this file is to help readers understand +changes between version. The primary audience is end users and +integrators. Purely technical changes such as code refactoring must not +be mentioned here. + +This file may contain ONE level of section titles, underlined with the ~ +(tilde) character. Other section markers are forbidden and will likely +break the structure of the README.rst or other documents where this +fragment is included. ] + +11.0.x.y.z (YYYY-MM-DD) +----------------------- + +- [BREAKING] Breaking changes come first. + (`#70 `__) +- [ADD] New feature. (`#74 `__) +- [FIX] Correct this. (`#71 `__) + +11.0.x.y.z (YYYY-MM-DD) +----------------------- + +- ... + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Open Source Integrators + +Contributors +------------ + +- Firstname Lastname email.address@example.org (optional company website + url) +- Second Person second.person@example.org (optional company website url) + +Other credits +------------- + +[ This file is optional and contains additional credits, other than +authors, contributors, and maintainers. ] + +The development of this module has been financially supported by: + +- Company 1 name +- Company 2 name + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/crm `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/crm_lost_reason_required/__init__.py b/crm_lost_reason_required/__init__.py new file mode 100644 index 00000000000..b791c37a9ae --- /dev/null +++ b/crm_lost_reason_required/__init__.py @@ -0,0 +1 @@ +from odoo import api, SUPERUSER_ID diff --git a/crm_lost_reason_required/__manifest__.py b/crm_lost_reason_required/__manifest__.py new file mode 100644 index 00000000000..caa8df14a50 --- /dev/null +++ b/crm_lost_reason_required/__manifest__.py @@ -0,0 +1,15 @@ +{ + "name": "CRM Lost reason required", + "version": "17.0.1.0.0", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "category": "Custom Relationship managment", + "website": "https://github.com/OCA/crm", + "depends": ["crm"], + "data": [ + "views/crm_lead_views.xml", + ], + "installable": True, + "application": True, + "auto_install": False, + "license": "LGPL-3", +} diff --git a/crm_lost_reason_required/pyproject.toml b/crm_lost_reason_required/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/crm_lost_reason_required/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/crm_lost_reason_required/readme/CONFIGURE.md b/crm_lost_reason_required/readme/CONFIGURE.md new file mode 100644 index 00000000000..2fdb0e64a6f --- /dev/null +++ b/crm_lost_reason_required/readme/CONFIGURE.md @@ -0,0 +1,10 @@ +[ This file is not always required; it should explain **how to configure the module before using it**; it is aimed at users with administration privileges. + +Please be detailed on the path to configuration (eg: do you need to activate developer mode?), describe step by step configurations and the use of screenshots is strongly recommended.] + + +To configure this module, you need to: + +- Go to *App* > Menu > Menu item +- Activate boolean… > save +- … diff --git a/crm_lost_reason_required/readme/CONTEXT.md b/crm_lost_reason_required/readme/CONTEXT.md new file mode 100644 index 00000000000..096235a2f36 --- /dev/null +++ b/crm_lost_reason_required/readme/CONTEXT.md @@ -0,0 +1,16 @@ +[ This file is optional but strongly suggested to allow end-users to evaluate the +module's usefulness in their context. ] + +BUSINESS NEED: +It should explain the “why” of the module: +- what is the business requirement that generated the need to develop this module +- in which context or use cases this module can be useful (practical examples are welcome!). + +APPROACH: +It could also explain the approach to address the mentioned need. + +USEFUL INFORMATION: +It can also inform on related modules: +- modules it depends on and their features +- other modules that can work well together with this one +- suggested setups where the module is useful (eg: multicompany, multi-website) diff --git a/crm_lost_reason_required/readme/CONTRIBUTORS.md b/crm_lost_reason_required/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..7be72fb967e --- /dev/null +++ b/crm_lost_reason_required/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Firstname Lastname (optional company website url) +- Second Person (optional company website url) diff --git a/crm_lost_reason_required/readme/CREDITS.md b/crm_lost_reason_required/readme/CREDITS.md new file mode 100644 index 00000000000..9c2b025b509 --- /dev/null +++ b/crm_lost_reason_required/readme/CREDITS.md @@ -0,0 +1,7 @@ +[ This file is optional and contains additional credits, other than + authors, contributors, and maintainers. ] + +The development of this module has been financially supported by: + +- Company 1 name +- Company 2 name diff --git a/crm_lost_reason_required/readme/DESCRIPTION.md b/crm_lost_reason_required/readme/DESCRIPTION.md new file mode 100644 index 00000000000..2371a1464ae --- /dev/null +++ b/crm_lost_reason_required/readme/DESCRIPTION.md @@ -0,0 +1,7 @@ +[ This file must be max 2-3 paragraphs, and is required. + +The goal of this document is to explain quickly the features of this module: “what” this module does and “what” it is for. ] + +Example: + +This module extends the functionality of ... to support ... and to allow users to ... diff --git a/crm_lost_reason_required/readme/HISTORY.md b/crm_lost_reason_required/readme/HISTORY.md new file mode 100644 index 00000000000..a6daf58cc9e --- /dev/null +++ b/crm_lost_reason_required/readme/HISTORY.md @@ -0,0 +1,22 @@ +[ The change log. The goal of this file is to help readers + understand changes between version. The primary audience is + end users and integrators. Purely technical changes such as + code refactoring must not be mentioned here. + + This file may contain ONE level of section titles, underlined + with the ~ (tilde) character. Other section markers are + forbidden and will likely break the structure of the README.rst + or other documents where this fragment is included. ] + +## 11.0.x.y.z (YYYY-MM-DD) + +- [BREAKING] Breaking changes come first. + ([#70](https://github.com/OCA/repo/issues/70)) +- [ADD] New feature. + ([#74](https://github.com/OCA/repo/issues/74)) +- [FIX] Correct this. + ([#71](https://github.com/OCA/repo/issues/71)) + +## 11.0.x.y.z (YYYY-MM-DD) + +- ... diff --git a/crm_lost_reason_required/readme/INSTALL.md b/crm_lost_reason_required/readme/INSTALL.md new file mode 100644 index 00000000000..77b98e7aa22 --- /dev/null +++ b/crm_lost_reason_required/readme/INSTALL.md @@ -0,0 +1,7 @@ +[ This file must only be present if there are very specific + installation instructions, such as installing non-python + dependencies. The audience is systems administrators. ] + +To install this module, you need to: + +1. Do this ... diff --git a/crm_lost_reason_required/readme/ROADMAP.md b/crm_lost_reason_required/readme/ROADMAP.md new file mode 100644 index 00000000000..446840cfb9b --- /dev/null +++ b/crm_lost_reason_required/readme/ROADMAP.md @@ -0,0 +1,5 @@ +[ Enumerate known caveats and future potential improvements. + It is mostly intended for end-users, and can also help + potential new contributors discovering new features to implement. ] + +- ... diff --git a/crm_lost_reason_required/readme/USAGE.md b/crm_lost_reason_required/readme/USAGE.md new file mode 100644 index 00000000000..2cf127584b0 --- /dev/null +++ b/crm_lost_reason_required/readme/USAGE.md @@ -0,0 +1,21 @@ +[ This file is required and contains the instructions on **“how”** to use the module for end-users. + +If the module does not have a visible impact on the user interface, just add the following sentence: + +> This module does not impact the user interface. + +If that’s not the case, please make sure that every usage step is covered and remember that images speak more than words!] + +To use this module, you need to: + +- Go to *App* > Menu > Menu item + + *insert screenshot!* + +- In “Contact” form, add a value to field *xyz* > save + + *insert screenshot!* + +- The value of *xyz* is now displayed in the list view. + + *insert screenshot!* diff --git a/crm_lost_reason_required/readme/newsfragments/.gitkeep b/crm_lost_reason_required/readme/newsfragments/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/crm_lost_reason_required/static/description/index.html b/crm_lost_reason_required/static/description/index.html new file mode 100644 index 00000000000..6a94c13e6d9 --- /dev/null +++ b/crm_lost_reason_required/static/description/index.html @@ -0,0 +1,555 @@ + + + + + +CRM Lost reason required + + + +
+

CRM Lost reason required

+ + +

Beta License: LGPL-3 OCA/crm Translate me on Weblate Try me on Runboat

+

[ This file must be max 2-3 paragraphs, and is required.

+

The goal of this document is to explain quickly the features of this +module: “what” this module does and “what” it is for. ]

+

Example:

+

This module extends the functionality of … to support … and to allow +users to …

+

Table of contents

+ +
+

Use Cases / Context

+

[ This file is optional but strongly suggested to allow end-users to +evaluate the module’s usefulness in their context. ]

+

BUSINESS NEED: It should explain the “why” of the module:

+
    +
  • what is the business requirement that generated the need to develop +this module
  • +
  • in which context or use cases this module can be useful (practical +examples are welcome!).
  • +
+

APPROACH: It could also explain the approach to address the mentioned +need.

+

USEFUL INFORMATION: It can also inform on related modules:

+
    +
  • modules it depends on and their features
  • +
  • other modules that can work well together with this one
  • +
  • suggested setups where the module is useful (eg: multicompany, +multi-website)
  • +
+
+
+

Installation

+

[ This file must only be present if there are very specific installation +instructions, such as installing non-python dependencies. The audience +is systems administrators. ]

+

To install this module, you need to:

+
    +
  1. Do this …
  2. +
+
+
+

Configuration

+

[ This file is not always required; it should explain how to configure +the module before using it; it is aimed at users with administration +privileges.

+

Please be detailed on the path to configuration (eg: do you need to +activate developer mode?), describe step by step configurations and the +use of screenshots is strongly recommended.]

+

To configure this module, you need to:

+
    +
  • Go to App > Menu > Menu item
  • +
  • Activate boolean… > save
  • +
  • +
+
+
+

Usage

+

[ This file is required and contains the instructions on “how” to +use the module for end-users.

+

If the module does not have a visible impact on the user interface, just +add the following sentence:

+
+This module does not impact the user interface.
+

If that’s not the case, please make sure that every usage step is +covered and remember that images speak more than words!]

+

To use this module, you need to:

+
    +
  • Go to App > Menu > Menu item

    +

    insert screenshot!

    +
  • +
  • In “Contact” form, add a value to field xyz > save

    +

    insert screenshot!

    +
  • +
  • The value of xyz is now displayed in the list view.

    +

    insert screenshot!

    +
  • +
+
+
+

Known issues / Roadmap

+

[ Enumerate known caveats and future potential improvements. It is +mostly intended for end-users, and can also help potential new +contributors discovering new features to implement. ]

+
    +
  • +
+
+
+

Changelog

+

[ The change log. The goal of this file is to help readers understand +changes between version. The primary audience is end users and +integrators. Purely technical changes such as code refactoring must not +be mentioned here.

+

This file may contain ONE level of section titles, underlined with the ~ +(tilde) character. Other section markers are forbidden and will likely +break the structure of the README.rst or other documents where this +fragment is included. ]

+
+

11.0.x.y.z (YYYY-MM-DD)

+
    +
  • [BREAKING] Breaking changes come first. +(#70)
  • +
  • [ADD] New feature. (#74)
  • +
  • [FIX] Correct this. (#71)
  • +
+
+ +
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Open Source Integrators
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

[ This file is optional and contains additional credits, other than +authors, contributors, and maintainers. ]

+

The development of this module has been financially supported by:

+
    +
  • Company 1 name
  • +
  • Company 2 name
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/crm project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/crm_lost_reason_required/views/crm_lead_views.xml b/crm_lost_reason_required/views/crm_lead_views.xml new file mode 100644 index 00000000000..a9a924c2efc --- /dev/null +++ b/crm_lost_reason_required/views/crm_lead_views.xml @@ -0,0 +1,15 @@ + + + + + crm.lead.lost.wizard.required + crm.lead.lost + + + + + True + + + + From 8e46a42e3af666ae3283def2850466fa859e0a52 Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Tue, 18 Nov 2025 16:40:09 -0600 Subject: [PATCH 5/9] Convert to task does not archive the lead and copies the chatter to the task. --- .../wizard/crm_lead_convert2task.py | 47 ++++++++++++++++--- crm_lost_reason_required/readme/CONFIGURE.md | 10 ++++ crm_lost_reason_required/readme/CONTEXT.md | 16 +++++++ .../readme/CONTRIBUTORS.md | 2 + crm_lost_reason_required/readme/CREDITS.md | 7 +++ .../readme/DESCRIPTION.md | 7 +++ crm_lost_reason_required/readme/HISTORY.md | 22 +++++++++ crm_lost_reason_required/readme/INSTALL.md | 7 +++ crm_lost_reason_required/readme/ROADMAP.md | 5 ++ crm_lost_reason_required/readme/USAGE.md | 21 +++++++++ .../readme/newsfragments/.gitkeep | 0 11 files changed, 138 insertions(+), 6 deletions(-) create mode 100644 crm_lost_reason_required/readme/CONFIGURE.md create mode 100644 crm_lost_reason_required/readme/CONTEXT.md create mode 100644 crm_lost_reason_required/readme/CONTRIBUTORS.md create mode 100644 crm_lost_reason_required/readme/CREDITS.md create mode 100644 crm_lost_reason_required/readme/DESCRIPTION.md create mode 100644 crm_lost_reason_required/readme/HISTORY.md create mode 100644 crm_lost_reason_required/readme/INSTALL.md create mode 100644 crm_lost_reason_required/readme/ROADMAP.md create mode 100644 crm_lost_reason_required/readme/USAGE.md create mode 100644 crm_lost_reason_required/readme/newsfragments/.gitkeep diff --git a/crm_lead_to_task/wizard/crm_lead_convert2task.py b/crm_lead_to_task/wizard/crm_lead_convert2task.py index d4e9ccbd0ec..b1a9751c8dc 100644 --- a/crm_lead_to_task/wizard/crm_lead_convert2task.py +++ b/crm_lead_to_task/wizard/crm_lead_convert2task.py @@ -43,15 +43,50 @@ def action_lead_to_project_task(self): } task = self.env["project.task"].create(vals) # move the mail thread - lead.message_change_thread(task) - # move attachments + + + + # changes to saving messages and attachments + messages = self.env["mail.message"].search([ + ("model", "=", "crm.lead"), + ("res_id", "=", lead.id) + ], order="id asc") + + for message in messages: + # Copy each message to the task + message.copy({ + "model": "project.task", + "res_id": task.id, + }) + + # Post cross-reference messages + lead.message_post( + body=f'Task created: {task.name}', + message_type='notification', + subtype_xmlid='mail.mt_note', + ) + + task.message_post( + body=f'Created from Lead: {lead.name}', + message_type='notification', + subtype_xmlid='mail.mt_note', + ) + + # Copy attachments to the task (keep originals on lead) attachments = self.env["ir.attachment"].search( [("res_model", "=", "crm.lead"), ("res_id", "=", lead.id)] ) - attachments.write({"res_model": "project.task", "res_id": task.id}) - # archive the lead (can't be unlinked by plain salesmen) - lead.active = False - # return the action to go to the form view of the new Task + for attachment in attachments: + attachment.copy({ + "res_model": "project.task", + "res_id": task.id, + }) + + + + + + view = self.env.ref("project.view_task_form2") return { "name": "Task created", diff --git a/crm_lost_reason_required/readme/CONFIGURE.md b/crm_lost_reason_required/readme/CONFIGURE.md new file mode 100644 index 00000000000..2fdb0e64a6f --- /dev/null +++ b/crm_lost_reason_required/readme/CONFIGURE.md @@ -0,0 +1,10 @@ +[ This file is not always required; it should explain **how to configure the module before using it**; it is aimed at users with administration privileges. + +Please be detailed on the path to configuration (eg: do you need to activate developer mode?), describe step by step configurations and the use of screenshots is strongly recommended.] + + +To configure this module, you need to: + +- Go to *App* > Menu > Menu item +- Activate boolean… > save +- … diff --git a/crm_lost_reason_required/readme/CONTEXT.md b/crm_lost_reason_required/readme/CONTEXT.md new file mode 100644 index 00000000000..096235a2f36 --- /dev/null +++ b/crm_lost_reason_required/readme/CONTEXT.md @@ -0,0 +1,16 @@ +[ This file is optional but strongly suggested to allow end-users to evaluate the +module's usefulness in their context. ] + +BUSINESS NEED: +It should explain the “why” of the module: +- what is the business requirement that generated the need to develop this module +- in which context or use cases this module can be useful (practical examples are welcome!). + +APPROACH: +It could also explain the approach to address the mentioned need. + +USEFUL INFORMATION: +It can also inform on related modules: +- modules it depends on and their features +- other modules that can work well together with this one +- suggested setups where the module is useful (eg: multicompany, multi-website) diff --git a/crm_lost_reason_required/readme/CONTRIBUTORS.md b/crm_lost_reason_required/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..7be72fb967e --- /dev/null +++ b/crm_lost_reason_required/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Firstname Lastname (optional company website url) +- Second Person (optional company website url) diff --git a/crm_lost_reason_required/readme/CREDITS.md b/crm_lost_reason_required/readme/CREDITS.md new file mode 100644 index 00000000000..9c2b025b509 --- /dev/null +++ b/crm_lost_reason_required/readme/CREDITS.md @@ -0,0 +1,7 @@ +[ This file is optional and contains additional credits, other than + authors, contributors, and maintainers. ] + +The development of this module has been financially supported by: + +- Company 1 name +- Company 2 name diff --git a/crm_lost_reason_required/readme/DESCRIPTION.md b/crm_lost_reason_required/readme/DESCRIPTION.md new file mode 100644 index 00000000000..2371a1464ae --- /dev/null +++ b/crm_lost_reason_required/readme/DESCRIPTION.md @@ -0,0 +1,7 @@ +[ This file must be max 2-3 paragraphs, and is required. + +The goal of this document is to explain quickly the features of this module: “what” this module does and “what” it is for. ] + +Example: + +This module extends the functionality of ... to support ... and to allow users to ... diff --git a/crm_lost_reason_required/readme/HISTORY.md b/crm_lost_reason_required/readme/HISTORY.md new file mode 100644 index 00000000000..a6daf58cc9e --- /dev/null +++ b/crm_lost_reason_required/readme/HISTORY.md @@ -0,0 +1,22 @@ +[ The change log. The goal of this file is to help readers + understand changes between version. The primary audience is + end users and integrators. Purely technical changes such as + code refactoring must not be mentioned here. + + This file may contain ONE level of section titles, underlined + with the ~ (tilde) character. Other section markers are + forbidden and will likely break the structure of the README.rst + or other documents where this fragment is included. ] + +## 11.0.x.y.z (YYYY-MM-DD) + +- [BREAKING] Breaking changes come first. + ([#70](https://github.com/OCA/repo/issues/70)) +- [ADD] New feature. + ([#74](https://github.com/OCA/repo/issues/74)) +- [FIX] Correct this. + ([#71](https://github.com/OCA/repo/issues/71)) + +## 11.0.x.y.z (YYYY-MM-DD) + +- ... diff --git a/crm_lost_reason_required/readme/INSTALL.md b/crm_lost_reason_required/readme/INSTALL.md new file mode 100644 index 00000000000..77b98e7aa22 --- /dev/null +++ b/crm_lost_reason_required/readme/INSTALL.md @@ -0,0 +1,7 @@ +[ This file must only be present if there are very specific + installation instructions, such as installing non-python + dependencies. The audience is systems administrators. ] + +To install this module, you need to: + +1. Do this ... diff --git a/crm_lost_reason_required/readme/ROADMAP.md b/crm_lost_reason_required/readme/ROADMAP.md new file mode 100644 index 00000000000..446840cfb9b --- /dev/null +++ b/crm_lost_reason_required/readme/ROADMAP.md @@ -0,0 +1,5 @@ +[ Enumerate known caveats and future potential improvements. + It is mostly intended for end-users, and can also help + potential new contributors discovering new features to implement. ] + +- ... diff --git a/crm_lost_reason_required/readme/USAGE.md b/crm_lost_reason_required/readme/USAGE.md new file mode 100644 index 00000000000..2cf127584b0 --- /dev/null +++ b/crm_lost_reason_required/readme/USAGE.md @@ -0,0 +1,21 @@ +[ This file is required and contains the instructions on **“how”** to use the module for end-users. + +If the module does not have a visible impact on the user interface, just add the following sentence: + +> This module does not impact the user interface. + +If that’s not the case, please make sure that every usage step is covered and remember that images speak more than words!] + +To use this module, you need to: + +- Go to *App* > Menu > Menu item + + *insert screenshot!* + +- In “Contact” form, add a value to field *xyz* > save + + *insert screenshot!* + +- The value of *xyz* is now displayed in the list view. + + *insert screenshot!* diff --git a/crm_lost_reason_required/readme/newsfragments/.gitkeep b/crm_lost_reason_required/readme/newsfragments/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d From e87bad2b867d8ac4f4509b2a51b4b17b50ae85e3 Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Wed, 19 Nov 2025 10:36:29 -0600 Subject: [PATCH 6/9] corrections for precommit --- .../wizard/crm_lead_convert2task.py | 54 +- crm_lost_reason_required/README.rst | 211 +++++++ crm_lost_reason_required/__init__.py | 2 +- crm_lost_reason_required/__manifest__.py | 12 +- crm_lost_reason_required/pyproject.toml | 3 + .../static/description/index.html | 555 ++++++++++++++++++ .../views/crm_lead_views.xml | 10 +- 7 files changed, 806 insertions(+), 41 deletions(-) create mode 100644 crm_lost_reason_required/README.rst create mode 100644 crm_lost_reason_required/pyproject.toml create mode 100644 crm_lost_reason_required/static/description/index.html diff --git a/crm_lead_to_task/wizard/crm_lead_convert2task.py b/crm_lead_to_task/wizard/crm_lead_convert2task.py index b1a9751c8dc..d177ff7fdd3 100644 --- a/crm_lead_to_task/wizard/crm_lead_convert2task.py +++ b/crm_lead_to_task/wizard/crm_lead_convert2task.py @@ -44,48 +44,44 @@ def action_lead_to_project_task(self): task = self.env["project.task"].create(vals) # move the mail thread - - # changes to saving messages and attachments - messages = self.env["mail.message"].search([ - ("model", "=", "crm.lead"), - ("res_id", "=", lead.id) - ], order="id asc") - + messages = self.env["mail.message"].search( + [("model", "=", "crm.lead"), ("res_id", "=", lead.id)], order="id asc" + ) + for message in messages: # Copy each message to the task - message.copy({ - "model": "project.task", - "res_id": task.id, - }) - + message.copy( + { + "model": "project.task", + "res_id": task.id, + } + ) + # Post cross-reference messages lead.message_post( - body=f'Task created: {task.name}', - message_type='notification', - subtype_xmlid='mail.mt_note', + body=f"Task created: {task.name}", + message_type="notification", + subtype_xmlid="mail.mt_note", ) - + task.message_post( - body=f'Created from Lead: {lead.name}', - message_type='notification', - subtype_xmlid='mail.mt_note', + body=f"Created from Lead: {lead.name}", + message_type="notification", + subtype_xmlid="mail.mt_note", ) - + # Copy attachments to the task (keep originals on lead) attachments = self.env["ir.attachment"].search( [("res_model", "=", "crm.lead"), ("res_id", "=", lead.id)] ) for attachment in attachments: - attachment.copy({ - "res_model": "project.task", - "res_id": task.id, - }) - - - - - + attachment.copy( + { + "res_model": "project.task", + "res_id": task.id, + } + ) view = self.env.ref("project.view_task_form2") return { diff --git a/crm_lost_reason_required/README.rst b/crm_lost_reason_required/README.rst new file mode 100644 index 00000000000..8a24d28af96 --- /dev/null +++ b/crm_lost_reason_required/README.rst @@ -0,0 +1,211 @@ +======================== +CRM Lost reason required +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:da5bab7b967b7997174e39561b449109b18102b38a52f356b32e633fcf1010e4 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcrm-lightgray.png?logo=github + :target: https://github.com/OCA/crm/tree/17.0/crm_lost_reason_required + :alt: OCA/crm +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/crm-17-0/crm-17-0-crm_lost_reason_required + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/crm&target_branch=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +[ This file must be max 2-3 paragraphs, and is required. + +The goal of this document is to explain quickly the features of this +module: “what” this module does and “what” it is for. ] + +Example: + +This module extends the functionality of ... to support ... and to allow +users to ... + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +[ This file is optional but strongly suggested to allow end-users to +evaluate the module's usefulness in their context. ] + +BUSINESS NEED: It should explain the “why” of the module: + +- what is the business requirement that generated the need to develop + this module +- in which context or use cases this module can be useful (practical + examples are welcome!). + +APPROACH: It could also explain the approach to address the mentioned +need. + +USEFUL INFORMATION: It can also inform on related modules: + +- modules it depends on and their features +- other modules that can work well together with this one +- suggested setups where the module is useful (eg: multicompany, + multi-website) + +Installation +============ + +[ This file must only be present if there are very specific installation +instructions, such as installing non-python dependencies. The audience +is systems administrators. ] + +To install this module, you need to: + +1. Do this ... + +Configuration +============= + +[ This file is not always required; it should explain **how to configure +the module before using it**; it is aimed at users with administration +privileges. + +Please be detailed on the path to configuration (eg: do you need to +activate developer mode?), describe step by step configurations and the +use of screenshots is strongly recommended.] + +To configure this module, you need to: + +- Go to *App* > Menu > Menu item +- Activate boolean… > save +- … + +Usage +===== + +[ This file is required and contains the instructions on **“how”** to +use the module for end-users. + +If the module does not have a visible impact on the user interface, just +add the following sentence: + + This module does not impact the user interface. + +If that’s not the case, please make sure that every usage step is +covered and remember that images speak more than words!] + +To use this module, you need to: + +- Go to *App* > Menu > Menu item + + *insert screenshot!* + +- In “Contact” form, add a value to field *xyz* > save + + *insert screenshot!* + +- The value of *xyz* is now displayed in the list view. + + *insert screenshot!* + +Known issues / Roadmap +====================== + +[ Enumerate known caveats and future potential improvements. It is +mostly intended for end-users, and can also help potential new +contributors discovering new features to implement. ] + +- ... + +Changelog +========= + +[ The change log. The goal of this file is to help readers understand +changes between version. The primary audience is end users and +integrators. Purely technical changes such as code refactoring must not +be mentioned here. + +This file may contain ONE level of section titles, underlined with the ~ +(tilde) character. Other section markers are forbidden and will likely +break the structure of the README.rst or other documents where this +fragment is included. ] + +11.0.x.y.z (YYYY-MM-DD) +----------------------- + +- [BREAKING] Breaking changes come first. + (`#70 `__) +- [ADD] New feature. (`#74 `__) +- [FIX] Correct this. (`#71 `__) + +11.0.x.y.z (YYYY-MM-DD) +----------------------- + +- ... + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Open Source Integrators + +Contributors +------------ + +- Firstname Lastname email.address@example.org (optional company website + url) +- Second Person second.person@example.org (optional company website url) + +Other credits +------------- + +[ This file is optional and contains additional credits, other than +authors, contributors, and maintainers. ] + +The development of this module has been financially supported by: + +- Company 1 name +- Company 2 name + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/crm `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/crm_lost_reason_required/__init__.py b/crm_lost_reason_required/__init__.py index ab69f6ee4e6..c84fc6d9182 100644 --- a/crm_lost_reason_required/__init__.py +++ b/crm_lost_reason_required/__init__.py @@ -1,3 +1,3 @@ from . import models -from odoo import api, SUPERUSER_ID \ No newline at end of file +from odoo import api, SUPERUSER_ID diff --git a/crm_lost_reason_required/__manifest__.py b/crm_lost_reason_required/__manifest__.py index 59effbbc1df..63f33720c7c 100644 --- a/crm_lost_reason_required/__manifest__.py +++ b/crm_lost_reason_required/__manifest__.py @@ -1,14 +1,18 @@ +# Copyright 2015 Antiun Ingenieria - Endika Iglesias +# Copyright 2017 Tecnativa - Luis Martínez +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + { - "name":"CRM Lost reason required", + "name": "CRM Lost reason required", "version": "17.0.1.0.0", "author": "Open Source Integrators, Odoo Community Association (OCA)", "category": "Custom Relationship managmentgit", "depends": ["crm"], - 'data': [ + "data": [ "views/crm_lead_views.xml", ], "installable": True, "application": True, "auto_install": False, - "license": "LGPL-3", -} \ No newline at end of file + "license": "AGPL-3", +} diff --git a/crm_lost_reason_required/pyproject.toml b/crm_lost_reason_required/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/crm_lost_reason_required/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/crm_lost_reason_required/static/description/index.html b/crm_lost_reason_required/static/description/index.html new file mode 100644 index 00000000000..c042204566f --- /dev/null +++ b/crm_lost_reason_required/static/description/index.html @@ -0,0 +1,555 @@ + + + + + +CRM Lost reason required + + + +
+

CRM Lost reason required

+ + +

Beta License: AGPL-3 OCA/crm Translate me on Weblate Try me on Runboat

+

[ This file must be max 2-3 paragraphs, and is required.

+

The goal of this document is to explain quickly the features of this +module: “what” this module does and “what” it is for. ]

+

Example:

+

This module extends the functionality of … to support … and to allow +users to …

+

Table of contents

+ +
+

Use Cases / Context

+

[ This file is optional but strongly suggested to allow end-users to +evaluate the module’s usefulness in their context. ]

+

BUSINESS NEED: It should explain the “why” of the module:

+
    +
  • what is the business requirement that generated the need to develop +this module
  • +
  • in which context or use cases this module can be useful (practical +examples are welcome!).
  • +
+

APPROACH: It could also explain the approach to address the mentioned +need.

+

USEFUL INFORMATION: It can also inform on related modules:

+
    +
  • modules it depends on and their features
  • +
  • other modules that can work well together with this one
  • +
  • suggested setups where the module is useful (eg: multicompany, +multi-website)
  • +
+
+
+

Installation

+

[ This file must only be present if there are very specific installation +instructions, such as installing non-python dependencies. The audience +is systems administrators. ]

+

To install this module, you need to:

+
    +
  1. Do this …
  2. +
+
+
+

Configuration

+

[ This file is not always required; it should explain how to configure +the module before using it; it is aimed at users with administration +privileges.

+

Please be detailed on the path to configuration (eg: do you need to +activate developer mode?), describe step by step configurations and the +use of screenshots is strongly recommended.]

+

To configure this module, you need to:

+
    +
  • Go to App > Menu > Menu item
  • +
  • Activate boolean… > save
  • +
  • +
+
+
+

Usage

+

[ This file is required and contains the instructions on “how” to +use the module for end-users.

+

If the module does not have a visible impact on the user interface, just +add the following sentence:

+
+This module does not impact the user interface.
+

If that’s not the case, please make sure that every usage step is +covered and remember that images speak more than words!]

+

To use this module, you need to:

+
    +
  • Go to App > Menu > Menu item

    +

    insert screenshot!

    +
  • +
  • In “Contact” form, add a value to field xyz > save

    +

    insert screenshot!

    +
  • +
  • The value of xyz is now displayed in the list view.

    +

    insert screenshot!

    +
  • +
+
+
+

Known issues / Roadmap

+

[ Enumerate known caveats and future potential improvements. It is +mostly intended for end-users, and can also help potential new +contributors discovering new features to implement. ]

+
    +
  • +
+
+
+

Changelog

+

[ The change log. The goal of this file is to help readers understand +changes between version. The primary audience is end users and +integrators. Purely technical changes such as code refactoring must not +be mentioned here.

+

This file may contain ONE level of section titles, underlined with the ~ +(tilde) character. Other section markers are forbidden and will likely +break the structure of the README.rst or other documents where this +fragment is included. ]

+
+

11.0.x.y.z (YYYY-MM-DD)

+
    +
  • [BREAKING] Breaking changes come first. +(#70)
  • +
  • [ADD] New feature. (#74)
  • +
  • [FIX] Correct this. (#71)
  • +
+
+ +
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Open Source Integrators
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

[ This file is optional and contains additional credits, other than +authors, contributors, and maintainers. ]

+

The development of this module has been financially supported by:

+
    +
  • Company 1 name
  • +
  • Company 2 name
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/crm project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/crm_lost_reason_required/views/crm_lead_views.xml b/crm_lost_reason_required/views/crm_lead_views.xml index d1b5403a16a..181bb3c56ad 100644 --- a/crm_lost_reason_required/views/crm_lead_views.xml +++ b/crm_lost_reason_required/views/crm_lead_views.xml @@ -1,11 +1,10 @@ - + - crm.lead.lost.wizard.required crm.lead.lost - + @@ -13,7 +12,4 @@ - - - - \ No newline at end of file + From a9b0ec375662523b361b6b0d7b5ffd8a96956e8c Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Wed, 19 Nov 2025 13:02:25 -0600 Subject: [PATCH 7/9] update --- crm_lead_to_task/pyproject.toml | 3 - crm_lost_reason_required/pyproject.toml | 3 - .../static/description/index.html | 555 ------------------ 3 files changed, 561 deletions(-) delete mode 100644 crm_lead_to_task/pyproject.toml delete mode 100644 crm_lost_reason_required/pyproject.toml delete mode 100644 crm_lost_reason_required/static/description/index.html diff --git a/crm_lead_to_task/pyproject.toml b/crm_lead_to_task/pyproject.toml deleted file mode 100644 index 4231d0cccb3..00000000000 --- a/crm_lead_to_task/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build-system] -requires = ["whool"] -build-backend = "whool.buildapi" diff --git a/crm_lost_reason_required/pyproject.toml b/crm_lost_reason_required/pyproject.toml deleted file mode 100644 index 4231d0cccb3..00000000000 --- a/crm_lost_reason_required/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build-system] -requires = ["whool"] -build-backend = "whool.buildapi" diff --git a/crm_lost_reason_required/static/description/index.html b/crm_lost_reason_required/static/description/index.html deleted file mode 100644 index c042204566f..00000000000 --- a/crm_lost_reason_required/static/description/index.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - - -CRM Lost reason required - - - -
-

CRM Lost reason required

- - -

Beta License: AGPL-3 OCA/crm Translate me on Weblate Try me on Runboat

-

[ This file must be max 2-3 paragraphs, and is required.

-

The goal of this document is to explain quickly the features of this -module: “what” this module does and “what” it is for. ]

-

Example:

-

This module extends the functionality of … to support … and to allow -users to …

-

Table of contents

- -
-

Use Cases / Context

-

[ This file is optional but strongly suggested to allow end-users to -evaluate the module’s usefulness in their context. ]

-

BUSINESS NEED: It should explain the “why” of the module:

-
    -
  • what is the business requirement that generated the need to develop -this module
  • -
  • in which context or use cases this module can be useful (practical -examples are welcome!).
  • -
-

APPROACH: It could also explain the approach to address the mentioned -need.

-

USEFUL INFORMATION: It can also inform on related modules:

-
    -
  • modules it depends on and their features
  • -
  • other modules that can work well together with this one
  • -
  • suggested setups where the module is useful (eg: multicompany, -multi-website)
  • -
-
-
-

Installation

-

[ This file must only be present if there are very specific installation -instructions, such as installing non-python dependencies. The audience -is systems administrators. ]

-

To install this module, you need to:

-
    -
  1. Do this …
  2. -
-
-
-

Configuration

-

[ This file is not always required; it should explain how to configure -the module before using it; it is aimed at users with administration -privileges.

-

Please be detailed on the path to configuration (eg: do you need to -activate developer mode?), describe step by step configurations and the -use of screenshots is strongly recommended.]

-

To configure this module, you need to:

-
    -
  • Go to App > Menu > Menu item
  • -
  • Activate boolean… > save
  • -
  • -
-
-
-

Usage

-

[ This file is required and contains the instructions on “how” to -use the module for end-users.

-

If the module does not have a visible impact on the user interface, just -add the following sentence:

-
-This module does not impact the user interface.
-

If that’s not the case, please make sure that every usage step is -covered and remember that images speak more than words!]

-

To use this module, you need to:

-
    -
  • Go to App > Menu > Menu item

    -

    insert screenshot!

    -
  • -
  • In “Contact” form, add a value to field xyz > save

    -

    insert screenshot!

    -
  • -
  • The value of xyz is now displayed in the list view.

    -

    insert screenshot!

    -
  • -
-
-
-

Known issues / Roadmap

-

[ Enumerate known caveats and future potential improvements. It is -mostly intended for end-users, and can also help potential new -contributors discovering new features to implement. ]

-
    -
  • -
-
-
-

Changelog

-

[ The change log. The goal of this file is to help readers understand -changes between version. The primary audience is end users and -integrators. Purely technical changes such as code refactoring must not -be mentioned here.

-

This file may contain ONE level of section titles, underlined with the ~ -(tilde) character. Other section markers are forbidden and will likely -break the structure of the README.rst or other documents where this -fragment is included. ]

-
-

11.0.x.y.z (YYYY-MM-DD)

-
    -
  • [BREAKING] Breaking changes come first. -(#70)
  • -
  • [ADD] New feature. (#74)
  • -
  • [FIX] Correct this. (#71)
  • -
-
- -
-
-

Bug Tracker

-

Bugs are tracked on GitHub Issues. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

-

Do not contact contributors directly about support or help with technical issues.

-
-
-

Credits

-
-

Authors

-
    -
  • Open Source Integrators
  • -
-
-
-

Contributors

- -
-
-

Other credits

-

[ This file is optional and contains additional credits, other than -authors, contributors, and maintainers. ]

-

The development of this module has been financially supported by:

-
    -
  • Company 1 name
  • -
  • Company 2 name
  • -
-
-
-

Maintainers

-

This module is maintained by the OCA.

- -Odoo Community Association - -

OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use.

-

This module is part of the OCA/crm project on GitHub.

-

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

-
-
-
- - From d075bb034f9929fc5977f54a0deccc70e8015308 Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Wed, 19 Nov 2025 15:08:28 -0600 Subject: [PATCH 8/9] Adding precommit changes --- crm_lead_to_task/pyproject.toml | 3 + crm_lost_reason_required/pyproject.toml | 3 + .../static/description/index.html | 555 ++++++++++++++++++ 3 files changed, 561 insertions(+) create mode 100644 crm_lead_to_task/pyproject.toml create mode 100644 crm_lost_reason_required/pyproject.toml create mode 100644 crm_lost_reason_required/static/description/index.html diff --git a/crm_lead_to_task/pyproject.toml b/crm_lead_to_task/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/crm_lead_to_task/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/crm_lost_reason_required/pyproject.toml b/crm_lost_reason_required/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/crm_lost_reason_required/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/crm_lost_reason_required/static/description/index.html b/crm_lost_reason_required/static/description/index.html new file mode 100644 index 00000000000..c042204566f --- /dev/null +++ b/crm_lost_reason_required/static/description/index.html @@ -0,0 +1,555 @@ + + + + + +CRM Lost reason required + + + +
+

CRM Lost reason required

+ + +

Beta License: AGPL-3 OCA/crm Translate me on Weblate Try me on Runboat

+

[ This file must be max 2-3 paragraphs, and is required.

+

The goal of this document is to explain quickly the features of this +module: “what” this module does and “what” it is for. ]

+

Example:

+

This module extends the functionality of … to support … and to allow +users to …

+

Table of contents

+ +
+

Use Cases / Context

+

[ This file is optional but strongly suggested to allow end-users to +evaluate the module’s usefulness in their context. ]

+

BUSINESS NEED: It should explain the “why” of the module:

+
    +
  • what is the business requirement that generated the need to develop +this module
  • +
  • in which context or use cases this module can be useful (practical +examples are welcome!).
  • +
+

APPROACH: It could also explain the approach to address the mentioned +need.

+

USEFUL INFORMATION: It can also inform on related modules:

+
    +
  • modules it depends on and their features
  • +
  • other modules that can work well together with this one
  • +
  • suggested setups where the module is useful (eg: multicompany, +multi-website)
  • +
+
+
+

Installation

+

[ This file must only be present if there are very specific installation +instructions, such as installing non-python dependencies. The audience +is systems administrators. ]

+

To install this module, you need to:

+
    +
  1. Do this …
  2. +
+
+
+

Configuration

+

[ This file is not always required; it should explain how to configure +the module before using it; it is aimed at users with administration +privileges.

+

Please be detailed on the path to configuration (eg: do you need to +activate developer mode?), describe step by step configurations and the +use of screenshots is strongly recommended.]

+

To configure this module, you need to:

+
    +
  • Go to App > Menu > Menu item
  • +
  • Activate boolean… > save
  • +
  • +
+
+
+

Usage

+

[ This file is required and contains the instructions on “how” to +use the module for end-users.

+

If the module does not have a visible impact on the user interface, just +add the following sentence:

+
+This module does not impact the user interface.
+

If that’s not the case, please make sure that every usage step is +covered and remember that images speak more than words!]

+

To use this module, you need to:

+
    +
  • Go to App > Menu > Menu item

    +

    insert screenshot!

    +
  • +
  • In “Contact” form, add a value to field xyz > save

    +

    insert screenshot!

    +
  • +
  • The value of xyz is now displayed in the list view.

    +

    insert screenshot!

    +
  • +
+
+
+

Known issues / Roadmap

+

[ Enumerate known caveats and future potential improvements. It is +mostly intended for end-users, and can also help potential new +contributors discovering new features to implement. ]

+
    +
  • +
+
+
+

Changelog

+

[ The change log. The goal of this file is to help readers understand +changes between version. The primary audience is end users and +integrators. Purely technical changes such as code refactoring must not +be mentioned here.

+

This file may contain ONE level of section titles, underlined with the ~ +(tilde) character. Other section markers are forbidden and will likely +break the structure of the README.rst or other documents where this +fragment is included. ]

+
+

11.0.x.y.z (YYYY-MM-DD)

+
    +
  • [BREAKING] Breaking changes come first. +(#70)
  • +
  • [ADD] New feature. (#74)
  • +
  • [FIX] Correct this. (#71)
  • +
+
+ +
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Open Source Integrators
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

[ This file is optional and contains additional credits, other than +authors, contributors, and maintainers. ]

+

The development of this module has been financially supported by:

+
    +
  • Company 1 name
  • +
  • Company 2 name
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/crm project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From d2609724bfcda03c4666e71520d095d7eebd2ba9 Mon Sep 17 00:00:00 2001 From: Hector del Reguero Date: Thu, 20 Nov 2025 09:44:29 -0600 Subject: [PATCH 9/9] modify test of lead to task, to match the new functionality --- crm_lead_to_task/README.rst | 8 ++++---- crm_lead_to_task/tests/test_crm_project.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/crm_lead_to_task/README.rst b/crm_lead_to_task/README.rst index 68704ed3e52..321fbc6940f 100644 --- a/crm_lead_to_task/README.rst +++ b/crm_lead_to_task/README.rst @@ -79,12 +79,12 @@ Authors Contributors ------------ -- `Tecnativa `__: +- `Tecnativa `__: - - Pedro M. Baeza - - Carolina Fernandez + - Pedro M. Baeza + - Carolina Fernandez -- Ruchir Shukla +- Ruchir Shukla Maintainers ----------- diff --git a/crm_lead_to_task/tests/test_crm_project.py b/crm_lead_to_task/tests/test_crm_project.py index 251238d233c..70e27bca344 100644 --- a/crm_lead_to_task/tests/test_crm_project.py +++ b/crm_lead_to_task/tests/test_crm_project.py @@ -34,4 +34,4 @@ def test_crm_project(self): self.assertEqual(task.email_cc, "cc@example.org") self.assertEqual(task.partner_id.name, "Test partner crm_lead_to_task") self.assertEqual(task.project_id, self.project) - self.assertFalse(self.lead.active) + self.assertTrue(self.lead.active)