63 lines
2.5 KiB
Python
63 lines
2.5 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
|
|
from odoo import models
|
|
|
|
|
|
class HrPayslipLine(models.Model):
|
|
_inherit = "hr.payslip.line"
|
|
|
|
def _get_partner_id(self, credit_account):
|
|
"""
|
|
Get partner_id of slip line to use in account_move_line
|
|
|
|
Partner is required only for specific account types that track external
|
|
relationships:
|
|
- asset_receivable: Employee loans, salary advances, overpayments to recover
|
|
→ Partner source: Employee (work_contact_id or
|
|
bank_account_id.partner_id)
|
|
- liability_payable: Third-party payables (tax authorities, insurance
|
|
companies) typically managed through contribution
|
|
registers
|
|
→ Partner source: Register partner
|
|
(salary_rule_id.register_id.partner_id)
|
|
- liability_current: Current liabilities to pay employee salaries, net pay
|
|
accruals
|
|
→ Partner source: Employee (work_contact_id or
|
|
bank_account_id.partner_id)
|
|
|
|
For other account types (expense, income, asset_current, etc.), no partner
|
|
is assigned as these represent internal accounting entries without external
|
|
party relationships.
|
|
"""
|
|
# Determine which account we're dealing with
|
|
acc_type = (
|
|
self.salary_rule_id.account_credit.account_type
|
|
if credit_account
|
|
else self.salary_rule_id.account_debit.account_type
|
|
)
|
|
|
|
if acc_type in ("asset_receivable", "liability_current"):
|
|
# Employee-related accounts - always employee
|
|
return (
|
|
self.slip_id.employee_id.work_contact_id.id
|
|
if self.slip_id.employee_id.work_contact_id
|
|
else (
|
|
self.slip_id.employee_id.bank_account_id.partner_id.id
|
|
if self.slip_id.employee_id.bank_account_id
|
|
else False
|
|
)
|
|
)
|
|
|
|
elif acc_type == "liability_payable":
|
|
# Third-party payables - always register partner
|
|
return (
|
|
self.salary_rule_id.register_id.partner_id.id
|
|
if self.salary_rule_id.register_id
|
|
and self.salary_rule_id.register_id.partner_id
|
|
else False
|
|
)
|
|
|
|
# All other account types (expense, income, etc.)
|
|
return False
|