diff --git a/hr_commission/models/account.py b/hr_commission/models/account.py index 6180d014..1048faa1 100644 --- a/hr_commission/models/account.py +++ b/hr_commission/models/account.py @@ -36,7 +36,7 @@ class AccountMove(models.Model): self.env['hr.commission'].invoice_paid(self) return res - def amount_for_commission(self): + def amount_for_commission(self, commission=None): if hasattr(self, 'margin') and self.company_id.commission_amount_type == 'on_invoice_margin': sign = -1 if self.move_type in ['in_refund', 'out_refund'] else 1 return self.margin * sign diff --git a/hr_commission/models/commission.py b/hr_commission/models/commission.py index ccb4c0a8..59219090 100644 --- a/hr_commission/models/commission.py +++ b/hr_commission/models/commission.py @@ -71,14 +71,14 @@ class Commission(models.Model): elif commission.contract_id and commission.rate_type != 'manual': if commission.rate_type == 'normal': commission.rate = commission.contract_id.commission_rate - else: + elif commission.rate_type == 'admin': commission.rate = commission.contract_id.admin_commission_rate rounding = 2 if commission.source_move_id: rounding = commission.source_move_id.company_currency_id.rounding commission.base_total = commission.source_move_id.amount_total_signed - commission.base_amount = commission.source_move_id.amount_for_commission() + commission.base_amount = commission.source_move_id.amount_for_commission(commission) amount = (commission.base_amount * commission.rate) / 100.0 if float_is_zero(amount, precision_rounding=rounding): @@ -123,7 +123,7 @@ class Commission(models.Model): else: employee = employee_obj.search([('user_id', '=', move.invoice_user_id.id)], limit=1) contract = employee.contract_id - if all((employee, contract)): + if all((employee, contract, contract.commission_rate)): move.commission_ids += commission_obj.create({ 'employee_id': employee.id, 'contract_id': contract.id, @@ -136,7 +136,7 @@ class Commission(models.Model): # Admin/Coach commission. employee = employee.coach_id contract = employee.contract_id - if all((employee, contract)): + if all((employee, contract, contract.admin_commission_rate)): move.commission_ids += commission_obj.create({ 'employee_id': employee.id, 'contract_id': contract.id, diff --git a/hr_commission/views/commission_views.xml b/hr_commission/views/commission_views.xml index abfb7e67..e5864b9e 100644 --- a/hr_commission/views/commission_views.xml +++ b/hr_commission/views/commission_views.xml @@ -54,7 +54,7 @@ - + @@ -118,16 +118,16 @@ @@ -210,8 +210,8 @@ action = records.action_mark_paid() @@ -240,4 +240,17 @@ action = records.action_mark_paid() + + Commission Structures + hr.commission.structure + tree,form + + + +