Daily updates from Odoo
Tuesday, December 2, 2025
142 changes
18 changes
Resolved issues and error corrections
This update corrects a previous issue where the system incorrectly set the preferred invoice sending method based on the first 'Send & Print' action for a partner. This prevented users from easily switching to new sending methods like 'PEPPOL' without being repeatedly prompted to use email. This change ensures users have control over their sending preferences.
Original PR description
Before this commit, we were setting the preferred invoice sending method on the Contact depending on what was in the first Send & Print to this specific partner. It's a bad idea because user don't know about this setting and when they want to switch the default method (example email -> peppol) the wizard will keep propose them to send it by email only and they don't know why since they never knowingly set it to "email". task-none (feedback from AVW) Forward-Port-Of: odoo/odoo#238029 Forward-Port-Of: odoo/odoo#237956
This update corrects a bug where administrators without HR permissions could trigger an error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing unexpected errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update fixes an issue where styles (color, size) applied to text within a list weren't always correctly reflected on the list markers. Now, when text is converted to a list, all applied styles are consistently applied to the markers, improving the visual consistency of lists.
Original PR description
**Current behavior before PR:** - When applying a color or size style to the entire text and then converting it into a list, the style was reflected on the list marker. - However, if multiple styles (e.g., both color and size, or color and bold) were applied, only one style or sometimes none was reflected on the marker. **Desired behavior after PR is merged:** - When text with color, size, or both styles is converted into a list, The list markers now consistently reflect those styles. task-5097649 Forward-Port-Of: odoo/odoo#234296 Forward-Port-Of: odoo/odoo#227813
This update fixes an issue where payslips generated from payruns were named 'new payslip' instead of including the employee's name and pay period. The change ensures that PDF payslips now correctly display 'Salary Slip - [employee name] - [time period]', improving clarity and professionalism for users. This was a simple fix to a missing function call.
Original PR description
_ ## Short functional explanation of the error When generating a payslip from a payrun for an employee, the name of the PDF payslip is simply "new payslip" instead of "Salary Slip - [name of…
_ ## Short functional explanation of the error When generating a payslip from a payrun for an employee, the name of the PDF payslip is simply "new payslip" instead of "Salary Slip - [name of employee] - [time period of the slip]" ## Reproduction Steps 1. Go to Payroll and click on the Payslips tab > payslips. 2. Click on Pay Run. Select Regular Pay and click Continue. 3. Select an employee for which you'd like to generate the payslip. 4. Click on the employee row in the list view. 5. Click Compute sheet > Print. ## Expected behavior A PDF with name "Salary Slip - [employee name] - [time period]" is generated. ## Unexpected Behavior A PDF with name "new Payslip" is generated. ## Origin of the issue When printing the slip with this flow, we don't call the method ```_compute_name()``` used to compute the name of the current slip. Therefore, it stays at 'New Slip', which is the default name. Henceforth, we have to call this method manually when printing the slip. _ opw-5216796 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a minor timing problem that was causing automated tests for our Point of Sale (POS) system to occasionally fail. The fix ensures that key order acceptance times are correctly recorded, improving the reliability of our testing process. This resolves a specific runbot error and contributes to overall system stability.
Original PR description
in this commit: - Fixed the `_acceptOrder, _dispatchOrder, _completeOrder` test, which could fail due to minor timing delays. - Updated the assertion to only verify that `orderAcceptTime` is not empty. runbot-error-234594 Forward-Port-Of: odoo/enterprise#100942
This update resolves an issue where changes to employee records didn't trigger related updates in the system. The fix ensures that when you modify employee details through the user interface, the correct dependent fields are updated as expected. This improves data consistency and accuracy.
Original PR description
purpose: when changing fields of employee in the UI, the `_onchange` of the fields doesn't trigger because it's defined on `hr.version` -added `test_related_fields_on_version_onchange` to check if `_onchange` methods are implemented on `hr.employee` to call the corresponding methods on `hr.version` task-id: 5173389 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where changes to employee details (like insurance or company car) weren't consistently reflected in related fields. The update ensures that changes are correctly propagated across the system, preventing incorrect default values in the employee configuration. Additionally, a performance optimization was implemented to speed up a calculation related to mobility budgets.
Original PR description
'*' = be, ch purpose: currently when you change the values of fields like insurance or company car the onchange doesn't reflect on the subfields which is the case for cars, insurances, etc. this makes the fields have wrong default values in the configurator - added `_onchange` methods for related fields of `hr_version` in `hr_employee` to call the corresponding `_onchange` in `hr_version` - optimized the method `_compute_l10n_be_mobility_budget_amount` to use binary search instead of linear loop task-id: 5173389
This update corrects a bug that caused the Odoo Knowledge article editor to scroll back to the top after closing the `/article` command, particularly when editing long articles. The fix ensures the editor's focus is properly maintained, preventing this disruptive scroll jump and improving the user experience.
Original PR description
Problem: When editing a long Knowledge article and executing the `/article` command, closing the dialog automatically scrolls the page to the top. Cause: This happens because `useActiveElement` inside the `Dialog` component runs its cleanup function when the dialog unmounts. While unmounting, `document.activeElement` is `body`, so the cleanup tries to focus back the `oldActiveElement`, which is the `editable`, and this resets the selection and causes the scroll jump. Solution: Set the selection when closing the dialog, ensuring the `editable` remains the `document.activeElement` during cleanup, preventing the focus reset. Steps to reproduce: - Edit a long article further down the page. - Use the `/article` command. - Dismiss the dialog. → The page scrolls back to the top. opw-4797567 Forward-Port-Of: odoo/enterprise#100634
This update corrects a minor issue in the PEPPOL data neutralization script. Previously, the script wouldn't process data if a required key was missing. Now, the script automatically inserts the key, ensuring all PEPPOL transactions are properly neutralized and compliant. This improves data processing reliability.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves an issue where test emails using 'view_online' would fail if the associated mailing contact was deleted. The fix ensures the system retrieves the first available mailing contact ID, preventing the 'record not found' error. This improves the reliability of test email campaigns.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
This update fixes a technical issue that caused a traceback when removing colors from a mega menu within the website editor. The fix ensures that color styles are correctly copied, preventing errors and improving the stability of the editor functionality. This resolves a minor disruption for users managing website content.
Original PR description
Problem: When removing a color from a block, a traceback occurs. Cause: After https://github.com/odoo/odoo/commit/bda6835293b2b222a003b9696fa052f31539a4ef we copy only style attributes to the `newFont` but the color can be applied through a class that applies text color so we should also copy classes that changes text color. Steps to reproduce: - Open Website. - Add a mega menu. - Open the editor. - On the mega menu, enable the “eCommerce Categories” option. - Edit one of the navigation headers’ labels and save. - Observe traceback. opw-5357516 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug where website favicons weren't correctly displayed in browser tabs after changing website settings or switching between websites with different favicons. The issue stemmed from browser caching, which prevented the new favicon from being loaded. Now, the correct website favicon is consistently shown in browser tabs.
Original PR description
When editing a website favicon in settings or switching between websites with different favicons, the browser tab always displayed the default Odoo favicon instead of the specific website's favicon.…
When editing a website favicon in settings or switching between websites with different favicons, the browser tab always displayed the default Odoo favicon instead of the specific website's favicon. the favicon were not immediately reflected due to browser caching. The browser is responsible for caching the favicon. When you load a page, the browser sees `<link rel="shortcut icon" href="...">`. If it has already downloaded the image at that URL, it will use the stored (cached) copy instead of asking the server for it again. This improves performance. but also it's responsible for the bug. Steps to reproduce: =================== 1. Set a custom favicon for your website in Settings. 2. Open the Website app. 3. Observe that the browser tab shows the default Odoo favicon instead of the custom one. Solution: ========= Retrieve the favicon URL directly from the iframe's document content (link[rel~='icon']) and update the main window's favicon opw-5126299 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a change in how Odoo handles HTML formatting in stock order notes. Previously, searching for notes would generate an infinite loop. This fix ensures that search results are accurate and prevents unnecessary activity. The update also improves performance by limiting search results.
Original PR description
From saas-18.2 and later, html fields has been changed the old behaviour.
Ex.
```python
model.create({'note': 'test'}) -> <p>test</p>
```
Old behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 1
```
New behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 0
```
To follow the new behaviour and not generate infinite activities, we need to add html elements to the error message.
Additional, we improved the performance (better to count and limit vs see all the whole table).
OPW-5266061
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#237977This update resolves an issue where duplicating an approver within an approval request caused a system error. The fix prevents the same user from being linked to multiple approvers, eliminating the traceback and ensuring the approval process functions correctly. This improves stability and prevents disruptions to user workflows.
Original PR description
When User duplicates the approver for any approval request and tries to open that approval request, A traceback will appear. Steps to reproduce the error: - Activate the developer mode - Go to Approvals > Create a new approval request > add any approver > Save - Click on the ``View`` button in the approver line - Now, In the Form view > Actions > Duplicate - Go back to that approval request through breadcrumbs Traceback: ``` ValueError: Expected singleton: approval.approver(1, 3) ``` https://github.com/odoo/enterprise/blob/83b6c0e1c052b08bd23c5e009773b5a3148ddeec/approvals/models/approval_request.py#L270 When the customer duplicates the approver, ``user_id`` will be also duplicated. So, Now Same User is linked with multiple approver. So, It will lead to the above traceback. sentry-6642840799 Forward-Port-Of: odoo/enterprise#100979 Forward-Port-Of: odoo/enterprise#87164
This update fixes a bug that prevented the correct date of a new product template from being set. Previously, the system would fail if a product was created without first using an existing template, leading to inaccurate date information. This ensures all product templates are properly initialized with their launch date.
Original PR description
If _compute_write_date is launched when creating a product.product without starting from an existing product.template, the compute may be launched before the product.template is created, hence record.product_tmpl_id.write_date is False, and comparing datetime and bool leads to an error. This completes the fix proposed https://github.com/odoo/odoo/pull/138177 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237756 Forward-Port-Of: odoo/odoo#237523
This update fixes a rare issue where a test process could fail due to timing problems with locking resources. The fix ensures the test environment remains stable by maintaining a reference to the lock, preventing errors when the test thread finishes early. This improves the reliability of our automated testing.
Original PR description
In some rare cases the late_request_thread could execute so fast without releasing the GIL that assertCanOpenTestCursor was executed before the main_lock.acquire(), causing the lock to be None. In…
In some rare cases the late_request_thread could execute so fast without releasing the GIL that assertCanOpenTestCursor was executed before the main_lock.acquire(), causing the lock to be None. In this case, acquiring the lock is pointless since the late_request_thread has already finished, defeating the purpose of this quire, but we can workaround this keeping a reference to the main_lock before starting the thread. This way, even if the late_request_thread is already finished, we can still acquire the lock even if it is already released. Normal flow: - main_thread acquires main_lock - main_thread span request_thread - main_thread tries to acquire main_lock and again and blocks - request_thread runs and releases main_lock - main_thread acquires main_lock and continues When it fails - main_thread acquires main_lock - main_thread span request_thread - request_thread runs and releases main_lock - main_thread tries to acquire main_lock witch is None and fails Fixed - main_thread acquires main_lock - main_thread span request_thread - request_thread runs and releases main_lock - main_thread tries to acquire main_lock but it is already released - main_thread acquires main_lock and continues Runbot error [229827](https://runbot.odoo.com/odoo/runbot.build.error/229827) Forward-Port-Of: odoo/odoo#237886
This update fixes an issue where the ‘Late Activities’ and ‘Today’s Activities’ counters on the Recruitment dashboard didn't correctly reflect completed activities. The fix ensures that inactive activities are no longer counted, preventing inaccurate activity counts after an activity is marked as done. This improves the accuracy of the Jobs kanban view.
Original PR description
On the Recruitment dashboard (Jobs kanban), the counters for “Late Activities” and “Today’s Activities” may not decrease after an activity is marked as done, even though completed activities no longer appear in the applicant list. Root cause: `_compute_activities` aggregates counts from `mail_activity` using the deadline and job filters but does not exclude non-running (inactive/archived) activities. If an activity is not unlinked and becomes inactive (`active = FALSE`), it still matches `date_deadline <= today` and is counted. Steps to reproduce: 1. Open Recruitment 2. Pick any job and schedule an activity with Due date is Today (also try Yesterday for “Late”). 3. Mark the activity as Done. the number of activities today or late will not decrease opw-5123947 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232722
This update resolves an issue where newly created documents in the l10n_uy_edi module didn't correctly populate certain computed fields. The fix adds a fallback mechanism to ensure these fields are assigned upon record creation, preventing data inconsistencies. This ensures accurate reporting and processing of EDI documents.
Original PR description
The PR https://github.com/odoo/odoo/pull/209587 adds a check for onchange calls on a newly created record. Since in that case `move_id` is not set on `l10n_uy.document`, the compute method fails to assign values. This commit adds a pre-assigned fallback for this specific case. Runbot error: https://runbot.odoo.com/odoo/error/234425
10 changes
Resolved issues and error corrections
This update corrects a bug where administrators without HR permissions could trigger an error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing unexpected errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
A recent update to the l10n_ar module's demo data caused installation issues with Python 3.10 due to a formatting error. This fix corrects the code to ensure compatibility with the newer Python version, allowing the demo data to install correctly and providing a functional demonstration of the module.
Original PR description
**Steps to reproduce:**
- Use Python 3.10
- Install l10n_ar
**Issue:**
The installation fails with a SyntaxError.
**Cause:**
Some demo data use the following format for the taxes definition:
`ref(f'account.{ref('base.company_ri')}_ri_tax_vat_0_compras')`
However, in python 3.10, a quote cannot be used inside f''.
opw-5376152
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#238186This update fixes an issue where the ‘Late Activities’ and ‘Today’s Activities’ counters on the Recruitment dashboard didn't update correctly after an activity was marked as done. The fix ensures that inactive activities are no longer counted, leading to more accurate activity tracking for recruiters. This improves the overall reliability of the Recruitment process.
Original PR description
On the Recruitment dashboard (Jobs kanban), the counters for “Late Activities” and “Today’s Activities” may not decrease after an activity is marked as done, even though completed activities no longer appear in the applicant list. Root cause: `_compute_activities` aggregates counts from `mail_activity` using the deadline and job filters but does not exclude non-running (inactive/archived) activities. If an activity is not unlinked and becomes inactive (`active = FALSE`), it still matches `date_deadline <= today` and is counted. Steps to reproduce: 1. Open Recruitment 2. Pick any job and schedule an activity with Due date is Today (also try Yesterday for “Late”). 3. Mark the activity as Done. the number of activities today or late will not decrease opw-5123947 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a minor issue where the PEPPOL data neutralization script didn't function correctly when a required key was missing. The fix ensures the script now properly inserts the key, guaranteeing consistent PEPPOL data processing. This improves the reliability of our PEPPOL integration.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves a technical issue that prevented the printed receipt tour from functioning correctly after installing the `l10n_it_pos` or `l10n_se_pos` modules. The fix corrects a programming error that caused a runtime error, ensuring the receipt tour works as expected for users.
Original PR description
in this commit: - Fixed TypeError: this.get_order is not a function raised during the `test_printed_receipt_tour` in POS after installing `l10n_it_pos` or `l10n_se_pos`. runbot-233248 Forward-Port-Of: odoo/enterprise#97355
This update fixes several issues within the o_spreadsheet component, ensuring its smooth operation and stability. The changes include improvements to pivot tables, chart loading, and data synchronization, ultimately enhancing the spreadsheet functionality for users. This is a routine maintenance update.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/a205f911b [REL] 18.3.28 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/a205f911b [REL] 18.3.28 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/4777025ff [FIX] pivot: Ensure computed measure range adaptation [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/d52b5908e [FIX] commands: remove duplicate in invalidateEvaluationCommands [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/d146422ad [FIX] Charts: Ensure Chart js extension are loaded on chart creation [Task: 5214007](https://www.odoo.com/odoo/2328/tasks/5214007) https://github.com/odoo/o-spreadsheet/commit/eb5f59104 [FIX] composer: keep edition mode inactive on cursor selection change [Task: 5354541](https://www.odoo.com/odoo/2328/tasks/5354541) https://github.com/odoo/o-spreadsheet/commit/8952d1927 [FIX] BottomBarSheet: sheet name should update on foreign changes [Task: 5016252](https://www.odoo.com/odoo/2328/tasks/5016252) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update resolves an issue where test emails using 'view_online' would fail if the associated mailing contact was deleted. The fix ensures the system retrieves the first available mailing contact ID, preventing the 'record not found' error. This improves the reliability of test email campaigns.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
This update fixes a technical issue related to how error messages are displayed in stock order management. Previously, the system was generating excessive activity, but this change ensures that error messages are handled correctly and efficiently. This improves performance and prevents unnecessary system load.
Original PR description
From saas-18.2 and later, html fields has been changed the old behaviour.
Ex.
```python
model.create({'note': 'test'}) -> <p>test</p>
```
Old behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 1
```
New behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 0
```
To follow the new behaviour and not generate infinite activities, we need to add html elements to the error message.
Additional, we improved the performance (better to count and limit vs see all the whole table).
OPW-5266061
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#237977This update resolves an issue where duplicating an approver on an approval request would cause a system error. The fix prevents the same user from being linked to multiple approvers, eliminating the traceback and ensuring approval requests can be properly opened. This improves stability and prevents disruptions to the approval workflow.
Original PR description
When User duplicates the approver for any approval request and tries to open that approval request, A traceback will appear. Steps to reproduce the error: - Activate the developer mode - Go to Approvals > Create a new approval request > add any approver > Save - Click on the ``View`` button in the approver line - Now, In the Form view > Actions > Duplicate - Go back to that approval request through breadcrumbs Traceback: ``` ValueError: Expected singleton: approval.approver(1, 3) ``` https://github.com/odoo/enterprise/blob/83b6c0e1c052b08bd23c5e009773b5a3148ddeec/approvals/models/approval_request.py#L270 When the customer duplicates the approver, ``user_id`` will be also duplicated. So, Now Same User is linked with multiple approver. So, It will lead to the above traceback. sentry-6642840799 Forward-Port-Of: odoo/enterprise#100979 Forward-Port-Of: odoo/enterprise#87164
This update fixes an error that occurred when creating new product templates without a pre-existing product. It ensured the product's launch date was correctly calculated, preventing a comparison error that could disrupt product information. This improves data accuracy and stability for new product listings.
Original PR description
If _compute_write_date is launched when creating a product.product without starting from an existing product.template, the compute may be launched before the product.template is created, hence record.product_tmpl_id.write_date is False, and comparing datetime and bool leads to an error. This completes the fix proposed https://github.com/odoo/odoo/pull/138177 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237756 Forward-Port-Of: odoo/odoo#237523
2 changes
Enhancements to existing features
This update replaces the specific "Uruware" name used in the Odoo settings with a generic "UCFE Provider" label for the electronic invoicing provider. This ensures customers contact Odoo support directly, streamlining assistance and maintaining a consistent configuration for Uruguayan users. The core functionality remains unchanged.
Original PR description
Before: -In the Settings > Uruguay Localization section, electronic invoicing provider was shown as "Uruware". -This could lead customers to contact Uruware directly instead of Odoo support. After: -Replaced all mentions of `Uruware` with generic name, `UCFE Provider`. -Updated labels and descriptions in both testing and production sections. -The overall configuration and functionality remain unchanged. Impact: -Removes direct provider references from the interface. -Ensures customers contact Odoo support for any assistance. -Keeps the configuration clear and consistent for Uruguayan users. task-5244539 Forward-Port-Of: odoo/enterprise#100372 Forward-Port-Of: odoo/enterprise#99065
Resolved issues and error corrections
This update fixes a bug that occurred when users duplicated approvers within an approval request. The duplication caused a system error, preventing users from accessing the request. The fix ensures that duplicate approvers are handled correctly, eliminating the error and improving the approval process stability.
Original PR description
When User duplicates the approver for any approval request and tries to open that approval request, A traceback will appear. Steps to reproduce the error: - Activate the developer mode - Go to Approvals > Create a new approval request > add any approver > Save - Click on the ``View`` button in the approver line - Now, In the Form view > Actions > Duplicate - Go back to that approval request through breadcrumbs Traceback: ``` ValueError: Expected singleton: approval.approver(1, 3) ``` https://github.com/odoo/enterprise/blob/83b6c0e1c052b08bd23c5e009773b5a3148ddeec/approvals/models/approval_request.py#L270 When the customer duplicates the approver, ``user_id`` will be also duplicated. So, Now Same User is linked with multiple approver. So, It will lead to the above traceback. sentry-6642840799 Forward-Port-Of: odoo/enterprise#87164
16 changes
Enhancements to existing features
This update improves the efficiency of IoT display updates by intelligently determining if a URL change is needed. Previously, updates were triggered unnecessarily, but now the system only updates the URL when a screen rotation is requested, streamlining the process and reducing unnecessary network traffic. This results in a more responsive and reliable IoT experience.
Original PR description
To avoid updating the URL of the IoT display when we only want to rotate the screen, we now check which value changed before sending the request.
This update replaces the fa_book icon in knowledge article search results with the article's specific emoji, enhancing visual clarity. Crucially, the article body is now also displayed, providing users with complete information. This improves the user experience when searching for knowledge articles.
Original PR description
Before this commit, when a knowledge article appeared in the search results, if an image or icon was displayed for that result, it was represented with the fa_book icon. Also the body of the article was not shown. Now, when an article is shown, it is represented with the emoji defined specifically for that article. The body of the article is also showed. Part of task-4029264. linked with [this PR 192032](https://github.com/odoo/odoo/pull/192032)
Resolved issues and error corrections
This update addresses a minor technical issue that was causing a runbot error in our point-of-sale (POS) system. The fix involved adjusting test timing and simplifying the verification process to ensure order acceptance times are correctly recorded. This improves the reliability of the POS functionality.
Original PR description
in this commit: - Fixed the `_acceptOrder, _dispatchOrder, _completeOrder` test, which could fail due to minor timing delays. - Updated the assertion to only verify that `orderAcceptTime` is not empty. runbot-error-234594 Forward-Port-Of: odoo/enterprise#100942
This pull request addresses several bugs and inconsistencies within Odoo's product tour functionality. The changes improve the user experience by correcting display issues and ensuring tours function as intended across different Odoo modules. This resolves minor usability problems and enhances the overall reliability of product demonstrations.
This update resolves an issue where closing the '/article' dialog in the Knowledge editor caused the page to jump back to the top. The fix ensures the dialog's focus is properly managed during closing, eliminating this disruptive scroll behavior. This improves the user experience when editing long articles.
Original PR description
Problem: When editing a long Knowledge article and executing the `/article` command, closing the dialog automatically scrolls the page to the top. Cause: This happens because `useActiveElement` inside the `Dialog` component runs its cleanup function when the dialog unmounts. While unmounting, `document.activeElement` is `body`, so the cleanup tries to focus back the `oldActiveElement`, which is the `editable`, and this resets the selection and causes the scroll jump. Solution: Set the selection when closing the dialog, ensuring the `editable` remains the `document.activeElement` during cleanup, preventing the focus reset. Steps to reproduce: - Edit a long article further down the page. - Use the `/article` command. - Dismiss the dialog. → The page scrolls back to the top. opw-4797567 Forward-Port-Of: odoo/enterprise#100634
This update resolves an issue where the system would fail to print payslips for employees who didn't have a contract assigned. The fix ensures that a contract is required to generate a payslip, preventing errors and improving data accuracy. This change ensures consistent payslip generation.
Original PR description
An error occurs while printing a payslip for an employee who does not have a contract. Steps to reproduce the error: - Install the ``hr_payroll`` module - Create an employee without contract - Create a payslip for that employee > Compute Sheet > Print Traceback: ``` Error while rendering the template: TypeError: '<' not supported between instances of 'datetime.date' and 'bool' ``` https://github.com/odoo/enterprise/blob/368a81a277b2fa7c5eac7c63addd0d75ec89111b/hr_payroll/views/report_payslip_templates.xml#L70 Here, ``version_id.contract_date_start`` will be ``False`` when the employee does not have a contract, which leads to the above traceback. Solution: User can not print payslip without running contract. sentry-6922017511 Forward-Port-Of: odoo/enterprise#96374
This update resolves a technical problem identified during testing of the l10n_ch_hr_payroll module. Specifically, a freeze time error was corrected, ensuring the accuracy of payroll calculations within the Swiss tax system. This ensures the system is functioning correctly and generating accurate reports.
Original PR description
Forward-Port-Of: odoo/enterprise#100953
This update resolves an error that prevented users from accessing the Time Off overview in the Gantt view when an employee lacked a defined working schedule. The fix skips unnecessary calculations when a working schedule is missing, preventing the 'AttributeError' and ensuring the feature functions correctly for all employees. This improves the user experience and prevents data access issues.
Original PR description
Currently, an error occurs when an employee has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_gantt` with demo data. 2. Remove the **Working Hours**(Payroll section) of **Marc Demo**. 3. Navigate to: Time off > Overview. **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/db049f42ad4c2c291b2d64a9e637cd2292c280e8/hr_holidays_gantt/models/hr_leave.py#L204 sentry-7017326141 Forward-Port-Of: odoo/enterprise#100730
This update resolves a technical issue within Odoo's Web Studio tool that prevented accurate field choices from being displayed. The fix ensures that the system correctly utilizes data, improving the reliability of the user interface when creating and editing forms. This change enhances the overall user experience within Web Studio.
Original PR description
In this commit, we fix the `getFieldChoices` method. This method takes `this.props.node.field`, whereas it can be called from `onWillUpdateProps`. All other methods take this into account except for `getFieldChoices()`. As a result, `this.props.node` could be outdated when needed. This commit fixes this error.
This update corrects a technical issue within the Odoo Enterprise reporting system. Previously, the way data was aggregated in reports didn't guarantee a consistent order, which could lead to inaccurate results. This change enforces order within the aggregation, ensuring reliable reporting data.
Original PR description
The array_agg does not enforce an order by default. It causes issues when we want to check the result. Let's enforce it now runbot-error-234281
This update resolves a performance issue related to a field in the Helpdesk module by switching to a new widget. The change ensures the field functions smoothly and efficiently, maintaining the quality of the Helpdesk experience for users. This is a technical fix to optimize performance.
Original PR description
This commit adapts the definition of the field using the `badge_rotting` widget since that widget no longer extend to SelectionBadge widget due to a perfomance issue. Forward-Port-Of: odoo/enterprise#99943
This update fixes a problem that prevented the Acerata payroll export file from generating correctly when the employee name was missing. The fix uses the display name field, which is always populated, and includes a new test suite to ensure the export process works reliably. This ensures accurate payroll reporting.
Original PR description
When generating the export file, a traceback occurred because the name field was empty. The logic has been updated to use the display_name field instead, ensuring the export runs correctly, as it is always set to a value. However, the display_name sometimes is just a date, so I depended on a customizable new lable to show the employee to this version. Additionally, a comprehensive test suite was added to validate Acereta code behavior, including: - validation of code length for employees, companies, and work entry types, - handling of codes across different companies, - and the complete Acereta export flow (from work entry creation and validation to export file generation). task-5153727 Forward-Port-Of: odoo/enterprise#100987 Forward-Port-Of: odoo/enterprise#96823
This update resolves a bug that prevented correct configuration of payroll within the Odoo Enterprise system. The fix involved adjusting how a specific field is used across modules to ensure compatibility and proper functionality. This change improves the reliability of HR payroll processes.
Original PR description
…act_salary A runbot build error was reported for one of my tests: https://runbot.odoo.com/odoo/runbot.build.error/233591 The issue was because the field `hide_in_offer` was used in a module where it did not exist. I have overridden the function to make it call the field when it was installed, and moved the logic using it to that inheriting function. task-5350522 Forward-Port-Of: odoo/enterprise#100986 Forward-Port-Of: odoo/enterprise#100190
This update corrects a bug in the ESIC payroll calculation. It now ensures that ESIC contributions are only applied to employees with gross salaries below 21,000 rupees, aligning with current regulations. This change improves payroll accuracy and compliance.
Original PR description
### Before this commit, ESIC amount is applied to all cases, which is wrong. ### After merge of this commit, It should apply to employees with gross salaries less than 21000 rupees. task-5038256 Forward-Port-Of: odoo/enterprise#99996
Code cleanup and technical improvements
This update clarifies the internal naming of a key component within the Point of Sale (POS) module. The change, named `iot_fdm_be_id`, improves code readability and maintainability. This is a routine refactoring to enhance the overall stability and development process of the POS system.
Original PR description
For clarity, we renamed `iface_fiscal_data_module` to `iot_fdm_be_id`.
Miscellaneous changes
This pull request contains preliminary work (wip) on updating the VoIP softphone's call history functionality. Changes were made to the JavaScript and XML files related to this feature, likely to improve the user interface or functionality of the call history display. Further development and testing are needed.
38 changes
New functionality added to Odoo
This update introduces a new reporting feature for Irish businesses, specifically the Return of Trading Details (RTD) Report and its associated Return. This allows Irish companies to comply with local regulations and reporting requirements within Odoo, streamlining their accounting processes.
Original PR description
WIP This PR adds a new report Return of Trading Details (RTD) for Ireland and its Return. task-5184653
Resolved issues and error corrections
This update corrects a previous issue where the system incorrectly set the preferred invoice sending method based on the first 'Send & Print' action for a partner. This prevented users from easily switching to new sending methods like 'PEPPOL' without being repeatedly prompted to use email. This change ensures users have control over their sending preferences.
Original PR description
Before this commit, we were setting the preferred invoice sending method on the Contact depending on what was in the first Send & Print to this specific partner. It's a bad idea because user don't know about this setting and when they want to switch the default method (example email -> peppol) the wizard will keep propose them to send it by email only and they don't know why since they never knowingly set it to "email". task-none (feedback from AVW) Forward-Port-Of: odoo/odoo#238029 Forward-Port-Of: odoo/odoo#237956
This update corrects a bug where administrators without HR permissions could trigger an access error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update fixes an issue where styles (color, size) applied to text within a document weren't consistently reflected on list markers. Now, when converting text with multiple styles to a list, the list markers will always display the intended styles, improving the formatting of lists.
Original PR description
**Current behavior before PR:** - When applying a color or size style to the entire text and then converting it into a list, the style was reflected on the list marker. - However, if multiple styles (e.g., both color and size, or color and bold) were applied, only one style or sometimes none was reflected on the marker. **Desired behavior after PR is merged:** - When text with color, size, or both styles is converted into a list, The list markers now consistently reflect those styles. task-5097649 Forward-Port-Of: odoo/odoo#234296 Forward-Port-Of: odoo/odoo#227813
This update resolves an error that prevented payslips from being printed for employees who didn't have a contract assigned. The fix ensures that a contract is required to generate a payslip, preventing template errors. This improves the reliability of payroll reporting.
Original PR description
An error occurs while printing a payslip for an employee who does not have a contract. Steps to reproduce the error: - Install the ``hr_payroll`` module - Create an employee without contract - Create a payslip for that employee > Compute Sheet > Print Traceback: ``` Error while rendering the template: TypeError: '<' not supported between instances of 'datetime.date' and 'bool' ``` https://github.com/odoo/enterprise/blob/368a81a277b2fa7c5eac7c63addd0d75ec89111b/hr_payroll/views/report_payslip_templates.xml#L70 Here, ``version_id.contract_date_start`` will be ``False`` when the employee does not have a contract, which leads to the above traceback. Solution: User can not print payslip without running contract. sentry-6922017511
This update addresses a minor timing issue that was causing automated tests for the Point of Sale (POS) module to occasionally fail. The fix ensures that key order acceptance timestamps are correctly verified, improving the reliability of our automated testing process. This resolves a specific runbot error and contributes to overall system stability.
Original PR description
in this commit: - Fixed the `_acceptOrder, _dispatchOrder, _completeOrder` test, which could fail due to minor timing delays. - Updated the assertion to only verify that `orderAcceptTime` is not empty. runbot-error-234594 Forward-Port-Of: odoo/enterprise#100942
This update fixes a minor bug where closing the `/article` dialog in the Knowledge editor would cause the page to jump to the top. The fix ensures the correct element focus is maintained during dialog closure, preventing this disruptive scroll behavior. This improves the user experience when editing long articles.
Original PR description
Problem: When editing a long Knowledge article and executing the `/article` command, closing the dialog automatically scrolls the page to the top. Cause: This happens because `useActiveElement` inside the `Dialog` component runs its cleanup function when the dialog unmounts. While unmounting, `document.activeElement` is `body`, so the cleanup tries to focus back the `oldActiveElement`, which is the `editable`, and this resets the selection and causes the scroll jump. Solution: Set the selection when closing the dialog, ensuring the `editable` remains the `document.activeElement` during cleanup, preventing the focus reset. Steps to reproduce: - Edit a long article further down the page. - Use the `/article` command. - Dismiss the dialog. → The page scrolls back to the top. opw-4797567 Forward-Port-Of: odoo/enterprise#100634
This update fixes an issue where RPC failures were incorrectly handled by the system's caching mechanism. Previously, a failed RPC would resolve with 'undefined' instead of properly rejecting the promise. This change ensures that RPC failures are correctly caught and handled, preventing unexpected behavior and improving the stability of the system.
Original PR description
Let's say we trigger two times a RPC that fails. The first time, the cache is empty and we make the RPC. The ram cache is filled with `prom`. The second time, we get `prom` from the ram cache. When…
Let's say we trigger two times a RPC that fails.
The first time, the cache is empty and we make the RPC. The ram cache is filled with `prom`.
The second time, we get `prom` from the ram cache.
When the RPC actually finishes, we end up in
```js
.catch((error) => {
this.ramCache.delete(table, key);
def.reject(error);
});
```
=> the RPC failure is catched, which means `prom` itself is not rejected. Instead, it resolves with the result of `.catch(...)`, which is `undefined`
Here is a simplified toy example:
```js
const prom = Promise.resolve(
Promise.reject(new Error("fetch failed")).catch(() => {})
);
```
In this example, `prom` is successful and the result is `undefined`
"
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#238185
Forward-Port-Of: odoo/odoo#237984This update resolves an issue where duplicating an approver within an approval request caused a system error. The fix prevents the same user from being linked to multiple approvers, eliminating the traceback and ensuring approval requests can be properly processed. This improves stability and prevents disruptions to the approval workflow.
Original PR description
When User duplicates the approver for any approval request and tries to open that approval request, A traceback will appear. Steps to reproduce the error: - Activate the developer mode - Go to Approvals > Create a new approval request > add any approver > Save - Click on the ``View`` button in the approver line - Now, In the Form view > Actions > Duplicate - Go back to that approval request through breadcrumbs Traceback: ``` ValueError: Expected singleton: approval.approver(1, 3) ``` https://github.com/odoo/enterprise/blob/83b6c0e1c052b08bd23c5e009773b5a3148ddeec/approvals/models/approval_request.py#L270 When the customer duplicates the approver, ``user_id`` will be also duplicated. So, Now Same User is linked with multiple approver. So, It will lead to the above traceback. sentry-6642840799 Forward-Port-Of: odoo/enterprise#100979 Forward-Port-Of: odoo/enterprise#87164
This update resolves a crash that occurred when generating inventory valuation reports in Arabic. The issue stemmed from the system incorrectly interpreting date formats, specifically Eastern Arabic numerals. The fix ensures dates are consistently formatted as 'YYYY-MM-DD' (ASCII ISO), preventing errors and improving report reliability.
Original PR description
Steps:
- Switch UI language to Arabic.
- Accounting ▸ Review ▸ Inventory Valuation.
Before this commit:
- Crash during RPC with: ValueError: time data '٢٠٢٥-١٠-٢١' does not match format '%Y-%m-%d' (from stock_account.stock.valuation.report._get_report_data)
Cause:
- The client sent the date string with Eastern Arabic digits. Python’s strptime('%Y-%m-%d') only accepts ASCII digits.
with this commit:
When building kwargs for `get_report_values`, serialize the date with `toISODate()` (ASCII `YYYY-MM-DD`).
Replace localized formatting (`toFormat('yyyy-MM-dd')` with `toISODate()` at the call site. This is locale-independent and avoids TZ side effects for pure dates. Keeps existing behavior for empty date (send `false`).
opw-5146684
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis pull request updates the core odoo spreadsheet component to the latest version (19.0.12). It addresses several minor bugs and performance improvements related to chart rendering, data handling, and user interface elements, ensuring a smoother and more reliable spreadsheet experience. These changes enhance stability and usability for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/32203f1f8 [REL] 19.0.12 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/32203f1f8 [REL] 19.0.12 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/6fde54cb8 [FIX] chart: don't crash treemap without visible data [Task: 5365419](https://www.odoo.com/odoo/2328/tasks/5365419) https://github.com/odoo/o-spreadsheet/commit/291608938 [FIX] charts: small zoom is disabled [Task: 5058567](https://www.odoo.com/odoo/2328/tasks/5058567) https://github.com/odoo/o-spreadsheet/commit/b0c2d6628 [FIX] clickable cells: prevent overlap with grid icons [Task: 4930803](https://www.odoo.com/odoo/2328/tasks/4930803) https://github.com/odoo/o-spreadsheet/commit/45725c976 [FIX] Migration: Fix chart migration after 18.5.1 [Task: 5365954](https://www.odoo.com/odoo/2328/tasks/5365954) https://github.com/odoo/o-spreadsheet/commit/e63f36f52 [FIX] pivot: Ensure computed measure range adaptation [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/34d4c6420 [FIX] commands: remove duplicate in invalidateEvaluationCommands [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/b58dae95a [FIX] Charts: Ensure Chart js extension are loaded on chart creation [Task: 5214007](https://www.odoo.com/odoo/2328/tasks/5214007) https://github.com/odoo/o-spreadsheet/commit/99a94ac04 [FIX] topbar: close font size dropdown and keep focus on the grid [Task: 5263792](https://www.odoo.com/odoo/2328/tasks/5263792) https://github.com/odoo/o-spreadsheet/commit/666c6de18 [FIX] figures: fix non-deterministic figure order export [Task: 5092281](https://www.odoo.com/odoo/2328/tasks/5092281) https://github.com/odoo/o-spreadsheet/commit/7578897a4 [FIX] Demo: Fix wrapper style [Task: 5212448](https://www.odoo.com/odoo/2328/tasks/5212448) https://github.com/odoo/o-spreadsheet/commit/641d1923a [FIX] composer: keep edition mode inactive on cursor selection change [Task: 5354541](https://www.odoo.com/odoo/2328/tasks/5354541) https://github.com/odoo/o-spreadsheet/commit/c5c03e189 [FIX] BottomBarSheet: sheet name should update on foreign changes [Task: 5016252](https://www.odoo.com/odoo/2328/tasks/5016252) https://github.com/odoo/o-spreadsheet/commit/d4b38dc53 [FIX] Composer: Fix assistant position [Task: 5155838](https://www.odoo.com/odoo/2328/tasks/5155838) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update resolves an issue where the PEPPOL data neutralization script wouldn't function correctly if a required key was missing. The change ensures the script automatically inserts the key when it's not present, guaranteeing proper data processing for PEPPOL transactions. This improves the reliability of our PEPPOL integration.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves a technical error that was preventing proper payroll calculations within the Odoo Enterprise system. The fix involved correcting a dependency issue related to a configuration field, ensuring accurate salary processing for Belgian employees. This change improves the reliability of payroll reporting.
Original PR description
…act_salary A runbot build error was reported for one of my tests: https://runbot.odoo.com/odoo/runbot.build.error/233591 The issue was because the field `hide_in_offer` was used in a module where it did not exist. I have overridden the function to make it call the field when it was installed, and moved the logic using it to that inheriting function. task-5350522 Forward-Port-Of: odoo/enterprise#100190
This update resolves a technical issue related to the Swiss payroll module (l10n_ch_hr_payroll) by adding missing input types. These input types are crucial for accurately reflecting Swiss tax and social security regulations, ensuring the payroll calculations align with legal requirements. This fix improves the accuracy and compliance of the payroll processing for Swiss businesses.
Original PR description
Forward-Port-Of: odoo/enterprise#100992
This update resolves a technical error that prevented the generation of payroll export files. The fix utilizes the employee's display name instead of the name field, ensuring consistent export functionality. A new test suite has been implemented to guarantee the accuracy of the Acereta payroll export process.
Original PR description
When generating the export file, a traceback occurred because the name field was empty. The logic has been updated to use the display_name field instead, ensuring the export runs correctly, as it is always set to a value. However, the display_name sometimes is just a date, so I depended on a customizable new lable to show the employee to this version. Additionally, a comprehensive test suite was added to validate Acereta code behavior, including: - validation of code length for employees, companies, and work entry types, - handling of codes across different companies, - and the complete Acereta export flow (from work entry creation and validation to export file generation). task-5153727 Forward-Port-Of: odoo/enterprise#96823
This update fixes a technical error that prevented users from accessing the date filter within mail group settings. The issue stemmed from a formatting mistake in the code, which was corrected to ensure the date filter functions correctly. This ensures all users can effectively manage their mail groups.
Original PR description
Steps to reproduce =================== 1. Open any mail group on the website side. 2. Try to access the date filter. Here https://github.com/odoo/odoo/pull/206575/commits/99ece288df1bbb98fd538479b07da14f3abf0d03, we missed wrapping the tuple in the `Domain` class. Task-5369008 Forward-Port-Of: odoo/odoo#238076
This update resolves an issue where the system was incorrectly creating multiple bank accounts from UBL invoices. The fix filters out duplicate account numbers, ensuring accurate bank information is imported into the system. This prevents potential data inconsistencies and improves the reliability of financial transactions.
Original PR description
Currently `_import_retrieve_and_fill_partner_bank_details` may try to to create multiple res partner bank with the same account. This can i.e. happen in case there are multiple `cac:PaymenMeans` nodes in the XML. After this commit we filter out duplicate bank accounts numbers. opw-5149621 Forward-Port-Of: odoo/odoo#238139 Forward-Port-Of: odoo/odoo#236676
This update corrects a bug that prevented users from mentioning colleagues in different companies within Odoo's chat functionality. The issue stemmed from a missing security check, leading to access errors. Adding a necessary security layer now allows users to correctly mention colleagues regardless of their company affiliation.
Original PR description
Steps to reproduce: 1. Create a portal user in the current company 2. Create a new company and switch to it. 3. In the Chatter of any record, mention the portal user from the previous company. Issue: - An AccessError is raised when mentioning a user belonging to another company. Cause: - The missing forward port of this commit https://github.com/odoo/odoo/commit/b1133f6a1efaef1d62f32f7f0197f2d8eb0cb191 was not merged, which caused the user to access res.users records without sudo() from version saas-18.4. Since the mentioned user belongs to a different company, the current user lacks the necessary read permissions, triggering the error. https://github.com/odoo/odoo/blob/6c35edb9dabaf8ce0b276ca26459401ac43d10e4/addons/mail/models/res_partner.py#L267 Solution: - Add sudo() to access the user. opw-5105598 Forward-Port-Of: odoo/odoo#230215
This update resolves an issue where test emails using 'view_online' would fail if the contact associated with the email was deleted. The fix ensures the system now retrieves the first contact ID, preventing errors and improving the reliability of test email generation. This ensures emails are sent correctly even after contact deletions.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
This update resolves an issue where employee profile pictures were misaligned on mobile devices. The fix ensures that employee avatars display correctly, providing a consistent and professional user experience for mobile users. This improves the visual quality of the HR module.
Original PR description
The employee form view displayed misaligned avatar images on mobile screens. task-5241292 Forward-Port-Of: odoo/odoo#234537
A technical error preventing edits to the 'Document: Document Share' email template has been resolved. This issue stemmed from a recent update to the template structure, causing a syntax error. The fix ensures users can now successfully modify and save this important email template.
Original PR description
**Steps to reproduce:** 1. Install `document` and `contact` 2. Go to Settings > Technical > Email Templates 3. Search for the 'Document: Document Share' template 4. Try to edit and save it **Issue:** - Traceback occurs: `SyntaxError: t-elif directive must be preceded by t-if or t-elif directive` **Cause:** - A revamp introduced by commit: https://github.com/odoo/enterprise/commit/22446368503fadc0e0bf459dd3c8ab8b8f6624b0 Introduced an invalid template structure **Solution:** - Refactor the template to ensure valid QWeb directive order opw-5143730
This update corrects a potential issue where delivery IoT reports could be generated without verifying the existence of the associated IoT device. This prevents errors and ensures reports are only created when valid device data is available, improving report reliability. The change focuses on a critical check within the delivery IoT module.
Original PR description
As `delivery_iot.ir_action_report` is overriding `iot.ir_action_report` and bypassing the IoT device record existance check, we need to also check in delivery IoT.
This update resolves a bug that prevented users from creating replenishment orders when using the 'Buy' route in the purchase module. The fix corrects an error related to date handling during orderpoint calculations, ensuring the 'Buy' route now functions correctly. This improves the reliability of replenishment processes.
Original PR description
Currently, an error is produced when creating a new replenishment record for using the **Buy** route. **Steps to Reproduce:** 1. Install `purchase_stock` module with demo data. 2. Inventory > Operations > Replenishment. 3. Make **Route** field visible in the list. 3. Click **New**, and select the **"Buy"** in Route. **Error:** `TypeError - combine() argument 1 must be datetime.date, not bool` **Cause:** The method `_get_orderpoint_procurement_date()` expects a valid lead horizon date but receives a boolean value when the product is not set. This leads to a traceback during the computation. **Fix:** The commit handles the replenishment computation when a product is not defined. As a result, creating a replenishment with the "Buy" route works correctly even when the product is not defined. sentry-6928858334
This update resolves an error that prevented users from accessing the Time Off overview in the Gantt view when an employee lacked a defined working schedule. The fix skips unnecessary calculations when a working schedule is missing, ensuring the feature functions correctly for all employees. This improves the user experience and prevents data access issues.
Original PR description
Currently, an error occurs when an employee has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_gantt` with demo data. 2. Remove the **Working Hours**(Payroll section) of **Marc Demo**. 3. Navigate to: Time off > Overview. **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/db049f42ad4c2c291b2d64a9e637cd2292c280e8/hr_holidays_gantt/models/hr_leave.py#L204 sentry-7017326141 Forward-Port-Of: odoo/enterprise#100730
This update resolves an issue where the mobile website preview's scrollbar appeared incorrectly during page transitions. The fix ensures the entire website document is copied to the fallback iframe, eliminating visual inconsistencies and improving the overall mobile browsing experience. This addresses a minor aesthetic problem that could potentially impact user perception.
Original PR description
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's…
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's document. This did not copied the attributes on the `html` node, which somtimes impacted the appearance. With this commit, the whole document is copied to the fallback iframe. Steps to reproduce: - Activate "Mobile preview" when viewing the website - Go to a page that is long enough for a scrollbar to appear - Navigate to another page - Bug: During the transition, the fallback is shown, and its scrollbar is wider than the one of the page that was shown just before task-5212287 ### [FIX] website: remove content of fallback iframe after load Since commit 7b19831e1c624b483008feb526ba773ec8b23009, an fallback iframe is shown behind the website preview to avoid flicker on navigation. Since commit 3036c7dc4720a88f2717b96a29d45d923eb6ec75, the preview for mobile has some transparency on its scrollbar. Thus the part of the fallback iframe behind the scrollbar when previewing mobile was slightly visible. This commit fixes it by removing the fallback iframe's content after the website has loaded (and the fallback is not needed anymore). Steps to reproduce: - On website, activate "Mobile preview" - Navigate to a page long enough to have a scrollbar - Navigate to another page long enough to have a scrollbar - Scroll a bit - Bug: The scrollbar of the fallback is slightly visible task-5212287 Forward-Port-Of: odoo/odoo#237810 Forward-Port-Of: odoo/odoo#233373
This update resolves an issue where links to individual tasks within the 'My Tasks' feature were broken. The fix adds a necessary field to the action definition, restoring functionality. A new test has also been implemented to prevent similar problems in the future.
Original PR description
after https://github.com/odoo/odoo/commit/bc6b363f556104e86a635325690a8061a9e9ff91 all `/my-tasks/<task-id>` links are broken because of missing path field in the corresponding action. this commit should fix the issue and add a test to avoid regression. opw-5342898 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds a 'Documents' section to the employee record form, allowing users to easily manage and view associated documents. Previously, these document fields were missing, creating a gap in the employee information available within the system. This enhancement improves record completeness and facilitates better document tracking.
Original PR description
- These fields were not available in the employee form view. - create a new section named 'Documents' under the Personal Tab in employee form view - added the fields in the employee form view task-5366982 Forward-Port-Of: odoo/enterprise#100869
This update fixes an issue where adding shifts to existing rental orders didn't correctly update the order line and total price. The fix ensures that new shifts are properly added to the order, reflecting the increased quantity and total cost. This improves the accuracy of rental order management.
Original PR description
**steps to reproduce:** - Configure a booking product as service and rental. - Confirm a shift to create a rental order. - Activate sync on the role. - Add a new shift with the same product using "Add to last order". - Open the rental order: the order line and total price are not updated. **issue:** The price and the order line were not updated when a new shift was added to the last order. **cause:** Previously, adding a new shift to a rental order did not add the order line on the corresponding order. becacuse we was not checking the state of the order and at line creation line will be created for confirmed order only. **fix:** A check is added when the getting the rental order it should be confirmed. task-5093190 Forward-Port-Of: odoo/enterprise#95314
This update fixes a bug that occurred when creating new product templates. Previously, the system incorrectly set the template's launch date, leading to errors. This change ensures the launch date is calculated accurately from the start, preventing these issues and improving data consistency.
Original PR description
If _compute_write_date is launched when creating a product.product without starting from an existing product.template, the compute may be launched before the product.template is created, hence record.product_tmpl_id.write_date is False, and comparing datetime and bool leads to an error. This completes the fix proposed https://github.com/odoo/odoo/pull/138177 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237756 Forward-Port-Of: odoo/odoo#237523
This update fixes a technical issue related to how error messages are displayed in stock order processing. Previously, the system was generating potentially infinite activity. This change ensures that error messages are handled correctly and efficiently, preventing unnecessary processes. It also improves performance by limiting the scope of searches.
Original PR description
From saas-18.2 and later, html fields has been changed the old behaviour.
Ex.
```python
model.create({'note': 'test'}) -> <p>test</p>
```
Old behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 1
```
New behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 0
```
To follow the new behaviour and not generate infinite activities, we need to add html elements to the error message.
Additional, we improved the performance (better to count and limit vs see all the whole table).
OPW-5266061
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#237977This update fixes a problem where website theme colors weren't consistently reflected in the highlight color picker. By using CSS variables instead of direct copying, the system now automatically keeps theme colors synchronized, ensuring a consistent brand experience across the website. This improves visual accuracy and reduces potential design inconsistencies.
Original PR description
Before this commit: 1. The colors in the _highlight_ color picker were not properly synchronized with the _theme_ colors. 2. The _theme_ colors were copied as raw values instead of using _CSS_ variables, which caused them to fall out of sync. After this commit: 1. The _solid_ tab theme colors of _highlight_ color picker now stay in sync with _theme_ colors, even when they are updated. It is achieved by setting `cssVarColorPrefix` variable to "**hb-cp-**". 2. Used CSS variables `var(--o-color-x)` instead of copying _theme_ color values. task-5079081 Forward-Port-Of: odoo/odoo#228123
This update fixes a previous issue where document fields were missing from the employee record view. A new 'Documents' section has been added to the Personal tab, allowing HR staff to easily manage and access employee documents within the system. This improves data organization and streamlines document access for employee records.
Original PR description
- These fields were not available in the employee form view. - create a new section named 'Documents' under the Personal Tab in employee form view - added the fields in the employee form view task-5366982 Forward-Port-Of: odoo/odoo#237954
This change removes the 'dam' registerer from the VoIP master configuration. This simplifies the VoIP setup and avoids potential conflicts, ensuring a cleaner and more reliable system. It's a technical update focused on improving VoIP stability.
This update resolves a technical problem preventing users from accessing sales commission achievement reports. Previously, a temporary database view was inaccessible to other sessions, causing errors. Now, the system verifies the view's availability before attempting to retrieve report data, ensuring reliable access for all users.
Original PR description
In the commission module, the achievements are computed with a temporary SQL view. These view have limited visibility inside a SQL session. Before this commit, we checked the existence of a temporary view with the following SQL request: SELECT viewname FROM pg_catalog.pg_views WHERE viewname='sale_commission_achievement_report_view' This simple query would return the existence of the view but not its availability in the current session. As a result, when the user tried to access the report values, SELECT * FROM sale_commission_achievement_report_view would result in an error as the temporary view would not be available in all the running sessions. Only the one which created the temporary view would be able to access the data. After this commit, the existence and the availability of the view is checked to make sure that it is possible to fetch the results in the current session. task-5378382
This update resolves an issue where badges in the Odoo Community sidebar were appearing cropped. The change adjusts the badge's sizing to ensure they display correctly, improving the overall user experience. This ensures consistent and accurate representation of key information.
Original PR description
In community, the badges in the sidebar looked cropped. By replacing the fixed `min-width` value with the corresponding variable, the badges' shape is fixed. | Before | After | | ------------- | ------------- | | <img width="296" height="901" alt="Screenshot 2025-11-20 at 16 50 23" src="https://github.com/user-attachments/assets/5dba05a2-5a0e-4563-a555-de72e607abf6" /> | <img width="296" height="901" alt="Screenshot 2025-11-20 at 16 50 08" src="https://github.com/user-attachments/assets/28c49c5a-57e9-49cb-ba9d-c65e2f8976a0" /> | task-5223774 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a rare error that prevented test requests from completing successfully. The fix ensures the system reliably acquires a necessary lock, preventing failures in the background request processing. This improves the stability and reliability of our core functionality.
Original PR description
In some rare cases the late_request_thread could execute so fast without releasing the GIL that assertCanOpenTestCursor was executed before the main_lock.acquire(), causing the lock to be None. In…
In some rare cases the late_request_thread could execute so fast without releasing the GIL that assertCanOpenTestCursor was executed before the main_lock.acquire(), causing the lock to be None. In this case, acquiring the lock is pointless since the late_request_thread has already finished, defeating the purpose of this quire, but we can workaround this keeping a reference to the main_lock before starting the thread. This way, even if the late_request_thread is already finished, we can still acquire the lock even if it is already released. Normal flow: - main_thread acquires main_lock - main_thread span request_thread - main_thread tries to acquire main_lock and again and blocks - request_thread runs and releases main_lock - main_thread acquires main_lock and continues When it fails - main_thread acquires main_lock - main_thread span request_thread - request_thread runs and releases main_lock - main_thread tries to acquire main_lock witch is None and fails Fixed - main_thread acquires main_lock - main_thread span request_thread - request_thread runs and releases main_lock - main_thread tries to acquire main_lock but it is already released - main_thread acquires main_lock and continues Runbot error [229827](https://runbot.odoo.com/odoo/runbot.build.error/229827) Forward-Port-Of: odoo/odoo#237886
This update resolves an issue preventing the 'fuel_type' selection field in the HR contract model from being properly translated. By directly using the variable for options, this change ensures all text within the field can be localized, improving internationalization support for our Belgian HR payroll and fleet modules.
Original PR description
The selection field `fuel_type` in the `hr.contract` model was not properly translatable, because it used a function yielding static strings for the options. This commit changes the field to use the variable directly, allowing them to be translated. Forward-Port-Of: odoo/enterprise#100990 Forward-Port-Of: odoo/enterprise#100748
This update resolves an issue where the spreadsheet feature wasn't reliably displaying error messages when data loading failed. The team removed the 'clear' button from the spreadsheet interface to simplify the user experience and prevent confusion. This ensures that users receive clear feedback about data loading problems.
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 Forward-Port-Of: odoo/odoo#237989 Forward-Port-Of: odoo/odoo#233739
8 changes
Enhancements to existing features
This update clarifies the SMS verification message used during the Peppol activation process. Previously, the message was ambiguous, potentially confusing users about its connection to Odoo. Now, the message clearly states "Your Peppol activation code in Odoo is ...", enhancing user understanding and streamlining the activation process.
Original PR description
Before this commit: In v17, the Peppol SMS verification message starts with "Your confirmation code is .." which could be confusing, as users might not know the code was related to Peppol in Odoo. After this commit: The SMS verification message was changed and now it starts with "Your Peppol activation code in Odoo is ...", providing clearer context for users. task-5353425 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237135
Resolved issues and error corrections
This update corrects a bug where administrators without HR permissions could trigger an access error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update corrects a minor issue in the account_peppol module where the neutralization script wouldn't function correctly if a required key wasn't present. The change ensures the script always inserts the key, guaranteeing proper PEPPOL data processing and compliance. This prevents potential errors and maintains data integrity.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves an error that occurred when creating new employees without a 'name' field. The fix prevents a system crash by gracefully handling missing data, ensuring a smoother employee onboarding experience. This improves data integrity and reduces potential disruptions.
Original PR description
Currently, when a user hits a debugger extension in-between employee creation an error is occurred. **Steps to Reproduce:** - Install **HR** module. - Create new employee and write a `name` of an employee but don't save the record. - append `?debug=1` in the URL. we can generate this error in one more way. - Install **HR** module. - Create a new **empty form view** for the `hr.employee` model. - Open the newly created view and click on save. **Error:** `KeyError: 'name'` **Root Cause:** The `_prepare_resource_values` method assumes the 'name' key is present in vals at [1] tries to pop it without checking for its existence. [1]- https://github.com/odoo/odoo/blob/06ec1de2dd8ec5fdb104275cf2bbb3f9f73841da/addons/hr/models/hr_employee.py#L386 **Solution:** This commit ensures that if the `name` key is not present, the method returns `None` instead of raising Error. Sentry-6234873849
This update resolves an issue where URLs were duplicated in WhatsApp messages due to a technical formatting error. The fix prevents the duplication of URL text within the message body, ensuring a cleaner and more accurate user experience. This improves clarity and reduces potential confusion for users.
Original PR description
[FIX] whatsapp: remove duplicated URLs in message body Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the…
[FIX] whatsapp: remove duplicated URLs in message body Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises within the `_send_message` method, where we are taking the Markup body that we use within the Odoo UI to have a clickable URL, like `<a href="[https://example.com">https://example.com</a>`](https://example.com"%3Ehttps//example.com%3C/a%3E%60). Then, the html2plaintext function duplicates by adding the footnote for the anchor tag, which "duplicates" the URL since the text within the anchor tag is the same as the URL itself. This results in a message body that contains the URL twice, leading to confusion for the user. Solution: This commit addresses the issue by backporting the solution to this problem introduced in https://github.com/odoo/odoo/commit/a152910e3a352516ea1240d8833a406b144382dd and using the `include_references` parameter of the `html2plaintext` function to exclude footnotes from the conversion. opw-4936400 Forward-Port-Of: odoo/enterprise#90449
This update fixes an error in the SAFT report XML template, ensuring accurate descriptions of unit of measure categories are included. This improves the report's data integrity and compliance with reporting standards. The change impacts the SAFT report generation process.
Original PR description
Replaced 'uoms.category_id.name' with the correct 'uom.category_id.name' in the SAFT report template. This ensures accurate unit of measure descriptions are included in the UOMTable entries.
This update fixes an issue where demo data was incorrectly included in the main Odoo files. The data has now been moved to the designated 'demo' folder, ensuring accurate demonstration of the pos_pricer module. This improves the consistency and reliability of the demo environment.
Original PR description
In the PR #66351 the demo data was unintentionally merged in the 'data' folder. This PR moves it to the correct 'demo' folder
This update resolves an issue where test emails using 'view_online' would fail if the associated contact record was deleted. The fix ensures the system retrieves the contact's ID dynamically, preventing errors and improving email test functionality. This ensures consistent email marketing performance.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
8 changes
New functionality added to Odoo
This update adds Romanian translations for the payroll modules within Odoo Enterprise. This improves the software's ability to support Romanian businesses and users, enhancing localization and compliance for payroll processes.
Original PR description
Includes translations for `l10n_ro_hr_payroll` and `l10n_ro_hr_payroll_account` modules. This improves localization support for Romanian payroll functionality.
Resolved issues and error corrections
This update resolves an issue where duplicate accounting IDs were causing data overwrites. The changes update account codes related to CPF, SHG, and SDL taxes, aligning with new Singapore tax specifications. The change also simplifies account code formatting to prevent excessively long codes.
Original PR description
Two accounts were using the same XML ID `account_account_864`, causing second definition to overwrite the first. This commit resolves the duplication and updates/segregates accounts for CPF and SHG according to new specifications.
Changes:
- Update `account_account_864` (Employee Expense) to `account_account_866`.
- Update in accounts:
* 862 → CPF Withheld (Employee)
* 863 → CPF Accrued (Employer)
* 864 → SHG Withheld (Employee)
* Add new 865 → SDL Accrued (Employer)
* 859 → CPF Employer Expense
* 860 → SDL Employer Expense
* Removed 861
- Fix `transfer_account_code_prefix` in the template:
* Change from `101100` to `10110` to avoid generating 7-digit account codes.
task-5360160This update prevents users from modifying existing approval requests. Allowing edits would create unpredictable and potentially problematic behavior within the system. This change ensures data integrity and a stable approval process.
Original PR description
There is no legitimate use case that should modify the approval request. This would result in unexpected behaviour. task-5269982 Forward-Port-Of: odoo/enterprise#100273
This pull request updates the core spreadsheet component (o_spreadsheet) to the latest version for Odoo 17. It addresses several minor bugs and performance improvements related to spreadsheet functionality, ensuring a smoother user experience. These changes were made by a team of developers to maintain the stability and reliability of the spreadsheet feature.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ab9f15e01 [REL] 17.0.79 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ab9f15e01 [REL] 17.0.79 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/3193f9b30 [FIX] GridOverlay: Prevent mousedown default when selecting range [Task: 5344285](https://www.odoo.com/odoo/2328/tasks/5344285) https://github.com/odoo/o-spreadsheet/commit/8564f98be [FIX] composer: keep edition mode inactive on cursor selection change [Task: 5354541](https://www.odoo.com/odoo/2328/tasks/5354541) https://github.com/odoo/o-spreadsheet/commit/f0b379210 [FIX] BottomBarSheet: sheet name should update on foreign changes [Task: 5016252](https://www.odoo.com/odoo/2328/tasks/5016252) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
A minor grammatical error in the SEPA Direct Debit payment provider configuration has been corrected. The update replaces 'an unique' with 'a unique' in the pending message, ensuring accurate communication with the payment provider. This change improves the overall consistency and professionalism of the invoicing process.
Original PR description
Currently, a typo appears in the `Pending Message` shown in the SEPA Direct Debit payment provider configuration. **Steps to reproduce:** - Install the `payment_sepa_direct_debit` module. - Navigate to Invoicing > Configuration > Payment Providers > SEPA Direct Debit. - Open the `Messages` tab and observe the `Pending Message`. **Observation:** The message uses "an unique" instead of the grammatically correct "a unique". **Fix:** This commit corrects the message by replacing "an" with "a" at [1]. Before: <img width="1903" height="606" alt="typo_before" src="https://github.com/user-attachments/assets/df4f658b-9f4c-4e68-b8cb-a1bdc2253fc3" /> After: <img width="1900" height="609" alt="typo_after" src="https://github.com/user-attachments/assets/e9192d70-b343-4e4e-9e21-281a93d4d71e" /> [1]: https://github.com/odoo/enterprise/blob/6c3692d85bf1ef7b14d930d9a1ed244cf8aa851b/payment_sepa_direct_debit/data/payment_provider_data.xml#L13 opw-5373274
This update fixes a potential error that occurred when inheriting from the 'sale.order.line' model. The fix ensures correct model referencing by using the model's name instead of a hardcoded name, preventing conflicts. This improves stability and reliability of custom sale order line configurations.
Original PR description
When inheriting a model from an other model. The use of `self.env["sale.order.line"]` can lead to "mixing Apple and Orange".
Fixing it by using `self.env[self._name]` resolves this issue.
Same in the Odoo core `sale.order.line` model for `_compute_tax_id` method.
Example:
```
class SaleOrderLineBis(models.Model):
_name = "sale.order.line.bis"
_inherit = ["sale.order.line"]
```This update fixes a visual issue where buttons within the image field were not vertically centered. The change utilizes SCSS flexbox to ensure consistent alignment, addressing a minor aesthetic concern. Using SCSS allows for easier maintenance and accommodates potential variations in the component's design.
Original PR description
The buttons in image_field are not centered vertically. Since it's a custom sized button, using flex is reliable (it's now centered on both flex axis). Note: Done in SCSS instead of utilities because the flex is there to compensate the custom size set in SCSS (easier to maintain) + there could be injected buttons in the component. task-5258887 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a minor visual issue where the record selector's caret was causing unexpected changes in the input field's width. This ensures a consistent and professional user experience for selecting records within Odoo.
Original PR description
This commit fixes an issue where, when visible, the caret of the record selector component would take space and thus change the width of the input. Task: [5354466](https://www.odoo.com/odoo/project/133/tasks/5354466) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr