mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
[IMP] hr_commission: extended ahead of timesheet based commission
* Allow invoice to see commission it is deriving amount for. This allows for basing on amounts that may depend on the employee or contract config. * Prevent making commissions if the employee rate or admin rates are not set. * Updated views to work in both CE and EE
This commit is contained in:
@@ -36,7 +36,7 @@ class AccountMove(models.Model):
|
|||||||
self.env['hr.commission'].invoice_paid(self)
|
self.env['hr.commission'].invoice_paid(self)
|
||||||
return res
|
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':
|
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
|
sign = -1 if self.move_type in ['in_refund', 'out_refund'] else 1
|
||||||
return self.margin * sign
|
return self.margin * sign
|
||||||
|
|||||||
@@ -71,14 +71,14 @@ class Commission(models.Model):
|
|||||||
elif commission.contract_id and commission.rate_type != 'manual':
|
elif commission.contract_id and commission.rate_type != 'manual':
|
||||||
if commission.rate_type == 'normal':
|
if commission.rate_type == 'normal':
|
||||||
commission.rate = commission.contract_id.commission_rate
|
commission.rate = commission.contract_id.commission_rate
|
||||||
else:
|
elif commission.rate_type == 'admin':
|
||||||
commission.rate = commission.contract_id.admin_commission_rate
|
commission.rate = commission.contract_id.admin_commission_rate
|
||||||
|
|
||||||
rounding = 2
|
rounding = 2
|
||||||
if commission.source_move_id:
|
if commission.source_move_id:
|
||||||
rounding = commission.source_move_id.company_currency_id.rounding
|
rounding = commission.source_move_id.company_currency_id.rounding
|
||||||
commission.base_total = commission.source_move_id.amount_total_signed
|
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
|
amount = (commission.base_amount * commission.rate) / 100.0
|
||||||
if float_is_zero(amount, precision_rounding=rounding):
|
if float_is_zero(amount, precision_rounding=rounding):
|
||||||
@@ -123,7 +123,7 @@ class Commission(models.Model):
|
|||||||
else:
|
else:
|
||||||
employee = employee_obj.search([('user_id', '=', move.invoice_user_id.id)], limit=1)
|
employee = employee_obj.search([('user_id', '=', move.invoice_user_id.id)], limit=1)
|
||||||
contract = employee.contract_id
|
contract = employee.contract_id
|
||||||
if all((employee, contract)):
|
if all((employee, contract, contract.commission_rate)):
|
||||||
move.commission_ids += commission_obj.create({
|
move.commission_ids += commission_obj.create({
|
||||||
'employee_id': employee.id,
|
'employee_id': employee.id,
|
||||||
'contract_id': contract.id,
|
'contract_id': contract.id,
|
||||||
@@ -136,7 +136,7 @@ class Commission(models.Model):
|
|||||||
# Admin/Coach commission.
|
# Admin/Coach commission.
|
||||||
employee = employee.coach_id
|
employee = employee.coach_id
|
||||||
contract = employee.contract_id
|
contract = employee.contract_id
|
||||||
if all((employee, contract)):
|
if all((employee, contract, contract.admin_commission_rate)):
|
||||||
move.commission_ids += commission_obj.create({
|
move.commission_ids += commission_obj.create({
|
||||||
'employee_id': employee.id,
|
'employee_id': employee.id,
|
||||||
'contract_id': contract.id,
|
'contract_id': contract.id,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
<field name="employee_id"/>
|
<field name="employee_id"/>
|
||||||
<field name="contract_id"/>
|
<field name="contract_id"/>
|
||||||
<field name="base_total" string="Invoice Total" sum="Invoice Total"/>
|
<field name="base_total" string="Invoice Total" sum="Invoice Total"/>
|
||||||
<field name="base_amount" string="Margin" sum="Margin Total"/>
|
<field name="base_amount" string="Base" sum="Base Total"/>
|
||||||
<field name="amount" string="Commission" sum="Commission Total"/>
|
<field name="amount" string="Commission" sum="Commission Total"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<field name="move_date"/>
|
<field name="move_date"/>
|
||||||
@@ -118,16 +118,16 @@
|
|||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
action="action_hr_commission"
|
action="action_hr_commission"
|
||||||
id="menu_action_account_commission_form"
|
id="menu_action_account_commission_root"
|
||||||
parent="account.menu_finance_entries"
|
parent="account.menu_finance_receivables"
|
||||||
sequence="90"
|
sequence="120"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
action="action_hr_commission"
|
action="action_hr_commission"
|
||||||
id="menu_action_account_commission_form2"
|
id="menu_action_account_commission_form"
|
||||||
parent="menu_action_account_commission_form"
|
parent="menu_action_account_commission_root"
|
||||||
sequence="90"
|
sequence="10"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<record id="action_commission_mark_paid" model="ir.actions.server">
|
<record id="action_commission_mark_paid" model="ir.actions.server">
|
||||||
@@ -210,8 +210,8 @@ action = records.action_mark_paid()
|
|||||||
<menuitem
|
<menuitem
|
||||||
action="action_hr_commission_payment"
|
action="action_hr_commission_payment"
|
||||||
id="menu_action_account_commission_payment_form"
|
id="menu_action_account_commission_payment_form"
|
||||||
parent="menu_action_account_commission_form"
|
parent="menu_action_account_commission_root"
|
||||||
sequence="100"
|
sequence="10"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Commission Structure -->
|
<!-- Commission Structure -->
|
||||||
@@ -240,4 +240,17 @@ action = records.action_mark_paid()
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
<record id="action_commission_structure" model="ir.actions.act_window">
|
||||||
|
<field name="name">Commission Structures</field>
|
||||||
|
<field name="res_model">hr.commission.structure</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
action="action_commission_structure"
|
||||||
|
id="menu_action_account_commission_structure"
|
||||||
|
parent="menu_action_account_commission_root"
|
||||||
|
sequence="30"
|
||||||
|
/>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|||||||
Reference in New Issue
Block a user