[19.0][MIG] payroll_account: Migration to 19.0 - #282
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/
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
1b53a7f to
df4caf9
Compare
|
Hi @neoand, I noticed this PR came in after mine (#269, opened back in May), so I wanted to flag something before they diverge further. While working on #269 I found and fixed a real bug in payroll_account's journal handling: when generating payslips in bulk from a hr.payslip.run batch, the batch's journal was silently overriding the employee's own contract journal (hr.version.journal_id) instead of respecting it as a fallback. Worth checking if your migration carries the same behavior, since the original v18 code has it too. Changes in #269 that address this: create() override in hr.payslip now gives priority to the contract's own journal_id, falling back to the batch's journal only when the contract has none. |
|
Cierro este PR por decisión interna de pausar contribuciones a OCA a partir del 15-ago-2026. El código queda archivado en mi fork privado ( Agradezco especialmente a @stferraro por avisar a tiempo que existía #269, y por la conversación que se abrió. El trabajo de #269 cubre esta migración con tres aprobaciones, CI en verde, y el fix del bug de Gracias a los mantenedores por su tiempo en revisarlo. — Anderson |
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.