Replaces Enterprise's hr_payroll_account with a Fusion-native bridge: - Adds account_debit / account_credit / fusion_analytic_account_id / not_computed_in_net to hr.salary.rule (company-dependent GL mapping) - Adds move_id + move_state + journal_id + _fusion_create_account_move to hr.payslip (validated payslip -> balanced account.move) - Adds move_id + move_state + action_open_move to hr.payslip.run - Adds journal_id (company-dependent) to hr.payroll.structure - Adds is_payroll_journal flag to account.journal - Adds payslip_ids / payslip_count + action_open_payslip on account.move - Adds payslip_id reverse link on account.move.line - Adds move_line_id reverse link on hr.payslip.line - Adds fusion_payroll_journal_id + fusion_payroll_auto_post to res.company (with res.config.settings exposure) Coexistence: detects Enterprise hr_payroll_account at runtime via ir.module.module and yields move creation to it while both modules are installed, so payslips do not get duplicate entries. Once the Enterprise module is uninstalled, this module owns the bridge. Auto-installs whenever both hr_payroll and fusion_accounting_core are present on the database. 10 smoke tests verifying field surface + bridge entrypoints all pass on westin-v19. Full payslip-to-move integration test deferred (needs seeded payroll structure). Removes Westin's last payroll-accounting dependency on Enterprise's accountant umbrella module (Phase 6b of the Fusion Accounting suite). Made-with: Cursor
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from odoo import fields, models
|
|
|
|
|
|
class HrSalaryRule(models.Model):
|
|
_inherit = 'hr.salary.rule'
|
|
|
|
account_debit = fields.Many2one(
|
|
'account.account',
|
|
string='Debit Account',
|
|
company_dependent=True,
|
|
ondelete='restrict',
|
|
help="GL account debited when this rule's amount is posted "
|
|
"(typically expense or asset).",
|
|
)
|
|
account_credit = fields.Many2one(
|
|
'account.account',
|
|
string='Credit Account',
|
|
company_dependent=True,
|
|
ondelete='restrict',
|
|
help="GL account credited when this rule's amount is posted "
|
|
"(typically liability).",
|
|
)
|
|
fusion_analytic_account_id = fields.Many2one(
|
|
'account.analytic.account',
|
|
string='Analytic Account',
|
|
company_dependent=True,
|
|
help="Optional analytic account applied to both legs of the move.",
|
|
)
|
|
not_computed_in_net = fields.Boolean(
|
|
string="Excluded from Net",
|
|
default=False,
|
|
help="If checked, the result of this rule is excluded from the "
|
|
"Net salary line in the journal entry. Set a dedicated "
|
|
"debit/credit account so the amount is posted independently.",
|
|
)
|