Daily updates from Odoo
Navigate
Branch
Tuesday, December 30, 2025
87 changes
25 changes
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.
12 changes
New functionality added to Odoo
This update introduces new Profit & Loss and Balance Sheet reports that utilize account tags instead of traditional account codes. This change provides more granular reporting capabilities, though users will now need to manually enable these reports within each report configuration. This improves reporting accuracy for Irish businesses.
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 introduces dedicated account tags specifically for Ireland's accounting standards. These tags are linked to both Irish and standard accounts, enabling improved financial reporting through new Profit & Loss and Balance Sheet tag reports. This enhancement supports accurate financial analysis within the Odoo system for Irish businesses.
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 update adds helper functions to manage order slots within the Point of Sale system. These functions will be used during training tours to demonstrate how to schedule orders with specific time slots. This enhancement improves the clarity and usability of the slot selection process for our sales teams.
Original PR description
Add utils function `selectSlotDays` & `selectPresetTimingSlotIndex` to select the nth day and nth timing slot in the slot selection dialog. These functions will be used in POS tours to manage orders with slots. enterprise PR: https://github.com/odoo/enterprise/pull/95136 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233920
This update adjusts payroll rule parameters to reflect changes in US Payroll values for the 2026 tax year. Ensuring these parameters are current is crucial for accurate salary calculations and maintaining compliance with US tax regulations. This update addresses a necessary improvement to the system.
Original PR description
Purpose: Certain US Payroll values changes yearly. The payroll rule parameters must be updated for accurate salary calculation for 2026 for compliance. task-5409739 Forward-Port-Of: odoo/enterprise#102759 Forward-Port-Of: odoo/enterprise#102711
Resolved issues and error corrections
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, ensuring the separator remains visible and the animation functions as expected, providing a consistent user experience.
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 fixes an issue where multiple order lines were incorrectly refunded when a user initiated a refund. Now, only the selected line is refunded, and deleting a refund order correctly restores the ticket screen. This ensures accurate and reliable refund processing within the POS system.
Original PR description
Steps to reproduce: - In POS, select a paid order in the ticket screen with multiple lines. - Select the first line, choose a quantity to refund, and click Refund. - Return to the ticket screen, select the same paid order again. - Select another line and quantity, and click Refund. Issue: - In the second refund, all order lines were being refunded, even though only one line was selected. - After deleting a refund order, the ticket screen still showed messages like "Refunding x quantities in xyz order." Fix: - Only the selected lines are refunded. - Deleting a refund order restores the state of the linked order correctly. Task-5095578 Forward-Port-Of: odoo/odoo#241347 Forward-Port-Of: odoo/odoo#227937
This update fixes a problem where reward lines weren't appearing correctly in Restaurant POS orders. The fix ensures reward lines are properly created and persist across transitions between the POS and the backend, improving order accuracy and customer rewards tracking. This impacts users of the Restaurant and Restaurant Loyalty modules.
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 technical error that occurred when duplicating Odoo databases. The change ensures the system handles recordsets larger than one, preventing a 'Expected singleton' error. This improves database stability and reliability during duplication processes.
Original PR description
These two computes assume a recordset of size 1. When duplicating databases, the recordset for this method might be more than 1, causing a "Expected singleton" traceback. See opw-5226545 (and linked TOTD thread)
This update resolves an issue where the 'Signed Contract' button in the HR module led to an empty employee view. The fix corrects a data retrieval error, ensuring the button now accurately displays the employee associated with the signed contract, regardless of how the employee was created. This improves the user experience and data accuracy.
Original PR description
Version- 18.4 ### Issue: Clicking the signed contract smart button leads to empty employee ### Steps to reproduce: - Generate an offer for the applicant - Fully sign the contract - Click on the smart button Signed Contract which will lead you to empty employe ### Cause: The action tries to return the employee id of the current contract by returning self.employee_id.id which will give False Instead of that it should be returned as self.applicant_id.employee_id.id ### Fix: Changed self.employee_id.id to self.applicant_id.employee_id.id ### Impact: Now the smart button will return the view of actual employee instead of the view to create a new employee Task-5364350
This update fixes an issue where part-time employees' time off calculations incorrectly included company working days, even when those days were holidays. Now, time off is accurately calculated based on the employee's actual work schedule, ensuring correct holiday pay is applied. This improves payroll accuracy and compliance.
Original PR description
Currently when a employee has a diferent working schedule than the company's one (part time employee), when he takes time off the computation includes days where he is not working but is an active working day for the company. That is not considering holidays. e.g. -employee works monday to wednesday -company works monday to friday -there is a holiday on the thursday taking monday to wednesday should count 4 days. added holidays support for this case opw-5082080 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240299 Forward-Port-Of: odoo/odoo#228960
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 ensures a better user experience and improved scanning accuracy for customer orders.
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 enhances the preparation display filters in the Point of Sale module, providing more flexible options for managing order preparation. Specifically, it removes the 'All' option, adds a 'Now' filter for timely orders, and introduces multi-select preset filters for easier selection. These changes streamline the preparation process and improve order management.
Original PR description
- Time filter: * Remove "All" option (now default) * Add "Now" option for unscheduled and next-slot orders * Allow multi-selection - Preset filter: * Add multi-select preset filter * Only shown if related POS configs use presets - Category/Product filter: * Always show pos.category filter (even if no preparation card contains this category) * Move category/product filters below Time and Preset filters task: https://www.odoo.com/odoo/project/1737/tasks/5060221 community PR: https://github.com/odoo/odoo/pull/233920 Forward-Port-Of: odoo/enterprise#95136
15 changes
New functionality added to Odoo
This update introduces new Profit & Loss and Balance Sheet reports that utilize account tags instead of traditional account codes. This change provides more granular reporting capabilities. Users now need to manually enable these new reports within each report configuration.
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#91903
This update adds helper functions to manage order slots within the Point of Sale system. These functions, used in upcoming training tours, allow for more precise control over order scheduling, particularly for managing slots and timing options. This enhancement improves the overall user experience for managing appointments and reservations through POS.
Original PR description
Add utils function `selectSlotDays` & `selectPresetTimingSlotIndex` to select the nth day and nth timing slot in the slot selection dialog. These functions will be used in POS tours to manage orders with slots. enterprise PR: https://github.com/odoo/enterprise/pull/95136 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update incorporates new master data for Brazil, aligning with recent changes to the country's fiscal regulations. These adjustments ensure Odoo continues to accurately reflect Brazilian tax requirements, streamlining financial reporting and compliance for our Brazilian clients. The changes primarily affect tax definitions and reporting templates.
Original PR description
task-4939796 Forward-Port-Of: odoo/odoo#240988
Enhancements to existing features
This update introduces dedicated account tags specifically for Ireland's accounting standards. These tags are linked to both Irish and standard accounts, enabling more accurate reporting in new financial statement analysis tools. This improves the accuracy of financial reporting for Irish businesses using Odoo.
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 update prepares Odoo for Brazil's upcoming shift to a new consumption tax system starting in 2026. Users can control enabling this new system based on their business location and transaction types. The changes adapt existing modules to comply with the new requirements, primarily impacting tax calculations and EDI processes.
Original PR description
2026 marks the start of Brazil's 8-year plan to migrate to a completely new consumption tax system [1]. The new system is meant to be simpler than the old one, but we defer to Avalara for tax…
2026 marks the start of Brazil's 8-year plan to migrate to a completely new consumption tax system [1]. The new system is meant to be simpler than the old one, but we defer to Avalara for tax calculation so we don't really notice it technically. The old and new system have to coexist for the foreseeable future because the rollout happens gradually over many years. Whether the new system has to be enabled depends on the federal state the business is in, the type of transactions they do, and other factors. The user has the option to enable it through the l10n_br_is_icbs Boolean flag on the company, which gates all the new functionality. These changes impact both tax calculation and EDI. This set of modules adapts our existing l10n_br* modules to the new requirements set out by Avalara. We are required to send extra values to their API, and in some cases adapt existing ones. task-4939796 [1] https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp214.htm Forward-Port-Of: odoo/enterprise#102706
This update adjusts payroll rule parameters to reflect changes in US tax regulations for the 2026 tax year. These updates ensure accurate salary calculations and maintain compliance with US payroll requirements. This is a necessary improvement to guarantee correct financial reporting.
Original PR description
Purpose: Certain US Payroll values changes yearly. The payroll rule parameters must be updated for accurate salary calculation for 2026 for compliance. task-5409739 Forward-Port-Of: odoo/enterprise#102759 Forward-Port-Of: odoo/enterprise#102711
Resolved issues and error corrections
This update fixes an issue where multiple order lines were incorrectly refunded when a user initiated a refund. Now, only the selected line is refunded, and deleting a refund order properly restores the ticket screen. This ensures accurate refund processing and a better user experience for Point of Sale transactions.
Original PR description
Steps to reproduce: - In POS, select a paid order in the ticket screen with multiple lines. - Select the first line, choose a quantity to refund, and click Refund. - Return to the ticket screen, select the same paid order again. - Select another line and quantity, and click Refund. Issue: - In the second refund, all order lines were being refunded, even though only one line was selected. - After deleting a refund order, the ticket screen still showed messages like "Refunding x quantities in xyz order." Fix: - Only the selected lines are refunded. - Deleting a refund order restores the state of the linked order correctly. Task-5095578 Forward-Port-Of: odoo/odoo#241347 Forward-Port-Of: odoo/odoo#227937
This update fixes a visual issue in the email interface where the unread message separator would overlap with the highlight animation. By increasing the spacing between these elements, the separator is now clearly visible during message navigation, ensuring a consistent and professional user experience.
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 enhances the preparation display filters in the Point of Sale module, providing more flexible options for managing order preparation. Specifically, it removes the 'All' time filter option, adds a 'Now' option for real-time orders, and introduces multi-select capabilities. These changes improve the user experience and allow for more efficient order management.
Original PR description
- Time filter: * Remove "All" option (now default) * Add "Now" option for unscheduled and next-slot orders * Allow multi-selection - Preset filter: * Add multi-select preset filter * Only shown if related POS configs use presets - Category/Product filter: * Always show pos.category filter (even if no preparation card contains this category) * Move category/product filters below Time and Preset filters task: https://www.odoo.com/odoo/project/1737/tasks/5060221 community PR: https://github.com/odoo/odoo/pull/233920
This update fixes a technical error that prevented the system from correctly updating SSL certificate status information. The issue stemmed from incorrect timezone handling during data conversion, which caused a system error. This change ensures certificate updates run smoothly without interruption.
Original PR description
Currently an error occurs when the `iot/box/update_certificate_status` controller tries to write `ssl_certificate_end_date` as `cert.not_valid_after_utc`. Error: `ValueError: unconverted data remains: +00:00` This is because when we convert `cert.not_valid_after_utc` to a string, it will convert the UTC date as ` "2026-03-08 13:06:39+00:00"` and while the system converts this string date with +00:00, it will throw an error. This commit fixes the issue by using a `timezone-naive` value derived from `cert.not_valid_after_utc`. Applying `replace(tzinfo=None)` removes the `+00:00` timezone information and converts the datetime to a `timezone-naive` object. sentry-7016111455
This update fixes a bug that caused calls to unexpectedly end when users joined from multiple browser tabs. The change ensures stability during multi-tab scenarios, preventing crashes and improving the user experience when joining calls from different windows.
Original PR description
**Steps to reproduce:** - Start a meeting with user A - Share the invitation link with user B - Login with user B and join the call - Open another browser tab/window with the same user B - Join the same call in that tab using the invitation link - The call ends for that user as the RTC session is terminated - **_TAB1_**: join the call again - **_TAB2_**: error **Current behavior before PR:** When the same user joined the same call from another tab or during RTC renegotiation, selfSession could temporarily be undefined. **Desired behavior after PR is merged:** This PR ensures that no crash happens when dealing with the RTC Session in a `multi-tab` scenario. task-[5263097](https://www.odoo.com/odoo/project/1519/tasks/5263097) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240881
This update fixes an issue where part-time employee time off calculations incorrectly included company working days, even on holidays. Now, time off is accurately calculated based on the employee's actual working schedule, ensuring correct holiday deductions for part-time staff. This improves payroll accuracy and compliance.
Original PR description
Currently when a employee has a diferent working schedule than the company's one (part time employee), when he takes time off the computation includes days where he is not working but is an active working day for the company. That is not considering holidays. e.g. -employee works monday to wednesday -company works monday to friday -there is a holiday on the thursday taking monday to wednesday should count 4 days. added holidays support for this case opw-5082080 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240299 Forward-Port-Of: odoo/odoo#228960
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 ensures better visibility and a smoother customer experience.
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 resolves an issue where copying and pasting content from the HtmlViewer resulted in a loss of plain text formatting. The fix restores the ability to paste text directly into other applications, ensuring users can accurately copy and paste content as intended. This improves the usability of the knowledge management feature.
Original PR description
Since [1] when `vnd.odoo.odoo-editor` was added to the `HtmlViewer` clipboard, the `text/plain` mimetype was lost. This commit restores the plain text version of the clipboard. Steps to reproduce: - In knowledge, lock a page - Select some content - Copy - Paste into a plain text editor => No content was pasted [1]: https://github.com/odoo/odoo/commit/62a7c50b434e3f47ad58e20e96970cbd90b979b6 task-5449435
This update fixes an issue where combo prices were incorrectly recalculated after changing the order's preset (e.g., from dine-in to delivery). The fix ensures that extra items within a combo are accurately priced based on the combo's base price, preventing unexpected price adjustments.
Original PR description
**Problem:** When ordering a combo product, you can order more products than the combo requires, which will the add *base_price* to the combo price. The problem is that when changing the preset, like…
**Problem:** When ordering a combo product, you can order more products than the combo requires, which will the add *base_price* to the combo price. The problem is that when changing the preset, like going from eat in to delivery, the pricelist is reconfigured, and it does not take the extra products from the combo into account. This means that the price will go back to the combo's price without the extra products. **Steps to reproduce:** - Have a combo that can take on multiple free products and has a limit above this free product number - Order more than the free quantity - Change the preset (from eat in to delivery) - The price is recomputed without taking the extra products into account **Why the fix:** The extra articles were not accounted for when changing the pricelist, meaning they would end up free and the price would change. We now make a separation between the free products (that are from the combo) and the extra products. The extra products cost the *base_price* of said combo. To do that, we need to get the extra lines from the combo, which are the products that are not free in the case where there are more products selected in the combo than free products defined in the definition of the combo. To make that happen, we add the non free lines to the extra lines list once we have at least as many free products as defined in the combo definition. In the case where the quantity of a product is greater than the number of free items, the lines are automatically split. Meaning if we have a combo with 2 free items but we order 3, we will have a line with a quantity of 2 and another line with a quantity of 1. In that case, the first line will be free, but the second line will be an extra. This logic is implemented here https://github.com/odoo/odoo/blob/0087cc96b2d2190ab107c3d50d3bdd48f7a687e9/addons/point_of_sale/static/src/app/components/popups/combo_configurator_popup/combo_configurator_popup.js#L88-L106 Which is then retrieved here to make the separation in the combo's price https://github.com/odoo/odoo/blob/0087cc96b2d2190ab107c3d50d3bdd48f7a687e9/addons/point_of_sale/static/src/app/services/pos_store.js#L879 opw-4885574
5 changes
New functionality added to Odoo
This update introduces new Profit & Loss and Balance Sheet reports for Irish businesses, leveraging account tags for more accurate reporting. Previously, reports were based on account codes, which are now inactive. Users will need to manually enable these new tag-based 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#91903
Enhancements to existing features
This update prepares Odoo for Brazil's ongoing shift to a new consumption tax system, starting in 2026. Businesses can enable this new system based on their location and transaction types, and it impacts both tax calculations and electronic data interchange. The changes adapt existing modules to comply with Avalara's requirements.
Original PR description
2026 marks the start of Brazil's 8-year plan to migrate to a completely new consumption tax system [1]. The new system is meant to be simpler than the old one, but we defer to Avalara for tax…
2026 marks the start of Brazil's 8-year plan to migrate to a completely new consumption tax system [1]. The new system is meant to be simpler than the old one, but we defer to Avalara for tax calculation so we don't really notice it technically. The old and new system have to coexist for the foreseeable future because the rollout happens gradually over many years. Whether the new system has to be enabled depends on the federal state the business is in, the type of transactions they do, and other factors. The user has the option to enable it through the l10n_br_is_icbs Boolean flag on the company, which gates all the new functionality. These changes impact both tax calculation and EDI. This set of modules adapts our existing l10n_br* modules to the new requirements set out by Avalara. We are required to send extra values to their API, and in some cases adapt existing ones. task-4939796 [1] https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp214.htm Forward-Port-Of: odoo/enterprise#102706
This update adjusts payroll rule parameters to reflect changes in US Payroll regulations for the year 2026. Updating these parameters ensures accurate salary calculations and maintains compliance with current tax laws. This is a necessary improvement to support correct financial reporting.
Original PR description
Purpose: Certain US Payroll values changes yearly. The payroll rule parameters must be updated for accurate salary calculation for 2026 for compliance. task-5409739 Forward-Port-Of: odoo/enterprise#102759 Forward-Port-Of: odoo/enterprise#102711
Resolved issues and error corrections
This update fixes a potential issue where payroll calculations in the US could incorrectly show employees owing money to the state. The change ensures that taxable income defaults to zero when state deductions exceed gross income, preventing negative values on payslips and ensuring accurate tax reporting.
Original PR description
This commit simply defaults the computed taxable income amount to 0 in case the state deductions are greater than their gross income. Otherwise our payslips would imply that these employees are owed money by the state opw-5137280 Forward-Port-Of: odoo/enterprise#98114
This update ensures that product descriptions are correctly updated in our UrbanPiper integration when the menu is re-synchronized. Previously, changes to product descriptions weren't reflected in UrbanPiper. This fix improves data consistency and accuracy between our system and UrbanPiper, streamlining the menu update process.
Original PR description
Before this commit: --- When we sync the menu with the product description and later update the product description, re-syncing the menu does not update the product description in UrbanPiper. After this commit: --- This fix ensures that any change in the product description is properly sent to UrbanPiper during menu synchronization. task-5439271 Forward-Port-Of: odoo/enterprise#102846
1 change
Resolved issues and error corrections
This fixes a website issue where dynamic snippets could trigger an Odoo Client Error during page loading. Website visitors and editors should now see snippets load more reliably when the size listener is unavailable.
Original PR description
DynamicSnippet._setupSizeChangedManagement() the problem occurs if removeSizeListener() is not defined and you are trying to call it. This would result in an Odoo Client Error Description of the issue/feature this PR addresses: BUG Current behavior before PR: Odoo Client Error Desired behavior after PR is merged: No Error on WEbsite Snippet Load --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
10 changes
Enhancements to existing features
This update standardizes the refresh period for return data, moving from a fiscal year-based approach to a consistent one-year past and one-year future window. This ensures predictable and reliable updates, eliminating confusion and inconsistencies in the data reported.
Original PR description
Previously, the minimum date used for the refresh period in `_try_create_returns_for_fiscal_year` was the fiscal year itself, which caused confusion. Depending on whether we were at the beginning or the end of the fiscal year, the amount of past data being updated was inconsistent. The new behavior refreshes a fixed window of one year in the past and one year in the future, making the update range predictable and consistent. task-5388423 Forward-Port-Of: odoo/enterprise#102945 Forward-Port-Of: odoo/enterprise#101484
This update adjusts the minimum wage calculation for Odoo's Mexico payroll module to comply with a recent increase announced by CONASAMI. The ‘Mexico: Daily Minimum Wage’ parameter has been updated to 315.04, ensuring accurate payroll processing effective January 1, 2026. This change aligns with legal requirements and maintains payroll accuracy.
Original PR description
According to CONASAMI: https://www.gob.mx/conasami/articulos/incremento-a-los-salarios-minimos-para-2026?idiom=es the minimum wage will increase effective January 1, 2026. It is necessary to update the “Mexico: Daily Minimum Wage” parameter to reflect the new value: 315.04 target: 19.0 task-5412717 Forward-Port-Of: odoo/enterprise#102922
This update enhances the self-order point-of-sale experience by adding a filter to easily select items available for self-service. It also streamlines the slot selection process and removes out-of-stock products from the selection page, leading to a smoother and more user-friendly ordering process.
Original PR description
Before this commit : 1. In the presets list view, the "available in self" setting was not available as a filter. 2. In the self, when ordering a preset with slot management enabled, the menu at the end of the order asking to choose the slot was not user-friendly (select). 3. In the self, when products were not available, they were always displayed with an “out of stock” notice and reduced opacity. After this commit : 1. "Available in self" filter is now available in the presets list view 2. Now the menu is more user-friendly with two versions. One for mobile and small devices with horizontal scroll for days and vertical scroll for hour slot. The second version is for medium and big devices, it displays a simple view to see slots day per day. 3. Now, when a product is not available, it is not shown in the products selection page. task-id: 5130687 community pr: https://github.com/odoo/odoo/pull/229881
This update enhances the user experience within the Odoo Enterprise softphone by streamlining the process when no recent calls are found in the history tab. Instead of directing users to a generic contacts list, the system now automatically directs them to the relevant contacts tab within the softphone, making it easier to find and manage calls.
Original PR description
If no recent calls are found when searching in the History tab, then it is more convenient to be sent to the Contacts tab of the softphone instead of the Contacts list in the backend. task-5443726
This update enhances the AI-powered audio transcription feature with a redesigned user interface and significant backend improvements. The changes include a more responsive mobile experience, a streamlined transcription process, and optimized audio processing for better accuracy and performance. This results in a more reliable and user-friendly transcription experience.
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 Forward-Port-Of: odoo/enterprise#102803
Resolved issues and error corrections
This update ensures that all work entries are consistently set to 'draft' status when the 'action_set_to_draft' function is used. Previously, this function didn't always work correctly, leading to inconsistencies in the system. This change improves data accuracy and streamlines payroll processing.
Original PR description
Problem ---------- the `action_set_to_draft` should set any work entry to draft regardless of the situation. Solution ---------- If only the state is write to draft, let the whole vals be written task-5410512 Forward-Port-Of: odoo/enterprise#102944 Forward-Port-Of: odoo/enterprise#101891
This update resolves an issue where employees couldn't use the self-edit feature for attendance records when initially creating them. It now allows employees to modify their attendance, with an added safeguard: overtime adjustments are permitted only if the overtime is approved and approved by a manager. This ensures accurate time tracking and approval workflows.
Original PR description
Description of the issue/feature this PR addresses: . Self edit for attendance was recently introduced, but it did not work in the normal case of creating a new attendance record Current behavior before PR: . Self edit for attendance not work in the normal case of creating a new attendance record Desired behavior after PR is merged: . Self edit for attendance works in the normal case of creating a new attendance record . Add new behavior so that self attendance right should be able to modify his attendances, even if they have overtime, unless this overtime has been approved AND the overtime approval is set as "Approved by Manager" task-5386405
This update enforces customer selection when creating orders in the Ecuadorian (EC) country setting. Previously, orders could be created without a customer, but now the system requires a customer to be selected before an order can be validated, ensuring accurate record-keeping and compliance with Ecuadorian regulations.
Original PR description
Before this commit: --- - Customer was not mandatory for orders when the company's country code is EC. After this commit: --- - Customer selection is now mandatory. - The order cannot be validated unless a customer is set. task-5412361
This update allows accountants to archive reports, streamlining their workflow. Previously, access restrictions prevented them from archiving, leading to a user access error. This change resolves the issue and provides accountants with a new archiving function.
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 resolves an issue with how AI prompts were handled, specifically separating ID and name fields and correctly sending prompt data. It also ensures prompts are consistently retrieved with the rest of the channel data, improving the AI chat experience. The subtitle display issue has also been addressed.
Original PR description
- fix the model to properly separate id and name - remove incorrect "one" relation towards thread - send prompts with the rest of the store data - move field to channel model
7 changes
New functionality added to Odoo
This update reflects changes to Mexican withholding tax rates (ISR) mandated by the latest tax resolution. The update adds a new parameter value to ensure Odoo accurately calculates and reports ISR withholdings for the 2026 fiscal year, aligning with current regulations. This ensures compliance and accurate financial reporting for Mexican businesses using Odoo Enterprise.
Original PR description
According to the Mexican Tax Resolution (Resolución Miscelánea Fiscal 2026: https://dof.gob.mx/2025/SHCP/SHCP_281225_01.pdf), the ISR withholding tax tables applicable for the fiscal year have changed, effective January 1, 2026. It is necessary to add a new parameter value for “Mexico: ISR Table” to reflect the new values. target: 19.0 task: 5448019
This update introduces new Profit & Loss and Balance Sheet reports for Ireland, utilizing account tags instead of traditional account codes. This change simplifies reporting and allows for more granular financial analysis. The previous account code-based reports have been disabled.
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 enhances the onboarding experience for new users of the Live Chat feature. The tour now explicitly opens the Live Chat information panel, ensuring users immediately understand its functionality. This change improves usability and guides users more effectively.
Original PR description
The livechat info panel is no longer opened by default. The tour now opens it explicitly before asserting its content. Related PR: odoo/odoo#238472 Task-5291258
This update adjusts payroll rule parameters to reflect changes in US tax regulations for the 2026 tax year. Ensuring these parameters are current is crucial for accurate salary calculations and maintaining compliance with US payroll laws. This update addresses a necessary improvement to the system.
Original PR description
Purpose: Certain US Payroll values changes yearly. The payroll rule parameters must be updated for accurate salary calculation for 2026 for compliance. task-5409739 Forward-Port-Of: odoo/enterprise#102759 Forward-Port-Of: odoo/enterprise#102711
Resolved issues and error corrections
This update fixes an issue where overtime work entries were incorrectly generated when an overtime ruleset had no 'Pay Extra Hours' rules enabled. Now, work entries are only created for overtime if at least one rule in the ruleset allows for extra pay, ensuring accurate payroll calculations.
Original PR description
## Steps to Reproduce 1. Create a Overtime ruleset with **none** of the rules have "Pay Extra Hours" checked. 2. Assign this ruleset to an employee. 3. Generate attendances that normally produce overtime. 4. It will create work entries based on these attendances. Navigate to work entries in payroll. ## Issue Even when none of the rules are checked as "Pay extra hours", It will still generates overtime work entries. ## Fix Skipped work entries inside `_get_real_attendance_work_entry_vals` if there is no paid rules in a ruleset. task - [5189151](https://www.odoo.com/odoo/project/1251/tasks/5189151)
This update fixes an issue where payslips were not displaying currency symbols correctly. A small, hidden field was added to the payslip form to ensure the correct currency is associated with monetary amounts, improving the accuracy of payroll reporting.
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
This update fixes an issue where Brazilian POS orders weren't correctly displaying their NFC-e sequence number in the backend. The fix adjusts a key method to ensure order names accurately reflect the defined sequence (e.g., POS-1234 instead of POS-00001), aligning with Brazilian tax regulations.
Original PR description
Brazilian order shoud follow the NFC-e sequence defined in the POS config. Steps to reproduce: ------------------- * Setup a POS in Brazil with NFC-e sequence (set the sequence to 1234) * Create a new order in the POS * Validate the order * Check the order name in backend > Observation: The order name is like: POS-00001 instead of POS-1234 Why the fix: ------------ We adapt the method _compute_order_name to get the correct sequence number if the country is Brazil. opw-5243454
8 changes
New functionality added to Odoo
This update introduces e-invoice generation capabilities for Croatia, specifically for submitting invoices through the MojEracun system. A dedicated proxy client handles communication with MojEracun, ensuring compliance with Croatian e-invoice standards and validating the generated invoices against XML schemas. This supports businesses operating in Croatia to meet local e-invoicing regulations.
Original PR description
Adding e-invoice generation base functionality for Croatia. Implemented as an extension of account_edi_ubl_cii, similar to other localisations using such documents. Adding proxy client for MojEracun sevice provider to send invoiced on the eRacun network. Proxy user is entirely separate from the standard Odoo IAP EDI proxy implementation. Adding UBL 2.1 compliant node `cac:SellerContact` to existing node `cac:AccountingSupplierParty` to be used in Croatian e-invoice XLM generation with the new method chain. XSD validation included in the tests on the client side as there is no corresponding Odoo IAP proxy. task-4925745 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This update fixes an issue where scanning invalid GS1 barcodes in Point of Sale could incorrectly load products. Previously, scanning a barcode like '0000' would lead to the first product containing '0' in its barcode being loaded. This change ensures that only valid barcodes correctly identify and add the intended product to the sale.
Original PR description
Before this commit, when GS1 barcode was set in the company settings, scanning an invalid barcode may load a wrong product. For example, if the barcode "0000" was scanned, and it would search for all products that contains "0" in their barcode, and load the first one found. opw-5394561 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where product prices in Point of Sale weren't correctly calculated when using different currency settings. The change ensures standard prices are converted to the PoS currency, preventing incorrect pricelist calculations and ensuring accurate order totals. This improves the reliability of sales transactions.
Original PR description
The standard price of the products were not converted to the currency of the PoS journal, which could lead to issues when creating pricelist items based on the standard price. Steps to reproduce: ------------------- * Change the currency of any PoS journal to a different currency than the company currency. * Create a product with a standard price > 0. * Create a pricelist that uses the standard price as a base price. (e.g. price = standard price * 2) * Add this product to a PoS order > Observation: The price is not correctly computed according to the pricelist, because the standard price was not converted to the PoS currency. Why the fix: ------------ We just make sure to convert the standard price of the products when loading the products in the PoS session the same way as we do it for the list price. opw-5124388
This update addresses a requirement from the Mexican tax authority (SAT) regarding the format of the ‘CuentaPredial’ field in Odoo’s Mexican tax reports. The previous regex was too restrictive, preventing valid account numbers from being processed. This change ensures compliance with SAT regulations and accurate tax reporting.
Original PR description
SAT has declared the restriction [0-9a-zA-Z]{1,150} for CuentaPredial node
Specification: https://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsdThis update resolves an issue that prevented users from creating payslips for contracts without a defined working schedule in the Belgian payroll system. The fix ensures that the system now defaults to the company's standard calendar when a contract lacks a specific schedule, preventing a traceback error. This improves the reliability of payslip generation.
Original PR description
Currently, a traceback occurs when a user tries to create a payslip for a contract that has no working schedule in a Belgian company. **Steps to reproduce this issue:** 1) Install l10n_be_hr_payroll…
Currently, a traceback occurs when a user tries to create a payslip for a contract that has no working schedule in a Belgian company. **Steps to reproduce this issue:** 1) Install l10n_be_hr_payroll and hr_attendance and switch to BE company 2) Create an employee with no working hours. 3) Create a contract for that employee with: - Work entry source as Attendance - No Working Schedule - State should be open/running 4) Click the Payslip smart button to create a new payslip for that contract. 5) A traceback occurs **Error:** ``` ValueError: Expected singleton: resource.calendar() ``` **Cause:** When creating a payslip for a contract with no resource_calendar_id, the method `_get_work_hours_split_half` calls `_get_max_number_of_hours` through self.resource_calendar_id. Since the contract's calendar lacks a resource_calendar_id, this triggers a ValueError in `_get_max_number_of_hours`. https://github.com/odoo/enterprise/blob/193b51ded0dfa46ed75f6c0020f0f5609f4a0f99/l10n_be_hr_payroll/models/hr_contract.py#L472 **Solution:** If the contract or employee does not have a resource_calendar_id, use the default resource_calendar_id from the company instead. opw-5237559
This 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 complete 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
This update resolves an issue where Odoo invoices with discounts generated for Nemhandel couldn't pass validation, preventing them from being sent to customers. The change ensures discounts are correctly accounted for in invoice calculations, allowing for proper transmission of invoices through Nemhandel. This improves the functionality of our integration with Nemhandel.
Original PR description
Before this fix, all the OIOUBL invoices with a discount generated by Odoo would fail the schematron validation, meaning they can't be sent to the customer through Nemhandel. The schematron enforces that the discount is taken into account at the PriceAmount, to keep the rules on lineExtensionAmount working. Also changes the import to understand that it's a discount. opw-5379474 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a compatibility issue preventing older Odoo IoT boxes from running with the newer saas-19.1 database. The PR updates the underlying operating system and Python version, allowing seamless integration with the latest Odoo version. This avoids the need for manual remote fixes or re-flashing of the IoT boxes.
Original PR description
This PR adds 2 migration scripts which allow older iot box images (<= 25_07) to work with databases in saas-19.1 and later. It updates os to debian trixie and installs all of the necessary packages…
This PR adds 2 migration scripts which allow older iot box images (<= 25_07) to work with databases in saas-19.1 and later. It updates os to debian trixie and installs all of the necessary packages to allow working after upgrades or with new databases. The update takes approximately 30 minutes. A warning about the necessity to update is added in this upgrade script: https://github.com/odoo/upgrade/pull/9153 1) Our IoT Boxes which the clients are currently using are running under "Bookworm" os with Python 3.11 with Odoo on it. 2) We have a mecanism which aligns the iot box code to the connected database version using `git checkout` 3) In saas-19.1 Odoo bumped the Python minimal version requirement to 3.12 4) As a result when our iot boxes will do 'git checkout saas-19.1' Odoo will never be able to start anymore 5) When this happens the only way to fix it is either remotely connect to the iot box and run a script like in this PR (remote debug must be activated before upgrading) or flash the iot box with a new image based on Trixie 6) This PR avoids this by updating the current OS to Trixie and the Python version accordingly so that the clients can keep using their iot boxes in saas-19.1 Forward-Port-Of: odoo/odoo#241129
4 changes
Resolved issues and error corrections
This update optimizes how Odoo handles web sockets, particularly under heavy load. By delaying cursor acquisition attempts, the system reduces connection failures and improves overall responsiveness when managing thousands of concurrent users. This enhances the stability and performance of Odoo's messaging capabilities.
Original PR description
Benchmarking with 4k connected clients, 1 message per second. | | Message dispatching | Cursor analysis | |-- |-- | -- | | Before|<img width="600" alt="image" src="https://github.com/user-attachments/assets/f02e7efc-4611-4356-8bef-386ff2b0a7da" />|<img width="600" alt="2_current_implementation__cursor_analysis" src="https://github.com/user-attachments/assets/04dce96e-74a6-4f1b-9918-a6c61913e7c4" />| |After|<img width="600" alt="image" src="https://github.com/user-attachments/assets/a9463484-7f69-4fcb-a248-5692893a8893" />|<img width="600" height="997" alt="8_tweak_delay_both_sleep__cursor_analysis" src="https://github.com/user-attachments/assets/34a2c233-5c36-4597-a55b-cfb89a41efcf" />|
This update fixes a test failure related to the TPAR report. The test now uses current date information, ensuring it runs correctly regardless of the current year and future deployments. This improves the reliability of our reporting processes.
Original PR description
Behavior before:
The TPAR report test used hardcoded dates ('2025-01-01' to '2025-12-31'). When running tests with Faketime or on future deployments, this caused failures because the test did not adapt to the current date.
Behavior after:
The test now uses dynamic dates based on `fields.Date.context_today(self.env.user)`. This ensures the test runs correctly regardless of the current year and avoids issues with hardcoded dates.
Root Cause:
Hardcoded dates in the test conflicted with Faketime, causing the test environment to simulate a future year and fail.
Runbot issue: https://runbot.odoo.com/odoo/runbot.build.error/237547This update resolves an issue preventing older IoT boxes from running with Odoo 19.1 databases. The PR updates the IoT box's operating system and Python version to ensure compatibility, eliminating the need for a full system flash. This allows clients to continue using their existing IoT boxes with the latest Odoo version.
Original PR description
This PR adds 2 migration scripts which allow older iot box images (<= 25_07) to work with databases in saas-19.1 and later. It updates os to debian trixie and installs all of the necessary packages…
This PR adds 2 migration scripts which allow older iot box images (<= 25_07) to work with databases in saas-19.1 and later. It updates os to debian trixie and installs all of the necessary packages to allow working after upgrades or with new databases. The update takes approximately 30 minutes. A warning about the necessity to update is added in this upgrade script: https://github.com/odoo/upgrade/pull/9153 1) Our IoT Boxes which the clients are currently using are running under "Bookworm" os with Python 3.11 with Odoo on it. 2) We have a mecanism which aligns the iot box code to the connected database version using `git checkout` 3) In saas-19.1 Odoo bumped the Python minimal version requirement to 3.12 4) As a result when our iot boxes will do 'git checkout saas-19.1' Odoo will never be able to start anymore 5) When this happens the only way to fix it is either remotely connect to the iot box and run a script like in this PR (remote debug must be activated before upgrading) or flash the iot box with a new image based on Trixie 6) This PR avoids this by updating the current OS to Trixie and the Python version accordingly so that the clients can keep using their iot boxes in saas-19.1
This update fixes a display issue where tax names and invoice labels were shown in English for Vietnamese users. By adding Vietnamese translation columns to the chart template CSV, the system now correctly displays tax labels in Vietnamese, improving the user experience for Vietnamese-speaking businesses.
Original PR description
The `name` and `invoice_label` fields on `account.tax` are translatable fields (translate=True), but the Vietnamese chart template CSV was missing the corresponding translation columns. This caused…
The `name` and `invoice_label` fields on `account.tax` are translatable fields (translate=True), but the Vietnamese chart template CSV was missing the corresponding translation columns. This caused tax names and invoice labels to display in English even when the user's language was set to Vietnamese. By adding the `name@vi_VN` and `invoice_label@vi_VN` columns to the tax template CSV, taxes will now display with proper Vietnamese labels when the chart of accounts is installed for Vietnamese companies, improving the user experience for Vietnamese-speaking users. Technical details: - Added `name@vi_VN` and `invoice_label@vi_VN` columns to the CSV header - Added Vietnamese translations for all tax records in the template - Translations follow Vietnamese tax terminology conventions - The chart template loader automatically processes columns with `@lang` suffix and applies them as translations for translatable fields 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