Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][3863][ADD] crm_exception #56

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions crm_exception/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
=============
Crm Exception
=============

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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-qrtl%2Faxls--custom-lightgray.png?logo=github
:target: https://github.com/qrtl/axls-custom/tree/16.0/crm_exception
:alt: qrtl/axls-custom

|badge1| |badge2| |badge3|

This module allows you attach several customizable exceptions to your opportunity.

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/qrtl/axls-custom/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/qrtl/axls-custom/issues/new?body=module:%20crm_exception%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

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

Credits
=======

Authors
~~~~~~~

* Quartile Limited

Maintainers
~~~~~~~~~~~

This module is part of the `qrtl/axls-custom <https://github.com/qrtl/axls-custom/tree/16.0/crm_exception>`_ project on GitHub.

You are welcome to contribute.
1 change: 1 addition & 0 deletions crm_exception/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
13 changes: 13 additions & 0 deletions crm_exception/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "CRM Exception",
"version": "16.0.1.0.0",
"category": "Customer Relationship Management",
"author": "Quartile Limited",
"website": "https://www.quartile.co",
"depends": ["crm", "base_exception"],
"license": "AGPL-3",
"data": [],
"installable": True,
}
2 changes: 2 additions & 0 deletions crm_exception/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import exception_rule
from . import crm_lead
29 changes: 29 additions & 0 deletions crm_exception/models/crm_lead.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, models


class CrmLead(models.Model):
_inherit = ["crm.lead", "base.exception"]
_name = "crm.lead"
_order = "main_exception_id asc, name desc"

@api.model
def _reverse_field(self):
return "crm_lead_ids"

def _fields_trigger_check_exception(self):
return ["stage_id"]

def _check_crm_lead_check_exception(self, vals):
check_exceptions = any(
field in vals for field in self._fields_trigger_check_exception()
)
if check_exceptions:
self._check_exception()

def write(self, vals):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AungKoKoLin1997 Any reason to use write() instead of @api.constrains()? Shouldn't the latter make the code more concise?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main purpose is to avoid hardcoding a trigger field list in @api.constrains and ensure flexibility for potential future additions to the _fields_trigger_check_exception. May be rare case but I think it is also good for design.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AungKoKoLin1997 Isn't that practically the same as the trigger fields are hardcoded anyway in _fields_trigger_check_exception() or am I missing something?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. The trigger fields are hardcoded in _fields_trigger_check_exception() and we may extend this function and can add new more fields from another module if we will need some adjustments in the future.

result = super().write(vals)
self._check_crm_lead_check_exception(vals)
return result
16 changes: 16 additions & 0 deletions crm_exception/models/exception_rule.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class ExceptionRule(models.Model):
_inherit = "exception.rule"

crm_lead_ids = fields.Many2many(comodel_name="crm.lead", string="Opportunities")
model = fields.Selection(
selection_add=[
("crm.lead", "Lead"),
],
ondelete={"crm.lead": "cascade"},
)
1 change: 1 addition & 0 deletions crm_exception/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This module allows you to attach several customizable exceptions to your opportunities.
Loading
Loading