Wednesday, November 26, 2025
27 changes · saas-18.4
New functionality added to Odoo
This pull request adds comprehensive Hoot tests for the UrbanPiper integration, ensuring its functionality is thoroughly validated. Additionally, several minor fixes have been implemented to improve stability and data accuracy related to receipt printing and timer display within the UrbanPiper workflow.
Original PR description
## 1. Hoot test
in this commit:
- add HOOT tests for components, model, screen, and service
- added test for methods in `order_info_popup` and `order_display`
- include tests for `pos_order`, `ticket_screen`, and `pos_store`
- add utility to generate UrbanPiper-filled order
## 2. minor fixes
in this commit:
- kept serialized data for receipt printing
- ensure timer does not display negative values
- correct variable usage in ticket screen to fetch proper props for display order
- revamp `getTime` method to use l10n time format
task: 5048312
Forward-Port-Of: odoo/enterprise#93780Enhancements to existing features
This update enhances the stability of our IoT Box integration by splitting websocket messages. Previously, messages targeted multiple IoT devices simultaneously, which could cause issues. Now, each message is sent individually, per device, ensuring smoother and more reliable communication.
Original PR description
In order to ensure ws compatibility with stable IoT Boxes versions, we now split websocket messages to send one per IoT identifier, instead of one targeting multiple ones. related: odoo/odoo#234175 Forward-Port-Of: odoo/enterprise#100317 Forward-Port-Of: odoo/enterprise#100127
Resolved issues and error corrections
This update resolves a visual glitch in the Gantt view when flexible working hours are enabled. Previously, the system incorrectly estimated unavailable days, leading to random grayed-out dates. The fix ensures all days are treated as working days, providing a more accurate and reliable Gantt view.
Original PR description
To reproduce: ============= 1. Activate flexible working hours on the company calendar 2. Go to Project app -> all tasks 3. Switch to Gantt view notice that on the unassigned tasks row, two days are grayed out randomly Problem: ======== When flexible working hours is activated, the unavailability intervals are computed with an estimation: we take the total of working hours per week and we divide it by number of hours per day to get `N` days, so we estimate that from `now` to `now + N` days are working days, and the rest are non-working days. This is wrong because the working hours may not be evenly distributed over the week, and between today and tomorrow we get different unavailability intervals. Solution: ========= When flexible working hours is activated, we consider that all days are working days, so there is no unavailability interval to consider. opw-5257081 Forward-Port-Of: odoo/enterprise#100385
This update enhances the documentation for Odoo's resource and shared method usage within the html_builder and html_editor modules. The changes improve type definitions, ensuring better code clarity and maintainability, which supports future development and reduces potential errors.
Original PR description
backport of https://github.com/odoo/odoo/pull/236084
This update resolves a bug that caused errors when using the FedEx delivery method with addresses in Hong Kong, specifically those with a 'Hong Kong Island' state. The fix ensures that the system correctly handles state code splitting, preventing a traceback and ensuring accurate delivery processing for this common address type. This improves the reliability of the FedEx delivery option.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Use Fedex as a Delivery Method 2. On the Website, select a shippable product. Confirm the cart. 3. Ship to a "Hong Kong" address, with "Hong Kong Island" as State. 4. Traceback is raised. Issue ----- Traceback is raised whenever the Fedex Delivery Method is applied to a HK address (be it shipper or receiver) Cause ----- When splitting a state code, there is no check in the `_parse_state_code` function that the result contains at least two elements. Example ----- For a "Hong Kong" address, with "Hong Kong Island" as State: ``` country_code = "HK" state_code = "HK" ``` The method tries to split `state_code` by its hyphen, which returns a single item list. Solution -------- 1. Check for the size of the post-split list before accessing the second item. opw-5257852 Forward-Port-Of: odoo/enterprise#99635
This update fixes an issue where channel names weren't displaying correctly in the invite dialogs accessed from the sidebar. The change ensures that channel names are accurately shown, improving the user experience when inviting members to channels. This resolves a visual inconsistency.
Original PR description
Before this commit, certain channels whose names were computed on the client side did not appear correctly as the title of the invite dialog when opened via the sidebar actions. This commit resolves the issue by using the channel’s displayName instead of the thread.name to ensure the correct title is shown in the invite dialog. task-5357104 Forward-Port-Of: odoo/odoo#237278
This update fixes a minor issue where the 'Copy' button in the Payment Link wizard incorrectly displayed. The button label has been updated to 'Generate and Copy Payment Link' to match the intended functionality, ensuring users clearly understand how to create and copy a payment link. This improves the user experience and reduces potential confusion.
Original PR description
Steps to reproduce: 1. Install sale_management 2. Create a sale order and confirm it 3. Open the Generate a Payment Link wizard from the cog menu Issue: The button in the wizard displays “Copy” instead of “Generate a Payment Link”. Cause: The custom paymentWizardCopyClipboardButtonField widget did not forward the field’s string to its component props, causing the default "Copy" label to be used. Solution: Forward the string prop in the widget’s extractProps implementation. opw-5224112 Forward-Port-Of: odoo/odoo#236219
This update corrects a bug where opening a folder within 'My Drive' would automatically unfold the entire 'My Drive' folder. Now, 'My Drive' only expands when its root folders are opened, improving the user experience and preventing unintended folder expansions.
Original PR description
Steps to reproduce =================== - Go to the `All` section. - Open the folder hosted in the `My Drive`. - `My Drive` gets unfolded. To Be ===== - The` My Drive` folder should not be unfolded when opening folders inside it, like `Company`. Technical =========== - Earlier, we were sticking to the condition that allows other root folders to unfold when we open a folder inside it, except the `Company` folder. After this commit ================== - This commit addresses the issue, and now whenever we click on a certain folder it will not unfold until its root is unfolded. Task-5046161 Forward-Port-Of: odoo/enterprise#100213 Forward-Port-Of: odoo/enterprise#93718
This update resolves a minor UI issue within the Documents app, specifically fixing overlapping elements and addressing a broken feature in the activity view. The change ensures the Documents app displays correctly and reliably for users.
Original PR description
This PR addresses the following UI issues in the documents app: - Fix the overlapping of the translate button of name with the file size in `DocumentsDetailsPanel`. - Hide the `DocumentsAction` in activity view as they were not working anymore. Technical ============================ - Set position: relative on .o_field_input_buttons. The .o_field_input_buttons had position: absolute by default, but since .o_documents_details_panel_name uses display: contents, the ancestor context for absolute positioning is lost. Because display: contents makes the parent disappear visually and the children behave as independent elements, the absolute positioning behaves unexpectedly. Setting position: relative on .o_field_input_buttons resolves this by providing a proper positioning context. Task-4792112 Forward-Port-Of: odoo/enterprise#86436
This update resolves an issue where invoices using specific document types (201-213) within the l10n_ar module couldn't be printed correctly. The fix ensures the report template correctly handles different Spanish language settings, allowing users to print invoices regardless of the installed language.
Original PR description
#The issue: - With l10n_ar company - Make sure that the language es_AR is not installed. - Create an invoice where the Document type (l10n_latam_document_type_id) code is in 201, 202, 203, 206, 207, 208, 211, 212 or 213 - Try to print the invoice, the following error occurs: odoo.addons.base.models.ir_qweb.QWebException: Error while render the template UserError: Invalid language code: es_AR In the report_invoice template used in l10n_ar, if the document type is 201, 202, 203, 206, 207, 208, 211, 212, or 213, the amount in letters is mandatory. Currently, the template is hard-coded to use es_AR. As a result, if the customer does not have the es_AR language installed, the invoice cannot be printed, even if another Spanish language is available. opw-5079885 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228125
This update resolves an issue with the account follow-up hook installation and uninstallation process. The fix ensures the hooks function correctly regardless of whether the module is installed or not, improving stability and reliability. This change addresses a minor technical problem that could have impacted account management workflows.
Original PR description
- unwrap Markup before applying regex substitution - word-bound search term Forward-Port-Of: odoo/enterprise#100350
This update fixes an issue where group chats weren't displaying the correct welcome message and subtitle. The change ensures all channel types receive the appropriate start message, enhancing the user experience for group communication. A new test has been added to verify this fix across all channel types.
Original PR description
Before this commit, The start message subtitle condition was incorrect for group chats, this commit corrects that condition and also add a test to cover all the channel types to show correct start message and subtitle. Before: <img width="625" height="109" alt="image" src="https://github.com/user-attachments/assets/830f9574-573f-4448-b54f-b70c8a4685ef" /> After: <img width="640" height="133" alt="image" src="https://github.com/user-attachments/assets/bcba270a-88fc-446d-9015-1125872c5748" /> Forward-Port-Of: odoo/odoo#237292
This update resolves an issue where importing journal entries targeting inactive accounts previously caused errors. The change now allows these imports to proceed without regard to the account's active status, streamlining the import process. This ensures that all journal data can be imported, regardless of account status.
Original PR description
When importing journal items, if an item targets an inactive account, the import is causing an excessive error. We shall ignore the active/inactive flag in such a case. task-5350113 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237271
This update resolves a display issue within the journal items tab of Odoo, preventing sections and notes from being hidden. The change was necessary due to an outdated database field name ('journal_line_ids') still being used, which caused errors when updated to the new standard ('line_ids'). This ensures consistent and accurate reporting of financial data.
Original PR description
Steps to reproduce: --- - Revert the commits - Install `account` module - Undo revert commits and install `l10n_pe_edi` module This error occurs because the field name was changed in stable from `journal_line_ids` to `line_ids`. We cannot do this in a stable version, as older databases still reference the old field name, and renaming it in stable will cause errors. Followup of: https://github.com/odoo/enterprise/pull/99875, https://github.com/odoo/odoo/pull/236457 sentry-7059309576, 7059890988 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a display issue where sections and notes were hidden in the journal items tab. The root cause was a change in database field names that created compatibility problems with older versions. This fix ensures correct display of journal items across all versions.
Original PR description
Steps to reproduce: --- - Revert the commits - Install `account` module - Undo revert commits and install `l10n_pe_edi` module This error occurs because the field name was changed in stable from `journal_line_ids` to `line_ids`. We cannot do this in a stable version, as older databases still reference the old field name, and renaming it in stable will cause errors. Followup of: https://github.com/odoo/enterprise/pull/99875, https://github.com/odoo/odoo/pull/236457 sentry-7059309576, 7059890988
This update resolves an issue where rapidly opening the file viewer (like double-clicking attachments) caused the system to crash. The fix ensures the file viewer component is properly cleaned up between uses, preventing registration errors and maintaining stability.
Original PR description
Before this commit, quickly triggering the opening of the file viewer multiple times (e.g. double-click on an attachment) caused a crash. This happens because the `createFileViewer` hook generates a `fileViewerId` on initialization. When `open()` is called, it registers the component using this specific ID. If `open()` is triggered a second time while the component is still registered (or being registered), the registry throws an error because duplicate keys are not allowed. This commit fixes the issue by calling `close()` at the beginning of the `open()` function. This ensures that any existing `FileViewer` instance associated with this hook is removed from the registry before a new one is added. task-5262556 Forward-Port-Of: odoo/odoo#237267
This update resolves a bug that prevented payments using the "Own Checks" method in foreign currencies from posting correctly. The issue stemmed from a minor typo in the code, which caused an imbalance in the accounting entries. This fix ensures accurate payment processing for users utilizing the l10n_latam_check module.
Original PR description
Setup: - Install l10n_latam_check - Set an outstanding payment account on the outgoing payment method "Own Checks" in the "Bank" journal. - Activate a foreign currency Steps to reproduce: - Go to "Accounting/Vendors/Payments" - Create new payment with a foreign currency, with the journal "Bank" and "Own Checks" as payment method - Create 3 "Checks" lines (whatever dates or amounts) - Post -> Invalid Operation: The entry is not balanced. Issue: - There appears to be a typo in `_l10n_latam_check_split_move`, where `liquidity_balance` is used instead of `liquidity_balance_total` opw-5151228 Forward-Port-Of: odoo/odoo#236768
This update fixes a problem where vendor bills in the South Africa (SA) localization displayed negative amounts in the currency conversion section when using different currencies. The fix ensures accurate currency calculations and proper bill formatting, resolving an issue that could have impacted financial reporting. This change was made as part of a standard bug fix process.
Original PR description
**Steps to reproduce:** - Create a vendor bill with currency not matching the currency of an SA company - Print the bill in the SA EDI specific format (is not shown on preview) or export as PDF **Issue:** Amounts displayed in the currency conversion section of the bill incorrectly show negative values for subtotal and total. **Solution:** The view affecting the bill in question referred to `o.amount_untaxed_signed` and `o.amount_total_signed` where either unsigned `o.amount_untaxed` and `o.amount_total` or `abs(o.amount_[...]_signed)` should be used instead, as in other localizations. opw-5253213 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236654
This update streamlines Odoo's logging by reducing the volume of data captured from websocket messages. Previously, full messages were logged, leading to overly detailed and difficult-to-manage logs. Now, only the message type and device are logged at the 'info' level, providing more focused and actionable information.
Original PR description
Before this commit, we logged the full websocket messages received at 'debug' level, and the action device at 'info' level. Logging the whole message causes the logs to be flooded with large base64 print data. After this commit, log the message type and device both at 'info' level. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237337 Forward-Port-Of: odoo/odoo#236651
This update resolves an issue where the website tour feature wasn't consistently displayed. By ensuring the tour's iframe loads correctly before applying settings, the problem is fixed, guaranteeing a reliable user experience for website visitors. This improves the overall quality and usability of the Odoo website.
Original PR description
In this commit, we fix a non deterministic behavior by ensuring the iframe is loaded before set and attribute on iframe content element. runbot-error-id~233039 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
This update resolves a bug where the 'lock document' option wasn't consistently appearing in the document previewer's action menu. The fix ensures the document's data is properly loaded, updating the action menu to reflect available options. This improves the user experience when managing document access.
Original PR description
Steps to reproduce =================== - Preview any documents. - Click on the actions menu and lock the document. - Now go to the actions menu again. => The set of options is not updated. Technical…
Steps to reproduce =================== - Preview any documents. - Click on the actions menu and lock the document. - Now go to the actions menu again. => The set of options is not updated. Technical =========== - The action menu, which we are using inside the file previewer, is passed explicitly inside the FileViewer component of the document. We were using the `record.load()`, which will not have any effect on the FileViewer component and that's why the action menu was not updating. - Updated the `Lock action availability and check` test because, as in our fix we load the model, and so that's why the `folder` variable used earlier was causing reference mismatch when targeting the element. After this commit ================== - Used the `this._notifyChange()` method, which closes the preview and loads the model to align with the same behaviour as other actions. Task-4988116 Forward-Port-Of: odoo/enterprise#99787 Forward-Port-Of: odoo/enterprise#91760
This pull request corrects a technical error within the Odoo POS system's tour tests. Specifically, the tests were failing due to an incorrect company name being used. This fix ensures the tour tests run reliably and accurately, improving the quality assurance process for the POS module.
Original PR description
There was an error in the generic hooks, the company name was not the correct one. runbot-234336 Forward-Port-Of: odoo/enterprise#100311
This update fixes a minor issue where the Finnish translation for a key report name was incorrect. Adding the `@fi` suffix ensures that all reports are properly translated for Finnish users, improving the accuracy of reporting data. This ensures consistent and correct reporting in the Finnish language.
Original PR description
In this commit [[1]], we wrongly set the name for the translation in Finnish. Indeed, we should add @fi at the end to make sure it's translated properly. This commit adds the `@fi` when necessary. no task id [1]: https://github.com/odoo/enterprise/commit/4ae3c4d2bdb0ef05ffb53930b31f2bf15fd422ee Forward-Port-Of: odoo/enterprise#100364 Forward-Port-Of: odoo/enterprise#100304
This update fixes an issue where sale order previews incorrectly displayed down payment percentages after changing online payment settings. The fix ensures the preview accurately reflects the currently active payment percentage, improving the user experience and preventing miscommunication about payment amounts. This resolves a visual inconsistency in the sales process.
Original PR description
****Behavior:**** **Current:** When setting the online payment percentage to something else than 100% and then turning off the setting. The preview of sale orders still show a down payment with the percentage set previously. This is caused because there is no check on wheter the setting is activated or not in the template. ****Steps to reproduce:**** - In Settings->Sales: activate Online Payment. - Set it to somethings else than 100% then save. - Turn the setting off then save. - Create a Sale Order. - There will be a down payment of 0€ with the percentage you set in parentheses. opw-5254575
This update addresses a technical issue where duplicate methods were introduced in the Odoo Enterprise system. This was a result of a missed custom build process, and the fix ensures the system's stability and efficiency. The change impacts the HR and Payroll modules.
Original PR description
Followup of #100053 because I forgot to run the custom build, and thus missed newly introduced duplicate methods.
This update resolves an issue where attachments weren't consistently displayed on leave request forms after saving. The fix addresses a technical limitation in how Odoo handles attachments linked to leave requests, ensuring that attachments are always visible when a request is viewed. This improves the user experience for creating and managing leave requests.
Original PR description
to reproduce: ============= - from form view, create a leave request with an attachment - save the leave request - the attachment is not displayed on the form (reloading the page shows it correctly)…
to reproduce:
=============
- from form view, create a leave request with an attachment
- save the leave request
- the attachment is not displayed on the form (reloading the page shows it correctly)
Problem:
========
- When sving the leave request, we call `web_save` which will handle the creation, then calls `web_read` to read the updated data back from the server.
- Even though `web_read` and `web_save` are called in the same transaction, but `web_read` doesn't see `attachment_ids` because of the limited implementation of Many2oneReference (ir.attachment.res_id):
- Its `_update_inverses` won't be called when the value is changed when `field.write`
- when `record.attachment_ids = attachment`, the ORM won't automatically set `attachment.res_model = record._name`
Solution:
=========
as work arround, we can call `invalidate_recordset` for leave requests after setting `attachment_ids` in `_inverse_supported_attachment_ids` so that `web_read` will read the correct value from database.
opw-5157790
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#233003This update adds a notification to inform users who are utilizing the Chorus Pro module without the necessary module installed. This ensures they are aware of potential missing checks and can take the appropriate action to maintain system functionality and compliance. It's a preventative measure to avoid disruptions caused by incomplete configurations.
Original PR description
This commit will add an alert when the customer use Chorus pro but don't have the module installed, and so don't have all the additional checks <img width="982" height="242" alt="image" src="https://github.com/user-attachments/assets/fc35d4ee-9a8b-41b8-8ee3-cbc32b266379" /> task-5223874 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236856