summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-02-29 14:23:06 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-02-29 14:23:06 +0700
commit7fc014e8217957d57ff2710d304e75e4ce88c3de (patch)
treee077a6098134217702c5c28445bf2fe4c1724f06
parent8bbffd2729d003284ccef10bc00f246f14f4b23e (diff)
commision
-rw-r--r--indoteknik_custom/models/commision.py43
-rw-r--r--indoteknik_custom/models/cust_commision.py9
-rw-r--r--indoteknik_custom/views/cust_commision.xml10
3 files changed, 52 insertions, 10 deletions
diff --git a/indoteknik_custom/models/commision.py b/indoteknik_custom/models/commision.py
index 094aa66e..e60fe9a7 100644
--- a/indoteknik_custom/models/commision.py
+++ b/indoteknik_custom/models/commision.py
@@ -156,26 +156,44 @@ class CustomerCommision(models.Model):
# add status for type of commision, fee, rebate / cashback
# include child or not?
- @api.constrains('partner_ids')
+ # @api.constrains('partner_ids')
def _onchange_partner_ids(self):
commision = self.env['cust.commision'].search([
('partner_id', 'in', [rec.id for rec in self.partner_ids]),
- ])
+ ('commision_type', '=', self.commision_type)
+ ], limit=1)
if commision:
- max_commision = max(commision.mapped('commision_percent'))
- self.commision_percent = max_commision
+ if self.commision_type == 'fee':
+ max_commision = max(commision.mapped('commision_percent'))
+ self.commision_percent = max_commision
+ else:
+ target_1st, target_2nd = commision.target_1st, commision.target_2nd
+ achieve_1st, achieve_2nd = commision.achieve_1st, commision.achieve_2nd
- @api.constrains('commision_percent', 'partner_ids')
+ if self.total_dpp >= target_1st:
+ self.commision_percent = achieve_1st
+ elif target_2nd <= self.total_dpp < target_1st:
+ self.commision_percent = achieve_2nd
+ else:
+ self.commision_percent = 0
+
+ self._onchange_commision_amt()
+
+ @api.constrains('commision_percent')
def _onchange_commision_percent(self):
- print('masuk onchange commision percent')
+ if not self.env.context.get('_onchange_commision_percent', True):
+ return
+
if self.commision_amt == 0:
self.commision_amt = self.commision_percent * self.total_dpp // 100
@api.constrains('commision_amt')
def _onchange_commision_amt(self):
- print('masuk onchange commision amt')
- if self.total_dpp > 0:
+ if not self.env.context.get('_onchange_commision_amt', True):
+ return
+
+ if self.total_dpp > 0 and self.commision_percent == 0:
self.commision_percent = (self.commision_amt / self.total_dpp) * 100
def _compute_total_dpp(self):
@@ -218,8 +236,13 @@ class CustomerCommision(models.Model):
else:
self._generate_customer_commision_rebate()
- self._onchange_commision_percent()
- self._onchange_commision_amt()
+ context = self.env.context.copy()
+ context.update({'_onchange_commision_amt': False})
+ self.env.context = context
+
+ self._onchange_partner_ids()
+ # self._onchange_commision_percent()
+ # self._onchange_commision_amt()
def _generate_customer_commision_rebate(self):
for rec in self:
diff --git a/indoteknik_custom/models/cust_commision.py b/indoteknik_custom/models/cust_commision.py
index eeb255cd..4df66b59 100644
--- a/indoteknik_custom/models/cust_commision.py
+++ b/indoteknik_custom/models/cust_commision.py
@@ -12,6 +12,15 @@ class CustCommision(models.Model):
partner_id = fields.Many2one('res.partner', String='Customer', required=True)
commision_percent = fields.Float(string='Commision %', tracking=3)
+ target_1st = fields.Float(string='Target 1st', tracking=3)
+ target_2nd = fields.Float(string='Target 2nd', tracking=3)
+ achieve_1st = fields.Float(string='Achive 1st', tracking=3)
+ achieve_2nd = fields.Float(string='Achive 2nd', tracking=3)
+ commision_type = fields.Selection([
+ ('fee', 'Fee'),
+ ('cashback', 'Cashback'),
+ ('rebate', 'Rebate'),
+ ], string='Commision Type', required=True)
@api.constrains('partner_id')
def _check_partner_id(self):
diff --git a/indoteknik_custom/views/cust_commision.xml b/indoteknik_custom/views/cust_commision.xml
index dfa4adfb..be58a68c 100644
--- a/indoteknik_custom/views/cust_commision.xml
+++ b/indoteknik_custom/views/cust_commision.xml
@@ -7,6 +7,11 @@
<tree editable="bottom">
<field name="partner_id"/>
<field name="commision_percent"/>
+ <field name="target_1st"/>
+ <field name="target_2nd"/>
+ <field name="achieve_1st"/>
+ <field name="achieve_2nd"/>
+ <field name="commision_type"/>
</tree>
</field>
</record>
@@ -21,6 +26,11 @@
<group>
<field name="partner_id"/>
<field name="commision_percent"/>
+ <field name="target_1st"/>
+ <field name="target_2nd"/>
+ <field name="achieve_1st"/>
+ <field name="achieve_2nd"/>
+ <field name="commision_type"/>
</group>
</group>
</sheet>