[19.0][MIG] payroll_account: Migration to 19.0 - #282
Open
neoand wants to merge 70 commits into
Open
Conversation
Currently translated at 100.0% (24 of 24 strings) Translation: payroll-14.0/payroll-14.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-14-0/payroll-14-0-payroll_account/ca/
Currently translated at 16.6% (4 of 24 strings) Translation: payroll-14.0/payroll-14.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-14-0/payroll-14-0-payroll_account/es_AR/
Currently translated at 100.0% (24 of 24 strings) Translation: payroll-14.0/payroll-14.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-14-0/payroll-14-0-payroll_account/es_AR/
Currently translated at 100.0% (24 of 24 strings) Translation: payroll-14.0/payroll-14.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-14-0/payroll-14-0-payroll_account/es/
… payslip Until now this module tried to confirm an empty account move. This caused the account module to throw an exception. This causes problems in other modules that may not know about payroll_account. For example in other modules' tests.
Currently translated at 100.0% (24 of 24 strings) Translation: payroll-14.0/payroll-14.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-14-0/payroll-14-0-payroll_account/es_AR/
Currently translated at 100.0% (24 of 24 strings) Translation: payroll-14.0/payroll-14.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-14-0/payroll-14-0-payroll_account/es/
[14.0] [IMP] payroll: improve salary rules views and documentation [14.0] [IMP] payroll: improve salary rules and categories views [14.0] [IMP] payroll: improve salary rules views and documentation [14.0] [IMP] payroll: improve salary rules views and documentation [IMP] payroll: fix repeated words [14.0] [IMP] payroll: fix typos
[14.0] [IMP] payroll: change manifest category [14.0] [IMP] payroll: add migration for new payslip and payslips objects [14.0] [IMP] payroll: add migration for new payslip and payslips objects [14.0] [IMP] payroll: add migration for new payslip and payslips objects
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: payroll-16.0/payroll-16.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-payroll_account/
Currently translated at 100.0% (21 of 21 strings) Translation: payroll-16.0/payroll-16.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-payroll_account/fa/
Currently translated at 80.9% (17 of 21 strings) Translation: payroll-16.0/payroll-16.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-16-0/payroll-16-0-payroll_account/it/
Currently translated at 100.0% (22 of 22 strings) Translation: payroll-18.0/payroll-18.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-18-0/payroll-18-0-payroll_account/es_VE/
Currently translated at 100.0% (22 of 22 strings) Translation: payroll-18.0/payroll-18.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-18-0/payroll-18-0-payroll_account/es/
Currently translated at 100.0% (22 of 22 strings) Translation: payroll-18.0/payroll-18.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-18-0/payroll-18-0-payroll_account/tr/
In Odoo 17.0+, the address_home_id field was removed from hr.employee and replaced with work_contact_id. This caused journal entries to be created without proper partner information when no register partner was configured. This fix implements proper partner resolution logic: - For asset_receivable and liability_current accounts: Use employee partner (work_contact_id with fallback to bank_account_id.partner_id) - For liability_payable accounts: Use register partner - For other account types: No partner assigned Also includes proper null checks to prevent AttributeError when accessing .id on empty Many2one fields. Added minimal test coverage for the new partner logic to verify correct partner assignment for different account types. Fixes OCA#221
Currently translated at 100.0% (22 of 22 strings) Translation: payroll-18.0/payroll-18.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-18-0/payroll-18-0-payroll_account/sl/
Currently translated at 100.0% (22 of 22 strings) Translation: payroll-18.0/payroll-18.0-payroll_account Translate-URL: https://translation.odoo-community.org/projects/payroll-18-0/payroll-18-0-payroll_account/sl/
neoand
force-pushed
the
19.0-mig-payroll_account
branch
4 times, most recently
from
August 11, 2026 10:32
a8a7b26 to
1b53a7f
Compare
Odoo 19 removed the `hr_contract` addon: contract data now lives on `hr.version`, which is the model this module extends. - models/hr_contract.py: _inherit "hr.contract" -> "hr.version", mirroring what the payroll module already does on 19.0 - views: inherit payroll.hr_contract_view_form (model hr.version) instead of the removed hr_contract.hr_contract_view_form, anchoring the accounting fields after struct_id - tests: build the contract through employee.version_id.write() with contract_date_start (the pattern used by payroll/tests/common.py on 19.0); hr.employee.gender -> sex; hr.employee.bank_account_id -> bank_account_ids - drop the 18.0.1.0.2 migration scripts - adapt to 19.0 lint rules: odoo._() -> self.env._() and lazy %% formatting (translation-not-lazy, prefer-env-translation), following what the payroll module already does on this branch Assisted-by: Claude Opus 4.8
neoand
force-pushed
the
19.0-mig-payroll_account
branch
from
August 11, 2026 10:33
1b53a7f to
df4caf9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migration of
payroll_accountfrom 18.0 to 19.0.Module history was replayed with
git format-patch --keep-subject --stdout origin/19.0..origin/18.0 -- payroll_account | git am -3(69 commits), and the migration itself is the single commit on top.What Odoo 19 broke
Odoo 19 removed the
hr_contractaddon: contract data now lives onhr.version, which is exactly the model this module extends. Thepayrollmodule already made that jump on 19.0, so this migration follows the same pattern.hr_contractaddon is gonemodels/hr_contract.py:_inherit"hr.contract"→"hr.version"hr_contract.hr_contract_view_formno longer existspayroll.hr_contract_view_form(modelhr.version) and anchor the accounting fields afterstruct_idhr.employee.gender→sexhr.employee.bank_account_id(m2o) →bank_account_idsTests now build the contract through
employee.version_id.write()withcontract_date_start, the pattern used bypayroll/tests/common.pyon 19.0.The
18.0.1.0.2migration scripts were dropped.Testing
On
odoo:19.0Community:Beyond the module's own suite, I checked the feature end-to-end on a fresh database: a payslip whose rules carry
account_debit/account_credit, confirmed withaction_payslip_done(), produces a balancedaccount.moveposted on the journal configured on the version.I also re-ran a payslip-engine check on
payrollalone before and after installing this module to confirm nothing regressed.Note
Loading demo data changed in Odoo 19 —
--without-demois no longer enough and there is a newodoo module force-demosubcommand. Without demo data these tests fail onbase.res_partner_12, which does exist in 19.0's demo. Worth knowing when reproducing locally.@appstogrow @nimarosa
Assisted-by: Claude Opus 4.8
Disclosed per the OCA Generative AI / LLM Policy.
Developed and verified under my direction and review; I take responsibility for the contribution.