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
+
+
+
+