Daily updates from Odoo
Tuesday, December 30, 2025
25 changes · saas-19.1
New functionality added to Odoo
This update adds comprehensive testing for the POS Restaurant module's preparation display functionality. The tests, using a new testing environment, ensure the display works correctly and reliably, contributing to a more stable and accurate user experience. This work is part of ongoing efforts to improve the quality and reliability of the Odoo Enterprise platform.
Original PR description
In this commit: --- - Added HOOT test coverage for the POS Restaurant module's preparation display. - Introduced `setupPosPrepDisplayEnv` to mock and initialize the preparation display test environment. - Added test coverage for core components, models, and service logic. - Adjust hoot case for pos_urban_piper. task-5225193 Related PR: - https://github.com/odoo/odoo/pull/234474 Forward-Port-Of: odoo/enterprise#102962 Forward-Port-Of: odoo/enterprise#98849
This update introduces new Profit & Loss and Balance Sheet reports that utilize account tags instead of traditional account codes. This change allows for more granular reporting and replaces older reports based on account codes, which are now inactive. Users will need to manually enable these new reports.
Original PR description
This pr introduce new PL and BS reports based on account tags. And old PL and BS reports based on account codes are inactive now. So now user have to now manually enable them via Enable more on each report. Related Community PR: https://github.com/odoo/odoo/pull/222186 Task: 4978415 Forward-Port-Of: odoo/enterprise#103002 Forward-Port-Of: odoo/enterprise#91903
Enhancements to existing features
This update simplifies the single slide carousel experience by disabling unnecessary reordering and navigation buttons when only one slide is displayed. This improves the user interface, prevents confusing behavior, and optimizes the system's performance. The changes were made to enhance usability and maintain a cleaner design.
Original PR description
1. The slide reordering and navigation buttons should be disabled when only a single slide is present. This prevents unnecessary actions, avoids confusing UI behavior and protects history from…
1. The slide reordering and navigation buttons should be disabled when only a single slide is present. This prevents unnecessary actions, avoids confusing UI behavior and protects history from polluting with the unnecessary mutations. The disabling logic is handled by conditionally adding the "disabled" class based on the current slide count. 2. When the active slide is first then "**Move to first**" reordering button should be disabled. Similarly, when the active slide is last then "**Move to last**" reordering button should be disabled. task-5363601 1. | Before | After | |-----------------------------|---------------------------------| | <img width="292" height="283" alt="image" src="https://github.com/user-attachments/assets/b89a810f-f5fe-4db4-a98b-036d6b1a6568" /> | <img width="284" height="273" alt="image" src="https://github.com/user-attachments/assets/c4ce2e7d-1fef-4186-bea0-ad00834a8680" /> | 2. | Before | After | |-----------------------------|---------------------------------| | <img width="285" height="179" alt="image" src="https://github.com/user-attachments/assets/d0b6833f-a66f-4f80-8e18-c7ea2245fce1" /> | <img width="289" height="208" alt="image" src="https://github.com/user-attachments/assets/e0ef23fb-83ca-45c2-929b-2e86133c0789" /> | Forward-Port-Of: odoo/odoo#237718
This update enhances the AI voice transcription feature with a redesigned user interface and significant backend improvements. The changes include a more responsive mobile experience, optimized audio processing, and a refined transcription workflow for better accuracy and usability.
Original PR description
This PR introduces a bunch of UI/UX improvments as well as some refactoring to the existing behaviours. Among the UI improvments, it adds: - a new `AudioVisualizer` component which can be sized…
This PR introduces a bunch of UI/UX improvments as well as some refactoring to the existing behaviours. Among the UI improvments, it adds: - a new `AudioVisualizer` component which can be sized dynamically, - uses the standard `blockquote` block for rendering transcriptions, - Completely change the controls of the component on mobile to make it more reactive and usable. Specifically by making the navigation and configuration controls use the `Dropdown` component when on mobile, - The transcription visuals are now divided in three main steps: listening step to add the "AI is listening..." text, delta step where the transcription bits are added to the current paragraph, and the completed step which happens on longer breaks to create a new paragraph. As for the refactoring: - Removal of all the embedded states, keeping them internal to the component and using standard browser API's to observe changes (i.e. the `MutationObserver` to notify changes on the summary), - The component now relies on the descendents to apply changes during the transcription process, getting rid of the ids, - Splitting of the `VADAudioRecorder` into separate classes: `AudioProcessor` and `RealtimeClient`. Performing audio recording, and WebSocket operations respectively, - Making the audio processing, and websocket operation rely on singletons to avoid issues when the editor has to be reloaded in case of synchronisation issues, - The audio processing was also simplified, and merged with the `PCM16AudioProcessor` using two new events: "vad" for client voice detection, and "audio" for sending the regular audio information. The buffer size was tweaked from 6000 to 2400, to prevent early cut-off of the audio by the server_vad. All the pre-filtering of the audio was also removed which improves the overall quality of the transcript. task-5153836
This update changes the name of the demo company within the Odoo system to align with requirements for validating Mexican CFDI (Comprobante Fiscal Digital) and XML documents. This ensures accurate tax reporting and compliance within the Odoo platform. The change was made as part of a standard improvement process.
Original PR description
Update the demo company name so we can validate CFDI's and XML target: 19.0 task-5239031 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239323
This update enhances the demo data within the Odoo Enterprise system to facilitate thorough testing of Mexican payroll features, specifically CFDI validation and the new 'CFDI batch generation' functionality. A realistic working schedule, mirroring common practices in Mexican companies, has been incorporated to improve the accuracy of testing and validation.
Original PR description
Update the DEMO DATA so we can validate CFDI's and XML for all the PAC's and to test the new "CFDI batch generation" feature. Create a new working schedule, this schedule it's the most used in MX companies. target: 19.0 task-5239031 Forward-Port-Of: odoo/enterprise#100557
This update enhances the synchronization of product data within the Point of Sale module. Specifically, the system now uses unique identifiers to link products more reliably, and test data has been improved to better represent product categories. This ensures more accurate and consistent product information across the POS system.
Original PR description
In this commit: --- - Improved `sync_from_ui` function to support record UUID-based relational mapping. - Added `pos_categ_ids` field in product data for better category linkage in tests. task-5225193 Related PR: - https://github.com/odoo/enterprise/pull/98849 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241500 Forward-Port-Of: odoo/odoo#234474
This update adds specific account tags for Ireland's accounting standards. These tags are used in new financial reporting tools, ensuring accurate and compliant reporting for Irish businesses using Odoo. This change aligns with local accounting regulations.
Original PR description
Added dedicated account tags for ireland CoA. And set these tags to corresponding Irish and default accounts. These tags are used for computation in new PL and BS tags reports. Related Enterprise PR: https://github.com/odoo/enterprise/pull/91903 Task: 4978415 Forward-Port-Of: odoo/odoo#222186
This pull request enhances the user experience of the Odoo website builder by refining the visual design and usability. Specifically, it addresses issues with column alignment, improves image placement options, and adds subtle UI adjustments for better clarity and accessibility.
Original PR description
*: html_editor, website, website_forum This commit improves the UI and UX of the website builder. - Replace the trash icon with a cross icon for removing a card. - Add tooltips to several options (show header, scroll down button colors). - Force the highlight dropdown background to stay light in dark mode for better visibility. - Slow down the text animation on tooltips below the text area when creating a new forum post. - Center the label of the "file upload" field in forms. - Add more spacing between "unlink" and "advanced options" in the link popover. task-5353509 Forward-Port-Of: odoo/odoo#239226
Resolved issues and error corrections
This update adjusts the size of the QR code displayed to customers in Odoo Point of Sale. The previous QR code was too small, making it difficult to scan. This change improves the customer experience and ensures easier order processing.
Original PR description
**Description of the issue/feature this PR addresses:** QR code generated for customer display in Odoo POS is considered too small, therefore need size adjustment for enhanced visibility and user experience. Sizing is adjusted to be more uniformed with the backend popup. task-[5262218](https://www.odoo.com/odoo/project.task/5262218) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237684
This update fixes a visual issue in the email interface where the unread message separator would overlap with the highlight animation when navigating to new messages. The change restores the correct spacing to ensure the separator is always visible, providing a cleaner and more consistent user experience. This improves the overall readability of the email inbox.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- In saas-18.2, the unread message separator can visually overlap with the message jump/highlight…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- In saas-18.2, the unread message separator can visually overlap with the message jump/highlight animation when navigating to unread messages. This issue was not present in 18.0 and results from reduced vertical spacing between the unread separator and the first unread message. **Current behavior before PR:** ---------------------------------------------- - Clicking the “X new messages” banner triggers a jump highlight animation - The highlighted message overlaps the unread red separator line - The separator becomes partially or fully obscured during the animation **Desired behavior after PR is merged:** ---------------------------------------------- - The unread separator remains clearly visible during message jump/highlight - No overlap occurs between the separator and the highlighted message - Highlight animation behavior remains unchanged - Visual behavior matches the stable experience observed in 18.0 This PR restores sufficient vertical spacing for the unread separator line, preventing overlap without altering message animation or interaction logic. Task-5420965 I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241294
This update resolves a technical issue where validation errors in the Point of Sale (POS) system weren't being properly communicated. The fix ensures that errors detected during validation are correctly propagated, preventing the system from incorrectly proceeding without addressing potential problems. This improves the reliability of POS transactions.
Original PR description
This PR is related to https://github.com/odoo/enterprise/pull/101365. In the above PR, a l10n test fails because an error is not correctly propagated by the method overriding `finalizeValidation`. In fact, the method `OrderPaymentValidation.shouldHideValidationBehindFeedbackScreen` requires the return value of `finalizeValidation` to determine whether an error occurred or not. https://github.com/odoo/odoo/blob/9e04aadb83d482d05fc2fa66fa3c3bebb6ac1528/addons/point_of_sale/static/src/app/utils/order_payment_validation.js#L96-L99 In the methods overriding `finalizeValidation`, if the return value is not propagated, the potential error is lost and the `shouldHideValidationBehindFeedbackScreen` will attempt to move onto the next screen anyway. (related to) opw-5171035 Forward-Port-Of: odoo/odoo#239448
Previously, out-of-stock messages on the website were rendered as a single line, causing them to overflow and look unprofessional. This update fixes this by ensuring line breaks are preserved, allowing the message to wrap naturally and display correctly within the product badge. This improves the user experience and visual consistency.
Original PR description
- Before saas-18.4, the [out-of-stock](https://github.com/odoo/odoo/blob/saas-18.3/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml#L8) message was rendered as…
- Before saas-18.4, the [out-of-stock](https://github.com/odoo/odoo/blob/saas-18.3/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml#L8) message was rendered as plain text without any layout-specific classes, allowing the message to wrap naturally. **Reference of version saas-18.3** <img width="1920" height="768" alt="2025-12-16_18-53" src="https://github.com/user-attachments/assets/d7670fa4-6808-40d7-9bad-768d0637f366" /> - From saas-18.4, the [out-of-stock](https://github.com/odoo/odoo/blob/saas-18.4/addons/website_sale_stock/static/src/xml/website_sale_stock_product_availability.xml#L13-L16) message is rendered using `t-out`, which outputs plain text and collapses line breaks, causing the message to appear on a single line and overflow when used with `d-inline-flex`. See screenshots in the PR description (Before fix). <img width="1920" height="672" alt="2025-12-16_14-28" src="https://github.com/user-attachments/assets/927080cd-f2b0-45cd-ae0a-2917699c05f6" /> - Updated the layout to replace `d-inline-flex` with `d-flex` and apply `text-break` on the message container so long and dynamic texts wrap correctly inside the badge. See screenshots in the PR description (After fix). <img width="1918" height="682" alt="2025-12-16_14-31" src="https://github.com/user-attachments/assets/2cafdc61-e494-468a-9d41-08ab3c83b041" /> opw-5274850 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#240235
This update simplifies the process for restaurant staff when setting up tables. Previously, users had to specify the number of guests each time a preset was activated. Now, the system prompts users to select the number of guests only when a table is first opened with a guest preset.
Original PR description
Before, when a preset with guests option was activated, it asked user to choose the number of guest to the first kitchen sending. Now, we ask user, if the option is activated, when the table is opening for the first time. task: 5431510 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240964
This update fixes a problem where reward lines weren't appearing correctly in restaurant orders when switching between the POS and the backend. The fix ensures reward lines are properly created and maintained, preventing them from disappearing after switching between systems. This improves the accuracy of order totals and customer rewards.
Original PR description
pos*: point_of_sale, pos_restaurant_loyalty Steps to reproduce: - Open a table in the Restaurant UI. - Click the Course button. - Add products that trigger a reward line creation. Issues: - The reward line is not visible in the order. - After switching to the backend and returning to the POS, no order lines are visible for that order. Fixes: - Ensure the reward line is created within the proper course. - Prevent deletion of the reward line when switching between backend and POS. Task: 5215920 Forward-Port-Of: odoo/odoo#241007 Forward-Port-Of: odoo/odoo#233919
This update corrects a minor formatting issue in the HR and HR Holidays documentation. The original documentation used section underlines that were too short, causing a warning during the documentation build process. This fix ensures the documentation is properly formatted and consistent, improving the overall user experience.
Original PR description
This pull request fixes improperly formatted reStructuredText section titles in the hr module documentation. The original MD file used a section underline that were shorter than the title text, which caused docutils to raise this warning: (WARNING/2) Title underline too short. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236908
This update allows accountants to archive reports, streamlining their workflow and reducing clutter. The change was necessary because a standard accountant user lacked the permissions to modify menu items, leading to an access restriction. This fix ensures accountants can manage reports effectively without needing administrative privileges.
Original PR description
As a simple accountant without sysadmin rights, archive a report. A user access is raised because the user doesn't have access to update menuitems. Forward-Port-Of: odoo/enterprise#102276
This update corrects a bug in the Manufacturing app where user-provided serial numbers were being overwritten by a default serial number. Now, when a list of serial numbers is entered, it's correctly used, ensuring accurate tracking of products with unique serials. This improves the reliability of production orders.
Original PR description
### Context: In the Manufacturing app, users can create Manufacturing Orders to create multiple products while assigning a unique serial number to each. Users can either generate a list of serial…
### Context:
In the Manufacturing app, users can create Manufacturing Orders to
create multiple products while assigning a unique serial number to each.
Users can either generate a list of serial numbers starting from a
first serial number, or provide a list of serial numbers themselves.
### Issue:
When providing a list of serial numbers without modifying the first
serial number field (`mrp.production.serials.lot_name`), the inputted
list is not used. Instead, another list starting with the unmodified
`lot_name` is generated and used.
### Cause:
In the `MrpProductionSerials.action_apply` method, the serial numbers
are updated if the first serial number field (`self.lot_name` in the
following code snippet) is left unchanged. This behavior overwrites
the list of serial numbers provided by the user.
https://github.com/odoo/odoo/blob/ac6960dc553088894e688bcc0f4a49245aa02d6c/addons/mrp/wizard/mrp_production_serial_numbers.py#L63-L67
### Steps to reproduce:
1. Install *Manufacturing* (`mrp`)
2. In Settings > Inventory, toggle *Lots & Serial Numbers*
3. Create a product tracked *By Unique Serial Number*
4. Create a Bill of Materials for the product
- The BoM is required but its content is not relevant.
Adding a single component with a quantity of one is enough.
5. Update the quantity of the component to be able to produce two products.
6. In *Manufacturing*, create a new *Manufacturing Order*.
- Select the product and set the quantity to 2, then *Confirm*
7. Click *Generate Serial* or *Produce All*
8. **Do not** modify the *First SN* field, but write two serial numbers
(one per line) in the field below, then click *Apply*.
9. Click the *Serial Numbers (2)* smart button. The serial numbers we
used in step 8 were overwritten by the default *First SN* and its following SN.
### Solution:
This commit addresses the second bug described in https://github.com/odoo/odoo/commit/20158a115ef3dfb9fe2dd5103d3bed7e87e37940 without ever renaming
the serial numbers used for the MO. Now, the `product_id.next_serial`
matches a serial number from the list of provided/generated serial numbers.
The list of serial numbers is sorted to correctly handle cases such as:
```
First SN (self.lot_name) = '0000001'
self.serial_numbers = ['0000003', '0000002', '0000001']
```
In this scenario, we expect the *First SN* of the next MO to start at '0000004'.
The `else` clause of the condition was removed, as it would only be executed
if the `stock.sequence_production_lots` were removed. In that case,
`next_by_code('stock.lot.serial')` would return `False`, preventing
`lot_name` (or `next_serial`) from being updated correctly.
### Reason for second commit
The issue fixed by the first commit was replicated by https://github.com/odoo/odoo/commit/2548fd8d7f3b53a62089ac9122bd17524500ea1a in the subcontracting module (`mrp_subcontracting`).
The first commit fixes the issue in the Manufacturing app (`mrp`), while the second commit fixes the issue in the subcontracting module (`mrp_subcontracting`). The fix and the test are similar in both commits.
opw-5373745
Forward-Port-Of: odoo/odoo#238678This update fixes a visual issue where warning tooltips appeared incorrectly across the entire payrun status. Now, tooltips only display on the specific stage where a warning exists, providing a clearer and more accurate representation of the payrun's status. This enhances user understanding and reduces potential confusion.
Original PR description
Issue: The warning tooltip appeared on all stages of the payrun, even when the warning existed only in the current stage. Fix: Show the warning tooltip only on the active stage where the warning or error bubble actually exists. Impact: Makes the payrun status bubbles clearer and prevents users from misunderstanding where warnings actually are. task-5406861
This update fixes an issue where search suggestions were hidden behind product categories when using the 'Grid' layout. The fix ensures that search suggestions are always visible and accessible for users, improving the product discovery experience. This was caused by a conflict in how the grid layout managed z-index values.
Original PR description
Steps to reproduce: =================== - Add a product categories block with a search bar in the inner content of the block, like "s_product_list". - Drag a "Search" snippet inside of the block in…
Steps to reproduce: =================== - Add a product categories block with a search bar in the inner content of the block, like "s_product_list". - Drag a "Search" snippet inside of the block in top of products categories - Change the layout to "Grid" & Save. - Type in the search bar to trigger autocomplete suggestions. -> The suggestions appear behind the product categories and are not visible. Cause: ====== When a searchbar snippet is placed inside a section using grid mode, the autocomplete dropdown was hidden behind sibling grid items. This occurred because the grid layout applies inline z-index to each column (via `_placeColumns` `in grid_layout_utils.js` (See [1])), creating stacking contexts that trapped the dropdown. So once you change to grid mode layout `_toggleGridMode` function will be triggered which will call `_placeColumns` that will assign z-index; (See [2]) Solution: ========= Override the inline z-index on grid items containing a searchbar [1]: https://github.com/odoo/odoo/blob/d4411c27b469e5dcc526b5b1f8ea4498f2b08567/addons/web_editor/static/src/js/common/grid_layout_utils.js#L225 [2]: https://github.com/odoo/odoo/blob/d4411c27b469e5dcc526b5b1f8ea4498f2b08567/addons/web_editor/static/src/js/common/grid_layout_utils.js#L138 opw-5392011 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241478 Forward-Port-Of: odoo/odoo#239607
This update fixes a bug where forum images set to specific sizes (50% or 25%) weren't being saved correctly. The system was stripping out inline style attributes, preventing the desired image size from being applied. This change disables the use of inline styles for image sizing in forum posts, ensuring images are displayed as intended.
Original PR description
Problem: When creating a new forum post with an image set to "50%" or "25%" size, the post is saved with the original image size instead of the selected one. Cause: The `Post.content` field has `strip_style=True`, which removes any inline `style` attributes before saving. Since image size ratios were applied using `style="width: 50%"`, the width information was lost. Solution: Disable image size options that depend on inline `style` attributes, as they cannot be preserved when saving forum posts. Steps to reproduce: 1. Go to Forum. 2. Create a new post. 3. Add an image and set its size to 50% or 25%. 4. Save the post — the image appears with its original size. opw-5173917 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240701 Forward-Port-Of: odoo/odoo#234354
This update resolves an issue where users were unable to set invalid default values for date fields in partner records. The fix prevents the system from throwing an error when attempting to assign incorrect data types, ensuring data integrity and a smoother user experience. This improves stability and reduces potential data entry problems.
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 an issue where payslips were not correctly displaying currency symbols. A small, hidden field was added to the payslip form to ensure the correct currency is associated with monetary values, leading to accurate reporting and financial data presentation.
Original PR description
The properties widget relies on the presence of the currency field in the view. Add an invisible currency_id field to the payslip form to properly display monetary symbols. task-5357836 Forward-Port-Of: odoo/enterprise#102896
This update fixes a discrepancy in the tax tag report, specifically the 'P.P. 30 – Less sales subject to 0% tax rate' line. The previous version removed the negative sign, leading to incorrect reporting. This change restores the correct sign for accurate tax calculations.
Original PR description
Since v19.0, the sign was removed from tax tags. This caused the 'P.P. 30 – Less sales subject to 0% tax rate' line to have an incorrect sign. This commit adds a negative sign directly in the formula to restore the correct behavior. task-5448506 Forward-Port-Of: odoo/odoo#241596
This update resolves an issue where batch and wave names in the stock_picking_batch module were incorrectly generating extra slashes. The fix removes a redundant slash insertion during name creation, ensuring names are clean and consistent. This prevents potential confusion and errors when managing batch transfers.
Original PR description
Issue before this commit: ========================= The batch and wave names were generated with an extra '/' before the sequence number. Example: `BATCH/WH/OUT//00001`. Steps to Reproduce:…
Issue before this commit: ========================= The batch and wave names were generated with an extra '/' before the sequence number. Example: `BATCH/WH/OUT//00001`. Steps to Reproduce: ========================= - Install the stock_picking_batch module. - Go to Operations → Batch Transfers. - Observe existing batch names containing an extra /. Cause of the issue: ========================= In this [PR](https://github.com/odoo/odoo/pull/190305), the 'sequence_code' field was changed to be 'related' to 'sequence_id.prefix', which already includes the warehouse and operation parts defaults(e.g., WH/OUT/). However, in the _prepare_name method, an additional / was still appended after picking_type.sequence_code, leading to the duplicate slash in the name. With This Commit: ========================= The redundant '/' insertion in _prepare_name has been removed. Since picking_type.sequence_code already defines the separator, this change ensures that batch and wave names are generated correctly and remain clean.