diff --git a/commission_simple/models/commission_rule.py b/commission_simple/models/commission_rule.py
index 590ba5b..7c90148 100644
--- a/commission_simple/models/commission_rule.py
+++ b/commission_simple/models/commission_rule.py
@@ -3,13 +3,13 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from odoo import fields, models, api
+from odoo import fields, models, api, _
class CommissionRule(models.Model):
_name = 'commission.rule'
_description = 'Commission Rule'
- _order = 'profile_id, applied_on'
+ _order = 'profile_id, applied_on, rate desc'
partner_ids = fields.Many2many(
'res.partner', string='Customers', domain=[('parent_id', '=', False)])
@@ -34,6 +34,31 @@ class CommissionRule(models.Model):
('4_global', 'Global')],
string='Apply On', default='4_global', required=True)
active = fields.Boolean(string='Active', default=True)
+ apply_description = fields.Html(compute='_compute_apply_description', string="Match Criteria")
+
+ _sql_constraints = [(
+ 'rate_positive',
+ 'CHECK(rate >= 0)',
+ 'Rate must be positive !')]
+
+ def _compute_apply_description(self):
+ customer_label = "" + _("Customers:") + ""
+ product_label = "" + _("Products:") + ""
+ product_categ_label = "" + _("Product Categories:") + ""
+ and_label = "" + _('AND') + ""
+ for rule in self:
+ desc = False
+ if rule.applied_on == '0_customer_product':
+ desc = f"{customer_label} {', '.join([part.ref or part.name for part in rule.partner_ids])} {and_label} {product_label} {', '.join([pp.default_code or pp.name for pp in rule.product_ids])}"
+ elif rule.applied_on == '1_customer_product_category':
+ desc = f"{customer_label} {', '.join([part.ref or part.name for part in rule.partner_ids])} {and_label} {product_categ_label} {', '.join([categ.display_name for categ in rule.product_categ_ids])}"
+ elif rule.applied_on == '2_product':
+ desc = f"{product_label} {', '.join([pp.default_code or pp.name for pp in rule.product_ids])}"
+ elif rule.applied_on == '3_product_category':
+ desc = f"{product_categ_label} {', '.join([categ.display_name for categ in rule.product_categ_ids])}"
+ elif rule.applied_on == '4_global':
+ desc = _('Global')
+ rule.apply_description = desc
@api.model
def load_all_rules(self):
@@ -45,8 +70,3 @@ class CommissionRule(models.Model):
else:
res[rule['profile_id'][0]].append(rule)
return res
-
- _sql_constraints = [(
- 'rate_positive',
- 'CHECK(rate >= 0)',
- 'Rate must be positive !')]
diff --git a/commission_simple/views/commission_profile.xml b/commission_simple/views/commission_profile.xml
index fc62649..af5a671 100644
--- a/commission_simple/views/commission_profile.xml
+++ b/commission_simple/views/commission_profile.xml
@@ -55,7 +55,7 @@
-
+
diff --git a/commission_simple/views/commission_rule.xml b/commission_simple/views/commission_rule.xml
index 5d8d3d1..80a32f1 100644
--- a/commission_simple/views/commission_rule.xml
+++ b/commission_simple/views/commission_rule.xml
@@ -43,11 +43,12 @@
-
-
-
+
+
+
+
-
+