Friday, May 16, 2025
24 changes · 18.0
Enhancements to existing features
Users can now click anywhere across the Activities column in list views, not just on a small activity control. This makes opening and managing activities easier and reduces misclicks during daily work.
Original PR description
After this commit, the full width of the Activities column in a list view will be clickable, for ease of use. task-4525830
This update adds support for showing tooltip information from the related field in the Documents area. It helps users better understand document options without changing their workflow.
Original PR description
Community https://github.com/odoo/odoo/pull/210097
Resolved issues and error corrections
The portal and project sharing message box no longer automatically takes focus when a page opens, preventing unwanted cursor placement for users. The change keeps project sharing messages aligned with backend behavior so users see the expected message prompt.
Original PR description
PR #189568 removes the focus from the project sharing composer by setting the `inFrontendPortalChatter` to true, which goes against the whole idea of having this parameter. The correct fix is to remove the `autofocus` (prop) from the composer, because it was only there to keep the focus on the project sharing composer. This commit undoes the change in the mentioned PR and removes the `autofocus` from the portal chatter composer. Consequently, the composer placeholder in project sharing becomes the one related to `note`, so this commit adds `type="'message'"` to the composer to ensure consistency with the backend when sending a message.
Code cleanup and technical improvements
This change reorganizes part of the purchase stock accounting code into smaller pieces. It does not change day-to-day behavior, but makes future customizations and maintenance easier and less risky.
Original PR description
Description of the issue/feature this PR addresses: `_generate_price_difference_vals` is about 200 Ioc long. Current behavior before PR: if we want to extend this method there is little choice but copy paste everything. Desired behavior after PR is merged: it's possible to extend one of the new method instead --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
This commit removes a useless break line added to the end of chat ratign. Break line is used to put the reason on a different line than the rating smiley but is useless when no reason is passed. task-4791376 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#209571
Original PR description
This commit removes a useless break line added to the end of chat ratign. Break line is used to put the reason on a different line than the rating smiley but is useless when no reason is passed. task-4791376 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#209571
Barcode scanning in Point of Sale no longer opens the product configuration popup when a product has only one available attribute option. This makes checkout faster and avoids unnecessary cashier interruptions.
Original PR description
Before this commit, scanning the barcode of a product with attributes set to never creation type, but with only one option available, would still trigger the product configuration popup. opw-4754801 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Event badges with long event names now keep the QR code separate from the badge text. This prevents printed badges from becoming unreadable and helps event check-in materials remain usable.
Original PR description
Steps to reproduce: 1. Go to Events. 2. Create a new event with a long name. 3. Add a product. 4. Print the "Badge Example". Issue: When printing a badge from an event with a long name, the QR code overlaps or clips the information above it, making the badge unreadable. Cause: The issue is due to the large font size used for the event name. Solution: Reduced the font size of the event title to fs-5 to ensure enough spacing is maintained between the text and the QR code, avoiding layout overlap. opw : 4783750 Before FIX:  After FIX: 
This fixes a problem in the website live chat test flow that was causing automated build checks to fail. It helps keep the release validation process stable without changing the user-facing live chat experience.
Original PR description
Runbot Build Error: https://runbot.odoo.com/odoo/runbot.build.error/111747 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Changing the style of selected link text in the editor no longer causes an error. This makes formatting links more reliable for users working in apps such as To-do.
Original PR description
Steps to Reproduce: 1. Go to the To-do module. 2. Create a link. 3. Select the entire content using Ctrl + A. 4. Change the font style from 'Normal' to another (e.g., 'Header 1'). 5. A traceback is…
Steps to Reproduce: 1. Go to the To-do module. 2. Create a link. 3. Select the entire content using Ctrl + A. 4. Change the font style from 'Normal' to another (e.g., 'Header 1'). 5. A traceback is thrown, although the link’s font style is changed. Description of the issue/feature this PR addresses: - The issue was caused by the presence of a `FEFF` (zero-width no-break space) character inside the selected text. This caused a conflict during selection restoration after the font style change. The clean handler was being triggered after the font change attempt, which led to an invalid cursor state. Current behavior before PR: - A Traceback occurred when changing the font style of a selected link text. Desired behavior after PR is merged: - The clean handler is now explicitly called before the font change tries to restore the cursor, avoiding the invalid range or selection error. task-4743390 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents a Kenya payroll accounting test from failing when the separate SHIF payroll component is not installed. It improves reliability for single-app deployments without changing payroll behavior for end users.
Original PR description
## Version: 17.0+ ## Issue: Test (introduced by task 4457038) fails on Single App because of missing dependency. Relies on SHIF_AMOUNT https://github.com/odoo/enterprise/blob/ffb0aa8d7aad913328bb0b585197172da4e838b3/l10n_ke_hr_payroll_shif/data/hr_salary_rule_data.xml#L46C1-L47C1 runbot-159825
__Current behavior before commit:__ The QR code on the payment page is cropped when the Pending Message of the payment provider has a long line. __Description of the fix:__ Set `flex-shrink-0` to the QR code card so it doesn't shrink. __Steps to show the cropped QR code:__ 1. Install sale_management and website 2. Set company currency to EUR 3. Enable QR Codes under Customer Payments in Settings 4. Enable Online Payment (and disable Online Signature) under Quotations & Orders 5. In
Original PR description
__Current behavior before commit:__ The QR code on the payment page is cropped when the Pending Message of the payment provider has a long line. __Description of the fix:__ Set `flex-shrink-0` to the QR code card so it doesn't shrink. __Steps to show the cropped QR code:__ 1. Install sale_management and website 2. Set company currency to EUR 3. Enable QR Codes under Customer Payments in Settings 4. Enable Online Payment (and disable Online Signature) under Quotations & Orders 5. In Payment Providers, install SEPA Direct Debit. Select Test mode, check Enable QR Codes, and publish it. 6. **In Messages tab, put a very long line as Pending Message** 7. Go to the Journal "Bank" and set a random IBAN as Account number 8. Create a new Quote with a non 0 price and click on Preview and pay the order 9. The QR code is cropped opw-4735003 Forward-Port-Of: odoo/odoo#209686
For proper provision management we introduce accounts 2350 and 2351 task-4797323 Forward-Port-Of: odoo/odoo#210062
Original PR description
For proper provision management we introduce accounts 2350 and 2351 task-4797323 Forward-Port-Of: odoo/odoo#210062
### Issue In project sharing, tasks in the "Done" and "Approved" stages were not shown with distinct progress in the Kanban progress bar. As a result, users were unable to identify the task status easily. ### Reason: The color class was set incorrectly. ### Fix: We have updated the color class in this commit to correctly reflect the task stages. issue-https://github.com/odoo/odoo/commit/1a44b849970d3e39111a99ea35db5b586b184dd3 ### Steps to Reproduce: - Create a projec
Original PR description
### Issue
In project sharing, tasks in the "Done" and "Approved" stages were not shown with distinct progress in the Kanban progress bar. As a result, users were unable to identify the task status easily.
### Reason:
The color class was set incorrectly.
### Fix:
We have updated the color class in this commit to correctly reflect the task stages.
issue-https://github.com/odoo/odoo/commit/1a44b849970d3e39111a99ea35db5b586b184dd3
### Steps to Reproduce:
- Create a project with 2 tasks:
- Task 1 in the "Done" stage
- Task 2 in the "Approved" stage
- Share the project with a portal user
- Open the project in the portal
- Navigate to the project sharing Kanban view and check the progress bar
task-4551177
Forward-Port-Of: odoo/odoo#206031Some services or applications (Outlook, Google Messages) display previews of links sent through messages or email. In an effort to strengten user privacy, these services fetch the previews from their own servers rather than from the user's device. Since these services' requests had not been added to the list of known bot identifiers, they generate parasite "clicks" which don't match their user. This commit adds identifiers for the Outlook and Google Messages service requests to the l
Original PR description
Some services or applications (Outlook, Google Messages) display previews of links sent through messages or email. In an effort to strengten user privacy, these services fetch the previews from their own servers rather than from the user's device. Since these services' requests had not been added to the list of known bot identifiers, they generate parasite "clicks" which don't match their user. This commit adds identifiers for the Outlook and Google Messages service requests to the list of known bot IDs, thereby preventing the parasite clicks from generating. task-3672491 Forward-Port-Of: odoo/odoo#200148 Forward-Port-Of: odoo/odoo#167799
Steps to reproduce: - When the planning module is not installed and we click on employee avatar - This leads to a traceback, especially when the related employee data is available only in hr.employee.public or hr.employee. Cause: - The avatar card component was using a hardcoded model instead of dynamically using props.record.model. Although a custom get_avatar_card_data method was introduced to centralize data logic, it was not implemented on all relevant models (hr.employee,
Original PR description
Steps to reproduce: - When the planning module is not installed and we click on employee avatar - This leads to a traceback, especially when the related employee data is available only in…
Steps to reproduce: - When the planning module is not installed and we click on employee avatar - This leads to a traceback, especially when the related employee data is available only in hr.employee.public or hr.employee. Cause: - The avatar card component was using a hardcoded model instead of dynamically using props.record.model. Although a custom get_avatar_card_data method was introduced to centralize data logic, it was not implemented on all relevant models (hr.employee, hr.employee.public), which caused traceback in certain setups. Solution: - Replaced the hardcoded model with props.record.model to dynamically resolve the model. - Added the get_avatar_card_data method to hr.employee.base to ensure compatibility. Ensured the logic works correctly even when the planning module is not installed. Follow-up to: - Commit : https://github.com/odoo/odoo/pull/187171 https://github.com/odoo/enterprise/pull/75121 - prevent component destruction which moved avatar card data fetching into a parent method to avoid lifecycle issues. Related task-4210513 task - 4777570 Forward-Port-Of: odoo/odoo#210027
To reproduce: ============= - have an employee with a working schedule of night shifts like 18:00 to 00:00 break to 01:00 then continue to 03:00 - create payslip for this employee for January 2025 - print the payslip, the working hours will be 183.9936 The problem: ============ 00:00 is represented as 23:59:59.99999 in python, that missing microsecond impacts the computation of the duration of the work entry. The solution: ============= round the total seconds opw-4702410 ---
Original PR description
To reproduce: ============= - have an employee with a working schedule of night shifts like 18:00 to 00:00 break to 01:00 then continue to 03:00 - create payslip for this employee for January 2025 - print the payslip, the working hours will be 183.9936 The problem: ============ 00:00 is represented as 23:59:59.99999 in python, that missing microsecond impacts the computation of the duration of the work entry. The solution: ============= round the total seconds opw-4702410 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208811
Fixes an issue when issuing self-billed invoices to the platform. So far we have been using Odoo's bill name as ID, but we should instead use the bill reference (if set) to use the supplier number. task-4777585 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208721
Original PR description
Fixes an issue when issuing self-billed invoices to the platform. So far we have been using Odoo's bill name as ID, but we should instead use the bill reference (if set) to use the supplier number. task-4777585 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#208721
The aim of this commit is to: - avoid reporting negative amount in a 281.50 form which are rejected by the administration. - avoid reporting form with 0 value everywhere which are rejected by the administration. - avoid reporting a form with an amount < 250 EUR Context: The administration stated that we don't need to make any report that would be above 250 EUR. (art. 57, al. 3 CIR 92 et art. 30 AR/CIR 92) https://www.wolterskluwer.com/fr-be/expert-insights/tax-form-281-50
Original PR description
The aim of this commit is to: - avoid reporting negative amount in a 281.50 form which are rejected by the administration. - avoid reporting form with 0 value everywhere which are rejected by the…
The aim of this commit is to:
- avoid reporting negative amount in a 281.50 form which are rejected by the administration.
- avoid reporting form with 0 value everywhere which are rejected by the administration.
- avoid reporting a form with an amount < 250 EUR
Context:
The administration stated that we don't need to make any report that would be above 250 EUR.
(art. 57, al. 3 CIR 92 et art. 30 AR/CIR 92)
https://www.wolterskluwer.com/fr-be/expert-insights/tax-form-281-50 https://travaillerensociete.indicator.be/main/newsadvice/52784/news/52785/news_story/533/ https://www.monastucesetconseils.be/2025-04/fiches-fiscales-281-50-pour-le-29-juin-2025-WAACPCAR_EU33150802
Before this commit:
Odoo could create a form with a negative amount as commission/fee/... This could result in the administration software converting the xml into a BOW file to generated an error and a file that will be rejected by Belcotax.
Same for form with 0 everywhere.
Also, accountants always end up deleting the 281.50 form below 250 EUR as those don't need to be reported.
After this commit:
Odoo don't report negative or null total amount as commission/fee/... and doesn't create any form if the total amounts are below 250 EUR saving accountants the burden to remove them.
task-id: None
This was discussed and done with TSB and DELC and is also the result of our past experiences reporting 281.50 forms which also involved CAHE, MAKR and CAL.
Forward-Port-Of: odoo/enterprise#85508Before this commit: Some of the names in the stock_type list were wrong, causing an invalid type error when validating delivery. After the commit: Added a lookup table to update the incorrect names to match names in FedEx documentation. Fedex docs: https://developer.fedex.com/api/en-is/catalog/ship/docs.html opw-4725488 Forward-Port-Of: odoo/enterprise#84762
Original PR description
Before this commit: Some of the names in the stock_type list were wrong, causing an invalid type error when validating delivery. After the commit: Added a lookup table to update the incorrect names to match names in FedEx documentation. Fedex docs: https://developer.fedex.com/api/en-is/catalog/ship/docs.html opw-4725488 Forward-Port-Of: odoo/enterprise#84762
Implement new Swiss municipality OFS number assignment for ERP systems based on 2025 AFC list. This commit updates the address validation and municipality assignment logic in the ERP system to align with the new "Liste des communes OFS 2025 pour l’attribution du numéro de commune au code postal" published by the Swiss Federal Tax Administration (AFC) for withholding tax purposes. Forward-Port-Of: odoo/enterprise#84859
Original PR description
Implement new Swiss municipality OFS number assignment for ERP systems based on 2025 AFC list. This commit updates the address validation and municipality assignment logic in the ERP system to align with the new "Liste des communes OFS 2025 pour l’attribution du numéro de commune au code postal" published by the Swiss Federal Tax Administration (AFC) for withholding tax purposes. Forward-Port-Of: odoo/enterprise#84859
For proper provision management we introduce accounts 2350 and 2351 task-4797323 Forward-Port-Of: odoo/enterprise#85574
Original PR description
For proper provision management we introduce accounts 2350 and 2351 task-4797323 Forward-Port-Of: odoo/enterprise#85574
Fix a bug where account moves paid with cash appears in a line with full 0 in the boe export of mod347 tax report. But it shouldn't create a line at all, so this commit remove the lines in this case. task-4613012 Forward-Port-Of: odoo/enterprise#84317
Original PR description
Fix a bug where account moves paid with cash appears in a line with full 0 in the boe export of mod347 tax report. But it shouldn't create a line at all, so this commit remove the lines in this case. task-4613012 Forward-Port-Of: odoo/enterprise#84317
When timezone of user is empty and the user clicks on Add Closing Day(s) button, a traceback will appear. Steps to reproduce the error: - Open Profile > Preferences > Select empty in timezone > Save - Install ``Appointments`` - Go to Appointments > Schedule > Resource Bookings > Add Closing Day(s) Traceback: ``` File "/home/odoo/src/enterprise/appointment/wizard/appointment_manage_leaves.py", line 19, in <lambda> leave_start_dt = fields.Datetime('Start Date', required=True, defa
Original PR description
When timezone of user is empty and the user clicks on Add Closing Day(s) button, a traceback will appear. Steps to reproduce the error: - Open Profile > Preferences > Select empty in timezone > Save…
When timezone of user is empty and the user clicks on Add Closing Day(s) button,
a traceback will appear.
Steps to reproduce the error:
- Open Profile > Preferences > Select empty in timezone > Save
- Install ``Appointments``
- Go to Appointments > Schedule > Resource Bookings > Add Closing Day(s)
Traceback:
```
File "/home/odoo/src/enterprise/appointment/wizard/appointment_manage_leaves.py", line 19, in <lambda>
leave_start_dt = fields.Datetime('Start Date', required=True, default=lambda self: self._default_time(0, 0))
File "/home/odoo/src/enterprise/appointment/wizard/appointment_manage_leaves.py", line 14, in _default_time
user_timezone = pytz.timezone(self.env.user.tz or self.env.context.get('tz', 'utc'))
File "/home/odoo/src/odoo/odoo/_monkeypatches/pytz.py", line 129, in timezone
return original_pytz_timezone(name)
File "__init__.py", line 183, in timezone
if zone.upper() == 'UTC':
AttributeError: 'bool' object has no attribute 'upper'
```
https://github.com/odoo/enterprise/blob/2c938b66fc1b526a360f4b199a47bcc53991bcb9/appointment/wizard/appointment_manage_leaves.py#L14
When the user selects an empty timezone, tz will be False.
So, It will lead to the above traceback.
Forward port https://github.com/odoo/enterprise/pull/64948 was closed in master,
so the issue is still present in saas-17.4 and all later versions.
sentry-6537084290
Forward-Port-Of: odoo/enterprise#83363This commit will do a backport of the python change made in this commit: https://github.com/odoo/enterprise/pull/77565/commits/7f26eefa932ec09297fbc4b8256ebe0b2976b231 task-4476707 Forward-Port-Of: odoo/enterprise#84728
Original PR description
This commit will do a backport of the python change made in this commit: https://github.com/odoo/enterprise/pull/77565/commits/7f26eefa932ec09297fbc4b8256ebe0b2976b231 task-4476707 Forward-Port-Of: odoo/enterprise#84728