Monday, March 16, 2026
9 changes · saas-19.2
Resolved issues and error corrections
This update resolves an issue where non-admin users accessing the Accounting Dashboard from a child company with a currency-set journal would encounter an access error. The fix bypasses specific record rules when a currency is present, allowing the dashboard to function correctly for all users and journal types.
Original PR description
Issue before this commit: Opening the Accounting Dashboard from a child company as a non-admin user raises an Access Error when the journal has a currency_id set. The error occurs with journal items which currency id is set Steps to Reproduce ([video](https://drive.google.com/file/d/1Spt5zruNAVAvSdQYk-RuifzynyIfBOLK/view?usp=drive_link )): - Install the account module. - Create child company - Create journal journal with a currency set - Log in as a non-admin user. - Select only the child company - Open Accounting (Dashboard) Cause of the Issue: When the journal does not have currency_id, the system reads company data using sudo(), so no access issue occurs. When the journal has currency_id, sudo() is not used, and reading the company name triggers an Access Error. With This Commit: Bypass record rules when reading the company name if the journal has a currency_id. opw-6017296 Forward-Port-Of: odoo/odoo#253844
This update resolves a problem preventing Odoo from correctly handling signed invoices submitted by Italian Public Administration (IAP). The issue stemmed from incorrect data types being used when updating invoice attachments, leading to errors and duplicate submission attempts. This ensures proper invoice processing for IAP clients.
Original PR description
Currently, if we try to update the existing `l10n_it_edi_attachment_file` with the signed data received during the submission of an invoice (Invoices for Italian Public Administration businesses must…
Currently, if we try to update the existing `l10n_it_edi_attachment_file` with the signed data received during the submission of an invoice (Invoices for Italian Public Administration businesses must be signed, handled on the IAP side), it fails. The problem is that in this specific flow, the 'attachment' variable contains a binary rather than attachment_data. Unfortunately, I could not find a complete flow to reproduce the issue, as there is no flow that sends an invoice to SdI while the l10n_it_edi_attachment_file variable is already set in the move, except maybe via manual import of an attachment into the invoice. Expected flow: - User creates a move with `l10n_it_edi_attachment_file` (unspecified how) - User sends the move to SdI for a Public Administration partner - IAP signs the attachment and sends it back to Odoo - Odoo raises an error because it tries to use dictionary features on a binary field - Odoo does not save the transaction ID, and if the user tries to resend the move, a Duplicate Error occurs from the SdI side. Ticket [link](https://www.odoo.com/odoo/project.task/5954645) opw-5954645 Forward-Port-Of: odoo/odoo#253459 Forward-Port-Of: odoo/odoo#252966
This update fixes a bug that prevented dropdown menus from properly activating elements on screen. The change allows dropdowns to function as expected, resolving an issue impacting the VoIP (enterprise) counter and also improving the mobile 'bottom sheet' functionality. This ensures consistent and reliable user interaction.
Original PR description
`Popover` instances have an option for them to be active element once opened: `setActiveElement`. `Dropdown` is a specialized `Popover` class but was forced to use `setActiveElement: false`. This commit allows the option for `Dropdown`, allowing to fix a bug in the voip (enterprise) counter-part of this commit. It also allows the same the mobile specific "dropdown": "bottom sheet". task-5999452
This update fixes a bug where users could successfully cancel subscriptions that already had invoices generated. The change adds a check to ensure subscriptions with active invoices cannot be cancelled after they've been closed, preventing potential revenue discrepancies. This improves data accuracy and subscription management.
Original PR description
Steps to reproduce: -------------------------------- 1. Install Subscription module 2. Create a new subscription quotation and confirm it 3. Generate an invoice for the subscription 4. Attempt to…
Steps to reproduce: -------------------------------- 1. Install Subscription module 2. Create a new subscription quotation and confirm it 3. Generate an invoice for the subscription 4. Attempt to cancel the subscription * A ValidationError is correctly raised 5. Close the subscription by selecting any close (churn) reason 6. Attempt to cancel the same closed subscription again Observation: -------------------------------- The subscription is successfully cancelled even though it already has invoices Issue: -------------------------------- In the following code: https://github.com/odoo/enterprise/blob/9e39b4b85fcb9f6ed5b21b942796b76b8a6eefdb/sale_subscription/models/sale_order.py#L741-L742 The cancellation logic does not check whether a subscription is already churned and still has active invoices Solution: -------------------------------- Added an additional condition to prevent cancelling churned subscriptions that still have active invoices opw-5479719 Forward-Port-Of: odoo/enterprise#109755 Forward-Port-Of: odoo/enterprise#106596
This update fixes a critical issue where image uploads would fail and cause a poor user experience. Now, uploads can be safely aborted, preventing unexpected behavior and ensuring a cleaner, more reliable image upload process for users. The fix ensures files are no longer uploaded after the 'Discard' button is clicked.
Original PR description
Steps to Reproduce: 1. Open the website module. 2. Open the media upload dialog to upload an image by either double-clicking the logo or replacing the existing image. 3. Upload a large file. 4. Abort…
Steps to Reproduce: 1. Open the website module. 2. Open the media upload dialog to upload an image by either double-clicking the logo or replacing the existing image. 3. Upload a large file. 4. Abort the upload before it finishes by clicking the 'Discard' button in the media dialog box. After performing these steps, a traceback is observed. Before this commit: - Image upload failures would throw uncaught exceptions. - These exceptions would interrupt the flow and result in a poor user experience with no clear feedback. - Even after clicking the discard button the image was still getting uploaded. After this commit: - Uploads can be safely aborted when the media dialog is discarded. - Ongoing XHR requests and RPC calls are properly cancelled. - The upload loop stops immediately when an abort is triggered with no traceback. - Users get a predictable and clean exit instead of a broken state. - Files are no longer uploaded after clicking Discard. ### task-4752497 Forward-Port-Of: odoo/odoo#250065 Forward-Port-Of: odoo/odoo#219081
This update resolves several issues related to integrating Field Service with planning, particularly in the portal interface. Key changes include improved access to intervention portals, enhanced reporting capabilities, and streamlined workflows for scheduling and communication.
Original PR description
[FIX] planning_field_service: fix follow-up (round 4) This commit continues to fix the various issues found due to the refactoring of Field Service feature to integrate it into planning instead of…
[FIX] planning_field_service: fix follow-up (round 4) This commit continues to fix the various issues found due to the refactoring of Field Service feature to integrate it into planning instead of being an extension of project. This commit will: - fix 'Print' action and ticket to intervention portal access - always display in range mode for planned dates in planning.slot view - update billable and non-billable filters to take into account `under_warranty` field - review search view of planning.slot, some filters have been renamed and moved. - use employees instead of resources in portal list (no need to display the material resource in the portal views in other words) - add "Send mail", "Send SMS", "Send Report" and "Add/Remove followers" buttons in cog menu of list and kanban views of planning.slot model. - remove helper in ticket button since it does not bring useful information. - add ticket description on related shift, when the user plans an intervention from a helpdesk ticket, the new shift created from that action, will have the description of the related ticket inside Note field (name field) - fix display_name, to avoid displaying the field used in the group by in the display name since it is a bit redundant - take into account worksheet set in product as default - fix some labels, visibility conditions, dates format, group_expand - add default company of the slot when the user creates a resource from the form view of planning.slot model - show customer preview stat button once the intervention is completed and a report is available for that intervention - update tooltip for employee product to bring more context to explain how that new field works. - make sure the SOL for timesheet is not generated when we complete an intervention if the project linked is non billable - add icon on stat button of timesheet - make sure the user can only create service product in product field in employee - show "X Products" button to non sale user in the form view of planning.slot - make project billable and timesheetable by default when the user wants to create a new project from the project_id field inside the form view of planning.slot model - hide schedule stat button in the form view of project.task if the task is a template or linked to a project template - update visibility condition of sign in in calendar, to make visible for planning manager when the slot is published even if the shift is not assigned to that user and the slot is in the past. task-6009593
This update fixes an issue preventing Point of Sale orders from correctly displaying product names on invoices. The team partially reverted a previous change that was causing a conflict, ensuring product names are now accurately shown. This improves the clarity and accuracy of sales invoices.
Original PR description
Steps to reproduce: ------------------- * Go to point of sale * Open list of orders * Select any order > Traceback Why the fix: ------------ Partially reverting https://github.com/odoo/odoo/commit/937363e5786eeab02b06c2dc63e1d9e743fc1874 as it broke a widget. Pos order are using this widget but the dependency on the field `translated_product_name` makes it impossible to open any order in the backend as this field does not exist on pos order line model. We're only partially reverting the fix to keep the computed fields. This will allow to properly fix the original issue without requiring an exception later. opw-6040334 Forward-Port-Of: odoo/odoo#254158
This update fixes an issue where the website tour failed after menu updates. The fix ensures the tour waits for new menu items to fully load before proceeding, preventing the builder sidebar from not opening. This improves the user experience for website builders.
Original PR description
__Before commit__ Since the delay between tour steps was removed [1], this tour fails frequently. After saving menus, the page reloads, but the tour attempts to click the edit button before the reload completes, preventing the builder sidebar from opening. __Fix__ Wait for the five new menu items to appear to ensure they have been saved and the page has successfully reloaded before proceeding. [1]: https://github.com/odoo/odoo/commit/769b193 runbot-237842
This update fixes an issue where the default account used for landed costs on invoices was incorrect, leading to inaccurate financial reporting. The fix ensures the correct stock valuation and expense accounts are used, aligning with how landed costs are handled for standard purchases. This improves the accuracy of financial statements.
Original PR description
**Problem:** the default account suggested for landed cost (with real time category) are not the good ones. **Steps to reproduce:** - create a storable product with perpetual average category -…
**Problem:** the default account suggested for landed cost (with real time category) are not the good ones. **Steps to reproduce:** - create a storable product with perpetual average category - create a landed cost (a service product with 'is a landed cost' checked in the purchase tab) - create a category for the landed cost with perpetual valuation - confirm a purchase order for 10 quantity of the product with a unit price of 10 - validate the receipt - confirm quotation for 3 of the product, validate the delivery and confirm the invoice - create a bill for the purchase order - on the invoice lines, unhide the product column - add an invoice line with the landed cost product, for a quantity of 1 and a price of 10 - confirm the bill - click on create landed cost - select the receipt in the transfers field - validate - click on the journal entry on the landed cost form **Current behavior:** On the bill, for the landed cost : - stock valuation is debited of 10 - account payable is credited of 10 (which makes the total credit 110 for account payable) On the journal entry linked to the landed cost: - stock valuation is debited of 7 - stock valuation is credited of 7 So in total there is a debit of 10 in stock valuation and a credit of 10 in account payable. Which does not reflect that part of the products are out of stock. **Expected behavior:** If the expense account was used, both on the bill and on the landed cost, (which is already the case for landed cost with periodic category) the account move lines would be: On the bill : - Expense is debited of 10 - account payable is credited of 10 (which makes the total credit 110 for account payable) On the journal entry linked to the landed cost: - stock valuation is debited of 7 - Expense is credited of 7 So in the total there is : - a credit of 10 in account payable - a debit of 7 in stock valuation - a debit of 3 in expense This is what we want, because the debit of 7 in stock valuation reflect that we only increase the valuation by 7 because only 7 products are still in stock. The debit of 3 in expenses compensate for the cogs. Indeed when we invoiced the SO, the cogs where of 30 but, after the landed cost, valuation wise, the products actually exited the stock with a value of 33 total (11 each). **Cause of the issue:** For the bill: when you create the new account move line and enter the product, _compute_account_id is called to compute the default account for the line. In the stock override, _eligible_for_stock_account is called on the line https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_account/models/account_move_line.py#L18-L19 Because of the stock_landed_costs override, the return value is true https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_landed_costs/models/account_move.py#L78-L82 So the account is changed to stock valuation https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_account/models/account_move_line.py#L23-L24 For the landed cost: - if we create it by selecting 'create landed cost' on the bill : the account id is set in button_create_landed_cost https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_landed_costs/models/account_move.py#L34 -if we create the landed cost, from adjustment/landed cost and selecting new : the expense account is already selected **fix:** In both cases, the client can already manually set the accounts they want, the fix is about having the right default accounts. opw-5941753 Forward-Port-Of: odoo/odoo#253430 Forward-Port-Of: odoo/odoo#251766