Monday, March 2, 2026
18 changes · saas-18.3
Enhancements to existing features
This update allows accountants to quickly group invoice lines by tax, reducing clutter and improving journal item organization. A new server action provides a convenient way to group and ungroup lines by tax, date, and account, streamlining invoice processing for greater efficiency.
Original PR description
[IMP] account_edi_ubl_cii: (un)group lines by tax
Once an invoice is imported, a server action allows the user to group
lines by tax, and then if the same action is triggered again it will
ungroup all lines from the origin file
This feature is useful because accountants don't always need the
detail of the vendor bills, and also all the lines clutter up the
journal items
task-5047859
Forward-Port-Of: odoo/odoo#250703
Forward-Port-Of: odoo/odoo#245234Resolved issues and error corrections
This update fixes a visual inconsistency in the Discuss app's dark mode. The background colors of the navbar buttons and breadcrumbs were previously mismatched compared to the main control panel. This change ensures a more polished and professional user experience across all Odoo modules in dark mode.
Original PR description
The background color of navbar buttons and breadcrumbs in discuss app differed from that of control panel. This PR aligns and syncs these colors for a consistent UI. | Before | After | |--------|-------| |<img width="467" height="99" alt="image" src="https://github.com/user-attachments/assets/2def30f8-18aa-4399-a5d1-1cdc70b4cd81" /> |<img width="458" height="111" alt="image" src="https://github.com/user-attachments/assets/5578cd25-7686-4543-a8dc-3e0fe5aeb4fc" />| This PR contains backport of #217608 task-[4936733](https://www.odoo.com/odoo/project/1519/tasks/4936733) task-[5487197](https://www.odoo.com/odoo/project/1519/tasks/5487197) Forward-Port-Of: odoo/odoo#250601
This update adjusts Odoo to comply with a new Italian law, effective January 1, 2025. It now allows forfettari (RF19) to utilize simplified invoices regardless of the total invoice amount, removing a previous limit. This simplifies invoicing for this specific business segment.
Original PR description
Since 01/01/2025, Italian law allows forfettari (RF19) to use simplified invoices even if the total amount exceeds 400€. References: - https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:legge:2014-12-23;190;1;59#:~:text=L'emissione%20della%20fattura%2C%20ove%20prevista%2C%20può%20avvenire%20in%20modalità%20semplificata%20ai%20sensi%20dell'articolo%2021%2Dbis%20del%20decreto%20del%20Presidente%20della%20Repubblica%2026%20ottobre%201972%2C%20n.%20633%2C%20anche%20se%20di%20ammontare%20complessivo%20superiore%20al%20limite%20indicato%20nel%20comma%201%20del%20medesimo%20articolo%2021%2Dbis. - https://www.dkpost.it/fattura-semplificata-senza-limiti-per-i-forfettari/ - https://www.gazzettaufficiale.it/eli/id/2024/11/30/24G00196/sg Forward-Port-Of: odoo/odoo#250743 Forward-Port-Of: odoo/odoo#247264
This update ensures that transactions imported via the Odoo cron process are correctly split according to the journal configuration, mirroring the behavior of manual imports. Previously, the cron process bypassed this splitting logic, leading to incorrect accounting. This fix improves the accuracy of financial data processing.
Original PR description
When importing CODA files manually, transactions are correctly split according to the journal configuration. However, when processed via the cron, the splitting logic is bypassed because the journal recordset is empty at the time of parsing. This occurs because the journal is identified only after the file has been parsed, which is too late for the cron flow. This commit ensures the journal is available early enough to respect the "Split Transactions" setting regardless of the import method. opw-4954539 Forward-Port-Of: odoo/enterprise#107560 Forward-Port-Of: odoo/enterprise#106344
This update ensures the Odoo spreadsheet component is running the latest version, addressing potential issues and improving its functionality. The changes focus on stability and performance within the spreadsheet feature, benefiting all users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/bfdee61b35 [REL] 18.3.36 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/bfdee61b35 [REL] 18.3.36 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/bc061929b5 [FIX] dynamic_tables: trim overlap on the correct side [Task: 5905900](https://www.odoo.com/odoo/2328/tasks/5905900) https://github.com/odoo/o-spreadsheet/commit/893a08ba62 [FIX] Evaluation: Provide cell position for isolated formula evaluation [Task: 5798610](https://www.odoo.com/odoo/2328/tasks/5798610) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update corrects a technical issue related to how leave periods are calculated, specifically addressing potential problems caused by different time zones. The change ensures accurate payroll processing for employees in Switzerland by standardizing the date ranges used for leave interruptions.
Original PR description
This commit fixes the leaves work interruption constraint by replacing `date_from` and `date_to` with `request_date_from` and `request_date_to`, thereby resolving any inconsistencies that may arise from time zone differences. task-5966780 Forward-Port-Of: odoo/enterprise#108541
This update ensures that when users send multiple messages in a live chat, only one channel is created. Previously, sending multiple messages could lead to duplicate channel creation, which was causing confusion and potential issues. This fix streamlines the live chat process and improves user experience.
Original PR description
Before this commit, sending multiple messages before the channel creation can result in multiple channels being created. It occurs because the post function is overriden to first persist the channel. When the persist call is still in progress, we shouldn't issue a new one. task-4756758 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250530 Forward-Port-Of: odoo/odoo#250374
This update resolves an issue where the cash drawer wasn't automatically opening when accessing cash details within the Italian Point of Sale (POS) system. The fix ensures that the cash drawer opens consistently when the cash details popup is accessed, regardless of whether the POS session is open or closed. This improves the user experience for Italian POS operations.
Original PR description
When opening the cash details popup the cash drawer should be opened. It was not the case for the Italian fiscal printer. Steps to reproduce: ------------------- * Setup a Italian fiscal printer with cash drawer support * Open PoS * Open the cash details popup > Observation: The cash drawer does not open * Try to close the PoS session * Open the cash details popup > Observation: The cash drawer opens Why the fix: ------------ The cash drawer opening function was simply not called opw-5391094 Forward-Port-Of: odoo/enterprise#109057 Forward-Port-Of: odoo/enterprise#107987
Previously, users couldn't reply to messages received from other companies within Odoo. This update fixes a bug that prevented responses, allowing users to properly acknowledge and respond to communications across different company environments. This improves collaboration and ensures timely responses to all messages.
Original PR description
Before these changes, messages from other companies were received, but when trying to reply to them, an error occurred that prevented the response. Steps to reproduce the issue in runbot: 1. In one tab, log in as admin, and in another incognito tab, open demo. 2. Make sure demo has Handle Notifications in Odoo enabled. 3. Set admin in one company and demo in another company. 4. Assign a task to demo. 5. Click on the notification to open the chatter and try to reply. An error is thrown With these changes, the response can be logged when the user has access to the company from which the task was assigned. cc @Tecnativa TT61176 ping @pedrobaeza --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250677
This update corrects a bug where the website's 'scroll to top' links (e.g., '#top') were broken due to incorrect URL processing. The fix ensures these links function correctly, providing a seamless user experience for navigating to the top of the page. A new test confirms this resolution.
Original PR description
__Before commit:__ Menu items with anchor URLs (e.g., `#my-anchor`) are prefixed with the current page's path. This is correct for page-specific anchors but breaks generic ones like `#top` and…
__Before commit:__ Menu items with anchor URLs (e.g., `#my-anchor`) are prefixed with the current page's path. This is correct for page-specific anchors but breaks generic ones like `#top` and `#bottom`. A menu with the URL `#top` becomes `/current-page#top`, preventing it from functioning as a universal "scroll to top" link. __Cause:__ The server-side logic for processing menu URLs does not differentiate between page-specific anchors and generic anchors like `#top` or `#bottom`, treating all anchor links as belonging to the current page. __Fix:__ In the `save` method, exclude `#top` and `#bottom` from the logic that prefixes anchors with the current page's URL. This ensures these special anchors, typically set on the header and footer, work consistently across the entire website. A new unit test verifies that `#top` and `#bottom` menu URLs are saved correctly without being prefixed. task-5941115 Forward-Port-Of: odoo/odoo#251154 Forward-Port-Of: odoo/odoo#250136
This update fixes an issue where IoT error codes were incorrectly categorized. Now, warnings from the IoT are displayed as notifications, providing clearer visibility into potential problems. This ensures that all IoT responses are properly interpreted, improving system reliability.
Original PR description
Before this commit, all errors returned by the iot after a call to the blackbox were considered as errors. Actually, the errors are only the ones that do not start with 0 (no error) or 1 (warning). This commit changes the behaviour when handling warning. We now show a notification. task-id: 5062178 Forward-Port-Of: odoo/enterprise#93948 Forward-Port-Of: odoo/enterprise#93896
This update corrects a bug that occurred when the commercial_partner_id field was visible on the contact form (via web_studio). Previously, the field would default to False, causing errors during autocomplete and data verification. This change ensures the field is properly populated, preventing these errors and improving the user experience.
Original PR description
Before this commit, when commercial_partner_id is on the view (possible with web_studio), the value by default is False. When the autocomplete widget is used, many fields could be autofilled and raise _onchange_verify_peppol_status, that requires this field. To avoid this issue we review that the value has been filled. Steps to Reproduce: 1. Open the Contacts app 2. Open Studio on the contact form view 3. Add the field commercial_partner_id to the form view (make it visible) 4. Create a new contact 5. Type a name 6. Select a suggestion from the IAP autocomplete 7. An error is raised immediately OPW-[5896847](https://www.odoo.com/odoo/action-4043/5896847) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249772 Forward-Port-Of: odoo/odoo#248895
This update fixes inaccuracies in the Bulgarian tax settings within the Odoo system. Specifically, it corrects incorrect tax names and changes the default purchase tax rate from 20% PTC to the standard 20% FTC, aligning with Bulgarian regulations. This ensures accurate tax calculations for Bulgarian businesses using Odoo.
Original PR description
Fixing incorrect tax names and changing the default purchase tax to 20% FTC instead of 20% PTC. task-5935754 Forward-Port-Of: odoo/odoo#250130 Forward-Port-Of: odoo/odoo#249269
This update ensures self-order transactions in Point of Sale (POS) systems – including online payments, restaurant POS, and standard self-order – now use the same data validation rules as regular POS orders. This enhances data accuracy and reliability, reducing potential errors and improving the overall POS experience.
Original PR description
*: pos_online_payment_self_order, pos_restaurant, pos_self_order This commit improves the data validation of pos self order by using the same validation as the one used for regular pos order. Forward-Port-Of: odoo/odoo#251004 Forward-Port-Of: odoo/odoo#250415
This update ensures self-order transactions in the Odoo Enterprise system now adhere to the same data validation rules as standard point-of-sale orders. This enhancement improves data accuracy and reliability, reducing potential errors and inconsistencies in self-order processing.
Original PR description
This commit improves the data validation of pos self order by using the same validation as the one used for regular pos order. Forward-Port-Of: odoo/enterprise#108938 Forward-Port-Of: odoo/enterprise#108538
This update corrects a technical issue that could cause inconsistencies between payroll payslip data. The change ensures that all payroll line information remains synchronized, preventing potential errors in pay calculations and reporting. This improves the reliability of our payroll processing system.
Original PR description
Forward-Port-Of: odoo/enterprise#108983 Forward-Port-Of: odoo/enterprise#108729
This update partially reverses a previous change that caused an error in how Odoo predicts account information during invoice processing. The original change impacted tax calculations, but now account prediction is failing. This fix addresses the core issue of incorrect account prediction.
Original PR description
…x at import" Bug introduced by: https://github.com/odoo/odoo/commit/9cc26a154381e51e3f4188aa7c251d959538676e Since this, the taxes are predicted only once but the prediction of account is no longer working. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251480
This update ensures that timesheet updates accurately reflect the cost of sales order lines, regardless of the invoice policy used (ordered_prepaid, delivered_manual, or delivered_milestones). Previously, updates were prevented under certain conditions, leading to inaccurate cost calculations. This change improves the reliability of sales reporting and timesheet tracking.
Original PR description
Originally, timesheet updates for tasks associated with sale order lines would cause the cost (purchase_price) to be recomputed. However, this was prevented if the invoice policy was 'ordered_prepaid.' This should also apply to 'delivered_manual' and 'delivered_milestones.' Otherwise, any timesheet updates will recompute the sales.order.line purchase_price field. Steps to reproduce: 1. Create a service product that creates a project/tasks 2. Create a sales order with the product and manually set the cost 3. Assign the timesheets of the task to an employee 4. Have the employee update their timesheet for the task 5. The cost on the sales order line gets recomputed to the default product price task-5902688 related-pr-205415 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250495