Daily updates from Odoo
Friday, May 15, 2026
16 changes · master
Enhancements to existing features
This update automatically sends reminder emails to customers 7 days before the deadline for submitting account returns. This improves the process by proactively reminding users to complete returns, reducing late submissions and improving data accuracy.
Original PR description
Send reminder mail to submit an account return 7 days before the deadline. task-4752152 Forward-Port-Of: odoo/enterprise#112576
This update adds a helpful menu within the Odoo Enterprise spreadsheet module, providing direct links to the official documentation and a shortcut to open the spreadsheet command palette. This improves usability and allows users to quickly find the information they need to effectively utilize the spreadsheet functionality.
Original PR description
Add help menu with link to the documentation and a shortcut to open the spreadsheet command palette. Task: 6186747
This update clarifies the message users see when they don't have enough credits available for an IAP purchase. The wording has been refined to be more user-friendly and clearly explain the situation. This improves the overall customer experience and reduces potential confusion.
Original PR description
Task-6128791
This update ensures that tests for the VoIP systray icon are now run on smaller screens, mirroring the tests performed on larger desktop screens. This improves the reliability of our VoIP functionality across different device sizes, ensuring a consistent user experience.
Original PR description
Because the VoIP systray icon is also shown on small screens, the related tests should be executed on small screens as we do on the desktop.
Resolved issues and error corrections
This update resolves an error that occurred when users removed the 'Source Entity Id Type' setting in Super Contributions. The fix ensures the system correctly handles this removal, preventing a calculation error and maintaining data integrity. This improves the reliability of the Australian Super Contributions reporting.
Original PR description
Currently an error occurs when the user removes the Source Entity Id Type on Super Contributions. **Steps to Reproduce:** - Install `l10n_au_hr_payroll_account` with demo data. - Switch to an…
Currently an error occurs when the user removes the Source Entity Id Type on Super Contributions. **Steps to Reproduce:** - Install `l10n_au_hr_payroll_account` with demo data. - Switch to an `Australian` company. - Go to `Payroll` > `Reporting` > `Australia` > `Super Contributions`. - Open an existing record or create a new one. - Remove the `Source Entity Id Type` value and click anywhere. `ValueError: Compute method failed to assign l10n_au.super.stream(<NewId origin=1>,).source_entity_id` After [change] in the selection field behavior, when the user removes the Source Entity Id Type, the compute method is triggered to compute the Source Entity ID. However, the condition in the compute method is not match, so no value is assigned. As a result, the method fails and raises an error. This commit ensures that if the condition is not match, the Source Entity ID is explicitly set to False. [1]- https://github.com/odoo/enterprise/blob/9d523d7aabffda277e1ef734caf2b0e434545dca/l10n_au_hr_payroll_account/models/l10n_au_super_stream.py#L61-L65 [change]: https://github.com/odoo/odoo/pull/214422/changes/8d2a42ac419fdf7943a0c11beb8c5de6c6f85bef Forward-Port-Of: odoo/enterprise#115466
This update corrects a technical error that prevented the proper registration of end-of-service payments on payslips. The fix ensures that the departure registration action can now be executed on the same day as the action_date is set, resolving a test failure. This improves payroll processing accuracy.
Original PR description
Setting action_date allows to execute departure.action_register on the same day. runbot error: https://runbot.odoo.com/odoo/runbot.build.error/242533 task: 6187007 Forward-Port-Of: odoo/enterprise#116531
This update fixes an issue where PDF manager action names appeared awkwardly due to a styling class. The change removes this class, resulting in cleaner and more professional-looking action names within the PDF manager. This improves the user experience and overall presentation.
Original PR description
Previously, pdf_manager actions used class "text-uppercase". Action names looked awkward. In this commit, we remove the class and properly display action names. task-6159317 Forward-Port-Of: odoo/enterprise#117157 Forward-Port-Of: odoo/enterprise#116382
This update fixes an issue in the payroll testing environment by setting a fixed year for payrun dates. Relying on the current year for verification was unreliable, impacting the accuracy of salary calculations. This ensures consistent and dependable testing of the payroll system.
Original PR description
This commit fixes year for the test payrun as relying on today's year is not reliable to verify salary computations. Runbot build error: https://runbot.odoo.com/odoo/runbot.build.error/237683 Forward-Port-Of: odoo/enterprise#117204
This update resolves a problem where uploaded payment proofs were being corrupted and not properly attached to employee records. The fix ensures that payment proof files are now correctly attached to chatter notifications, maintaining their original file format. This improves the reliability of recording payment information.
Original PR description
### Current behavior: Uploading a proof of payment on an employee rental record raises `binascii.Error: Incorrect padding`, and posts a corrupted attachment to the chatter. Expected behavior: The uploaded payment proof file is attached to the chatter notification with its original bytes intact. ### Steps to reproduce: - Install l10n_hk_hr_payroll - Open an HK employee's rental record - Upload a file in the Payment Proof field - Observe the RPC error, or check the attachment in the chatter ### Fix: `fields.Binary` now returns a `BinaryValue` (raw bytes wrapper) instead of a base64-encoded string. `_log_new_payment_proof` was still running `base64.b64decode` on the field value, which mangled the contents. Pass the raw bytes via `.content` directly to `message_post`, which already expects non-base64 payloads. opw-6211986 Forward-Port-Of: odoo/enterprise#117191
This update corrects a misalignment issue in invoices when section prices are hidden and the country of origin is displayed. The fix ensures that tax and amount information within section lines are correctly aligned in the invoice PDF, regardless of price visibility. This improves invoice presentation and accuracy.
Original PR description
The content of an invoice's section lines is not aligned with the columns when the prices of the section are hidden and the country of origin is displayed in the invoice Steps to reproduce: 1.…
The content of an invoice's section lines is not aligned with the columns when the prices of the section are hidden and the country of origin is displayed in the invoice Steps to reproduce: 1. Install account_intrastat module 2. Go to Invoicing > Customers > Products and create a new product with name "test" and in the Accounting tab, set the Country of Origin to Afghanistan 3. Go to Invoicing > Customers > Customers and change Acme Corporation's country to United Kingdom 4. Go to Invoicing > Customers > Invoices and create a new invoice for partner Acme Corporation, add a section line and in that section, add product "test" 5. Click on the three dots at the end of the section line and click on Hide Prices 6. Confirm the invoice and print it 7. The content of the section line in the invoice pdf are not aligned (the tax is in column Unit Price and the amount is in column Taxes) Issue: When a section is hidden, no column is added in the section to display the origin, resulting in a misalignment of the tax and the amount of the section Solution: Add a column for the origin country in hidden section lines and add the origin country in product lines of `_get_child_lines` opw-6147929 Forward-Port-Of: odoo/enterprise#117092 Forward-Port-Of: odoo/enterprise#115442
This update resolves an issue where the chart type picker wasn't correctly displaying options for gauge and scorecard charts. The fix ensures that these chart types are properly recognized and selectable, enhancing the user experience when creating and modifying charts. This improves usability for users working with these specific chart types.
Original PR description
See https://github.com/odoo/odoo/pull/264650
This update fixes a display issue where the number of ECOs listed on a Bill of Materials (BoM) was incorrect. The fix ensures that only ECOs directly associated with the current BoM version are counted, resolving a mismatch between the displayed count and the actual number of ECOs. This improves the accuracy of BoM management.
Original PR description
Steps to Reproduce (Fresh Database): -------------------------------------- 1. Install `Manufacturing` (mrp) and `PLM` (mrp_plm) modules 2. Create a product > New -- Name: "Test Product" > Save 3.…
Steps to Reproduce (Fresh Database):
--------------------------------------
1. Install `Manufacturing` (mrp) and `PLM` (mrp_plm) modules
2. Create a product > New -- Name: "Test Product" > Save
3. Create BoM v1
- Go to Manufacturing > Products > Bills of Materials > New --Product: Test Product
- Add component: any
4. Create and apply ECO 1 on BoM v1
- Go to PLM > ECOs > New-- Product: Test Product | Apply on: Bill of Materials
- BoM: Test Product (v1) > Confirm > Apply Changes
- This creates BoM v2 (previous_bom_id = BoM v1)
5. Create and apply ECO 2 on BoM v2
- Same as step 4 but select BoM v2
- This creates BoM v3 (previous_bom_id = BoM v2)
6. Create a separate unrelated BoM for the same product
- Go to Manufacturing > Bills of Materials > New
- Product: Test Product | Component: "Component B" > Save
7. Create ECO 3 on the separate BoM
- Go to PLM > ECOs > New - Product: Test Product | Apply on: Bill of Materials
- BoM: select the separate BoM from step 6 > Confirm
Observed Bug:
-------------
- Open BoM v3 > ECO(s) stat button shows count = 2
- Click the button > opens 3 records (ECO 3 incorrectly included)
Explain:-
----------
The ECO stat button on the BoM form was showing a mismatched count vs
the actual records opened when clicking it. This happened because
[button_mrp_eco](https://github.com/odoo/enterprise/blob/55bfd499660d3eda0abfc9e8ed8c9a2befbd394b/mrp_plm/models/mrp_bom.py#L56) was using all keys from [_get_previous_boms](https://github.com/odoo/enterprise/blob/55bfd499660d3eda0abfc9e8ed8c9a2befbd394b/mrp_plm/models/mrp_bom.py#L67)() as the
domain, which includes BoMs from unrelated lineages of the same product
template, while [_compute_eco_data](https://github.com/odoo/enterprise/blob/55bfd499660d3eda0abfc9e8ed8c9a2befbd394b/mrp_plm/models/mrp_bom.py#L20) only counts ECOs belonging to the
current BoM's version lineage.
Fixed by filtering the domain to only include BoM IDs whose lineage set
contains the current BoM ID, making the opened records consistent with
the displayed count.
Before Fix
<img width="1901" height="875" alt="image" src="https://github.com/user-attachments/assets/3208aed5-ebd3-47a3-a457-a7d61b7743cb" />
```
In [24]: labo = self.env['mrp.bom'].browse(710)
In [25]: previous_boms_mapping = labo._get_previous_boms()
In [26]: Test = ['&', ('bom_id', 'in', list(previous_boms_mapping.keys())), ('type', '=', 'bom')]
In [27]: Test
Out[27]:
['&',
('bom_id',
'in',
[710,
1991,
2049,
1913,
1840,
1823,
1676,
1759,
1794,
1651,
1604,
1544,
1537,
1527,
1506,
1460,
1265,
1259,
1196,
1221,
1223,
1060,
1029,
960,
858,
850,
791,
739,
723,
698]),
('type', '=', 'bom')]
```
With My Fix
<img width="1824" height="947" alt="image" src="https://github.com/user-attachments/assets/0d68fdbc-7e42-4ce4-a326-2fb030ba1d06" />
```
In [15]: labo = self.env['mrp.bom'].browse(710)
In [16]: previous_boms_mapping = labo._get_previous_boms()
In [17]: previous_boms_mapping
Out[17]:
{710: {710},
1991: set(),
2049: set(),
1913: set(),
1840: set(),
1823: set(),
1676: set(),
1759: set(),
1794: set(),
1651: set(),
1604: set(),
1544: set(),
1537: set(),
1527: set(),
1506: set(),
1460: set(),
1265: set(),
1259: set(),
1196: set(),
1221: set(),
1223: set(),
1060: set(),
1029: set(),
960: set(),
858: set(),
850: set(),
791: set(),
739: set(),
723: set(),
698: {710}}
In [18]: relevant_bom_ids = [
...: bom_id
...: for bom_id, current_bom_set in previous_boms_mapping.items()
...: if labo.id in current_bom_set
...: ]
In [19]: relevant_bom_ids
Out[19]: [710, 698]
```
Task-6065020
Forward-Port-Of: odoo/enterprise#117149
Forward-Port-Of: odoo/enterprise#114039This update corrects a display issue in the Payrun Time Off Gantt view, where employee names were showing inconsistently compared to other time off applications. The change hides employee names from this specific view, ensuring a more uniform and professional appearance across all time off reporting. This improves the user experience and data clarity.
Original PR description
In payrun time off step, we get the full name of the employee in the Gantt view. But it is inconsistent with the rest of the time off application. Hide employee names from the Gantt view of Payrun Time Off. task-6190437 Forward-Port-Of: odoo/enterprise#116365
This update addresses a potential issue where incorrect domain warnings could occur when using equality comparisons (=) within Odoo's collection-based filtering. The changes enhance the reliability of domain filtering, preventing unexpected behavior and ensuring data accuracy across several Odoo modules. This improves the overall stability and performance of the system.
Original PR description
https://github.com/odoo/odoo/pull/264706
This update optimizes PDF generation by compressing files after merging, resulting in significantly smaller output sizes. It also addresses a memory leak in the PDF processing, leading to more efficient resource usage. The changes improve PDF generation speed and reduce storage needs.
Original PR description
When merging pages with pypdf, the resulting content is uncompressed. A compression pass should be done right after to reduce the resulting file size. Additionally, this helps alleviate a memory leak in PyPDF2 where resources in the merged page are not properly released. Newer versions of pypdf (>=3.15.4) do not have this leak but still see benefits in the output file size. In practice the CPU overhead is negligible, and we actually see a speed increase in cases with high memory usage. Benchmark Printing 400 page annual report | |Print Time|Peak Memory|Output File| |------|----------|-----------|-----------| |Before|142s |3.6GB |103MB | |After |127s |0.4GB |5MB | opw-6148786 Forward-Port-Of: odoo/enterprise#117404 Forward-Port-Of: odoo/enterprise#115550
This update fixes an error that prevented users from being created correctly when Studio and Livechat were installed and configured. The issue stemmed from a timing problem during user setup, causing a required field to be missing. The fix ensures the 'Color Scheme' field is always populated with a default value, allowing successful user creation.
Original PR description
Steps to reproduce: 1. Install Studio and Livechat 2. In user's form view change the location of Theme field after the livechat fields. 3. Now, try to create a user from name and email only Issue: - It throws an error: The operation cannot be completed: Missing required value for the field 'Color Scheme' (color_scheme). Cause: - During user creation after studio modification, im_livechat inverse methods access res.users.settings before it is fully initialized. then later write a falsy `color_scheme` value to that settings record, violating the required constraint on res.users.settings.color_scheme. Solution: - Ensure that when creating or updating `res.users.settings`, if `color_scheme` is empty or false, It is automatically set to the default value "system" opw-5918538 Forward-Port-Of: odoo/enterprise#109062