diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-04-05 11:22:14 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-04-05 11:22:14 +0700 |
| commit | ef05fc18109974354f7a41b2c16381614fc4b1b6 (patch) | |
| tree | 08877fbf25828dea3c42ee70dbacaa4ac71532c3 | |
| parent | 61e4da9eb978712ddcb4d12be7524c7512b6d906 (diff) | |
| parent | b475bcb1b0b8648b30a7d8c8cf1cfeabe8d93763 (diff) | |
Merge branch 'commision' into production
| -rw-r--r-- | indoteknik_custom/models/commision.py | 43 | ||||
| -rw-r--r-- | indoteknik_custom/models/cust_commision.py | 15 | ||||
| -rw-r--r-- | indoteknik_custom/views/cust_commision.xml | 10 |
3 files changed, 56 insertions, 12 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..da345f04 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): @@ -20,6 +29,8 @@ class CustCommision(models.Model): ('partner_id', '=', rec.partner_id.id), ('id', '!=', rec.id) ]) - if duplicate_partner: - raise UserError('Partner already exists') + + for rec in duplicate_partner: + if self.commision_type == rec.commision_type: + raise UserError('Partner already exists')
\ No newline at end of file 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> |
