Daily updates from Odoo
Tuesday, December 9, 2025
105 changes
14 changes
Resolved issues and error corrections
This update simplifies the handling of MPF payments within the Hong Kong accounting module. Previously, separate payments for wages and MPF were registered, creating complexity. Now, MPF accounts are set to be unreconcilable by default, requiring accountants to manually reconcile statements with the government account.
Original PR description
Currently, we register two separate payments for MPF at the same time as we do for the employee's wages. This is not what we want to do; as both are not paid at the same time. MPF is also handled separately, and paid outside of Odoo on the government platform, making the registration of separate payments more complex for not many benefits. Thus, we make these accounts un-reconcilable by default, and will expect accountants to reconcile the statement with the account directly. task-5349299 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238074
This update resolves an issue that previously blocked users from creating new Amazon accounts within a newly created company. The fix ensures the system correctly handles the absence of initial warehouses and stock locations, allowing for seamless account setup.
Original PR description
Currently, an error occurs when user tries to create a new amazon account on a new company. Steps to replicate: - Install `sale_amazon`. - Create a new company and switch to it. - Go to Settings >…
Currently, an error occurs when user tries to create a new amazon account on a new company.
Steps to replicate:
- Install `sale_amazon`.
- Create a new company and switch to it.
- Go to Settings > Amazon account > Try to Create a new account.
Error:
```
File /home/odoo/odoo18/enterprise/sale_amazon/models/amazon_account.py, line 214, in create
'location_id': parent_location_data[0]['view_location_id'][0],
IndexError: list index out of range
```
Cause:
- Whenever a new company is created, it doesnt have any warehouses [1] and amazon stock locations [2].
- This causes the `parent_location_data` to be an empty list and causes error at line [3].
Solution:
- Assigning the `location_id` if the `parent_location_data` exists.
[1]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L206-L210
[2]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L201-L204
[3]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L214
sentry-7086464738
Forward-Port-Of: odoo/enterprise#101465This change prevents distracting audio notifications during Odoo tests. Previously, test runs were disrupted by unexpected sounds from the computer, leading to frustration. This update ensures a cleaner and more reliable testing environment.
Original PR description
When running tests locally, it's really annoying (and sometimes really jarring / surprising) to hear random beeps and boops from your machine, especially when it's an old timey ringtone from voip. Make it stop. Forward-Port-Of: odoo/odoo#238906 Forward-Port-Of: odoo/odoo#238882
This update resolves a bug where a button would disappear when animated and its label was edited. The fix utilizes `textContent` instead of `innerText` to accurately retrieve the button's label content, regardless of its visibility state. This ensures the button remains visible during editing operations.
Original PR description
Problem: When adding an animation to a button and then trying to edit its label, the button disappears. Cause: Because of the animation effect, while editing, the button is in its initial `invisible` animation state. In that state, `innerText` always returns an empty string because it checks only the visible content of the element. Solution: Use `textContent` instead, which does not depend on element visibility. Steps to reproduce: - Open Website. - Drop any text snippet. - Add a button. - Add an animation to the button. - Edit the button label. - The button disappears. opw-5391115 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a technical issue related to how the Swedish SIE import process calculates SHA512 hashes. The fix ensures that SHA512 digests are generated correctly, improving the reliability of data import and preventing potential import errors. This primarily impacts the l10n_se_sie_import module.
Original PR description
Forward-Port-Of: odoo/enterprise#101511
This update optimizes the speed of dropzones within the Odoo interface, particularly when adding multiple snippets at once. Previously, the process could take several seconds. This change improves the user experience by significantly reducing the time it takes to drag and drop elements, making the interface more responsive.
Original PR description
We had a problem when the number of snippets was quite big (>50). For example, when we try to drop a snippet in that situation it takes around 2-3 seconds to activate dropzones and the dragging "card" to appear. Now we don't get getComputedStyle() and getBoundingClientRect() for every element and perform DOM insertions at once for every parent. This commit follows [the html_builder refactoring]. [the html_builder refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddb Related to task-4367641
This update fixes a visual issue where form fields were displaying placeholder text as 'null' instead of an empty field. When creating or editing website forms, the placeholder text is now correctly blank, providing a cleaner and more intuitive user experience. This ensures consistent form appearance and usability.
Original PR description
Steps to see the issue: - Open website and start editing - Drop a form - Add a new field, or click on an optional field, the type of which we can modify - Set the field type to 'Selection' or 'Radio Buttons' (or any other that does not have placeholders) - Set the field type back to 'Text' => Field's placeholder is `'null'`, but it should just be empty. task-5383835 Forward-Port-Of: odoo/odoo#238710
This update fixes an issue where new employee timesheets weren't correctly reflecting previously created time off requests. The change ensures that only global time offs are considered, preventing incorrect timesheet generation and improving accuracy for new hires. This resolves a technical glitch impacting employee time tracking.
Original PR description
**Steps to reproduce** 1. Have a future `resource.calendar.leaves` without a `calendar_id` but with a `resource_id`. To achieve this, you can for example install Payroll and Attendance, create a contract with the work entry source being attendances and with no working schedule. Then, create a time off in hours for that employee and validate it. In that case, the `hr.leave` has no `resource_calendar_id` as computed in `_compute_resource_calendar_id`. This leads to a `resource.calendar.leaves` record without a `calendar_id` once the time off is validated. 2. Create a new employee. A timesheet corresponding to the previously created time off is created. **Change** Make sure only global time offs are considered. opw-5248992 Forward-Port-Of: odoo/odoo#237773
This update resolves an issue where clicking a Field Service record in the kanban view opened it in the same tab instead of a new one. The fix corrects a technical error within the `industry_fsm` module that prevented the expected new-tab behavior when using the middle mouse button. This ensures a smoother user experience when accessing records.
Original PR description
Steps to reproduce: 1. Install `industry_fsm` 2. Open Field service module 3. In the kanban view, click a record with the middle mouse button Issue: - The record opens in the same tab instead of a new tab. Cause: - `FsmMyTaskKanbanRecord` overrides `onGlobalClick` without propagating the `newWindow` argument, preventing the expected new-tab behavior. Solution: - Forward the `newWindow` parameter to the parent implementation to restore the correct handling of the middle mouse click opw-5351842 Forward-Port-Of: odoo/enterprise#100926
This update resolves an issue where the correct group wasn't being assigned to the teleworking field in the payroll module for Switzerland (l10n_ch_hr_payroll). This ensures accurate reporting and compliance with Swiss tax regulations related to remote work arrangements. The change improves the accuracy of payroll calculations.
Original PR description
Forward-Port-Of: odoo/enterprise#101691
This update ensures that certain tests are automatically skipped when the 'accountant' module is not installed in Odoo. This prevents unnecessary test execution and improves the efficiency of the testing process. The change corrects a previous issue where tests were incorrectly run without the accountant module.
Original PR description
Some tests were meant to be skipped if accountant was not installed.
This update fixes a visual issue on the website where a product's variant section would incorrectly appear empty when no product attributes were selected. The fix ensures this section is only visible when actual product attributes are present, improving the user experience and preventing confusing empty sections.
Original PR description
### Issue: Variant section which only contains multi-value attributes is visible when none of the attributes are visible. #### To reproduce: 1- Create a product with a single value attribute. 2- Navigate to product page on the website. 3- As seen there is an empty extra section under price. <img width="626" height="296" alt="image" src="https://github.com/user-attachments/assets/cbf0e9e2-b17a-4b1b-94e0-f4b94780dab3" /> #### Cause: This section is to show custom or multi-value attributes. However, when product only contains attributes which have single and non-custom values, the attributes will not be visible. In this cases the section is visible but empty. This fix propose to hide variants when no visible line exists. opw-5241432
This update fixes a limitation in how barcodes handle rental transactions within Odoo. A new hook mechanism has been added, allowing for overrides specifically for the 'sale_stock_renting' process. This ensures accurate barcode scanning and tracking during rental operations.
Original PR description
Add a hook method to be used in barcode that can be overriden for `sale_stock_renting`. As there is no common module for these two module, this was put in their common ancestor. opw-5265874 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238753
This update resolves an issue where outdated sub-channels were repeatedly unpinned during routine system maintenance, leading to unwanted notifications. Additionally, the change prevents unpinning sub-channels if members still have unread messages, preserving the functionality of the pin feature for accessing those threads. This ensures a cleaner and more efficient notification system.
Original PR description
Before this commit, outdated sub-channels were unpinned each time the vacuum ran. It occurs because a condition on sub-channel being pinned is missing. In practice, it's not a big deal funtionnaly but leads to useless notifications being sent. While at it, this PR prevents unpins when there are still unread messages in the sub-channel: the pin feature is used to see unread messages on otherwise hidden threads. Forward-Port-Of: odoo/odoo#239073 Forward-Port-Of: odoo/odoo#238493
12 changes
Resolved issues and error corrections
This update simplifies the handling of MPF payments in Hong Kong. Previously, Odoo registered separate payments for MPF alongside wages, creating complexity. Now, MPF accounts are unreconciliable by default, directing accountants to reconcile directly with the government platform, streamlining the accounting process.
Original PR description
Currently, we register two separate payments for MPF at the same time as we do for the employee's wages. This is not what we want to do; as both are not paid at the same time. MPF is also handled separately, and paid outside of Odoo on the government platform, making the registration of separate payments more complex for not many benefits. Thus, we make these accounts un-reconcilable by default, and will expect accountants to reconcile the statement with the account directly. task-5349299 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238074
This update fixes an issue where placeholders were missing in the 'Related Company' field within the Contacts module. The fix ensures that placeholder text is correctly displayed, improving the user experience when creating new contacts. This resolves a minor visual inconsistency.
Original PR description
**Issue:** Fields using the res_partner_many2one widget with a placeholder do not display the placeholder text. **Steps to reproduce:** 1. Install `contacts` module 2. Go to Contacts 3. Create new 'Individual' contact 4. Notice just below the name, Related Company field placeholder is not visible. **Cause:** Props are not passed correctly in PartnerAutoComplete component **Solution:** Use the correct prop reference (props.placeholder) when passing the placeholder to the PartnerAutoComplete component, ensuring it is properly rendered. opw-5153125 Forward-Port-Of: odoo/odoo#235696 Forward-Port-Of: odoo/odoo#231445
This update resolves an issue where removing a video URL in the website editor would create a broken iframe, leading to a 404 error. The fix ensures that the 'Add' button is disabled when a video URL is empty, preventing the creation of invalid i-frames and improving website stability.
Original PR description
*=website **Steps to reproduce:** 1. Drop a video 2. Reopen the media dialog 3. Remove the URL 4. Confirm **Issue:** When the URL was removed and confirmed, an iframe without a valid source was saved, leading to a 404 error. **Fix:** When the video URL is cleared, VideoSelector component calls selectMedia with an empty object. MediaDialog did not previously handle this case, so the media selection was not cleared. Now we Update MediaDialog to treat an empty object as a clear-selection signal and disable the Add button accordingly. task-5190485 Forward-Port-Of: odoo/odoo#238884 Forward-Port-Of: odoo/odoo#234085
This update resolves an issue that previously blocked users from creating new Amazon accounts within a newly created company. The fix ensures the system correctly handles the absence of initial warehouses and stock locations, allowing for seamless account setup. This improves the user experience and avoids disruptions during company creation.
Original PR description
Currently, an error occurs when user tries to create a new amazon account on a new company. Steps to replicate: - Install `sale_amazon`. - Create a new company and switch to it. - Go to Settings >…
Currently, an error occurs when user tries to create a new amazon account on a new company.
Steps to replicate:
- Install `sale_amazon`.
- Create a new company and switch to it.
- Go to Settings > Amazon account > Try to Create a new account.
Error:
```
File /home/odoo/odoo18/enterprise/sale_amazon/models/amazon_account.py, line 214, in create
'location_id': parent_location_data[0]['view_location_id'][0],
IndexError: list index out of range
```
Cause:
- Whenever a new company is created, it doesnt have any warehouses [1] and amazon stock locations [2].
- This causes the `parent_location_data` to be an empty list and causes error at line [3].
Solution:
- Assigning the `location_id` if the `parent_location_data` exists.
[1]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L206-L210
[2]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L201-L204
[3]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L214
sentry-7086464738
Forward-Port-Of: odoo/enterprise#101465This change prevents distracting audio notifications during Odoo tests. Previously, unexpected sounds from the computer disrupted test runs, causing delays and frustration. This update ensures a cleaner and more reliable testing environment.
Original PR description
When running tests locally, it's really annoying (and sometimes really jarring / surprising) to hear random beeps and boops from your machine, especially when it's an old timey ringtone from voip. Make it stop. Forward-Port-Of: odoo/odoo#238906 Forward-Port-Of: odoo/odoo#238882
This update resolves a technical issue related to how SHA512 hashes are generated during the import of Swedish accounting data. The fix ensures accurate data integrity, preventing potential errors when processing financial information. This improves the reliability of the Odoo Enterprise system for Swedish users.
Original PR description
Forward-Port-Of: odoo/enterprise#101511
This update fixes an issue where form fields, specifically those with 'Text' input types, were displaying a placeholder of 'null' instead of an empty field. This change ensures a cleaner and more intuitive user experience when creating or editing forms on the website.
Original PR description
Steps to see the issue: - Open website and start editing - Drop a form - Add a new field, or click on an optional field, the type of which we can modify - Set the field type to 'Selection' or 'Radio Buttons' (or any other that does not have placeholders) - Set the field type back to 'Text' => Field's placeholder is `'null'`, but it should just be empty. task-5383835 Forward-Port-Of: odoo/odoo#238710
This update resolves an issue preventing the IoT Box upgrade script from correctly updating the Odoo configuration file. By using sudo and installing pip requirements as the Odoo user, the script now has the necessary permissions and avoids potential security vulnerabilities. This ensures smoother and more reliable upgrades for IoT Box deployments.
Original PR description
On 25.06 images, the IoT Box upgrade script can't update `odoo.conf` file (modules to load) as odoo user running sed doesn't have enough permissions. We now run this command with sudo then ensure the ownership of the file is still `odoo:odoo` We now also ensure that pip requirements are installed for user `odoo` instead of root. Task: 5383045 Forward-Port-Of: odoo/odoo#238553
This update fixes an issue where timesheets weren't correctly reflecting new employee's time off requests. The change ensures that only global time offs are considered, preventing incorrect timesheet generation when creating new employees with specific leave configurations. This improves the accuracy of time tracking and reporting.
Original PR description
**Steps to reproduce** 1. Have a future `resource.calendar.leaves` without a `calendar_id` but with a `resource_id`. To achieve this, you can for example install Payroll and Attendance, create a contract with the work entry source being attendances and with no working schedule. Then, create a time off in hours for that employee and validate it. In that case, the `hr.leave` has no `resource_calendar_id` as computed in `_compute_resource_calendar_id`. This leads to a `resource.calendar.leaves` record without a `calendar_id` once the time off is validated. 2. Create a new employee. A timesheet corresponding to the previously created time off is created. **Change** Make sure only global time offs are considered. opw-5248992 Forward-Port-Of: odoo/odoo#237773
This update resolves an issue where clicking a Field Service record in the kanban view with the middle mouse button opened it in the same tab. The fix ensures that records now open in a new tab, improving user workflow and efficiency. The change was triggered by a bug in the `industry_fsm` module.
Original PR description
Steps to reproduce: 1. Install `industry_fsm` 2. Open Field service module 3. In the kanban view, click a record with the middle mouse button Issue: - The record opens in the same tab instead of a new tab. Cause: - `FsmMyTaskKanbanRecord` overrides `onGlobalClick` without propagating the `newWindow` argument, preventing the expected new-tab behavior. Solution: - Forward the `newWindow` parameter to the parent implementation to restore the correct handling of the middle mouse click opw-5351842 Forward-Port-Of: odoo/enterprise#100926
This update fixes an issue where outdated sub-channels were being unnecessarily unpinned, leading to unwanted notifications. The change also prevents unpinning sub-channels if members still have unread messages, ensuring the pin feature continues to work as intended for accessing important threads.
Original PR description
Before this commit, outdated sub-channels were unpinned each time the vacuum ran. It occurs because a condition on sub-channel being pinned is missing. In practice, it's not a big deal funtionnaly but leads to useless notifications being sent. While at it, this PR prevents unpins when there are still unread messages in the sub-channel: the pin feature is used to see unread messages on otherwise hidden threads. Forward-Port-Of: odoo/odoo#238493
This update fixes a limitation in how barcodes handle rental sales within Odoo. A new hook has been added, allowing businesses to override the standard barcode behavior when processing rental transactions. This ensures accurate tracking and reporting for both barcode scanning and rental sales operations.
Original PR description
Add a hook method to be used in barcode that can be overriden for `sale_stock_renting`. As there is no common module for these two module, this was put in their common ancestor. opw-5265874 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238753
3 changes
Resolved issues and error corrections
This update resolves an issue where creating a new Amazon account on a newly created company would trigger an error due to missing warehouse information. The fix automatically assigns a location ID when a new company is created, allowing users to successfully set up their Amazon accounts.
Original PR description
Currently, an error occurs when user tries to create a new amazon account on a new company. Steps to replicate: - Install `sale_amazon`. - Create a new company and switch to it. - Go to Settings >…
Currently, an error occurs when user tries to create a new amazon account on a new company.
Steps to replicate:
- Install `sale_amazon`.
- Create a new company and switch to it.
- Go to Settings > Amazon account > Try to Create a new account.
Error:
```
File /home/odoo/odoo18/enterprise/sale_amazon/models/amazon_account.py, line 214, in create
'location_id': parent_location_data[0]['view_location_id'][0],
IndexError: list index out of range
```
Cause:
- Whenever a new company is created, it doesnt have any warehouses [1] and amazon stock locations [2].
- This causes the `parent_location_data` to be an empty list and causes error at line [3].
Solution:
- Assigning the `location_id` if the `parent_location_data` exists.
[1]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L206-L210
[2]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L201-L204
[3]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L214
sentry-7086464738
Forward-Port-Of: odoo/enterprise#101465This update resolves technical issues causing errors during the generation of WPS payroll reports. The fix corrects an incorrect usage of a function, ensuring reports are now created without errors. This improves the reliability of payroll reporting for Saudi Arabia.
Original PR description
this commit addresses traceback errors occured due to incorrect usage of `_` function. task-5310946
This update resolves an issue where invoice sequences without spaces caused errors during processing. The change uses a regular expression to reliably extract the folio number, regardless of the sequence format (space, slash, or hyphen). This ensures accurate invoice generation and prevents data processing failures.
Original PR description
Before this commit, the method `_get_last_sequence` assumed that the document sequence always contained a space separator (e.g., "INV 12345") It attempted to extract the folio number using `res.split(" ")[-1]`.
If the sequence format did not contain a space, such as the standard Odoo format `INV/2025/01234`, the split would return the entire string. This caused a `ValueError` when trying to cast the non-numeric string to an integer:
ValueError: invalid literal for int() with base 10: 'INV/2025/01234'
This commit fixes the issue by using a regular expression to extract the last group of digits from the sequence string. This ensures the folio number is correctly retrieved regardless of the separator used (slash, space, or hyphen).
opw-5401509
Forward-Port-Of: odoo/enterprise#1016651 change
Resolved issues and error corrections
This update resolves an issue where a duplicate dropdown menu appeared when editing or deleting social stream posts. The fix ensures the existing dropdown from the 'social_crm' module correctly integrates with the new 'social' dropdown, maintaining a consistent user experience. This improves usability and prevents confusion for users managing social posts.
Original PR description
Following odoo/enterprise@c9ddf1c a new dropdown has been added to "social" to allow the edition and deletion of a social stream post. This new dropdown didn't take into account the one already existing in "social_crm" resulting in a duplicated dropdown menu. Fixing the issue by making sure the dropdown from "social_crm" is correctly extending the one from "social". As the "Create Lead" action is set above the "Edit" and "Delete" ones, making sure it's also the case for the stream post comments dropdown menu for consistency. Task-5270180
7 changes
Resolved issues and error corrections
This update resolves an issue that previously blocked users from creating new Amazon accounts for new companies. The fix ensures that the system correctly handles the absence of warehouses and stock locations when a new company is initially set up, allowing for seamless account creation.
Original PR description
Currently, an error occurs when user tries to create a new amazon account on a new company. Steps to replicate: - Install `sale_amazon`. - Create a new company and switch to it. - Go to Settings >…
Currently, an error occurs when user tries to create a new amazon account on a new company.
Steps to replicate:
- Install `sale_amazon`.
- Create a new company and switch to it.
- Go to Settings > Amazon account > Try to Create a new account.
Error:
```
File /home/odoo/odoo18/enterprise/sale_amazon/models/amazon_account.py, line 214, in create
'location_id': parent_location_data[0]['view_location_id'][0],
IndexError: list index out of range
```
Cause:
- Whenever a new company is created, it doesnt have any warehouses [1] and amazon stock locations [2].
- This causes the `parent_location_data` to be an empty list and causes error at line [3].
Solution:
- Assigning the `location_id` if the `parent_location_data` exists.
[1]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L206-L210
[2]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L201-L204
[3]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L214
sentry-7086464738
Forward-Port-Of: odoo/enterprise#101465This update resolves a failing test related to the layout of a key report. The team has switched from using XML-based actions to Python dictionaries, requiring a change in how test comparisons are made. This ensures the report layout functions correctly.
Original PR description
In this commit, we change the comparision for `xml_id` in test_action_send_report test with the view_id instead because the we are removing the action xml and replacing it with the python dict action instead. So it's better to compare the view_xml_id instead task-5366725
This update corrects a minor issue in the Swiss payroll module (l10n_ch_hr_payroll_elm_transmission_5_3) by adding a required group to the teleworking field. This ensures accurate data transmission to tax authorities, complying with Swiss regulations and preventing potential reporting errors.
Original PR description
Forward-Port-Of: odoo/enterprise#101691
This update ensures that the 'Night' and 'Nights' labels used in the sale renting module are fully translatable. The team took a pragmatic approach to avoid a potential translation issue, initially delaying full translation to monitor for any inconsistencies with website language settings.
Original PR description
Not sure why the existing `SINGULAR_LABELS` is lazy translated whereas the not single units (i.e. `self._fields['unit']._description_selection(self.env))[self.unit]`) is not, so we assume that in this case it's fine to not lazy translate both "Night" and "Nights" and see if a bug pops up later on (maybe via mismatching website language?) opw-5392109 Forward-Port-Of: odoo/enterprise#101613
This update corrects a styling issue within the VoIP module by explicitly defining the input type for browser elements. Previously, browsers treated plain input fields as text, causing some styles to be missed. This ensures consistent and correct styling for VoIP input fields, improving the user experience.
Original PR description
Even though a browser treats a plain <input> as a text field by default, the CSS selector cannot "see" that default behavior. Input without `type="text"` will miss some style, for example: https://github.com/odoo/odoo/blob/4f5594a911c1960f620d902d507e563cdab167b9/addons/web/static/src/webclient/webclient.scss#L163-L177 we add input type in this commit to apply those style.
This update corrects the visual alignment of buttons within the account journal views for the Be Codabox localization module. This ensures a cleaner and more professional user experience for users managing financial data. The change improves the overall usability of the system.
Original PR description
This commit aims to fix the alignment of codabox buttons in the account journal views. task-5269488
This update corrects a bug preventing the automatic installation of localized payroll account modules (e.g., l10n_xx_hr_payroll_account) when a corresponding country company wasn't yet defined. The fix removes a dependency check that caused the modules to fail to install, ensuring they are correctly added to new Odoo instances.
Original PR description
Steps to reproduce: 1. Run odoo for a fresh database with -i hr_payroll_account,l10n_xx_hr_payroll (except for us). 2. The corresponding l10n_xx_hr_payroll_account won't be installed. Cause: The l10n_xx_hr_payroll_account had 'countries': ['xx'] in their manifest, but there is no company from that country yet. When installing modules, the framework first checks if there can be modules to auto-install as well, but since the demo data with the company of the country does not yet exist, there is no such company. Hence, the module is not installed. Fix: Remove all occurrences of 'countries': ['xx'] for modules that are auto-installed and that depend on other modules with countries already defined in their manifest. Task: 5384292
38 changes
Resolved issues and error corrections
This update fixes an accounting error related to invoices in Vietnam (l10n_vn). Previously, the system incorrectly created entries for both receivable and payable accounts for 'Unearned Revenue' (account 3387). Changing the account type to 'Current Liabilities' ensures accurate financial reporting and prevents mismatched balances.
Original PR description
When posting an invoice, the system creates: - Journal Entry: Dr 131 (Receivable) / Cr 511 Then the system creates a deferral entry: - Deferral entry: Dr 511 / Cr 3387 (Payable) Falsifying the…
When posting an invoice, the system creates: - Journal Entry: Dr 131 (Receivable) / Cr 511 Then the system creates a deferral entry: - Deferral entry: Dr 511 / Cr 3387 (Payable) Falsifying the Balance sheet report, in the accounts receivable and accounts payable indicators The issue was that account 3387 was configured as `Payable`, which caused the system to generate both Receivable (131) and Payable (3387) for the same partner. This is incorrect because account 3387 represents "Unearned Revenue", which is a current liability, not a payable account. By changing the account type from `Payable` to `Current Liabilities`, the deferral entry now correctly reflects that 3387 is a current liability account, preventing the incorrect reconciliation behavior where both receivable and payable entries were created for the same partner. After this fix: - Entry: Dr 131 (Receivable) / Cr 511 - Deferral: Dr 511 / Cr 3387 (Current Liabilities) 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#238807 Forward-Port-Of: odoo/odoo#237493
This update simplifies the handling of MPF payments in the Hong Kong accounting module. Previously, separate payments were registered, creating complexity. Now, MPF accounts are set to be unreconcilable by default, directing accountants to reconcile directly with the government platform, streamlining the process.
Original PR description
Currently, we register two separate payments for MPF at the same time as we do for the employee's wages. This is not what we want to do; as both are not paid at the same time. MPF is also handled separately, and paid outside of Odoo on the government platform, making the registration of separate payments more complex for not many benefits. Thus, we make these accounts un-reconcilable by default, and will expect accountants to reconcile the statement with the account directly. task-5349299 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238074
This update resolves an issue where email templates were not rendering correctly due to differences in how HTML was parsed. The change ensures that all HTML elements, except for void elements, are properly closed, resulting in consistent and accurate email formatting. This prevents errors and ensures emails display as intended.
Original PR description
**Step to Reproduce:** - install Subscription (with demo data) - try to edit `Subscription: Payment Reminder` email template **Observation:** - Traceback for faulty template **Cause** For outgoing…
**Step to Reproduce:**
- install Subscription (with demo data)
- try to edit `Subscription: Payment Reminder` email template
**Observation:**
- Traceback for faulty template
**Cause**
For outgoing mails, we are using output_method = 'xml' when normalizing html content
https://github.com/odoo/odoo/blob/cb5176df98490ef04c0aac481f010bd2ac2f2424/odoo/orm/fields_textual.py#L580-L587
when this content is parsed using DOMParser in browser,
https://github.com/odoo/odoo/blob/cb5176df98490ef04c0aac481f010bd2ac2f2424/addons/html_editor/static/src/html_migrations/html_upgrade_manager.js#L61-L63
we might get different result.
For a very basic template like this:
```
<div>
<t t-if="ctx.get('error')">
<pre t-out="ctx['error'] or ''" />.
</t>
<t t-else="">
<span>some text</span>
</t>
</div>
```
when parsed using Domparser(), return a faulty template:
```
<div>
<t t-if="ctx.get('error')">
<pre t-out="ctx['error'] or ''">.
<t t-else="">
<span>some text</span>
</t>
</pre>
</t>
</div>
```
Issue roots because of use of self-closing tags, which are valid for xml but not for html
**Fix:**
- we forcefully replace all self-closing tags(which are not void elements) with a closing tag.
- see list of void elements https://developer.mozilla.org/en-US/docs/Glossary/Void_element
opw-5234345
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#238695
Forward-Port-Of: odoo/odoo#235924This update fixes a problem where old work entries persisted across different version schedules. The change ensures that outdated work entries are automatically removed when a new version with a different schedule is created, maintaining accurate record-keeping. This improves data consistency and simplifies reporting.
Original PR description
Problem ---------- When we create a new version with a new working schedule, it will generate correct work entries (because no one was generated for this version before) But it will not remove the previous one for the other previous versions. Solution ---------- Nullify work entries if outside the valid period of the version if they were already created before. task-5065139 Forward-Port-Of: odoo/odoo#232658
This update corrects a technical issue where text labels from buttons (specifically the 'confirm-title' attribute) were not being included in Odoo's translation files. This ensures these messages can be properly translated and displayed correctly in the user interface for all languages. This improves the localization process and user experience.
Original PR description
Description of the issue/feature this PR addresses: The texts from the "confirm-title" attribute of a <button> tag are missing from the POT files. Current behavior before PR: In this line there is a text (the caption of the confirmation window): https://github.com/odoo/odoo/blob/19.0/addons/mass_mailing/views/mailing_mailing_views.xml#L66 "Ready to unleash emails?" - This text is missing from the POT file. Desired behavior after PR is merged: * These texts will apeear in POT files. * Someone needs to translated them * It will show up as translated texts in UI --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue that previously stopped users from creating new Amazon accounts for new companies. The fix ensures that the system correctly handles the absence of warehouses and stock locations when a company is initially set up, preventing a technical error.
Original PR description
Currently, an error occurs when user tries to create a new amazon account on a new company. Steps to replicate: - Install `sale_amazon`. - Create a new company and switch to it. - Go to Settings >…
Currently, an error occurs when user tries to create a new amazon account on a new company.
Steps to replicate:
- Install `sale_amazon`.
- Create a new company and switch to it.
- Go to Settings > Amazon account > Try to Create a new account.
Error:
```
File /home/odoo/odoo18/enterprise/sale_amazon/models/amazon_account.py, line 214, in create
'location_id': parent_location_data[0]['view_location_id'][0],
IndexError: list index out of range
```
Cause:
- Whenever a new company is created, it doesnt have any warehouses [1] and amazon stock locations [2].
- This causes the `parent_location_data` to be an empty list and causes error at line [3].
Solution:
- Assigning the `location_id` if the `parent_location_data` exists.
[1]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L206-L210
[2]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L201-L204
[3]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L214
sentry-7086464738
Forward-Port-Of: odoo/enterprise#101465This update corrects a discrepancy in the number of employees flagged with invalid bank account warnings within the payroll dashboard. The fix ensures accurate reporting by uniquely identifying employees and optimizing database queries to avoid redundant data processing. This improves the reliability of payroll reporting.
Original PR description
description: - `warning_count` for `hr_payroll_dashboard_warning_employee_invalid_bank_account` is wrong when there are multiple versions for a single employee. steps to reproduce: - install `hr_payroll_account_iso20022` - open Payroll (note: have atleast one employee with multiple versions) - find "Employees With Invalid IBAN Bank Accounts" warning on the dashboard - note the count and click on it, the record count differs fix: - returned unique employee ids from `_get_invalid_iban_employee_ids` - also optimized the query in `_get_account_holder_employees_data` method. reasoning: we do not need bank account data from all the versions, because all the versions share same bank account data. task-5252854
This change prevents distracting audio notifications during local testing of Odoo. It addresses a common frustration for developers encountering unexpected sounds from their systems, particularly old ringtones. This improves the testing experience and reduces interruptions.
Original PR description
When running tests locally, it's really annoying (and sometimes really jarring / surprising) to hear random beeps and boops from your machine, especially when it's an old timey ringtone from voip. Make it stop. Forward-Port-Of: odoo/odoo#238906 Forward-Port-Of: odoo/odoo#238882
This update fixes an issue where custom highlights with filling colors appeared darker than intended. By adjusting the opacity of these highlights, the blending of stroke and fill is now handled correctly, resulting in a cleaner and more consistent visual appearance. This improves the overall user experience when using the website's text editor.
Original PR description
We can use custom colors on highlights using the inline text editor, and when the highlight isn't a line (e.g., has a filling inside) and we set its color to have a different opacity than 100%, we can see the stroke and the filling overlap, and the semi-transparent colors blend together, creating a darker appearance along the edges. To see the issue: - Open the website and start editing - Select any text and apply a highlight with a filling, for example, freehand_3 - Click on Color, open the "Custom" tab, and slide the opacity slider down -> Observe the darker appearance along the edges of the highlight, which happens because the highlight svg has both `fill` and `stroke`. task-5104135
This update resolves an issue where the correct group wasn't being assigned to the teleworking field in the payroll module for Switzerland (l10n_ch_hr_payroll). This ensures accurate reporting and compliance with Swiss tax regulations related to remote work arrangements. The change improves the accuracy of payroll calculations.
Original PR description
Forward-Port-Of: odoo/enterprise#101691
This update fixes an issue where product packages weren't correctly associated with their company during packing operations. The previous comparison logic incorrectly linked packages to company records, leading to inaccurate data. This change ensures packages are properly linked to their associated company, improving inventory tracking and reporting.
Original PR description
Steps to reproduce: - Have two packs, A & B - Put something in pack A - Put pack A in pack B Issue: Despite pack A having both a location & a company set, only the location is set on pack B. Due to a faulty comparison, we compare package records with company records, which means the `all()` condition will never be true. Fixes #236413 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where debugging employee records in the Saudi Arabia payroll module would generate errors due to a redundant, unused field. The field has been removed, streamlining the system and improving stability. This change aligns with our stable policy and ensures consistent data management.
Original PR description
### Issue: The field `l10n_sa_leaves_count_compensable` is a computed field with no compute method. When in debug mode, trying to look at the fields of an employee results in a traceback because of…
### Issue: The field `l10n_sa_leaves_count_compensable` is a computed field with no compute method. When in debug mode, trying to look at the fields of an employee results in a traceback because of this. ### Cause: This [forward port](https://github.com/odoo/enterprise/commit/4124dc4c13055d39d233d7ea9374b5191afdfcf2#diff-1d84d9d2c9ad02353f40d1b88baa5c66af063880df1e14459befd2d02d66cae5) had a conflict that was badly resolved by re-adding a previously deleted field. The field was replaced by `l10n_sa_remaining_annual_leave_balance` in [this commit](https://github.com/odoo/enterprise/commit/339bc032aa763c62d4dd27b73fc42488b3e1c3aa#diff-1d84d9d2c9ad02353f40d1b88baa5c66af063880df1e14459befd2d02d66cae5). [Failing FWP](https://github.com/odoo/enterprise/commit/b3f276d0d73a24faf322aa2ae8965c3d5aad4a87#diff-1d84d9d2c9ad02353f40d1b88baa5c66af063880df1e14459befd2d02d66cae5) ### Solution: We can no longer delete the field because of the stable policy. The solution is to remove the compute and add `store=False`. Then remove the field in master. opw-5352456
This update resolves an issue where the Website editor would crash when users pasted HTML code for embedded videos. The fix ensures the system correctly parses video URLs, preventing tracebacks and improving the reliability of video embedding functionality. This enhances the user experience when adding video backgrounds to website content.
Original PR description
Problem: A traceback occurs when adding an embedded video in the Website editor. Cause: The code uses `urlInput` as the URL source, but when an embed is pasted, `urlInput` contains HTML instead of a direct URL. Solution: Parse the `url` instead of using `urlInput` directly. Steps to reproduce: - Go to Website. - Add a slides snippet. - Change the background to video. - Paste embedded video HTML. - A traceback is triggered. opw-5265390 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where the approval date for expenses was incorrectly set to 1 AM. By using the current time, the system now accurately calculates the approval date, ensuring proper tracking of expense approvals. This improves the reliability of expense reporting.
Original PR description
When approving an expense, we compute the approval date. We used fields.Date.context_today(expense) that only the the date but the hours are set to 1 AM. By using field.Datetime.now() the hours are computed correctly. task-5262954 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures Odoo IoT boxes can connect reliably, even with older database versions. The system now checks the IoT box's version and skips WebRTC usage if it's not compatible with the latest Odoo version, preventing connection issues. This improves compatibility and stability for IoT deployments.
Original PR description
Since odoo/odoo#238626, WebRTC support has been removed from the IoT box in `master` (19.1). However, since IoT boxes can now pair with older database versions, we need to be able to handle an IoT box that doesn't support WebRTC. This commit adds a check to the version field of the IoT box model, and if it matches the newer format used in 19.1+, WebRTC is skipped. task-5386539
This update corrects a bug in the Inventory at Date report that was preventing it from running correctly for certain products. The issue stemmed from the report incorrectly interpreting date inputs as strings, causing a comparison error. This change ensures the report accurately reflects inventory levels.
Original PR description
For products using lot valuation and real-time valuation, the Inventory at Date report may fail since the to_date value is provided as a string instead of a date or datetime object. This leads to a comparison error when generating the report. Steps to reproduce: - Create a product with lot tracking and real-time valuation, and lot valuated - Create and receive a purchase order for this product - Open Inventory > Reports > Inventory at Date - An error occurs due to a comparison between a string and a date opw-5362378
This update resolves a crash that occurred when users clicked the GIF picker within knowledge article comments. The fix adjusts how the composer picker identifies action placement, ensuring it correctly recognizes buttons within 'extra actions' like those found in chatter. This prevents the application from unexpectedly closing.
Original PR description
Before this commit, opening gif picker in a comment of a knowledge article would lead to crash. This happens because composer uses chatter visual, and pickers in composer picks either the quick or more node element as anchor of picker, depending on whether the action is in the quick or more action. In the case of knowledge article, the buttons are placed in extra actions like in chatter. However the picker placement was not taking into account this place, thus it fails to find action placement. This commit fixes the issue by adding support of extra actions as anchor for composer picker. Task-5163888
This update corrects a warning message related to date and duration calculations for work entries, specifically those linked to holidays. The change ensures that the system accurately prevents overlapping work entries, addressing a potential data inconsistency. This resolves a technical issue that could have impacted reporting accuracy.
Original PR description
Problem ---------- This warning message doesn't make sens with the transformation of work entries date_start/stop in date+duration. No overlap is possible. task-5349515
This update resolves an issue where the SHA512 hashing process in the Swedish SE-SIE import module was not correctly implemented. The fix ensures accurate data integrity for tax reporting, preventing potential errors and compliance issues. This update improves the reliability of the import process for Swedish businesses.
Original PR description
Forward-Port-Of: odoo/enterprise#101511
This update fixes an issue where form fields without labels weren't being submitted. Now, all form fields, even those without labels, are correctly transmitted when the 'send' button is clicked. Additionally, the system now prevents users from removing labels, ensuring data integrity.
Original PR description
Before this commit, a form input without a label would not send its data when clicking send. Steps to reproduce - go to the website editor - add a form - choose any field - delete the field label - save and exit the editor - now in the website, fill the form and click send => the fields without a name label are not sent After this commit fields without a label get sent with a placeholder "unknown_field" task-5062575 Forward-Port-Of: odoo/odoo#237805 Forward-Port-Of: odoo/odoo#225545
This update corrects a bug where work entry durations were not accurately calculated, leading to potential conflicts when editing or adding entries on the same day. The fix ensures that the system correctly sums the duration of all work entries for a given day, regardless of whether they are new or existing, improving data accuracy.
Original PR description
Problem ---------- Work entries on the same day were in conflict only if a work entry was created with a duration > 1000h Even if we write an existing work entry with a duration > 1000h => no conflict. Event if we create multiple work entries, it will only make the sum of work entries created and not existing ones Solution ---------- Check the sum of duration for a day between 0 and 24 hours. Fetch all work entries matching the date of the check to make the sum of durations task-5349515
This update corrects a bug in Odoo 19.0 where setting an employee's timezone to 'None' would cause an error. Now, if the timezone field is left blank, Odoo will display a validation error, ensuring accurate data entry and preventing potential issues with employee records. This improves data integrity and reliability.
Original PR description
Description of the issue/feature this PR addresses: On Odoo 19.0 and master, setting an employee’s timezone to None would cause a traceback when creating or updating the employee. Current behavior before PR: a traceback when creating or updating the employee. Desired behavior after PR is merged: A Validation Error occurs because it missing required value for the field 'Timezone' (tz). Model: 'Resources' (resource.resource) task-5257749 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where inactive accounts were incorrectly displayed in financial reports. The change, related to a new 'active' field, prevents the system from processing inactive accounts in report calculations and auditing, ensuring accurate reporting. This improves data integrity and reporting reliability.
Original PR description
In replacing the deprecated field with the special `active` field the account_codes prefix engine no longer displays values for accounts that are inactive.
This disables the active test in:
- computing the domain for accounts
- auditing the value (since the domain is `('account_id.code', 'in'...)`
opw-5226153
Forward-Port-Of: odoo/enterprise#100885This update corrects an issue in the l10n_ar_stock delivery guide report where a critical message about invoice validity was missing. The fix also eliminates duplicate report names and numbers, ensuring consistent and accurate reporting. This improves the reliability of financial reports for Arabic-speaking customers.
Original PR description
The mention "Document not valid as an invoice" is missing in the delivery guide report. And we shouldn't duplicatethe report name and number. opw-5004345 Forward-Port-Of: odoo/odoo#234506
This update resolves an issue where clicking a record in the Field Service module's Kanban view with the middle mouse button opened the record in the same tab instead of a new one. The fix ensures that middle-mouse clicks correctly open records in new tabs, improving user workflow and efficiency.
Original PR description
Steps to reproduce: 1. Install `industry_fsm` 2. Open Field service module 3. In the kanban view, click a record with the middle mouse button Issue: - The record opens in the same tab instead of a new tab. Cause: - `FsmMyTaskKanbanRecord` overrides `onGlobalClick` without propagating the `newWindow` argument, preventing the expected new-tab behavior. Solution: - Forward the `newWindow` parameter to the parent implementation to restore the correct handling of the middle mouse click opw-5351842 Forward-Port-Of: odoo/enterprise#100926
This update fixes a bug that prevented invoices from being sent to Peppol when certain special characters were present in the data. The fix ensures that invoice data conforms to XML standards, preventing errors and ensuring successful Peppol communication. This improves the reliability of our Peppol integration.
Original PR description
## Issue: When a character that's not compatible with XML is in an invoice, and you send it to Peppol, a traceback was raised: `ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters` ## Cause: `dict_to_xml` converts each invoice field into XML, but certain control characters (e.g., `\x02`) are not allowed in XML according to the specification: https://www.w3.org/TR/xml/#charsets If such a character appears in the data (e.g., imported through a product CSV), the XML generation crashes ## Steps to produce: - Install `account_peppol` and `l10n_be` (to get the BE Company CoA) - Import a product containing a control character: `echo -e "name,default_code\nTest\x02Product,ABC123" > products.csv` - Create an invoice for the BE company using the product `Test\x02Product` - Send it via Send > by Peppol - A traceback is raised opw-5114648 Forward-Port-Of: odoo/odoo#239053 Forward-Port-Of: odoo/odoo#236836
This update fixes an issue where holiday pay recovery wasn't correctly applied to employees with older contracts. Previously, reopening contracts could incorrectly trigger the recovery process as if the employee was newly hired. This change ensures holiday pay recovery is applied accurately for all employees, regardless of contract history.
Original PR description
Purpose ======= Normally contracts start and end dates should be configured without being closed and reopened at each version date. But, if it is the case, holiday pay recovery could be applied on older employees because it is considered the employee just joined the company, and there is an amount to recover. Forward-Port-Of: odoo/enterprise#101564
This update resolves an issue preventing the payroll demo data installation from working correctly at the start of the year. The fix sets a fixed past year for Mitchell Admin's contract, ensuring the demo data aligns with current payroll calculations. This resolves a technical error reported by automated testing.
Original PR description
Before this commit, the relative date used to generate Mitchell Admin's contract was always at January 1st of the current year, making the payroll demo data install fail when at the start of the year. This commit sets a fixed year in the past for Mitchell's contract. runbot error 234623 and 234612 Forward-Port-Of: odoo/odoo#238711
This update fixes a technical issue within the HTML editor that caused a traceback when users selected a link and then applied a color. The fix ensures the editor correctly handles selections involving special characters like 'feff', preventing errors and improving the overall stability of the HTML editing functionality. This resolves a potential disruption for users.
Original PR description
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the…
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the selection at: https://github.com/odoo/odoo/blob/bee7fc1f955c52a88b527ad9a2ddf0021529bbc7/addons/html_editor/static/src/main/font/color_plugin.js#L247-L247 and then call `getFonts()`, which internally uses `this.dependencies.split.splitAroundUntil()`. If the selection is on a `feff` node, `splitAroundUntil()` can clear those nodes because `splitElement()` inside it dispatches to `clean_handlers` with the selected element containing the `feff`. Since the preserved cursor offset refers to the node before the `feff` was removed, restoring it throws: `The offset x is larger than the node's length (y).` Solution: After `splitAroundUntil()`, adjust the preserved cursor offsets if the nodes were mutated to ensure they remain valid. Steps to reproduce: It is difficult to reproduce manually, but the issue occurs when coloring a link with the selection on a `feff`. A test case replicating the situation can be based on the original failing template in the customer’s database. opw-4953943 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238922 Forward-Port-Of: odoo/odoo#234328
This update fixes an issue where timesheets weren't correctly reflecting new employee's time off requests. The change ensures that only global time off requests are considered, resolving a problem caused by incorrectly configured time-off records. This improves the accuracy of timesheet reporting.
Original PR description
**Steps to reproduce** 1. Have a future `resource.calendar.leaves` without a `calendar_id` but with a `resource_id`. To achieve this, you can for example install Payroll and Attendance, create a contract with the work entry source being attendances and with no working schedule. Then, create a time off in hours for that employee and validate it. In that case, the `hr.leave` has no `resource_calendar_id` as computed in `_compute_resource_calendar_id`. This leads to a `resource.calendar.leaves` record without a `calendar_id` once the time off is validated. 2. Create a new employee. A timesheet corresponding to the previously created time off is created. **Change** Make sure only global time offs are considered. opw-5248992 Forward-Port-Of: odoo/odoo#237773
This update resolves a technical issue where setting image field widths in list views caused a system crash. The change clarifies that image field widths should be controlled through list view configurations, not the image field itself, ensuring stability and proper functionality for image displays in lists.
Original PR description
Before this commit, if one set the `width` attribute on an image field in a list view arch, there was a props validation crash (in debug mode). The `width` attribute is relevant to be set in list view archs as it allows to specify the width of the column. That attribute isn't meant to be used by the image field itself, where the option `size` can be used to specify the size of the image as a pair `[width, height]`. opw~5392068 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#239069
This update resolves a visual bug where the version timeline in the HR module would disappear when zoomed below 100%. Now, all versions remain visible regardless of the zoom level, ensuring a consistent and user-friendly experience for managing employee timelines.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: . When you zoom below 100%, the other versions from the version bar disapear, leaving only the active one Desired behavior after PR is merged: . When you zoom below 100%, all versions on timeline appears normally task-5401380 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents misleading 'Duplicate' warnings when reverting a payslip in the HR payroll module. Previously, reverting a payslip created related payslips flagged as duplicates, causing confusion. Now, the system correctly identifies these as related and avoids the duplicate warning, streamlining the payroll process.
Original PR description
## Steps to Reproduce 1. Create a payslip and validate it. 2. Mark it as Paid. 3. Click on Revert and it will create a new payslips related to the other payslip. ## Issue When reverting a payslip, it is flagged as a "Duplicate". When there is a payslip that has "Related payslips", it should not be considered as a duplicate. ## Fix Duplicate warnings now ignore the original and refund payslips linked to each other (`origin_payslip_id/related_payslip_ids`) are removed from the duplicate recordset. task - [5240436](https://www.odoo.com/odoo/project/1251/tasks/5240436)
This update fixes a potential issue where test results in Odoo's sale stock module could be inconsistent due to timing differences. The change ensures tests run predictably regardless of the machine's speed, improving the reliability of test results. This enhances the overall stability of the sale stock functionality.
Original PR description
In the case the test runs a machine not fast enough, by the time we reach either assert, there could be at least a millisecond difference between the two dates. Now freeze the time to ensure the test doesn't fail depending on its running speed. runbot-233470 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A test related to date handling in the stock account module was failing in community builds. This change corrects the issue by aligning the test's date locking behavior with established practices in the account module, ensuring consistent test results. This resolves a technical impediment to the stock account functionality.
Original PR description
…test_backdate_picking_with_lock_date ### Issue: The test `test_backdate_picking_with_lock_date` added in https://github.com/odoo/odoo/commit/4ea1853108a73f3d6b593785432f10b41ccc0041 fails in community builds. ### Cause of the issue: The `account.change.lock.date` model is defined in `account_accountant`: https://github.com/odoo/enterprise/blob/b3679bc04d4fcef1da7251e5ca061dfeabe89eae/account_accountant/wizard/account_change_lock_date.py#L11-L16 However, this module is not a dependency of the `stock_account` module. ### Fix: We set the lock_dates directly just as in the `account` tests: https://github.com/odoo/odoo/blob/e91c3817574af8bd48a634e3fb0b2f0e08b21ee9/addons/account/tests/test_account_move_date_algorithm.py#L52-L53 runbot-234673 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects an issue where the payment term line name wasn't updated when changing the invoice's 'Customer Reference'. The fix addresses a technical detail within the system's calculations, ensuring consistent naming conventions for invoices and improving data accuracy. It resolves a discrepancy in how the system handles reference updates.
Original PR description
### Issue: When changing the "Customer Reference" on an invoice, the name of the payment term line is not updated. ### Steps to reproduce: - Create an invoice with payment terms, confirm it - Modify…
### Issue:
When changing the "Customer Reference" on an invoice, the name of the payment term line is not updated.
### Steps to reproduce:
- Create an invoice with payment terms, confirm it
- Modify its "Customer Reference" to 'test' for example
- In the page "Journal Items" the name of the terms line has been recomputed to "test - INV/2025/XXXXX"
- Modify again its "Customer Reference" to 'abcdef' for example
- In the page "Journal Items" the name of the terms line was not recomputed
### Cause:
In `_compute_name()` we only write the name if this condition is `True`:
```py
if n_terms > 1 or not line.name or line._origin.name == line._origin.move_id.payment_reference or (
line._origin.move_id.payment_reference and line._origin.move_id.ref
and line._origin.name == f'{line._origin.move_id.ref} - {line._origin.move_id.payment_reference}'
):
line.name = name
```
The purpose of this line is to keep the name of the line if it was manually inputted. So the logic is: we only write the computed name if the previous name was computed. To check this, we check if `line._origin.name == f'{line._origin.move_id.ref} - {line._origin.move_id.payment_reference}'`.
The issue comes from the use of `_origin` in a compute. `_origin` refers to the record before we make any change. But it is meant to be used for `onchange` methods, in these the values are not yet written so `_origin` refers to the record before saving.
Here, when saving, `line._origin` is the same as `line`, so
- `line._origin.move_id.ref` is the new ref.
- `line._origin.name` uses the old ref (it's currently being recomputed).
### Solution:
Unfortunately, in the compute, there are no trace left of what were the previous values as the write already occurred.
The initial complaint justifying to keep custom line names was that on bills, the line name is empty. So when inputting a custom line name, it was removed by the compute method. The previous fix wanted to be more general by always keeping custom line names.
Considering this, this commit removes part of the previous fix: Now we only keep the custom line name when the compute method wants to remove it. So we keep the previous fix for bills.
### Note
There was a test verifying exactly that when manually deleting the line name, in the end
the line does not have a name. This will no longer be the case but a decision must be made between:
1. updating the line name when changing the ref
2. not recomputing line name when it has been changed manually
3. removing the line name when it's manually deleted
We can have 2 and 3 but not with 1 afaik.
opw-5246917
Forward-Port-Of: odoo/odoo#237710This update fixes a limitation in how barcodes handle rental sales within Odoo. A new hook has been added, allowing businesses to customize barcode behavior specifically for rental transactions. This ensures accurate and consistent barcode scanning for both standard sales and rental operations.
Original PR description
Add a hook method to be used in barcode that can be overriden for `sale_stock_renting`. As there is no common module for these two module, this was put in their common ancestor. opw-5265874 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238753
This update fixes a visual issue where form fields, specifically those using 'Text' type, were displaying a placeholder of 'null' instead of an empty field. This change ensures that all form fields appear correctly, providing a consistent and user-friendly experience when editing website forms. It's a minor cosmetic fix that improves usability.
Original PR description
Steps to see the issue: - Open website and start editing - Drop a form - Add a new field, or click on an optional field, the type of which we can modify - Set the field type to 'Selection' or 'Radio Buttons' (or any other that does not have placeholders) - Set the field type back to 'Text' => Field's placeholder is `'null'`, but it should just be empty. task-5383835 Forward-Port-Of: odoo/odoo#238710
16 changes
Resolved issues and error corrections
This change prevents distracting audio notifications from appearing during Odoo tests. Previously, random beeps and ringtones could interrupt test runs, causing frustration. This update ensures a cleaner and more reliable testing environment.
Original PR description
When running tests locally, it's really annoying (and sometimes really jarring / surprising) to hear random beeps and boops from your machine, especially when it's an old timey ringtone from voip. Make it stop. Forward-Port-Of: odoo/odoo#238906 Forward-Port-Of: odoo/odoo#238882
This update clarifies the documentation for the HTML Editor's position plugin, ensuring developers have a clearer understanding of its functionality. The change improves the clarity and maintainability of the HTML Editor's documentation. This ensures consistent and accurate information for developers.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where internal URLs (like 'blob:') within Odoo tests required a mock 'fetch' to work correctly. The fix ensures these URLs function seamlessly without the need for mocking, improving test reliability and streamlining the testing process. This change also enforces proper usage of test mocks.
Original PR description
Before this commit, internal URLs (i.e. "blob:" and "data:") required 'fetch' to be mocked to work. This is wierd because these requests are handled directly by the browser and shouldn't require any…
Before this commit, internal URLs (i.e. "blob:" and "data:") required
'fetch' to be mocked to work. This is wierd because these requests are
handled directly by the browser and shouldn't require any particular
manipulation from the (mocked) server.
This commit ensures that internal URLs still work without fetch being
mocked.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update addresses a requirement from the Belgian Peppol Authority. The system now provides a warning to users attempting to register with the 9925 (BE VAT) method, as this is no longer the standard approach. While the 9925 method remains available for specific cases, the change ensures users understand the correct registration path.
Original PR description
The Belgian Peppol Authority wants us to register belgian users with 0208 (BCE/KBO) and not 9925 (BE VAT). It should still be possible to register with 9925 for some edge case, but let's make it clear to our users that this is not the regular path. task-none (feedback from support + TSB)
A recent update resolved a test failure within the l10n_be_hr_payroll module. The test was previously reliant on a fixed payslip date, leading to errors as the system moved forward. This change updates the payslip date to be relative, ensuring the test accurately reflects current payroll calculations.
Original PR description
Before this commit, the test `test_compute_double_holiday_withholding_taxes_with_3_children` was testing on a payslip that was set in 2024. As this test was based on a contract starting on the system's date -2, the test would start crashing in 2026. This commit changes the payslip date to make it relative instead of fixed runbot error 230738 Forward-Port-Of: odoo/enterprise#101348
This update fixes a potential error that could occur when confirming invoices with zero amounts. Specifically, the system was encountering a division-by-zero error during currency calculations. The fix adds a check to ensure the invoice total isn't zero before performing these calculations, improving invoice confirmation stability.
Original PR description
Steps to reproduce:
--------------------
1. Install l10n_cl and switch to the CL company
2. Create a new invoice:
- Change the currency to a value different from the company currency
(e.g., from CLP to USD)
- Add an invoice line with a price value of 0
- Remove the default tax value
3. Try to confirm the invoice
Issue:
------
A traceback occurs:
`ZeroDivisionError: float division by zero`
Cause:
------
Since the price value is 0, the `amount_total` of the move becomes 0.
When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError.
Solution:
---------
Add a conditional check before division to ensure the `amount_total` is non-zero
Related enterprise PR: https://github.com/odoo/enterprise/pull/99518
opw-5247058
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#235252This update fixes a potential error that could prevent invoices from being confirmed when specific currency and pricing settings are used. The fix adds a check to avoid division by zero, ensuring invoices can be processed correctly. This improves stability and prevents disruptions to financial workflows.
Original PR description
Steps to reproduce: -------------------- 1. Install l10n_cl and switch to the CL company 2. Create a new invoice: - Change the currency to a value different from the company currency (e.g., from CLP to USD) - Add an invoice line with a price value of 0 - Remove the default tax value 3. Try to confirm the invoice Issue: ------ A traceback occurs: `ZeroDivisionError: float division by zero` Cause: ------ Since the price value is 0, the `amount_total` of the move becomes 0. When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError. Solution: --------- Add a conditional check before division to ensure the `amount_total` is non-zero Related community PR: https://github.com/odoo/odoo/pull/235252 opw-5247058 Forward-Port-Of: odoo/enterprise#99518
This update resolves an issue related to how production order states are calculated, ensuring accurate reservations and preventing errors. A previous fix inadvertently caused problems, and this change corrects the underlying dependencies between related states. The workorder revamp in a later release also addresses these dependencies.
Original PR description
Due to the dependencies between mo state, components_availability_state, reservation state and wo state, we had to make sure that the state is always computed before the reservation_state. This is…
Due to the dependencies between mo state, components_availability_state, reservation state and wo state, we had to make sure that the state is always computed before the reservation_state. This is the purpose of (1) merged in 17.0 A non-related mrp_account fix (2) has been merged in 18.0 with the side-effect of firing a reservation_state compute with no state, invalidating the previous fix. As _post_inventory occurs under button_mark_done which changes at least the mo's state and may fire the computes on another mos, we have to make sure reservation_state and state are computed in one go, the correct order being handled by (1). Please note that of workorder revamp (3) has been merged in 18.3, solving the dependencies. (1) https://github.com/odoo/odoo/pull/185092 (2) https://github.com/odoo/odoo/pull/201764 (3) https://github.com/odoo/odoo/pull/194841 task: 5247116 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where invoice sequences without spaces caused errors during processing. The change uses a regular expression to correctly extract the folio number from various sequence formats (spaces, slashes, or hyphens), ensuring invoices are processed accurately. This improves data reliability and prevents potential disruptions to financial workflows.
Original PR description
Before this commit, the method `_get_last_sequence` assumed that the document sequence always contained a space separator (e.g., "INV 12345") It attempted to extract the folio number using `res.split(" ")[-1]`.
If the sequence format did not contain a space, such as the standard Odoo format `INV/2025/01234`, the split would return the entire string. This caused a `ValueError` when trying to cast the non-numeric string to an integer:
ValueError: invalid literal for int() with base 10: 'INV/2025/01234'
This commit fixes the issue by using a regular expression to extract the last group of digits from the sequence string. This ensures the folio number is correctly retrieved regardless of the separator used (slash, space, or hyphen).
opw-5401509This update fixes an issue where clipboard text was incorrectly added after the user's signature in emails. The change ensures clipboard text is inserted before the signature, streamlining the email composition process and eliminating manual adjustments for users. This improves the user experience when sharing knowledge articles via message.
Original PR description
When a user is viewing a page, clicks on the Knowledge Book icon, opens an article, and selects the "Send As Message" button in a Knowledge Clipboard block, the macro system performs several actions: it restores the initial view, opens the full mail composer, and inserts the clipboard block's text at the very end of the editor. Recent updates introduced automatic inclusion of the user's signature in the email body when the full mail composer is opened. As a result, the clipboard text is inserted after the user signature, which is undesirable because users must manually adjust the message to position the signature correctly. To insert text before the user signature but after the user text, the clipboard macro will now trigger a "click" event on the button opening the full mail composer and set on that event the text to insert. The chatter will then read that value and insert the text at the right place. Task-4428445
This update adds a new account for 'Salaries & Wages Payable' within the Odoo accounting system for Hong Kong. This resolves a previous misconfiguration and ensures accurate tracking of payroll liabilities under Hong Kong's NET rules, improving payroll reporting.
Original PR description
Adds a new Salaries & Wages Payable account of type current liabilities in order to use it in payroll for the NET rules and solve a misconfiguration in the default data. task-5042786 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a display issue on the Odoo portal where users were seeing outdated document notifications. The system now accurately shows users only the documents they are currently required to sign, improving the user experience and preventing confusion. This ensures users are only alerted to new documents when it's their turn.
Original PR description
Version: - 18.0 Steps to reproduce: - Install sign - Upload document. - Add multiple signers - Set a sequential signing order Issue: - When documents require sequential signing, portal users see a banner saying there’s a new document to sign, even if it’s not yet their turn. Solution: - Update the counter to show only the documents that the user can currently sign. Impact: - Portal users now only see documents when it’s their turn to sign. Task-5226240
This update ensures stock tests consistently pass by freezing time during execution. Previously, slight timing differences could cause tests to fail intermittently. This change guarantees the test accurately reflects the intended behavior, improving overall test reliability.
Original PR description
In a previous fix in #174442, we ensured that the order of moves when freeing reservation would remain deterministic, even if move dates were the same. In the test however, we didn't make sure that both moves were created at the exact same time, meaning that in some case, a millisecond could pass between the two moves creation, making the later assert checking if both dates are the same wrong, and making the test irrelevant. Now freeze the time at an irrelevant date just to make sure the test always does what it was intended to do. runbot-233470 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a technical issue where text labels within confirmation windows were not being properly prepared for translation within Odoo. Specifically, the 'confirm-title' attribute of buttons was missing from the translation files. This ensures that these labels can now be translated into different languages, improving the user experience for international users.
Original PR description
Description of the issue/feature this PR addresses: The texts from the "confirm-title" attribute of a tag are missing from the POT files. Current behavior before PR: In this line there is a text (the caption of the confirmation window): https://github.com/odoo/odoo/blob/19.0/addons/mass_mailing/views/mailing_mailing_views.xml#L66 "Ready to unleash emails?" - This text is missing from the POT file. Desired behavior after PR is merged: * These texts will apeear in POT files * Someone needs to translated them * It will show up as translated texts in UI --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239034
This update fixes a technical error that prevented shipping rate calculations when a customer partner lacked address information (country, state, and city). The fix ensures that the Envia Shipping module can now correctly process quotations even for partners with incomplete address details, improving the user experience.
Original PR description
Currently, an error is raised when trying to fetch the shipping rate if the partner does not have the required geolocation fields (country, state, and city). **Steps to Reproduce:** 1. Install and…
Currently, an error is raised when trying to fetch the shipping rate if the partner does not have the required geolocation fields (country, state, and city). **Steps to Reproduce:** 1. Install and configure the **Envia Shipping** module. 2. Create a partner without an address (only name + phone). 3. Create quotation for that partner with a deliverable product (e.g; Conference Chair). 4. Click "**Add Shipping**", choose _Envia Shipping_ Method, and then click "**Get Rate**". **Error:** `TypeError - quote_from_bytes() expected bytes` **Cause:** At [1], the system tries to compute Envia shipping rates based on the partner’s country, state, and city. If any of these fields are not set, an error is raised. **Fix:** This commit adds a check for the required fields (country, state, and city). If any are missing, `_geolocate_zip` returns False, leading to a proper validation error instead of a traceback. - [2] [1] - https://github.com/odoo/enterprise/blob/f1a02626a1fbe76add104832e151c647307f3ae7/delivery_envia/models/envia_request.py#L591-L593 [2] - https://github.com/odoo/enterprise/blob/f1a02626a1fbe76add104832e151c647307f3ae7/delivery_envia/models/envia_request.py#L617-L624 sentry-7063870478
This update fixes a potential issue where the system was incorrectly removing outdated sub-channels. The change ensures that the cleanup process only targets actual sub-channels, preventing unintended data modifications and maintaining channel organization. This improves the stability and reliability of the email and discussion features.
Original PR description
In [1], the `_gc_unpin_outdated_sub_channels` method was updated to avoid unpinning sub-channels multiple times. However, a condition is missing on `parent_channel_id` to restrict this gc to actual sub- channels. [1]: https://github.com/odoo/odoo/pull/238493 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
9 changes
Resolved issues and error corrections
This update corrects a technical issue where the text displayed in the confirmation window of a button was not included in the translation files. This ensures that the text can be properly translated into different languages, improving the user experience for international users. The fix adds the necessary attribute to the XML file to allow for translation.
Original PR description
Description of the issue/feature this PR addresses: The texts from the "confirm-title" attribute of a tag are missing from the POT files. Current behavior before PR: In this line there is a text (the caption of the confirmation window): https://github.com/odoo/odoo/blob/19.0/addons/mass_mailing/views/mailing_mailing_views.xml#L66 "Ready to unleash emails?" - This text is missing from the POT file. Desired behavior after PR is merged: * These texts will apeear in POT files * Someone needs to translated them * It will show up as translated texts in UI --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where large product images on the Shop page appeared blurred. The change ensures product images maintain their correct aspect ratio when displayed, providing a better visual experience for customers. This was achieved by adding a specific CSS class to control image scaling.
Original PR description
Steps to reproduce: =================== 1- Add a product with a very large image width & publish product. 2. Go to the Shop page & type product name. -> The product image is blurred. Cause: ====== The product images have `h-100 w-100` classes which force them to fill the container dimensions exactly, ignoring their intrinsic aspect ratio. Solution: ========= Add the `object-fit-contain` class to the image. This ensures the image scales to fit within the container while preserving its aspect ratio. Side note: `object-fit-contain` class will be added only in version 17.0 In the next versions the class already exists. opw-5258658 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A test related to holiday tax calculations in the Belgian payroll module (l10n_be_hr_payroll) was failing due to an outdated date setting on the payslip. This update changed the payslip date to a relative one, resolving the crash that occurred in future years and ensuring the test continues to run correctly.
Original PR description
Before this commit, the test `test_compute_double_holiday_withholding_taxes_with_3_children` was testing on a payslip that was set in 2024. As this test was based on a contract starting on the system's date -2, the test would start crashing in 2026. This commit changes the payslip date to make it relative instead of fixed runbot error 230738 Forward-Port-Of: odoo/enterprise#101348
This update fixes an issue where multiple quality checks were being created for the same picking when adding additional products. The change ensures that only one quality check is generated per operation type (Receipts), streamlining the process and preventing errors. This improves efficiency and data accuracy related to stock quality control.
Original PR description
Steps to reproduce: -------------------------- 1. Install the Quality module. 2. Create a Quality Control Point with: * Control per: Control on Operation. * Operation: Receipts (set in the Operations…
Steps to reproduce: -------------------------- 1. Install the Quality module. 2. Create a Quality Control Point with: * Control per: Control on Operation. * Operation: Receipts (set in the Operations field). 3. Create a Receipt containing one product. 4. Click the Mark as To Do button. 5. Add another product to the same Receipt and save it. Observation: -------------------------- Two quality checks are generated for the same picking, despite the tooltip indicating that only one check should be created per operation. Issue: -------------------------- No validation existed to verify whether an operation-based quality check had already been created for the picking when adding additional stock moves after confirmation. Solution: -------------------------- Add a check ensuring that if a quality check already exists for the same picking type and operation (with no product or category criteria), no additional operation-based quality checks are created. opw-5249233
This update fixes inaccuracies in the module description for the Danish localization (l10n_dk) within Odoo. The changes ensure accurate and clear information for users and stakeholders regarding the module's functionality. This improves the overall user experience and documentation.
Original PR description
There were some mistakes in the Danish part of the module description. This commit corrects those mistakes.
This update corrects a bug where records in the `ir.model.data` table weren't properly removed when a model was unlinked. This prevented data inconsistencies and potential errors. The fix ensures data integrity by cleaning up related records, improving system stability.
Original PR description
When a model is unlinked, the `ir.model.data` related to that model wasn't cleaned up. This leaves dangling records that can generate issues. sentry-6938852090
This update ensures that users' presence status is consistently updated after they return from periods of inactivity. Previously, the system didn't always track these status changes, leading to inaccurate user presence information. This fix guarantees a more reliable and accurate representation of user availability.
Original PR description
Before this commit, the user's presence might not be updated after returning from inactivity. This occurs because the status service only sends an update if the user was away during the previous update. However, this condition doesn't account for cases where the update was never sent.
This update fixes a problem where blog post publication tests were unreliable due to inconsistent timing. By freezing time during key test steps, the tests now produce consistent results, ensuring accurate performance measurements. This improves the reliability of our blog performance metrics.
Original PR description
Some blog post are published with a post_date matching the time the test is run meaning that they are not considered published. We have multiple possibilities when _get_url_hot_query is called: - all call to /blog are executed before the publication date: 9 - some call to /blog are executed after the publication date: 11 - only the last call is executed after the publication date: ~40-50 Using freezetime after the publication date ensures a consistent result This can be easily reproduced by freezing the time on the first calls in _get_url_hot_query and not on the last one. Runbot error [55754](https://runbot.odoo.com/odoo/error/55754)
This update resolves an issue where Odoo's demo data installation caused problems when used with databases that don't use US dollars. The fix ensures the demo data integrates correctly with various currency settings, improving compatibility across different company setups. The change is a minor correction to avoid a complex refactoring.
Original PR description
Currently in the `_merge_move_itemgetter` the system call `self.company_id.currency_id.decimal_places`. However the demo data of stock create a database with US currency and some `stock.move` in it. If we have an existing database with EUR for example. The upper call will return a `currency_id.decimal_places` since we have multiple currency. The best solution, would be to split `_action_confirm` to do a loop by company. But it would need a small refactoring and we will do a minimal diff to fix this issue. Using the smallest currency among all the company is not always correct but it's a super edge case and we should probably remove this code since it went to far. Close #230965, #234078