Tuesday, April 7, 2026
17 changes · 19.0
Enhancements to existing features
Cash basis accounting lines now show the names of the two journal entries that created them. This makes it easier for finance teams to trace where each cash basis base line came from and understand related documents during review or reconciliation.
Original PR description
To have a more explicit reference from which documents a cash basis base line was created, now we put the name of the two journal entries that triggered the caba. target: 18.0 -> master Task [link](https://www.odoo.com/odoo/project.task/5883344) task-5883344 Forward-Port-Of: odoo/odoo#257795 Forward-Port-Of: odoo/odoo#246610
This update simplifies the user interface by standardizing the term 'Audit Report' to 'Annual Report'. Previously, the inconsistent use of both terms created confusion for users. This change improves clarity and ease of navigation within the accounting knowledge section.
Original PR description
The user interface currently uses both the terms "Audit Report" and "Annual Report", which can be confusing for users. To eliminate this confusion, "Audit Report" will be renamed to "Annual Report". backport of https://github.com/odoo/enterprise/commit/c2fc5a1643f2e005007437f7ae655d2329ac49ad [feeback-6088379](https://www.odoo.com/odoo/project.task/6088379)
Resolved issues and error corrections
The sample spreadsheet dashboards have been updated to match recent dashboard changes, ensuring demo and starter dashboards display current layouts and visuals. This helps users evaluating or setting up dashboards see more accurate examples across sales, invoicing, inventory, events, live chat, expenses, timesheets, POS, eCommerce, and eLearning.
Original PR description
Generated with https://github.com/rrahir/spreadsheet-tools/pull/50/files#diff-6e2b844f41ba3d4c0cd1546d4f4385d329466af871f04409d091df14bb8d2fdaR41
This fix ensures that only invoice documents can be grouped during electronic invoice processing. It prevents unrelated accounting entries, such as journal entries, from being grouped incorrectly, reducing the risk of processing errors.
Original PR description
[FIX] account_edi_ubl_cii: Allow only invoices can be grouped Before this commit, no check was done on the document type at line grouping. This commit adds the check `is_invoice` so that we cannot group (e.g.) a journal entry type move no-task Forward-Port-Of: odoo/odoo#257314 Forward-Port-Of: odoo/odoo#255359
Browser-based test runs now save their logs after the browser has fully stopped, so failures during shutdown are captured. The shutdown process is also more robust, reducing flaky cleanup issues and making test failures easier to diagnose.
Original PR description
odoo/odoo#255054 saved the chrome log at the end of a tour (logging that as `INFO` on success and `RUNBOT` on failure). However as it turns out there are a few issues with that: 1. In case of chrome error during termination (`stop`), those errors can not be in the log, since the log was already saved. 2. Chrome buffers logs a lot more than anticipated, and because `--v=0` logs are a lot less chatty than `--v=1` the logs routinely show essentially nothing (a few tour steps are logged then nothing). Also make `stop` a bit more resilient to chrome issues: - handle errors around ws shutdown - wait for chrome to shut down before we try to remove the data directory - also add a fallback *killing* chrome if it doesn't seem to be shutting down Forward-Port-Of: odoo/odoo#256395 Forward-Port-Of: odoo/odoo#256061
Steps to reproduce: - Enable QR-code ordering on a POS and set French as default language for self ordering. - Open the POS self-order mobile menu and choose Takeout as preset. - Go to checkout until the customer info popup is shown. - Observe that placeholders like "Phone", "Zip", and "Street and Number" stay in English while other fields are translated. Problem: - The terms (`Email`, `Phone`, `Street and Number`, `Zip`) were missing from `pos_self_order.pot`. opw-5938249 --- I c
Original PR description
Steps to reproduce: - Enable QR-code ordering on a POS and set French as default language for self ordering. - Open the POS self-order mobile menu and choose Takeout as preset. - Go to checkout until the customer info popup is shown. - Observe that placeholders like "Phone", "Zip", and "Street and Number" stay in English while other fields are translated. Problem: - The terms (`Email`, `Phone`, `Street and Number`, `Zip`) were missing from `pos_self_order.pot`. opw-5938249 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Creating a link from selected content now keeps icons alongside the selected text instead of removing them. This prevents accidental content loss in the HTML editor and makes link creation behave consistently for icons and images.
Original PR description
Problem: When a selection contains both text and an icon, creating a link removes the icon from the content. Cause: Icons should be treated the same way as images during link creation. If an icon is present in the selection but not handled like an image, it gets removed when the link is applied. Solution: Handle icons in the same way as images when processing selections for link creation, ensuring they are preserved. Steps to reproduce: - Add text "abc" followed by an icon. - Select both the text and the icon. - Create a link. - Observe that the icon is removed and only the text remains. opw-6066195 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#256380 Forward-Port-Of: odoo/odoo#256002
Point of Sale order reports now calculate margins consistently in the company's currency when a PoS uses another currency. This prevents overstated or misleading margin figures, helping businesses rely on accurate profitability reporting.
Original PR description
When making a pos order in a PoS that uses a different currency, the margin in the pos order report would not take the currency into account Steps to reproduce: ------------------- * Create a product with a price of 100€ and cost 0€ (margin = 100€) * Setup a PoS to use a different currency with a rate of 2 (so 1€=>0.5) * Create a PoS order for this product and validate it * Go to the pos order report and select the order you just made > Observation: The value of the margin is 200 expressed in the different currency, when the rest of the report is using the company currency. Why the fix: ------------ The currency was only applied on the product cost, we now apply it on the whole margin. opw-5927473 Forward-Port-Of: odoo/odoo#255344
Selecting a solid text color in the HTML editor now fully removes any previous gradient formatting. This prevents selected text from keeping leftover gradient styling that could appear incorrectly as a background color, improving visual consistency for users editing notes and content.
Original PR description
Steps to reproduce: - Go to a To-do note - Select a word - Apply a gradient as the text color - Re-open the color picker - From the Solid tab, select the primary color (o-color-1) Description of the issue: - The gradient is not removed and ends up being displayed as a background color Cause: - In the `colorElement` method, the gradient is removed when applying a text color via inline styles. However, when applying a color via class (e.g., text-*), the gradient is not properly cleared. Only the text-gradient class is replaced, while the gradient style remains, causing it to appear as a background color. Solution: Ensure the gradient is removed in both cases: - when applying a color via class and when applying a color via inline styles in `colorElement`. task-6045533 Forward-Port-Of: odoo/odoo#254654
This update prevents future warning messages in the API documentation area by using the newer recommended Docutils setting. It helps keep documentation generation compatible with upcoming library versions without changing user-facing functionality.
Original PR description
Argument "writer_name" will be removed in Docutils 2.0. Specify writer name in the "writer" argument. Reference: - https://docutils.sourceforge.io/0.22/RELEASE-NOTES.html#writers
Users now see a clear explanation when they try to add or edit property fields before setting the required parent field, such as a product category. This avoids confusing access-rights or “undefined” warnings and helps users fix the missing information themselves.
Original PR description
Issue: ------------------------------------------ - When using property fields (e.g., products since 18.1 where categories are optional), users trying to add a property field without a parent…
Issue: ------------------------------------------ - When using property fields (e.g., products since 18.1 where categories are optional), users trying to add a property field without a parent document receive a generic warning: "You need edit access on the parent document to update these property fields". - This message is misleading and does not explain the actual dependency. How to reproduce: ------------------------------------------ 1. Create or edit a record (e.g., product) without setting its parent (e.g., category). 2. Try to add a property field. Cause of the issue: ------------------------------------------ - In `checkDefinitionWriteAccess`, when `definitionRecordId` is missing, the method returns `false`, triggering a generic access-rights warning. Solution: ------------------------------------------ - Added a check at the beginning of `onPropertyCreate` verify if `definitionRecordId` exists. - If missing, following error is raised using the parent field label: "You must set the '%s' field to create a property field." task-4589393 Forward-Port-Of: odoo/odoo#256328 Forward-Port-Of: odoo/odoo#205107
Website editors no longer lose access to the animation intensity slider when switching an animation from appearance-based to scroll-based behavior. This keeps animation settings consistent and avoids extra re-selection steps while designing pages.
Original PR description
Steps to reproduce: 1. Go to the website and enter edit mode. 2. Click any text in the footer. 3. Change the animation mode from _none_ to _on appearance._ 4. Select the _zoom out_ effect; the intensity slider is visible. 5. Change the animation mode to _on scroll_. Issue: The animation intensity slider is no longer visible. It only reappears after reselecting the same effect. Reason: The `apply` method of `SetAnimationModeAction` always adds the "**o_anim_fade_in**" class, even when an animation effect is already selected. When switching the animation mode, this additional class prevents the intensity slider from being displayed. task-5896549 Forward-Port-Of: odoo/odoo#246921
This update ensures the sample dashboards within Odoo Enterprise accurately reflect the latest changes to the core dashboard functionality. These updated dashboards provide more current and relevant data for users exploring the system's capabilities. This is a routine maintenance fix.
Original PR description
This commit updates the sample dashboards to reflect the recent changes made in the dashboards. Task: 5076188
This update fixes a misleading chart in the Odoo dashboard. The pie chart previously incorrectly suggested supplier dependency, when it actually displayed purchase orders by buyer. The title has been corrected to accurately reflect the chart's data, ensuring users receive correct insights into their purchasing activity.
Original PR description
Issue Before This Commit: ====================== Currently, the pie chart titled `Supplier Dependency Chart` in the Purchase & Vendor Analysis under the Logistics section is misleading because it…
Issue Before This Commit: ====================== Currently, the pie chart titled `Supplier Dependency Chart` in the Purchase & Vendor Analysis under the Logistics section is misleading because it suggests that the chart represents dependency on each supplier. However, the chart actually shows how many purchase orders are created by each buyer. Additionally, when there are no purchase orders, the sample pie chart displayed uses the title `Purchase Order by Buyer`, which creates inconsistency between the actual chart title and the sample chart title. Steps to Reproduce: ================= - Install the **purchase_stock** module with demo data. - Go to the **Dashboard** app. - Open the **Purchase & Vendor Analysis under the Logistics** section. - Scroll down to locate the pie chart titled **Supplier Dependency Chart**. Cause of the Issue: ================ In this [PR](https://github.com/odoo/enterprise/pull/93921), at [this line](https://github.com/odoo/enterprise/pull/93921/changes#diff-61d19b77200011a8808542c134a675631e6d4b4dbc88ca99353cacfe3448b396), The pie chart title was incorrectly set to `Supplier Dependency Chart`, which does not reflect the underlying data, as the chart displays purchase orders grouped by buyer. After This Commit: ================ The pie chart title is corrected from `Supplier Dependency Chart` to `Purchase Order by Buyer`, ensuring it accurately repersent the underlying data and avoids misleading users. TaskID-5891759
This update corrects a technical issue preventing accurate recording of super payments in the Australian HR Payroll module. By initializing an error message to an empty string, the system now correctly handles payment registration, ensuring data integrity. Associated tests have been added to verify the fix.
Original PR description
. Initialize the error message with an empty string to avoid returning NULL. . Add corresponding tests task-6091444
This update resolves a technical error that prevented label printing when validating receipts through the barcode app. The fix utilizes an optional operator to handle situations where receipt data isn't available, ensuring the label printing function now works correctly and reliably.
Original PR description
Given a printer is configured to print a label for product receipts, when the receipt is validated from the barcode app, then a traceback appears. A filter on action.context.active_ids was introduced in https://github.com/odoo/enterprise/pull/106277. When validating the receipt from the purchase app, active_ids is set to the id of the purchase order and the behavior is as expected. When validating the receipt in the barcode app , it is not set (nor was it set in 17.0). The filter therefore crashes because it cannot work on undefined. An optional chaining operator is added to apply the filter only if active_ids is set. The barcode app does not raise a traceback anymore when validating a receipt and the label can be printed.
This update resolves an issue preventing the download of Intrastat reports for languages that use commas as decimal separators. The fix addresses a previous error where simply converting strings to numbers wasn't sufficient, and also handles cases with missing product weights. A more informative error message has been added for improved troubleshooting.
Original PR description
Before this commit, in 19.0+, languages that use commas instead of periods for decimals could not download the intrastat report. Simply attempting to change a string to a float was not enough. Also, when a product had a NoneType weight assigned to it another trace back would occur. This also adds a more descriptive and helpful error message. opw-6026730