Daily updates from Odoo
Wednesday, December 24, 2025
18 changes · master
New functionality added to Odoo
This update adds support for filing the GSTR-9 report, a crucial annual GST return required by Indian businesses. It integrates data from previous returns and accounts to ensure accurate reporting for tax compliance by December 31st. This enhancement supports businesses with annual turnover under ₹2 crore, simplifying their GST filing process.
Original PR description
This **PR** introduces support for GSTR-9 report. GSTR-9 is an annual GST return that registered taxpayers, including SEZ units, must file for each financial year. It includes details from previously filed returns (GSTR-1, 2A, and 3B) and the books of accounts. The form covers annual sales, taxable and non-taxable transactions, inward supplies, ITC claimed, and ITC reversals. The GSTR-9 filing is due by December 31st of the following year and is optional for taxpayers with a turnover of less than ₹2 crore. **task**-4169682 **Community PR** - https://github.com/odoo/odoo/pull/179923
Enhancements to existing features
This update streamlines the bank account experience by simplifying data management and addressing inconsistencies across different countries. The changes remove redundant models and ensure key fields are consistently available, leading to a more user-friendly and reliable process for managing bank statements and transactions.
Original PR description
This commit improves the UX of bank accounts by: 1. removing res.bank model 2. removes localizations redundancy 3. some fields in localizations should be available to all companies 4. most countries had missing fields task-5145618
This update clarifies the filter options for overdue customer invoices within the account follow-up system. This change ensures users can more easily identify and manage overdue payments, leading to improved cash flow tracking and reporting. The update focuses on enhancing the clarity and usability of a key reporting feature.
Original PR description
opw-5232434 Forward-Port-Of: odoo/enterprise#100595
This update adjusts the deadline for providing feedback on appraisals to match the appraisal date itself. This simplifies the process for employees and ensures timely completion of the appraisal cycle. It improves the overall efficiency of the performance review workflow.
Original PR description
. Make feedback answer deadline equal to the appraisal date task-5176039
This update simplifies the salary calculator process by removing the direct employee creation option. Now, users can select an existing employee or leave the field blank, streamlining workflows and reducing potential data entry errors. This change improves the overall user experience within the HR contract salary payroll module.
Original PR description
This commit disables the option to create a new employee directly from the salary calculator. The employee field should be optional, and users may select an existing employee if required. Task: 5427477
This update enhances the point-of-sale system by intelligently determining when order payments can be edited, based on the specific localization and features being used. This ensures users only have access to payment editing options relevant to their situation, improving the user experience and data accuracy. It addresses a previous issue related to inconsistent payment editing controls across different Odoo versions.
Original PR description
*: l10n_de_pos, pos_urban_piper In this commit: ------------------ - We have override the condition and based on localizations and feature we have applied conditions if the order payments should be editable or not. task: 5144861 Related PR: https://github.com/odoo/odoo/pull/230721
Resolved issues and error corrections
This update fixes a calculation error in the product reporting module for Peru (l10n_pe). The initial product value was incorrectly set to zero, leading to inaccurate out-move reporting. This change ensures that product values are correctly calculated, reflecting the actual cost and improving reporting accuracy.
Original PR description
Since we create a product value with the initial cost of the product we need to adapt this test. Since it creates the product during the setup at date of today. It will register the current value of the product as 0. When you deliver it will take the current cost so 0. Thus the out move won't have any value. Forward-Port-Of: odoo/enterprise#102791
This update strengthens our point-of-sale testing process by ensuring that ticket generation tests accurately simulate real-world scenarios. The tests now correctly initialize tickets and validate them against printer models, leading to more reliable test results and improved product quality. This addresses a previous issue where tests were not fully representative of the actual ticket generation workflow.
Original PR description
Previously, ticket-generation tests relied on manual render calls, bypassing initialization logic and missing key method flows. This update refactors the test utilities to mimic real-life execution: tickets are now initialized via the main generation methods, and the final printed ticket is validated through the printer model. Task-5391327 Related: https://github.com/odoo/odoo/pull/238824
This update improves the customer experience by adding the delivery OTP directly to the receipt. Previously, the receipt only displayed the delivery address, creating confusion for customers. This change ensures customers have immediate access to the OTP needed for delivery.
Original PR description
Before this commit: --------- - Delivery OTP was not shown on the receipt. - Receipt only displayed delivery address without any OTP. After this commit: ------------------- - Display “Delivery OTP ” below the delivery address on the receipt. Task-5048040
This update fixes a minor inconsistency in the documentation for our phone system features. The previous documentation incorrectly referenced a method that was never actually used. This change ensures the documentation accurately reflects the current codebase, improving clarity for our support team and developers.
Original PR description
A mention to `_voip_get_phone_field` appeared in [1] but this seems to never have existed. In any case, `_phone_get_number_fields` was used by the codebase in the end and should thus be the one mentioned. [1]: https://github.com/odoo/enterprise/commit/52b3065993c41c6b7c65dda586a66fdd865b3afd Forward-Port-Of: odoo/enterprise#102804
This update fixes an issue where opening invalid account return checks could display all `account.move.line` records, even when only one or zero matching records existed. The change ensures that the correct number of records are displayed, preventing unnecessary data loading and improving reporting accuracy.
Original PR description
Before this PR, opening invalid records from account return checks could show all `account.move.line` records when there were 0 or 1 matching record(s). Technical Reason: In `_get_records_action` domain is only applied when there are multiple records, so without a domain, all records are opened. With this PR, the domain is passed through the method arguments, and also action will be none if there are no records. task-5427746 Forward-Port-Of: odoo/enterprise#102424
This update corrects a previous change that incorrectly included legal reserves in the Belgian Balance Sheet reports. This change was unnecessary as legal reserve requirements have been removed since 2024. This reversion ensures accurate reporting for Belgian businesses.
Original PR description
In #95062, the BE Balance Sheet was changed to include Legal Reserves. However, since this is not needed since 2024, this change can be reverted. no-task Forward-Port-Of: odoo/enterprise#102766
This update fixes a security vulnerability where Portal and Internal users could create private knowledge articles without the necessary permissions. The fix ensures that users only have access to create articles when they have the appropriate 'Create' access rights, improving data security and control. UI changes have also been implemented to hide creation buttons for users without the correct permissions.
Original PR description
How to Reproduce : 1. Remove 'Create' access on the 'Knowledge Article' model for Portal and Internal users. 2. Now log in as a Portal. 3. Try to create a new private article. 4. Log in as an…
How to Reproduce :
1. Remove 'Create' access on the 'Knowledge Article' model for Portal and
Internal users.
2. Now log in as a Portal.
3. Try to create a new private article.
4. Log in as an Internal user.
5. Try to create a new private article.
Both Internal and Portal users can still create private articles even after
'Create access' is removed.
Article creation logic in `knowledge.article` was bypassing the usual access
rights because of `sudo` (mainly to add the creator as a member, since creation
rights on the member model are not granted). This allowed users to create
private articles even without create access.
This commit introduces:
1. Model-level access check in `create`. Sudo the creation of articles only when
the user has create rights.
2. UI imp to hide the '+' button in the sidebar and the `New` button in
the topbar when the user doesn't have create access.
3. New test cases to verify that model-level access rights are respected when creating an article.
4. Removed 'create=1' from article embedded list view as it was always displaying 'New' button
irrespective of create rights.
Now it displayed based on create rights.
task-4916280
Forward-Port-Of: odoo/enterprise#102299
Forward-Port-Of: odoo/enterprise#93034This update ensures that inactive accounts are no longer included in reports, aligning with a change in how inactive status is tracked within the system. Previously, the system incorrectly displayed inactive accounts, which has now been resolved to improve report accuracy and data consistency. This change was made to streamline reporting processes.
Original PR description
In replacing the deprecated field with the special `active` field the account_codes prefix engine no longer displays values for accounts that are inactive.
This disables the active test in:
- computing the domain for accounts
- auditing the value (since the domain is `('account_id.code', 'in'...)`
opw-5226153
Forward-Port-Of: odoo/enterprise#101540
Forward-Port-Of: odoo/enterprise#100885Features or functions removed from Odoo
This update removes outdated code related to hiding GIFs in emails. The GIF hiding functionality has been successfully integrated into Composer actions, eliminating redundancy and simplifying the system. This change improves efficiency and ensures consistent email behavior.
Original PR description
The GIF picker logic has been refactored to composer actions. Refactor commit: https://github.com/odoo/odoo/commit/5e1daafeac231c333ea13369fc208627213d67d4 The previous Composer patch is now obsolete and no longer executed. Removing it avoids duplication, as GIF hiding is now fully implemented through composer actions. Task-5163888
Code cleanup and technical improvements
This update simplifies the way document folders are displayed in search panels by returning raw data from the model and allowing the client to handle the formatting. This change improves the search panel's performance and maintainability, ensuring a smoother user experience when navigating document folders.
Original PR description
We're choosing to keep the model method cleaner and return the raw field value, and let the client convert to number to construct the folders' tree. We're also setting the method as readonly as it does not modify data. Task-5272030
This update replaces Float fields with Monetary fields across several Point of Sale modules (pos, pos_online_payment, l10n_se_pos, pos_pricer). This ensures accurate and consistent display of currency values in views and improves data integrity for financial transactions. It's a necessary update to align with Odoo's financial standards.
Original PR description
`point_of_sale`, `pos_online_payment`, `l10n_se_pos`, `pos_pricer` before this commit: ============== - Using Float fields to display currency values. - Some views did not display monetary data correctly,. after this commit: ============== - All currency-related fields have been replaced with Monetary fields instead of Float fields. - Views have been updated to follow the new approach for displaying monetary data consistently. Related community PR: odoo/odoo#191740 Related upgrade PR: odoo/upgrade#7298 Task-4424052
This update reorganizes testing code for the payroll account module, moving helper functions to a central base module. This simplifies testing and ensures consistency across the payroll system. The change improves the overall test structure and maintainability.
Original PR description
as journal_id missing is non blocking now a lot of tests should be moved back from l10n_xx_hr_payroll_account to l10n_xx_hr_payroll to be able to do that we should mode all the helper functions like _generate_payslip, _validate_payslip, _add_rule_parameter_value, _setup_common, ... to the base hr_payroll Task: 5403821