Daily updates from Odoo
Monday, January 5, 2026
149 changes
18 changes
New functionality added to Odoo
This pull request updates the localization files (.weblate.json) to reflect the addition of new modules in the Odoo Enterprise 19.1 release. These updates ensure that the software is correctly translated for users in different languages, improving the overall user experience and international accessibility.
Enhancements to existing features
This update ensures that Odoo's Australian tax reporting continues to function correctly within the 19.0 release. The tax return type has been aligned with the master BAS report, maintaining compatibility while future changes are implemented in the main Odoo codebase.
Original PR description
Update the existing tax return type to be mapped to the master BAS report. This ensures the return type continues to work in 19.0, where the original report cannot be removed from stable. Additional BAS return types and activation logic will be handled separately in master, where inactive return types are supported. community pr - https://github.com/odoo/odoo/pull/239999 task-[5416350](https://www.odoo.com/odoo/project.task/5416350) Forward-Port-Of: odoo/enterprise#102114
Resolved issues and error corrections
This update fixes an issue where assigned values in project properties would disappear after saving. The root cause was a flaw in how the system handled data retrieval for Many2one fields, specifically related to displaying contact names. The fix ensures that property values are correctly saved and remain visible after modifications.
Original PR description
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as…
**Steps to produce:** - Install project module. - Go to project > Open any project > Open any task > Click on gear icon. - Click on Add properies > Set Field type as `Many2one` and Model as `Contact`. - Now assign value to Property 1 > Click on `External button` > Click on `Save & Close`. **Issue:** - The assigned value disappears after saving. **Root cause:** - At [1], since `id` is not an active field (see [2]), it is not present in record.data, which is expected. However, record.data is then passed to m2oTupleFromData, which assumes that the data includes an id because it is normally used on data coming directly from the ORM. - Additionally, since display_name is also not present, m2oTupleFromData falls back to record.data.name, which is not proper. **Solution:** - Use an ORM read to retrieve the proper display_name of the record before constructing the Many2one tuple. [1]: https://github.com/odoo-dev/odoo/blob/24ccc3faf14ade70b21bf253af16a534df726fc8/addons/web/static/src/views/fields/properties/property_value.js#L87-L89 [2]: https://github.com/odoo/odoo/blob/369ca1e5a154235e80b9ea6af7b3f10442c0939f/addons/web/static/src/model/relational_model/record.js#L793-L795 Before: <img width="589" height="68" alt="bef" src="https://github.com/user-attachments/assets/b2aeba0c-1c52-4663-9f94-5c7808a882db" /> After: <img width="613" height="81" alt="after1" src="https://github.com/user-attachments/assets/a3b3d733-929d-4a24-9e17-c73d9569e9b7" /> **opw-5257819** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240443 Forward-Port-Of: odoo/odoo#238052
This update fixes an issue where complex custom groupbys in reports were incorrectly formatted with excessive indentation. The change ensures reports handle more intricate domain conditions accurately, improving readability and preventing formatting problems. This enhancement was identified and resolved in the latest version of Odoo Enterprise.
Original PR description
When a custom groupby defined a domain with more than one element in it (typically, conditions on multiple fields, possibly with '|' or '&' operations), if groupby lines needed to be generated for subsequent groupby, the generated groupby lines had a too high level, and ended up being over-indented.
This was because the groupby expansion computed the number of higher-level groupby lines as the length of the domain needed to restrict their content. This was too naïve, and won't work well with custom groupbys, which can define longer (or even empty) domains.
This was spotted in master (19.1), with the refactored EC Sales list, which now uses a custom engine and a specific custom groupby map.
Forward-Port-Of: odoo/enterprise#102240This update resolves an issue where the 'Use compact format' option within Odoo charts was visually present but not functioning correctly. The fix ensures that this option now correctly controls the display of charts, improving user experience and data visualization. This change was driven by a task to address a reported bug.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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#240251
This update resolves an issue where the 'Use compact format' option in the chart side panel was visually present but not working correctly. The fix ensures this setting now functions as intended, providing users with the desired chart display. This improves the overall usability of the chart feature.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#102263
This update resolves an issue where the 'Position' column in German Sale Order reports was blank, causing formatting problems. The fix corrects a calculation error in the report template, ensuring accurate sequential numbering (1, 2, etc.) and proper table display. This improves the accuracy and readability of sales reports.
Original PR description
Before this commit, when printing a Sale Order using the German localization, the "Position" column in the PDF report was empty. Additionally, the table formatting was broken due to this missing data. This issue occurred because the index variable used to calculate the line number in the report template (QWeb) was incorrect. This commit fixes the index logic in the report template. Now, the "Position" column correctly displays sequential numbers (1, 2, etc.), and the table formatting renders correctly. ticket-5225647 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#240714 Forward-Port-Of: odoo/odoo#240243
This update resolves a rare technical issue that could occasionally cause problems when opening a parent channel within Odoo. The fix prevents a traceback error, ensuring a smoother and more reliable experience for users. This improves overall system stability.
Original PR description
This commit fixes a rare traceback that could occur when opening a parent channel from a thread that has been deleted. task-5355205 Forward-Port-Of: odoo/odoo#241266
This update fixes a visual issue where carousel navigation arrows displayed incorrectly when the website was configured for Right-to-Left languages like Arabic. The fix ensures that the arrows align correctly regardless of the website's language setting, providing a consistent user experience for all customers. This was caused by a previous change that inadvertently removed RTL-specific styling.
Original PR description
Steps to reproduce: =================== - Install an RTL language (e.g., Arabic) on the website. - Go to website & Edit mode - Drop product snippet `s_dynamic_snippet_products`. ->When the website is…
Steps to reproduce: =================== - Install an RTL language (e.g., Arabic) on the website. - Go to website & Edit mode - Drop product snippet `s_dynamic_snippet_products`. ->When the website is viewed in an RTL language, the navigation arrows in the snippet are displayed in the wrong direction. Cause: ====== A previous commit [1] applied a specific `transform` to arrows to adjust their visual style, By defining a new transformation for the snippet, the default generic transform for RTL language was overwritten. https://github.com/odoo/odoo/blob/e0a5e68e861363378ecd184711bc9356fe0376ff/addons/web/static/lib/odoo_ui_icons/style.css#L105 Consequently, the arrows lost their RTL-specific orientation. Solution: ========= The CSS has been updated to explicitly handle the RTL context. [1]: https://github.com/odoo/odoo/commit/d9ea6d1ebabf64dac434e0d2a7c2535bbfff5c71 opw-5440273 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241541
This update removes a confusing and unnecessary warning message that appeared when setting up pricelists for event products. The warning was poorly designed and didn't provide useful information, creating a frustrating user experience. This change simplifies the process for managing pricing for events.
Original PR description
* Remove the warning shown when creating pricelist rules for event products. * The warning is noisy, not well localized, and appears for every rule, resulting in a poor user experience with little practical value for most users opw-5441138 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update to the account module's testing utilities prevents unnecessary invoice line creation during tests. This improves test stability and reduces potential errors, ensuring more reliable test results. The change focuses on optimizing the test setup process.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/102632
This update corrects an issue with the padding within Gantt chart popovers, ensuring a more visually consistent and professional presentation. The change was necessary to address a design flaw identified in a previous development cycle, improving the overall user experience.
Original PR description
This commit fixes wrong padding inside gantt popovers body introduced in #101482. task-5166940
This update adjusts how preset options are displayed in the self-order mode, ensuring that available presets are shown only when appropriate. Specifically, 'Dine In' presets now appear correctly on kiosks and mobile menus when a table identifier isn't present, requiring a slight configuration change if needed.
Original PR description
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset…
*: pos_self_order, pos_online_payment_self_order Two things will change with this PR. First, before this commit, when a pos config had only one available preset (and set as default) and this preset was not available in self, this preset was used as the default one. But now, it's not the case anymore. We only use it if, and only if, it is available in self. The second thing was to fix the "Dine In" preset availability in the eating location choices. A dine-in preset is a preset which have service_at == table as attribute. If this preset (is `available_in_self`) and has `service_at === table`, we only show it when there is a table_identifier in the URL or when we are in the kiosk. In all other cases, it'll never be shown. If user wants to see this preset in the kiosk or in the mobile menu without table_identifier, user needs to change the `service_at` field at `counter` (or `delivery`) and put the product as `available in self` as well. task-id: 5190541 enterprise pr:https://github.com/odoo/enterprise/pull/103063 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234522
This update resolves an issue where the attendance app would crash when an employee didn't have a linked calendar. The fix ensures the app handles employees with flexible attendance schedules properly, preventing errors and improving overall usability.
Original PR description
Steps to reproduce: - Create an employee - Remove the calendar to have fully flex - Open the attendance app -> traceback When an employee has no resource calendar (resource_calendar_id=False), the _gantt_unavailability method would crash with a TypeError when trying to create a ZoneInfo from calendar.tz (which is False/None). This fix adds a check to skip calendar periods where the calendar is not set, consistent with how flexible calendars are already handled. task-5462208
This pull request updates the .weblate.json files, which contain the translations for Odoo. These updates reflect the addition of new modules to the system, ensuring that all users see the application in their preferred language. This maintenance ensures accurate and consistent translations across the Odoo platform.
This update fixes an issue where the source origin of multiple moves within a picking was being duplicated, leading to inaccurate inventory tracking. The change ensures that each origin is recorded only once, improving the reliability of stock data. This resolves a reporting discrepancy identified in the Odoo system.
Original PR description
### Behavior: #### Current: During the assignment of a picking, if several of its moves have the same origin, it will repeat that origin in its own origin. #### Expected: Only have one time each…
### Behavior: #### Current: During the assignment of a picking, if several of its moves have the same origin, it will repeat that origin in its own origin. #### Expected: Only have one time each origin. ### Steps to reproduce: From Inventory * Enable two step transfer for the warehouse From Barcode * create and validate new receipts with "Product A" * create and validate a second new receipts with "Product A" and other products From Inventory/Operations/Transfers/Receipts * Open the corresponding receipts * In "source Document" (Field: origin, Model : stock.picking) we can see that the reference from second receipts is repeated. ### Observation: In the case of already existing origins it will not duplicate them but it's missing if several item comes from the same origin. https://github.com/odoo/odoo/commit/0caa44ca97d9d197811a03ad2ff227df68d4437a#diff-55c6314416a6a400da6acd5018d161a55eeeb0e3008fec8828121e3dd12be0ebR1410 opw-4970159 Forward-Port-Of: odoo/odoo#232579 Forward-Port-Of: odoo/odoo#223251
This update resolves a visual issue that occasionally appeared when using the cookies bar with a Bootstrap modal open. The fix prevents a Bootstrap setting from causing a brief UI glitch, ensuring the cookies bar displays correctly for all users. This improves the overall user experience.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#241215 Forward-Port-Of: odoo/odoo#240269
Documentation and clarification updates
This pull request confirms that the developer has signed a Contributor License Agreement (CLA) for their work on the Odoo project. This ensures compliance with Odoo's licensing terms and allows the team to properly acknowledge the contributor's work. The change is a standard legal process.
Original PR description
@pedrobaeza --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241227 Forward-Port-Of: odoo/odoo#241134
10 changes
Resolved issues and error corrections
This update resolves a technical issue that prevented accurate reporting of invoice reconciliation data when multiple bank transactions were used. The fix ensures that the system correctly handles invoices reconciled with multiple bank statements, preventing a 'ValueError' that previously disrupted reporting. This improves the reliability of financial reporting within the Odoo Enterprise system.
Original PR description
### Issue description: The `_compute_full_amount_switch_html` method assumes that `reconciled_lines_excluding_exchange_diff_ids` contains at most one line (which is true only for move lines of bank statement lines). However, if an invoice is reconciled with multiple bank transactions, when accessing the `full_amount_switch_html` for any move line in the invoice, it triggers `ValueError: Expected singleton`, as the compute method uses the reconciled_lines as if they are a single line. ### Steps to reproduce: 1. Create an invoice 2. Reconcile the invoice with multiple bank transactions. 3. Perform a read on the `full_amount_switch_html` field on the invoice line from the invoice (using the web tool, or add the field to any view). 4. You will get `ValueError: Expected singleton: account.move(XX, XX)` opw-5224135 Forward-Port-Of: odoo/enterprise#102048
This update fixes an issue where customer information was incorrectly displayed as the author of refund transaction messages. The change ensures the logged-in user, who initiated the refund, is accurately identified, improving transaction clarity and reporting. This resolves a potential confusion regarding payment responsibility.
Original PR description
Currently, the customer, who did not perform the operation, is set as the author of the refund, capture, and void transaction messages. **Steps to reproduce:** - Install the `sale_management` module…
Currently, the customer, who did not perform the operation, is set as the author of the refund, capture, and void transaction messages. **Steps to reproduce:** - Install the `sale_management` module and enable the `demo` payment provider. - Create a new quotation and from the `gear` icon, select `Mark Quotation as Sent`. - From the `gear` icon, choose `Generate a Payment Link`, and copy the link. - Open the link in an incognito window, and complete the payment. - Return to the original tab and open the payment transaction from the chatter. - Click `Refund` > `Refund` and observe the `author` of the messages in the chatter. **Observation:** The refund messages entry shows the customer as the author instead of the logged-in user who executed the refund. **Root Cause:** At [1] and [2], when the logged-in user is not a superuser, the code assigns the customer (`self.partner_id`) as the author, even during `refund`, `capture`, and `void transactions`, resulting in an incorrect message author. **Fix:** This commit ensures that during refund, capture, and void transactions, the message author is set to the logged-in user instead of the customer. [1]: https://github.com/odoo/odoo/blob/bbf3bd7b0e1d3e015350f9c959fad056384e2318/addons/account_payment/models/payment_transaction.py#L223 [2]: https://github.com/odoo/odoo/blob/5cf325dfff1ffbc1c4b4d0bcfc44ac9f55ea7c51/addons/sale/models/payment_transaction.py#L110 **Before:** <img width="1910" height="624" alt="5379376_before" src="https://github.com/user-attachments/assets/decdd620-d741-488e-9dec-e5c8c9bafc48" /> **After:** <img width="1917" height="622" alt="5379376_after" src="https://github.com/user-attachments/assets/5f38f3c3-fd2c-489e-afc9-d7a356fde23a" /> opw-5379376 Forward-Port-Of: odoo/odoo#241923 Forward-Port-Of: odoo/odoo#239224
This update resolves a minor visual glitch that occasionally appeared when using a Bootstrap modal while the cookies bar was open. The fix prevents a conflict between Bootstrap's styling and the cookies bar's functionality, ensuring a consistent user experience. This improves the overall appearance and reliability of the website.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#240269
This update resolves a technical issue in the Website Builder where adding shapes to certain images caused a runtime error. The fix hides the shape option for incompatible images, ensuring a smoother user experience and preventing unexpected errors. This improves stability and reliability for users.
Original PR description
Applying a shape to an image without a corresponding record triggers a runtime error. Since such images are not compatible with shapes, this commit hides the shape option for them, preventing the error. Steps to reproduce: 1. Enter edit mode in Website Builder. 2. Add the `s_attributes_vertical` snippet. 3. Add a shape to any of its images. 4. Observe the runtime error.
This update fixes a usability issue within Odoo's Kanban views. Previously, items within the dropdown menus of Kanban cards weren't easily navigable or highlighted on hover. This change adds navigation and hover styling to these dropdown items, improving the user experience and making it easier to select options from Kanban cards.
Original PR description
Issue:
Dropdown item-ish (such as `<a class="dropdown-item">` and ViewButton) inside kanban cards dropdown do not have the proper hover styling and are not navigable.
Steps to reproduce:
- Go to project -> open any card dropdown menu ("...") -> Items are not navigable
- Go to CRM -> open any card dropdown menu ("...") -> Items are not highlighted on hover
Fix:
This commit adds the "o-navigable" class to dropdown items and view buttons
which are inside a kanban card's dropdown menu, this makes them navigable
and adds proper hover and focus styling.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#240090This update fixes a bug where unit of measure calculations were incorrectly using a default decimal precision instead of the configured uom rounding. This change ensures that all unit calculations align with the current uom settings, mirroring the behavior of the currency module, and preventing unexpected discrepancies in pricing and inventory.
Original PR description
New uom utils introduced by 66c1fe203f7952fbf4b4c4110ebe002c0b7d15bf were wrongly using the 'Product Unit' decimal precision rounding instead of the uom rounding. This introduced an unexpected behavioral change in the codebase since all existing callsites to float_round, float_compare, float_is_zero with uom roundings were replaced to use those new utils, despite disregarding the uom configuration. This commit fixes the issue and enforces the same behavior for those util methods as for the `res.currency` model, which was the expected objective from the start. opw-5418709 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A test related to course reviews within the website slides feature was failing when run without the standard demo data. This was due to a missing email address for a key user account. The fix ensures this user has an email, allowing the test to pass and ensuring consistent functionality across versions.
Original PR description
We fix the tour test_course_reviews_elearning_admin that was failing when running it without demo data because user admin was posting a message on a channel without an email set on its partner. The same test works in version 18.0 and not in 18.2 because since 18.1, user admin no longer have an email by default (unless the demo data are installed, see odoo/odoo#185809). To fix the test, we just set an email on the partner of user admin before posting the message. Task-5418242 Forward-Port-Of: odoo/odoo#240070
This update resolves a sporadic test failure related to how partner suggestions are sorted. The fix ensures the test accurately reflects the system's behavior by waiting for the necessary data updates before verification. This improves the reliability of our testing process.
Original PR description
Before this commit, the test "Sort partner suggestions by recent chats" fails non-deterministically due to a race condition. This failure occurs because the test relies on the `last_interest_dt` timestamp being updated after sending a message to "User 2". Although the message post triggers a bus notification to update the store, the UI displays the message optimistically. As a result, the assertion for the message's existence occasionally passes before the bus notification was processed, leaving the sorting logic to run with stale data (where "User 2" was still ranked behind "User 3"). This commit fixes the issue by waiting for the sidebar to reorder "User 2" to the top. Since the sidebar ordering relies on the same server data (last_interest_dt) as the suggestion sorting, this ensures the store has processed the bus event before the test verifies the suggestion order. runbot-237553 Forward-Port-Of: odoo/odoo#241619
This update fixes an issue where invoices generated through account_edi_ubl_cii were incorrectly including 'Invoice address' in the partner name within the XML format. The change ensures the commercial partner's name is used, aligning with standard Odoo XML generation and improving data accuracy for invoicing.
Original PR description
The dict-to-xml helpers were still using `partner.display_name` which includes the 'Invoice address' suffix. Changed to use `partner.commercial_partner_id.display_name` when partner name is not available, to match the fix in https://github.com/odoo/odoo/pull/232819 for the standard XML generation. task-4614564 Forward-Port-Of: odoo/odoo#241956 Forward-Port-Of: odoo/odoo#241250
This update fixes an issue where the text highlight color on the website didn't automatically update when the overall theme colors were changed. The fix ensures that the highlight color now dynamically adapts to any new theme settings, providing a consistent and visually appealing user experience. This improves brand consistency and simplifies theme management.
Original PR description
Steps to reproduce: 1. Go to the theme tab and change the colors of the main preset. 2. Select any text in the footer. 3. Expand the toolbar and click the highlight option. Issue: The highlight…
Steps to reproduce: 1. Go to the theme tab and change the colors of the main preset. 2. Select any text in the footer. 3. Expand the toolbar and click the highlight option. Issue: The highlight selector still uses the default purple color instead of adapting to the updated theme preset. This happens because the text highlight color uses "--o-color-1", which does not update when the theme colors are modified. Fix: Used "var(--hb-cp-o-color-1)" as the default text highlight color instead of "--o-color-1", ensuring the highlight automatically adapts to theme changes. Before This Fix: | highlight selector color before changing theme preset | highlight selector color after changing theme preset | |-----------------------------|---------------------------------| | <img width="450" height="404" alt="image" src="https://github.com/user-attachments/assets/c92eed7e-1856-4e08-879a-a74e2506ab9c" /> | <img width="399" height="389" alt="image" src="https://github.com/user-attachments/assets/9a938e80-9e01-49fd-b6a1-cf9baaa64358" /> | After This Fix: | highlight selector color before changing theme preset | highlight selector color after changing theme preset | |-----------------------------|---------------------------------| | <img width="394" height="413" alt="image" src="https://github.com/user-attachments/assets/674958bc-7df7-44fa-97c0-5ae78608dc6a" /> | <img width="408" height="428" alt="image" src="https://github.com/user-attachments/assets/1d48ca49-7d18-4681-8443-b9887eef0dbf" /> | task-5375414 Co-author: Alay Patel <alap@odoo.com>
7 changes
Resolved issues and error corrections
This update corrects a minor issue in how invoice XML documents are created. Previously, the XML included an unnecessary 'Invoice address' suffix in the partner name. This change ensures the XML accurately reflects the commercial partner's name, aligning with standard Odoo practices and improving data consistency.
Original PR description
The dict-to-xml helpers were still using `partner.display_name` which includes the 'Invoice address' suffix. Changed to use `partner.commercial_partner_id.display_name` when partner name is not available, to match the fix in https://github.com/odoo/odoo/pull/232819 for the standard XML generation. task-4614564 Forward-Port-Of: odoo/odoo#241878 Forward-Port-Of: odoo/odoo#241250
This update resolves a minor visual glitch that occasionally appeared when using a Bootstrap modal while the cookies bar was open. The fix prevents a conflict between Bootstrap and the cookies bar's configuration, ensuring a consistent and stable user experience. This improves the overall appearance and functionality of the website.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#240269
This update fixes an issue where items within Kanban card dropdown menus weren't easily navigable or highlighted on hover. The team added a styling class to these items, ensuring they function correctly and provide a better user experience when selecting options from Kanban views.
Original PR description
Issue:
Dropdown item-ish (such as `<a class="dropdown-item">` and ViewButton) inside kanban cards dropdown do not have the proper hover styling and are not navigable.
Steps to reproduce:
- Go to project -> open any card dropdown menu ("...") -> Items are not navigable
- Go to CRM -> open any card dropdown menu ("...") -> Items are not highlighted on hover
Fix:
This commit adds the "o-navigable" class to dropdown items and view buttons
which are inside a kanban card's dropdown menu, this makes them navigable
and adds proper hover and focus styling.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#240090This update fixes a rounding issue that was causing inaccurate remaining time displays on Sales Orders, specifically when tracking service hours. The change ensures that time overages are calculated precisely without the accumulation of floating-point errors, leading to more reliable reporting. This improves the accuracy of time tracking for service-based sales.
Original PR description
Steps to reproduce: - Create service product with UoM 'pack of 20 hours' and prepaid policy - Sell the product and confirm the Sales Order - Create a helpdesk ticket/task linked to the Sales Order…
Steps to reproduce: - Create service product with UoM 'pack of 20 hours' and prepaid policy - Sell the product and confirm the Sales Order - Create a helpdesk ticket/task linked to the Sales Order Line - Log 22:00 on timesheets Current behavior: Sales Order Line shows '-2:01 remaining' Expected behavior: Should show '-02:00' to reflect two hours overconsumed without rounding. Root cause: Python's float type follows the IEEE 754 double-precision standard, where only base-2 fractions can be stored precisely. Base-10 fractions cannot be represented exactly, introducing tiny rounding errors. During chained operations such as multiple conversions or subtractions, these small errors accumulate into larger discrepancies. The float_round() function uses a small constant epsilon to correct rounding noise, but as arithmetic chains grow, errors exceed epsilon's tolerance and it can no longer correct them. Since a single global epsilon cannot handle every case (small vs. large values, chained vs. single operations, or regressions), rounding drift is inevitable when rounding happens repeatedly. Fix: To prevent these rounding errors from compounding, the solution is to stop intermediate rounding altogether. By using conversions with round=False, all arithmetic is done in the base unit (hours) with full float precision, and rounding is applied only once when displaying the final value. This eliminates error accumulation and ensures consistent, drift-free results. task-5090240 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240403 Forward-Port-Of: odoo/odoo#229282
A test for the website slides feature was failing when run without the standard demo data. This was due to a missing email address for a key user account. The team resolved this by adding a default email to the user account, ensuring the test now passes consistently across versions.
Original PR description
We fix the tour test_course_reviews_elearning_admin that was failing when running it without demo data because user admin was posting a message on a channel without an email set on its partner. The same test works in version 18.0 and not in 18.2 because since 18.1, user admin no longer have an email by default (unless the demo data are installed, see odoo/odoo#185809). To fix the test, we just set an email on the partner of user admin before posting the message. Task-5418242 Forward-Port-Of: odoo/odoo#240070
A technical issue in our point-of-sale testing environment caused a test to fail. This fix corrects a problem where a test product record was being accessed after it was unintentionally deleted. This ensures the test suite runs reliably and prevents potential disruptions to the Point of Sale functionality.
Original PR description
The test `test_07_product_combo` with no demo data raised a traceback because a product record was being accessed after it had been implicitly deleted. The issue occurred because the product was initially created via `product.product` instead of `product.template` in the test setup: https://github.com/odoo/odoo/blob/6cc757147aebfe98db95ce6aafccdddc8483a5c6/addons/point_of_sale/tests/test_frontend.py#L1074 The link to the record was broken during the test execution, leading to the access error. runbot-234758 Forward-Port-Of: odoo/odoo#239852
This update resolves a sporadic test failure related to how partner suggestions are sorted. The fix ensures the system waits for all data updates before verifying the sorting order, preventing incorrect results. This improves the reliability of the suggestion functionality.
Original PR description
Before this commit, the test "Sort partner suggestions by recent chats" fails non-deterministically due to a race condition. This failure occurs because the test relies on the `last_interest_dt` timestamp being updated after sending a message to "User 2". Although the message post triggers a bus notification to update the store, the UI displays the message optimistically. As a result, the assertion for the message's existence occasionally passes before the bus notification was processed, leaving the sorting logic to run with stale data (where "User 2" was still ranked behind "User 3"). This commit fixes the issue by waiting for the sidebar to reorder "User 2" to the top. Since the sidebar ordering relies on the same server data (last_interest_dt) as the suggestion sorting, this ensures the store has processed the bus event before the test verifies the suggestion order. runbot-237553 Forward-Port-Of: odoo/odoo#241619
2 changes
Resolved issues and error corrections
This update fixes a usability issue where items within Kanban card dropdown menus weren't easily navigable or highlighted on hover. The team added a styling class to these dropdown items, ensuring they function correctly and provide a better user experience when selecting options from Kanban views.
Original PR description
Issue:
Dropdown item-ish (such as `<a class="dropdown-item">` and ViewButton) inside kanban cards dropdown do not have the proper hover styling and are not navigable.
Steps to reproduce:
- Go to project -> open any card dropdown menu ("...") -> Items are not navigable
- Go to CRM -> open any card dropdown menu ("...") -> Items are not highlighted on hover
Fix:
This commit adds the "o-navigable" class to dropdown items and view buttons
which are inside a kanban card's dropdown menu, this makes them navigable
and adds proper hover and focus styling.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#240090This update resolves a sporadic test failure related to how partner suggestions are sorted, specifically when messages are sent. The fix ensures the test accurately reflects the system's data by waiting for the necessary updates to be processed before verification, preventing inconsistent results. This improves the stability and reliability of the suggestion sorting feature.
Original PR description
Before this commit, the test "Sort partner suggestions by recent chats" fails non-deterministically due to a race condition. This failure occurs because the test relies on the `last_interest_dt` timestamp being updated after sending a message to "User 2". Although the message post triggers a bus notification to update the store, the UI displays the message optimistically. As a result, the assertion for the message's existence occasionally passes before the bus notification was processed, leaving the sorting logic to run with stale data (where "User 2" was still ranked behind "User 3"). This commit fixes the issue by waiting for the sidebar to reorder "User 2" to the top. Since the sidebar ordering relies on the same server data (last_interest_dt) as the suggestion sorting, this ensures the store has processed the bus event before the test verifies the suggestion order. runbot-237553 Forward-Port-Of: odoo/odoo#241619
31 changes
New functionality added to Odoo
This update simplifies asset management for Odoo users in Hong Kong by automatically creating asset models. Each fixed asset is now linked to an expense and depreciation account, streamlining accounting processes. The update avoids incorporating Hong Kong's TVA tax system due to its unique accounting practices.
Original PR description
As odoo wants to simplify the using of its app for users in Hong Kong, the assets models for each asset was added so that the users don't have to register the model manually each time. Also, each fixed asset was linked to an expense account and its corresponding depreciation account. Taxes were not added because I found that Hong Kong doesn't have the concept of TVA in its accounting system. task-5246719 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds a button to the softphone interface, allowing users to mute incoming calls while they are ringing. This improves the user experience by giving users more control over incoming calls and reducing unwanted noise.
Original PR description
Added a button to mute ringtone when having incoming call
Enhancements to existing features
This update changes the survey question type from 'datetime' to 'time', providing users with a more accurate way to record time-based responses. This improves the data collected in surveys and aligns with user expectations for time input. This change is related to a previous enterprise update.
Original PR description
Change datetime question type to time question type. related PR: https://github.com/odoo/enterprise/pull/91524 Task-4896317 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update refines how time answers are displayed in Odoo survey spreadsheets. It aligns with a recent change to use a time question type instead of a datetime type, ensuring more accurate and consistent reporting of time-based responses. This improves the usability and reliability of survey data within spreadsheets.
Original PR description
Following the related PR, the datetime question type has been updated to a time question type. Adapt the display of time answers on spreadsheets. related PR: odoo/odoo#221421 Task-4896317
This update simplifies the AadharSign integration within Odoo Enterprise. Previously, AadharSign was automatically enabled and visible globally, but now it's disabled by default and only appears for companies in India. This change aligns the system with regional requirements and reduces unnecessary complexity.
Original PR description
Before this PR, the emsigner was installed by default for all apps and shown in every country. Now, the AadharSign setting is disabled by default and only visible when the company’s country is India, since it’s only needed for Indian companies. task-5175955
This update enhances the Odoo Enterprise IoT Box debug mode by displaying the correct operating system icon (Windows or Linux) based on whether the IoT Box is running virtually or physically. This provides a clearer visual representation of the IoT Box's environment for support and troubleshooting.
Original PR description
In debug mode, we now display a Windows or Linux icon depending on the OS of the IoT Box (Virtual/Physical).
This update enhances the VoIP system tray icon's behavior, ensuring it correctly identifies whether the user is in the main application tab. This improves the user experience by providing consistent functionality across different devices and operating systems. The change is considered an improvement to the existing VoIP system.
This update adjusts the spacing around text in Odoo's multiline tooltips. Following a previous change, this ensures a cleaner and more professional look for tooltips, improving the overall user experience. This is a minor visual improvement.
Original PR description
After https://github.com/odoo/odoo/pull/239198, we need to adjust the padding of multiline tooltips to avoid having too much space around the text. No task ID
Resolved issues and error corrections
This update enhances how users manage members within WhatsApp channels. Specifically, the system now correctly associates a user with a channel, ensuring accurate tracking and reporting. This change improves the overall reliability and functionality of the WhatsApp module.
Original PR description
PR community https://github.com/odoo/odoo/pull/234512
This update resolves an issue where users were encountering an error when setting default values for contact fields. Specifically, attempting to set an integer value for a date field caused a system error. The fix ensures that users cannot input invalid data types as defaults, improving data integrity and preventing unexpected errors during contact creation.
Original PR description
Steps:
- Create a user defined defaults value
- Model: res.partner
- Field: date
- Value: 1
- Create a new contact
Actual result:
- invalid field type
- 'int' object is not subscriptable (depends of field type)
Expected result:
- No error
- User is not able to put an invalid value as a default
task-3729963
Forward-Port-Of: odoo/odoo#238539
Forward-Port-Of: odoo/odoo#225991This update fixes a visual issue with the SelectMenu component, ensuring selected items are clearly displayed and readable across different frontend implementations. The change improves the overall user experience by standardizing the component's appearance and removing unnecessary customizations.
Original PR description
*: website_slides This commit fixes the 'selected' display of the SelectMenu component in some frontend implementations. Previously, the visual style would be broken since the 'active' class was set…
*: website_slides This commit fixes the 'selected' display of the SelectMenu component in some frontend implementations. Previously, the visual style would be broken since the 'active' class was set on the element, having a blank text and background on selected items. The right 'selected' class is now used, to avoid difficulties to read the value, while still having some frontend specific styles working as expected. Also, the form-control and form-select classes are set using the togglerClass props. In future versions, we might be able to remove extension of the component in other modules (e.g. hr_contract_salary), ensuring the same style and behaviors accross all places. Before: <img width="1566" height="1115" alt="image" src="https://github.com/user-attachments/assets/6265c615-bd7a-47f6-9353-c503dd934fed" /> After: <img width="791" height="350" alt="image" src="https://github.com/user-attachments/assets/939b7109-a32f-4991-a169-13f501f29eb4" /> Forward-Port-Of: odoo/odoo#240576
This update clarifies an error that occurred when deleting custom fields inherited from parent models in Odoo. Specifically, it addresses an issue related to deleting child fields on `ir.model.fields` when a model is inherited. The change ensures a clearer error message is displayed, preventing unexpected behavior during field deletions.
Original PR description
task-4829991 []# modified: odoo/addons/test_orm/tests/test_fields.py 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 fixes an issue where custom reports were displaying incorrectly formatted lines due to a flawed calculation of domain complexity. The change ensures that report formatting is accurate, especially when using advanced grouping criteria, and was tested with the recent EC Sales report.
Original PR description
When a custom groupby defined a domain with more than one element in it (typically, conditions on multiple fields, possibly with '|' or '&' operations), if groupby lines needed to be generated for subsequent groupby, the generated groupby lines had a too high level, and ended up being over-indented.
This was because the groupby expansion computed the number of higher-level groupby lines as the length of the domain needed to restrict their content. This was too naïve, and won't work well with custom groupbys, which can define longer (or even empty) domains.
This was spotted in master (19.1), with the refactored EC Sales list, which now uses a custom engine and a specific custom groupby map.
Forward-Port-Of: odoo/enterprise#102240This update resolves an issue where the 'Show Value' option wasn't functioning correctly within Odoo charts. The fix ensures the chart show value plugin receives the correct chart type information, allowing it to accurately display values for various chart types like bar and line charts. This improves chart visualization accuracy for users.
Original PR description
Since the introduction of calendar charts, the chart show value plugin takes the type of the chart as argument. But for odoo charts, we gave it the odoo chart type (eg: odoo_bar, odoo_line, etc) instead of the base chart type (bar, line, etc), which made the show value plugin not work. Task: [5421194](https://www.odoo.com/web#id=5421194&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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#240226
A visual issue was resolved where a checkbox in the chart side panel for Odoo charts did not function correctly. This update ensures that users can now properly enable the 'Use compact format' option, improving the presentation of charts. This change enhances the user experience and allows for more efficient chart viewing.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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#240251
A technical issue preventing the 'Use compact format' option from working in Odoo charts has been resolved. This update ensures that users can now correctly apply the compact format for charts, improving visual clarity and data presentation. This fix was part of a larger task to improve chart functionality.
Original PR description
The checkbox to toggle the `Use compact format` option in the chart side panel was present for odoo charts, but did nothing. Task: [5405064](https://www.odoo.com/web#id=5405064&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#102263
This update fixes an issue where the product selection pane in the point-of-sale system was sometimes rendered too small, making it difficult to read. The fix ensures the pane maintains its intended width, improving the user experience. The problem was intermittent and related to how the layout elements interacted.
Original PR description
In some scenarios, although not fully deterministic, the left pane is being pushed by its right pane sibling (i.e. the products grid), making it go below its specified with of `left-pane-width`, and…
In some scenarios, although not fully deterministic, the left pane is being pushed by its right pane sibling (i.e. the products grid), making it go below its specified with of `left-pane-width`, and making text non readable. By setting `flex-shrink: 0` on this element, we tell the browser to respect the specified width, and not allow its siblings to shrink it. We could have also set `min-width: $left-pane-width;`, but it's less descriptive. The problem happens because we are in a flex container, hencer we use `flex-shrink: 0`. ### Notes: This issue only happened from time to time for the client, and it seems non deterministic. If we disable showing the product images, the issue stops happening. The below before vs after screenshots are taken on MacBook Pro 14 inches. ### Before: <img width="1493" height="868" alt="image" src="https://github.com/user-attachments/assets/70bc5a70-34a6-48c9-a60a-ab1de1fa0b9b" /> <img width="1496" height="867" alt="image" src="https://github.com/user-attachments/assets/e8ae9b25-3525-439b-93dd-18dc825613c7" /> ### After: <img width="1495" height="866" alt="Capture d’écran 2025-12-31 à 11 28 38" src="https://github.com/user-attachments/assets/23585d3d-b0bf-4316-8749-b39a56fc8cda" /> <img width="1497" height="866" alt="image" src="https://github.com/user-attachments/assets/f5654163-1dd3-4ff9-bb12-d8cd8fbc497b" /> opw-5392359 Forward-Port-Of: odoo/odoo#241941 Forward-Port-Of: odoo/odoo#241731
This update fixes a problem where the 'Position' column in German Sale Order reports was blank. The issue stemmed from an incorrect calculation of line numbers in the report template. Now, the report accurately displays sequential position numbers, ensuring correct reporting for sales transactions.
Original PR description
Before this commit, when printing a Sale Order using the German localization, the "Position" column in the PDF report was empty. Additionally, the table formatting was broken due to this missing data. This issue occurred because the index variable used to calculate the line number in the report template (QWeb) was incorrect. This commit fixes the index logic in the report template. Now, the "Position" column correctly displays sequential numbers (1, 2, etc.), and the table formatting renders correctly. ticket-5225647 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#240714 Forward-Port-Of: odoo/odoo#240243
This update resolves an issue where the Odoo command-line interface (CLI) was incorrectly handling the number of arguments passed to it. This change ensures the CLI functions reliably, preventing potential errors and improving the overall user experience. It's a technical update focused on internal stability.
Original PR description
Fine-tunning of b86c060c9d5ba03ac13e8ad59cf55731fa50ed59 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#240395
This update resolves an issue where renaming inherited custom fields in Odoo didn't properly remove associated database fields. The fix ensures that these generated fields are removed from the database first, preventing data inconsistencies and errors. This improves the reliability of custom field management.
Original PR description
When renaming a custom field that is inherited, first remove the generated inherited fields from the database. task-5172546 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes unnecessary configuration overrides within the Odoo mail system. This simplifies the system and improves performance, leading to a more stable and efficient email sending process. The change is a routine maintenance update.
This update corrects a previous issue where the initial company created via SQL sequence lacked a sequence number. Now, all companies, regardless of creation method, will have a consistent sequence number, preventing filtering problems based on this data. This improves data integrity and reliability.
Original PR description
For the first company, created from sql sequence is not added to it. And for the rest, case companies created via the model default sequence are already provided. This will avoid the issue when companies are filtered based on sequence number. The Intention is to add the sequence to first company is because in the model we are providing the sequence in order so it should be consistent everywhere. Ent:- https://github.com/odoo/enterprise/pull/102317
This update resolves an issue in the Odoo Enterprise testing environment by adding a sequence number to the test company. This ensures that the company data is correctly ordered within the tests, improving the reliability of the project holiday functionality. This is a minor fix to enhance test accuracy.
Original PR description
This commit adds the sequence number to test case company, to be make sure the company are is correct order. See the com :- https://github.com/odoo/odoo/pull/240329
This update resolves a rare error that could occur when users attempted to open a parent channel after a related thread had been deleted. This change enhances the overall stability and reliability of the Odoo platform, preventing potential disruptions for users. It’s a routine maintenance update focused on a technical detail.
Original PR description
This commit fixes a rare traceback that could occur when opening a parent channel from a thread that has been deleted. task-5355205 Forward-Port-Of: odoo/odoo#241309 Forward-Port-Of: odoo/odoo#241266
Code cleanup and technical improvements
This update enhances the display of avatars within channels in Odoo. The change moves avatar URLs to the channel itself, improving performance and ensuring consistent avatar rendering across the platform. This results in a smoother user experience when viewing channel conversations.
This update streamlines chat channel organization by consolidating leave channels within the main channel structure. Previously, leave channels were handled separately, creating complexity. Now, all channels are managed together, simplifying user experience and improving channel management efficiency.
Original PR description
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 centralizes the display name for channels within the Odoo messaging system. Previously, display names were inconsistently managed, leading to potential confusion for users. This change ensures a more consistent and user-friendly experience when viewing and interacting with channels.
Original PR description
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 refactors how Odoo handles unread messages within channels. Specifically, the logic for retrieving the first unread message has been moved to the channel model itself, streamlining the process and improving efficiency. This change ensures more consistent and reliable channel message updates.
This pull request refactors the internal handling of correspondents within the Odoo Discuss module. The change improves the underlying code structure without impacting user-facing functionality. This is a routine maintenance update to ensure the Discuss module continues to operate smoothly.
Original PR description
PR community: https://github.com/odoo/odoo/pull/235992
This update streamlines how Odoo accesses channel member information. Previously, access was through threads, but now the code directly accesses channel member IDs, aligning with the channel's data structure. This improves efficiency and accuracy when managing channel members.
Original PR description
PR enterprise: https://github.com/odoo/enterprise/pull/98888
Documentation and clarification updates
This pull request confirms that the developer has signed a Contributor License Agreement (CLA) for their changes to the Odoo codebase. The changes themselves are a standard CLA signature process, ensuring compliance with Odoo's licensing terms. This update doesn't introduce new functionality but is a necessary step for contributions.
Original PR description
@pedrobaeza --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241227 Forward-Port-Of: odoo/odoo#241134
18 changes
Enhancements to existing features
This update ensures our Australian business reporting continues to function correctly within Odoo Enterprise version 19.0. It maps the existing tax return type to the master BAS report, addressing a compatibility issue where the original report could no longer be removed from the stable version.
Original PR description
Update the existing tax return type to be mapped to the master BAS report. This ensures the return type continues to work in 19.0, where the original report cannot be removed from stable. Additional BAS return types and activation logic will be handled separately in master, where inactive return types are supported. community pr - https://github.com/odoo/odoo/pull/239999 task-[5416350](https://www.odoo.com/odoo/project.task/5416350)
Resolved issues and error corrections
This update resolves a technical issue that prevented invoices reconciled with multiple bank transactions from displaying correctly in reports. The fix ensures the system handles complex reconciliation scenarios accurately, avoiding a common error that disrupted reporting. This improves the reliability of financial data presented to users.
Original PR description
### Issue description: The `_compute_full_amount_switch_html` method assumes that `reconciled_lines_excluding_exchange_diff_ids` contains at most one line (which is true only for move lines of bank statement lines). However, if an invoice is reconciled with multiple bank transactions, when accessing the `full_amount_switch_html` for any move line in the invoice, it triggers `ValueError: Expected singleton`, as the compute method uses the reconciled_lines as if they are a single line. ### Steps to reproduce: 1. Create an invoice 2. Reconcile the invoice with multiple bank transactions. 3. Perform a read on the `full_amount_switch_html` field on the invoice line from the invoice (using the web tool, or add the field to any view). 4. You will get `ValueError: Expected singleton: account.move(XX, XX)` opw-5224135 Forward-Port-Of: odoo/enterprise#102048
This update fixes inaccuracies in the Thai tax report test cases. The changes align the test data with the latest Thai tax regulations, ensuring accurate reporting and compliance. This improves the reliability of the Thai localization for financial reporting.
Original PR description
Replaced outdated tax references in test cases with updated tax references to align with the recent changes in the Thai localization. Task-5395076
This update resolves a test failure related to the course review tour within the website. The issue stemmed from a test requiring a user account (admin) with a properly configured email address, which was missing in newer versions of Odoo. The fix ensures the test runs correctly by adding a default email to the user account.
Original PR description
We fix the tour test_course_reviews_elearning_admin that was failing when running it without demo data because user admin was posting a message on a channel without an email set on its partner. The same test works in version 18.0 and not in 18.2 because since 18.1, user admin no longer have an email by default (unless the demo data are installed, see odoo/odoo#185809). To fix the test, we just set an email on the partner of user admin before posting the message. Task-5418242 Forward-Port-Of: odoo/odoo#240070
This update fixes an issue where items within Kanban card dropdown menus weren't easily navigable or highlighted on hover. The team added a styling class to these items, ensuring they function correctly and provide a better user experience when selecting options from Kanban cards. This improves usability and efficiency.
Original PR description
Issue:
Dropdown item-ish (such as `<a class="dropdown-item">` and ViewButton) inside kanban cards dropdown do not have the proper hover styling and are not navigable.
Steps to reproduce:
- Go to project -> open any card dropdown menu ("...") -> Items are not navigable
- Go to CRM -> open any card dropdown menu ("...") -> Items are not highlighted on hover
Fix:
This commit adds the "o-navigable" class to dropdown items and view buttons
which are inside a kanban card's dropdown menu, this makes them navigable
and adds proper hover and focus styling.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#240090This change fixes a JavaScript error that occurred when installing the Quality IoT module and enabling debug mode. The issue stemmed from a dependency conflict related to the QualityCheck component, which was incorrectly located. This update ensures proper module loading and resolves the error, allowing for seamless Quality IoT functionality.
Original PR description
### Issue: The QualityCheck component is defined in the `mrp_workorder` module:…
### Issue: The QualityCheck component is defined in the `mrp_workorder` module: https://github.com/odoo/enterprise/blob/7c64908258d5a0fb9adecd6dd2760e255e46314b/mrp_workorder/static/src/mrp_display/mrp_record_line/quality_check.js#L7 which is not a dependency (even indirectly) of the `quality_iot` module. Hence, if you install the `quality_iot` and enable debug mode, you will raise a JS [error](https://github.com/odoo/odoo/blob/a1583d0564552007a3d5f12d967c2c0036e05e44/addons/web/static/src/module_loader.js#L164-L169) because of missing dependencies: > The following modules are needed by other modules but have not been defined, they may not be present in the correct asset bundle. This happens because commit a13e38006d3cba6cab4565de2b014d294d2c0af3 added a patch of the QualityCheck component in the `quality_iot` https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/quality_iot/static/src/mrp_display/quality_check.js#L4 https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/quality_iot/static/src/mrp_display/quality_check.js#L17 opw-5353986
This update resolves a sporadic test failure related to how partner suggestions are sorted, specifically when considering recent chats. The fix ensures the test accurately reflects the system's data by waiting for the necessary updates to be processed before verification, preventing incorrect sorting results.
Original PR description
Before this commit, the test "Sort partner suggestions by recent chats" fails non-deterministically due to a race condition. This failure occurs because the test relies on the `last_interest_dt` timestamp being updated after sending a message to "User 2". Although the message post triggers a bus notification to update the store, the UI displays the message optimistically. As a result, the assertion for the message's existence occasionally passes before the bus notification was processed, leaving the sorting logic to run with stale data (where "User 2" was still ranked behind "User 3"). This commit fixes the issue by waiting for the sidebar to reorder "User 2" to the top. Since the sidebar ordering relies on the same server data (last_interest_dt) as the suggestion sorting, this ensures the store has processed the bus event before the test verifies the suggestion order. runbot-237553 Forward-Port-Of: odoo/odoo#241619
This update resolves a minor visual issue that occasionally appeared when using the cookies bar with a Bootstrap modal open. The fix prevents a Bootstrap class from being added and removed, which was causing a brief UI disruption. This ensures a smoother user experience for all visitors.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#240269
This update resolves a technical issue in the website editor where applying font colors created unnecessary HTML tags for blank text, causing problems with snippet structure. The fix ensures font tags are only applied to visible text, improving the editor's performance and stability.
Original PR description
#### Description of the issue this PR addresses: - When applying font color, <font> tags were created for text nodes that contained only invisible content (whitespace or newlines). - These whitespace-only text nodes are not visually rendered, but wrapping them in <font> tags caused unnecessary nodes to be inserted and broke the DOM structure in snippets. #### Desired behavior after PR is merged: - Apply font tags only to text nodes that contain visible content. - Ignore whitespace-only (invisible) text nodes when wrapping content with <font> elements. #### Steps to Reproduce: - Open the website editor. - Insert a content snippet (e.g., s_numbers_framed, s_comparisons). - Select multiple blocks. - Apply font color from toolbar. => <font> tags are created for whitespace-only text nodes too, breaking the snippet structure. task-5454805 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a display issue where users were receiving confusing error messages when accessing OAuth features. Specifically, AccessDenied errors were showing a lengthy, detailed message instead of the standard 'Access Denied'. This change ensures a cleaner and more straightforward user experience for OAuth authentication.
Original PR description
Description of the issue/feature this PR addresses: This PR should fix the order of error codes in the oauth controller. Current behavior before PR: Currently the user gets redirected to a different error. For instance: AccessDenied error will redirect the user to "You do not have access to this database or your invitation has expired. Please ask for an invitation and be sure to follow the link in your invitation email." Desired behavior after PR is merged: AccessDenied error should show "Access Denied" --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the Odoo import action by allowing users to specify the target model through parameters. This retrocompatibility change, previously partially reverted, ensures existing import configurations continue to function correctly. It primarily impacts the base_import module.
Original PR description
This commit follows up the commit [1] and allows adding an `model` to the parameters of the `import` action, for retrocompatibility purposes. Note that, this retrocompatibility existed before the commit [2], which was partially reverted by the commit [1]. [1] https://github.com/odoo/odoo/commit/7e351d87a5b6faad5bef447bdb077b7637f9c936 [2] https://github.com/odoo/odoo/commit/033d6afe36426067a7bada8b812898169d7968de
This update removes a previously implemented fix for the account import action. A similar correction has already been addressed in a related extended class, making this reversion redundant. This ensures consistency and avoids unnecessary code changes.
Original PR description
Since [1] the fix on account_import_action is not needed anymore, a similar fix is done in the extended class. [1] https://github.com/odoo/odoo/commit/7e351d87a5b6faad5bef447bdb077b7637f9c936
This update fixes a recurring issue in the MRP planning test that was causing it to fail intermittently. The test has been redesigned to create the planning leave manually, making it more reliable and consistent. This ensures the planning process is accurately tested and validated.
Original PR description
Before this commit: Introduced in https://github.com/odoo/odoo/commit/d06dcfbca96273b540c87252b9188603879ac1b4, the test was failing on runbot in some cases. The issue is deterministic, but requires a specific set of modules installed to fail. After this commit: Use a more robust approach in the test, by creating the leave manually instead of computing the number of operations needed. runbot-234638 Forward-Port-Of: odoo/odoo#241350 Forward-Port-Of: odoo/odoo#239717
This update resolves an issue where Studio sometimes loaded incorrect POS views due to view sequence priority. Now, developers can adjust how default views are selected, ensuring the correct views are loaded regardless of sequence. This improves Studio's reliability and prevents unexpected view behavior.
Original PR description
Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit creates a hook to get the domain used to fetch default views (`_get_default_view_domain()`). This way, modules can override the domain of `_get_default_view_domain()` method in order to exclude some views from being selected as default ones no matter the sequence.
This update fixes a technical error that prevented users from accessing holiday attests in debug mode. The issue stemmed from a missing data field in the system's configuration, which caused an error when the system was testing its functionality. This change ensures the holiday attest feature works correctly for all users.
Original PR description
Issue: in debug mode, the function `validateProps` is called on the component so it raises an error because `payslipsYear` is in the props but not defined in the schema Steps to reproduce (developer mode): - fill in the departure notice period and payslip wizard - try to open departure: holiday attests from the cog menu - you get a traceback because of unknown key `payslipsYear` Fix: added `payslipsYear` to the props definition task-id: 5398621
This update strengthens the security process for the HR Expense Stripe module by adding a crucial neutralization step. This ensures that database copies created for support investigations are completely isolated from the live production database, preventing any potential disruptions or data breaches. It's a proactive measure to maintain data security and stability.
Original PR description
This commit adds a complement to the neutralization necessary for the hr_expense_stripe module. The main neutralization is handled by the certificates module, but this covers a rare edge case (creation of new accounts in production mode for companies that do not already have an account), and makes the overall neutralization more bullet proof. ---------------------------------------------------------------------- The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates.
This update resolves a problem where Studio was incorrectly loading POS views as default, leading to errors. The change prevents these POS views from being selected as defaults, ensuring the backend operates with the intended views and improving stability. This ensures consistent and reliable operation.
Original PR description
..., appointment, l10n_ke_edi_oscu_pos Task: [#5191154](https://www.odoo.com/odoo/project/1737/tasks/5191154) --- When activating some views with Studio, we could end up loading a POS view because it has a lower sequence. As a result, Studio selects this view. However, these POS views may not be loaded in the backend bundle (`web.assets_backend`), and thus are missing at runtime. Example: "Cannot find key 'pos_kanban' in the 'views' registry". This commit edit the domain of `_get_default_view_domain()` method in order to exclude these POS views from being selected as default ones.
Documentation and clarification updates
This pull request confirms that the developer has signed a Contributor License Agreement (CLA) for this work. It involves forwarding a related change (odoo/odoo#241227 and odoo/odoo#241134) and includes a CLA signature confirmation from christian-ramos-tecnativa. This ensures compliance with Odoo's licensing terms.
Original PR description
@pedrobaeza --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241227 Forward-Port-Of: odoo/odoo#241134
6 changes
Resolved issues and error corrections
This update corrects an issue with how Odoo sends electronic invoices (EDI) to ECPay in Taiwan. The change removes the company name from the address and formats it as a comma-separated line, ensuring compliance with ECPay's requirements and improving data accuracy. This ensures seamless invoice processing.
Original PR description
In this commit: --- Update EDI address formatting to remove the company name and send a comma-separated single-line address. task-5410619
This change corrects a display inconsistency in loyalty rewards by removing a technical field that allowed users to incorrectly link discount products. This fix ensures that discount descriptions are accurate and aligned with the intended promotion, improving the customer experience. The change was implemented to address a reporting issue and a previous workaround.
Original PR description
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: -…
### Issue: Due to this issue, users can change the technical field `discount product` which cause inconsistency in discount description. #### To reproduce: 1- Create a promotion called `AAA`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1 point 2- Using debug mode, in promotion's reward view, change the `Description on order` to `AAA 10%`. Save the promotion and you can see the `Discount product`'s name is set to the same description. 3- Create another promotion called `BBB`: - Rules: If minimum 50.0 spent grant 1 point per order - Rewards: 10% discount per order in exchange of 1000 points. 4- In promotion reward's view change the `Discount product` to `AAA 10%` which is promotion `AAA`'s discount product. 5- Change the `Description on order` to `BBB 10%` and save. 6- You can see the name of `Discount product` is changed as well. 7- In promotion `AAA` and you can see the description and the name of `Discount product` mismatch. 8- Navigate to shop, and add a product to cart with a price of more than 50. 9. You can see after applying promotion `AAA` the description from promotion `BBB` is shown. ### Cause: The technical field `Discount product` is never meant to be changed, and this field is introduced for reporting purposes and showing the discount applied in cart. However, this field is added to view in #132857. This is done as a hack to find the `Discount product` created for the promotion, as a workaround for an accounting issue due to adding account to `Discount product`, and originally `discount_line_product_id` was not supposed to be shown or changed through form. After discussion with PO, we decided this field should be removed from the view. Also removing this field will not undo the main fix of #132857, and that workaround was introduced only to find the `Discount product` for that specific client's use case. However, in stable, it is kept for customization compatibility. It's set invisible in order to prevent the issue. opw-5229633
This update corrects a technical issue that prevented the system from creating emails when the user account was empty. The fix ensures the system handles all user scenarios correctly, preventing potential errors and improving email functionality. This resolves a bug introduced during recent development.
Original PR description
'self.env.user' can be empty. User 'has_group' method has ensure_one check, so it must not be called on empty recordsets. Bug introduced here: https://github.com/odoo/odoo/commit/3056facc07024d02829bf2e27c9ee2f56695c99e
This update resolves a visual glitch that appeared when using Bootstrap modals. Specifically, pressing the Escape key while a modal was open caused a temporary display issue with the cookies bar. The fix prevents a Bootstrap event from triggering a conflicting UI change.
Original PR description
When pressing `Escape` with a Bootstrap modal open, even if the config key `keyboard` is set to `false` (preventing escape from closing the modal), Bootstrap sets a class `modal-static` on the modal element and removes it shortly after. This causes a UI glitch in the case of the cookies bar. Stopping the event propagation prevents it from happening. task-5421993 Forward-Port-Of: odoo/odoo#240334
This update fixes a visual issue on the user profile page where course tags were being cut off at the bottom. The change adjusts the layout to ensure all tags are fully visible, providing a cleaner and more professional user experience. This resolves a minor aesthetic problem related to consistent card sizing.
Original PR description
In the website profile page, the course tags are slightly cut on the bottom. This commit adapts the block size to fit the entire tag. Note that the combo of fixed height / hidden overflow is actually intended to only show a single line of tags and not all of them, to avoid having a variable course card total height. Task-5457464
This update resolves an issue where IoT report handlers prevented the wizard from closing after a report was downloaded. Previously, users experienced open wizards and unexpected behavior when using custom report actions. The fix ensures the standard wizard closure logic is consistently applied, regardless of the report handler used.
Original PR description
Problem: When an alternate ir.action.report handler is used (such as for IoT), the logic to close the wizard after the report is downloaded (printed) is skipped, so the wizard stays open. Steps to Reproduce: - Go to "Acoustic Bloc Screens" product and click "Print Labels" - Select "ZPL labels" and confirm - The report downloads and the wizard closes as expected - Go to Settings > Technical > Reports and select "Product Label (ZPL)" - Set an IoT device on the report - "Print Labels" again, selecting a printer and the IoT toasts in the top right appear after the wizard closes - Refresh the page, and try printing again - The wizard stays open (wrong) and the IoT toasts appear Solution: When returning from the custom handler, check if close_on_report_download and close the wizard. opw-5153139
8 changes
Enhancements to existing features
This update improves the user experience when receiving incoming calls. Now, clicking on the avatar or number associated with a call's contact redirects you directly to that contact's profile within Odoo. This streamlines communication and makes it easier to access relevant contact information.
Original PR description
When incoming call has a parnter, we can now click on its avatar or number to redirect to that partner's form. Task-2863783
This update adjusts the handling of tax exemption reasons in UBL (Universal Business Language) documents. Previously, a specific reason code was always required; now, it's optional. When a reason code isn't provided, the system automatically uses a default reason based on the tax category, ensuring compliance with UBL standards.
Original PR description
According to the ubl documentation the tax exemption reason code is not always required on the document. But when no exemption reason code is given, we have a default exemption reason for the appropriate tax categories. task: 5223145
Resolved issues and error corrections
This update fixes a reporting issue in the French P&L reports. The 'owner remuneration' account (644) was incorrectly categorized as 'tax and duties'. This change ensures accurate reporting of wages and salaries in accordance with French accounting standards, improving financial transparency.
Original PR description
Account '644 owner remuneration' was in the 'tax and duties' category in the french P&L but it belongs to the 'wages and salaries' category task-5446018
This update modifies Odoo's translation files (pot files) to better integrate with Weblate, a tool used for managing translations. By triggering msgmerge, the team can more efficiently update and maintain the translations across all Odoo modules, ensuring consistent and accurate localization for our users.
Original PR description
Related: https://github.com/odoo/enterprise/pull/98813 Related: https://github.com/odoo/design-themes/pull/1176
This update adjusts the timing of checks for video calls to prevent disruptions when the Odoo server is temporarily slow. By extending the check interval, the system can now tolerate brief connection hiccups, ensuring smoother and more reliable video communication for users. This improves the overall user experience.
Original PR description
Before this commit, the ping to keep rtc sessions alive was done every 30 seconds and had a 1 minute timeframe to successfully ping, which meant that missing a single ping would drop the rtc session. This commit increases the timeframe to 1 minutes and 15 seconds so that one ping can be missed. This can help preventing disconnections when the Odoo server is slow, as calls can work fine without a stable connection to the odoo server (since P2P and SFU connections are independent from Odoo once the connections are initialized). task-5177246
This update fixes an issue where Odoo incorrectly processed partner names with only one word. Previously, a single-word name would result in an empty first name field. Now, single-word names are correctly assigned to the first name, ensuring accurate data entry and reporting for customer information.
Original PR description
Description of the issue/feature this PR addresses: The name splitting logic fails when the partner name contains only one word, resulting in an empty first name. Current behavior before PR: Splitting a single-word name returns an empty first name and assigns the word to the last name. Desired behavior after PR is merged: A single-word name is correctly assigned to the first name field, leaving the last name empty. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where the automated processing of Mexican tax documents (l10n_mx_edi) was repeatedly attempting to update the same documents. By adding a filter to check for existing processing status, the system now avoids redundant updates, improving efficiency and preventing potential errors. This resolves a previous limitation in the document search and update process.
Original PR description
Before the commit 8b118a7, the search of the documents to update has been limited and ordered. With the actual domain the records to update will be always the same and it will never continue processing the missing records. To avoid this issue we add a new domain to filter if they have already a sat_state on the move_id, this will make that the processed ones will not be processed again. OPW-5368047
Miscellaneous changes
This update focuses on improving the localization of Odoo's accounting modules by updating the `.pot` files. These changes are designed to automatically trigger `msgmerge` in Weblate, streamlining the process of translating Odoo into multiple languages. This ensures consistent and accurate translations across the enterprise platform.
Original PR description
Related: https://github.com/odoo/odoo/pull/234396 Related: https://github.com/odoo/design-themes/pull/1176