Wednesday, March 11, 2026
14 changes · master
Resolved issues and error corrections
This update resolves an issue where renewing a subscription while another renewal process was running would incorrectly mark the subscription as churned. The fix ensures that subscriptions are only processed when their status indicates they should be renewed, preventing this race condition and ensuring accurate subscription management.
Original PR description
Steps to reproduce: - Have a subscription ready to expire/auto-close. - Trigger the `_cron_subscription_expiration` cron. - While the cron is processing earlier batches, manually renew the subscription. - The renewed subscription is incorrectly marked as closed/churned. Cause: The cron searches for all expired/unpaid subscriptions at the very beginning and processes them in batches of 30. If a subscription is renewed concurrently (Race condition), its ID is already in the `subscriptions_close` list, causing the cron to close it regardless of its new state. Solution: Inside the batch processing loop, consider only subscriptions that are strictly still in `SUBSCRIPTION_PROGRESS_STATE`. Task: 5929077 Forward-Port-Of: odoo/enterprise#107157
This update resolves an issue where autofilling pivot formulas in certain scenarios caused errors and incorrect data formatting. The fix ensures that pivot formulas work reliably, preventing crashes and maintaining the intended positional structure within pivot tables. This improves the accuracy and usability of the enterprise reporting feature.
Original PR description
If we autofill a positional pivot formula in the dimension perpendicular to the positional header, it would not work correctly: - We would crash if the position wasn't in the original pivot table - We would drop the positional part otherwise (`"#country_id", 1` would become `"country_id", 25`). Task: [5909266](https://www.odoo.com/web#id=5909266&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#109631
This update resolves an issue where printing basic receipts would fail if the point-of-sale (POS) name was too long. The fix limits the receipt name length to 46 characters to prevent a technical error that disrupted the printing process. This ensures basic receipts are always printed correctly.
Original PR description
When printing a basic receipt, if the pos name is too long a traceback will occurs when printing the basic receipt. Steps to reproduce: * Create a pos with a name of 46 character or more * Setup the italian fiscal printer * Enable Basic Receipt printing * Open point of sale * Create an order and validate it * Try "Print Basic receipt" Traceback: RangeError: Invalid count value: -15 at String.repeat () If the data being printed is longer than the maximum number of character in a line (MAX_CHARS = 46), paddingLeft becomes negative which cause an error in repeat(). [Similar solution](https://github.com/odoo/enterprise/blob/18.0/l10n_it_pos/static/src/app/fiscal_printer/commands/print_rec_message/print_rec_message.js#L35) [opw-5270697](https://www.odoo.com/odoo/project/49/tasks/5270697) Forward-Port-Of: odoo/enterprise#109766 Forward-Port-Of: odoo/enterprise#109527
This update fixes an issue where sign requests generated from HR wizards didn't automatically use the expiration dates defined on the sign templates. Now, all sign requests will adhere to the template's configured validity period, ensuring accurate tracking and preventing outdated requests.
Original PR description
Before, when sending sign requests from the HR custom wizards, the validity date defined on the sign template was not applied to the generated signature requests. As a result, requests were created without respecting the template’s configured expiration. task-5928110 Forward-Port-Of: odoo/enterprise#107076
This update clarifies the error message displayed when an incorrect account is linked to the Expense Reimbursement salary rule. The change ensures employees receive clearer guidance on setting up their expense reimbursements correctly, preventing potential payment issues.
Original PR description
. Change the error message to say "The account linked to the salary rule Expense Reimbursement must be payable type." task-5965760
This update resolves a problem where spreadsheet thumbnails sometimes failed to save correctly due to a temporary disconnection during the screenshot process. The fix ensures thumbnails are reliably saved, improving the user experience when creating and sharing spreadsheets. This was a minor stability issue.
Original PR description
When we leave a spreadsheet, we take a screenshot of the canvas to save as thumbail. But it's sometime possible for the spreadsheet to be unmounted whe trying to screenshot it, leading to a traceback. Task: [5914708](https://www.odoo.com/web#id=5914708&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#109531
This update resolves an issue preventing automated tests from correctly opening the POS session. The changes update tour selectors to target the 'Open Register' button and modify the UI rendering to ensure the button is consistently accessible. This improves the reliability of our test automation.
Original PR description
In this commit:
- The POS open UI button is now rendered through a widget and no longer exposes the `name=open_ui` attribute. As a result, the existing tour selectors could not locate the button.
- Update the tour triggers to use `button:contains('Open Register')` so the POS session can still be opened correctly during tests.
Task:5425256
Related PR:
- Community: https://github.com/odoo/odoo/pull/241641
- Upgrade: https://github.com/odoo/upgrade/pull/9205This update resolves an issue preventing correct validation of data properties within the Knowledge and Spreadsheet Edition modules. The fix ensures data integrity and proper functionality for these key features, improving overall system stability.
Original PR description
This commit corrects wrong props validation schema that could not work.
This update fixes a technical issue within Odoo's VoIP system. Previously, the system relied on a single data field for status updates, which created maintenance challenges and lacked crucial information like employee access tokens. This change ensures accurate and complete status updates, improving the reliability of the VoIP feature.
Original PR description
Just reading `im_status` instead of the dedicated method makes the maintenance harder and it is potentially problematic as it doesn't return the `im_status_access_token` nor the necessary extra information from employee records to compute out of office. https://github.com/odoo/odoo/pull/252008
This update resolves a minor visual issue in the Helpdesk module related to the 'Rotting days' field. The change improves the field's appearance and usability by applying a standard UI element. This ensures a consistent and polished user experience for Helpdesk users.
Original PR description
This commit fixes the UI of the 'Rotting days' field, by wrapping it in a o_input_box div and using the o_input_box_overlay_end and the o_input_box_overlay_inline classnames. task-6025631
This update removes a temporary flag from the account reports tour, signifying that it is now fully functional and reliable. This ensures users can consistently access and utilize the tour without encountering unexpected issues. The change improves the overall stability of the account reporting feature.
Original PR description
This commit removes the 'undeterministicTour_doNotCopy' flag from the 'account_reports_sections' tour. This indicates that the tour is now stable.
This update removes a temporary flag from the account reporting audit tour, signifying that it is now reliably functional. This ensures consistent and accurate reporting processes for users. The change improves stability and reduces potential issues with the audit tour.
Original PR description
This commit removes the 'undeterministicTour_doNotCopy' flag from the 'account_reports_audit' tour. This indicates that the tour is now stable.
This update corrects a technical issue where incorrect class names were being used in several Odoo modules. The change ensures all elements use the correct 'o_input_box_overlay_inline' class, improving the stability and consistency of the system. This resolves a potential inconsistency that could have impacted user experience.
Original PR description
In commit [1], the class 'o_input_box_overlay_inline' was introduced, but many elements were using an invalid 'o_input_box_inline' class instead of that one. This commit replaces all the wrong implementation of inline suffixes by the right one. [1]: dc8f38b1054664a0e382530bb4fc73983e2085cb
This update resolves an issue where users couldn't enter values in the 'Allocated Time' field within the planning module, particularly when a break time was scheduled. Now, the field functions correctly with a standard input box, ensuring accurate time tracking and scheduling.