Thursday, November 27, 2025
127 changes
8 changes
Enhancements to existing features
This update clarifies the tooltip for the 'Prices' setting in the configuration. Previously, it stated the setting couldn't be changed after an invoice. Now, it correctly indicates the setting locks once a journal entry is created, providing clearer guidance for users. This change ensures accurate understanding and reduces potential confusion.
Original PR description
This commit improves the tooltip of the Prices setting in configuration. The old tooltip "This setting cannot be changed after an invoice is created." is changed to "This setting locks once a journal entry is created." task-5354382 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237093
Resolved issues and error corrections
This update resolves an issue that caused payslips to fail to generate due to missing data within the system. The fix ensures data retrieval is more robust by using a 'get' function with a default value, preventing errors and improving the reliability of payroll processing. This ensures consistent and accurate payslip generation.
Original PR description
Bug: When generating payslips, there is a traceback with keyerror. Cause: We were getting info from a dict but keys could be not present. Fix: Use get instead, with a default value. Forward-Port-Of: odoo/enterprise#99245
10 changes
Resolved issues and error corrections
This update resolves an issue that caused payslips to fail to generate correctly due to missing data within a configuration dictionary. The fix uses a safer method to access dictionary values, preventing errors when keys are absent. This ensures more reliable and consistent payroll processing.
Original PR description
Bug: When generating payslips, there is a traceback with keyerror. Cause: We were getting info from a dict but keys could be not present. Fix: Use get instead, with a default value. Forward-Port-Of: odoo/enterprise#99245
4 changes
Enhancements to existing features
This update enhances Odoo's database performance by introducing SQL aliases across various models and reports. Using aliases simplifies complex SQL queries, leading to faster data retrieval and improved system responsiveness. This change primarily focuses on internal optimizations within the database layer.
Original PR description
https://github.com/odoo/odoo/pull/234156
2 changes
Resolved issues and error corrections
This update resolves an issue where the demo logo on reports was cropped at the bottom. The fix introduces a minimum width to ensure the logo displays correctly, preventing cropping. This improves the visual consistency of reports with short content.
Original PR description
Scenario: - set the report background to demo logo (621x196 pixels) - print a report with short content (eg. quotation without lines) Result: the logo is cropped at the bottom Why: Before 18.0, the…
1 change
Resolved issues and error corrections
A recent update to optimize the way stock lots are processed introduced a bug. This fix resolves an error that occurred when a new stock lot was created, preventing disruptions in order fulfillment. The change ensures the system correctly handles both existing and newly created stock lots.
Original PR description
### Description: With the commit 72a87353f76bfa31561bed5eb21377b8e95cb7ee, `_find_delivery_ids_by_lot` has been replaced with another method more optimized. However, it introduces a bug when triggering the compute on a new lot. When `self` is not an existing lot but rather a new lot, it throws an error since the lot doesn't have an ID. ### References: 72a87353f76bfa31561bed5eb21377b8e95cb7ee opw-5355952
This update corrects a bug where archived users were incorrectly sending out automated follow-up emails related to invoices and partners. The fix ensures that follow-up emails are only sent by active users, preventing confusion and ensuring accurate communication. This improves the reliability of our automated customer outreach.
Original PR description
### Issue: If an archived user is set as the Sales person on an invoice or as the followup responsible on a partner, it will be the one sending the automatic followups. ### Steps to reproduce: - Create a partner and an overdue invoice for this partner - Change the "Salesperson" of the invoice to another user - Archive this user - Accounting > Customer > Followup Reports - Click on the partner created earlier - Click the actions and "Process Automatic Follow-ups" - [17.0] Traceback - [18.0+] The sent message is from the user that was archived ### Cause: `_get_followup_responsible()` does not check is the users it returns are active or not. ### Solution: Create an iterable with all the possibilities and iterate on it to return the first active user in the list. Fallback on `self.env.user`. opw-5153159 Forward-Port-Of: odoo/enterprise#100465 Forward-Port-Of: odoo/enterprise#98807
This update resolves a recurring problem where the website tour wasn't consistently displaying correctly. The previous fix only reduced the frequency of the issue, but this commit addresses the underlying cause of the problem – a race condition related to the website builder. This ensures the tour functions reliably for all users.
Original PR description
Tour added in that [commit], was previously failing and the earlier [fix] only reduced the frequency of failures. However, it still occasionally fails due to race conditions of the iframe becoming ready and the moment the builder opens the block tab after the iframe has been reloaded. This commit aims to fix it. [commit]: https://github.com/odoo/odoo/commit/a5455bf [fix]: https://github.com/odoo/odoo/commit/0a9522792cc0e18a895c0589f34977123d091d1a runbot-233438
This update corrects a bug in the demo kiosk feature of the Odoo Point of Sale system. Previously, the kiosk incorrectly displayed the payment screen, causing issues with the ordering process. This change ensures the demo kiosk always uses the correct 'each' payment mode when in kiosk mode, resolving this unexpected behavior.
Original PR description
The field `self_ordering_pay_after` should always be `each` when the `self_ordering_mode` is set to `kiosk`. This is enforced in the `write` method. However, the demo kiosk is created with a `self_ordering_pay_after` value of `meal`, until the `write` method is run. This results in behaviour such as the payment screen being skipped when it is not expected to. This commit sets the correct `self_ordering_pay_after` value of `each` when creating the demo kiosk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237521
This update resolves a usability issue in the annual corporate tax return reports by adding 'reviewed bubble' and 'Mark as completed' buttons. These additions streamline the reporting process for users, ensuring accurate and timely completion of tax returns. This improves the overall efficiency of the financial reporting workflow.
Original PR description
Missing: - reviewed bubble - Mark as completed button Forward-Port-Of: odoo/enterprise#100039
This update corrects a display issue where the 'Due Date' column disappeared in the phone view of invoices. The problem stemmed from conflicting CSS styles, which caused incorrect column titles. This ensures the 'Due Date' is consistently visible and correctly labeled across all device views.
Original PR description
****Behavior:****
When switching to phone view, the 'Due Date' column name dissapears but the values stay, which causes every further column of the table to have the wrong title.
The removal of the Due Date column is intended, the issue happens beacause the 't-att-class' specifying the condition to make values red was overriding the initial 'class' specifying the behavior in phone view.
**Steps to reproduce:**
- Create an Invoice for the current user
- Go to Website -> User -> My Account -> Your Invoices
- switch to phone view (reduce to less than 768px if not initially the case)
- You'll see the 'Due Date' column name dissapear and the value shift to the next column name ('Amount Due')
opw-5239794
Forward-Port-Of: odoo/odoo#235474This update resolves an issue preventing the successful installation of the UK Construction Industry Scheme (l10n_uk_reports_cis) when using branch companies. The fix prevents the creation of duplicate account codes, ensuring proper installation and functionality for UK businesses with branches.
Original PR description
Before this commit: Steps 1) Create a UK localization company 2) Create a branch for that company 3) Try to install UK - Construction Industry Scheme (l10n_uk_reports_cis) => A Validation Error is raised with the message `Account codes must be unique. You can't create accounts with these duplicate codes: 220001, 220101, 220201`, This occurs because the `_l10n_uk_reports_cis_post_init()` method is creating accounts for each UK company even if they aren't root companies (branch). After this commit: UK - Construction Industry Scheme (l10n_uk_reports_cis) is installed successfully with UK companies that have branches. opw-5326079 Forward-Port-Of: odoo/enterprise#99901
This update resolves an issue where alerts added to field descriptions during the checkout process couldn't be edited. The fix utilizes the editor's built-in insertion command to ensure alerts are correctly placed within editable text areas, improving the user experience for adding feedback.
Original PR description
Problem: When adding an alert inside a field description in the Extra Step page of the checkout process, the inner content of the alert cannot be modified. Cause: In…
Problem:
When adding an alert inside a field description in the Extra Step page of the checkout process, the inner content of the alert cannot be modified.
Cause:
In
https://github.com/odoo/odoo/blob/1e96a3d127e8f521d3027f7110026ae84e11ed5e/addons/website/static/src/components/wysiwyg_adapter/wysiwyg_adapter.js#L784-L789 the logic determines the block using:
`this.closestElement(range.endContainer, 'p, div, ol, ul, cl, h1, h2, h3, h4, h5, h6');` Since the field description template is:
```html
<div class="s_website_form_field_description small form-text text-muted"
contenteditable="true">
text
</div>
```
and the selection occurs within the text (direct child of the editable `div`), the computed `block` becomes the editable area itself. As a result, the cloned alert is inserted *after* the editable area: `block.after($clonedBody[0]);`, making it non-editable.
Solution:
Use the editor’s built-in `insert` command instead of manually inserting clones. This ensures the alert is correctly inserted within the editable region.
Steps to reproduce:
1. Enable "Extra Step During Checkout" in Settings.
2. Open Website → add a product to the cart → proceed to checkout.
3. In the "Extra info" step, open the editor.
4. Select the "Give us your feedback" field.
5. Enable "Field" → "Description".
6. Run the "/alert" command in the description. → The alert content cannot be edited.
opw-5184309
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#234905
Forward-Port-Of: odoo/odoo#232910This update corrects a bug where archived users were incorrectly sending out automated follow-up emails for invoices. The fix ensures that follow-up emails are only sent by active users, preventing confusion and ensuring accurate communication. This improves the reliability of our automated customer outreach.
Original PR description
### Issue: If an archived user is set as the Sales person on an invoice or as the followup responsible on a partner, it will be the one sending the automatic followups. ### Steps to reproduce: - Create a partner and an overdue invoice for this partner - Change the "Salesperson" of the invoice to another user - Archive this user - Accounting > Customer > Followup Reports - Click on the partner created earlier - Click the actions and "Process Automatic Follow-ups" - [17.0] Traceback - [18.0+] The sent message is from the user that was archived ### Cause: `_get_followup_responsible()` does not check is the users it returns are active or not. ### Solution: Create an iterable with all the possibilities and iterate on it to return the first active user in the list. Fallback on `self.env.user`. opw-5153159 Forward-Port-Of: odoo/enterprise#100465 Forward-Port-Of: odoo/enterprise#98807
This update fixes a translation error in the Netherlands (l10n_nl) module. The description for the 9% ST tax was previously incorrectly translated as 'TVA' (Value Added Tax). This change ensures accurate tax reporting and compliance for Dutch businesses using Odoo.
Original PR description
The traduction of te description of the 9% ST tax was wrong and was TVA to get back on a sale tax task-5217323 Forward-Port-Of: odoo/odoo#236907 Forward-Port-Of: odoo/odoo#236655
This update resolves an issue where the colorpicker wasn't correctly displaying custom background colors set within Odoo. The fix ensures that all color selections, including background colors, are accurately reflected in the colorpicker interface. This improves the user experience when customizing website content.
Original PR description
Before this commit, the colorpalette for the background color would not display custom colors already on the page. The issue appeared in 17.0 and worked in 16.0 before the conversion of wysiwyg to owl. github.com/https://github.com/odoo/odoo/pull/118966 The "getEditableCustomColors" method was not forwarded and therefore we used the default function, returning nothing. Steps to reproduce the issue: - Add a snippet - Set the background / font color of the snippet to a custom color - Add another snippet - Open the colorpicker for the text color (The colorpicker have access to the custom color set above) - Open the colorpicker for the background color (The colorpicker does not have access to the custom color set above) task-3806989 Forward-Port-Of: odoo/odoo#237173 Forward-Port-Of: odoo/odoo#180335
This update corrects a bug where the search function on the recent and contacts tabs in the VoIP module wasn't properly filtering results. The fix ensures that search terms are now accurately reflected in the displayed contacts, improving user efficiency and data accuracy. This resolves a previous issue impacting contact search.
Original PR description
On recent/contacts tab, search rpc didn't take search term into account. Fix it. Task-5262162
This update fixes an issue where the PDF report title for DIAN support documents was incorrectly displaying 'Factura Electrónica de Venta' after the DIAN stamp was applied. The change adjusts the report naming logic to ensure the correct 'Documento Soporte' title is consistently used, aligning with DIAN requirements.
Original PR description
Steps: - Create and confirm a vendor bill with 'DIAN Support Documents' journal - Print the PDF — it display 'Documento Soporte' as document title - Send the document to the DIAN and print it again -> the returned PDF with the DIAN stamp now shows 'Factura Electrónica de Venta', it should still be 'Documento Soporte' Cause: In `AccountMove._get_name_invoice_report` we return the name of the report depending on specific conditions, but the order of the conditions prevent to get the right report name as soon as the document has been accepted by DIAN. Fix: Modifying the order of the condition, to redirect to the right report, even when the support document has been accepted by DIAN opw-5119858 Forward-Port-Of: odoo/enterprise#99028
This update corrects a bug in the demo kiosk's payment process. Previously, the kiosk incorrectly used a 'meal' payment mode, causing the payment screen to be skipped. This change ensures the kiosk always uses the 'each' payment mode, guaranteeing the payment screen appears as expected.
Original PR description
The field `self_ordering_pay_after` should always be `each` when the `self_ordering_mode` is set to `kiosk`. This is enforced in the `write` method. However, the demo kiosk is created with a `self_ordering_pay_after` value of `meal`, until the `write` method is run. This results in behaviour such as the payment screen being skipped when it is not expected to. This commit sets the correct `self_ordering_pay_after` value of `each` when creating the demo kiosk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237521
This update corrects a display issue where the 'Due Date' column disappeared in the phone view of invoices. The problem stemmed from conflicting CSS styles, which caused the column title to be incorrectly overridden. This ensures the 'Due Date' column is always visible and correctly labeled when viewing invoices on smaller screens.
Original PR description
****Behavior:****
When switching to phone view, the 'Due Date' column name dissapears but the values stay, which causes every further column of the table to have the wrong title.
The removal of the Due Date column is intended, the issue happens beacause the 't-att-class' specifying the condition to make values red was overriding the initial 'class' specifying the behavior in phone view.
**Steps to reproduce:**
- Create an Invoice for the current user
- Go to Website -> User -> My Account -> Your Invoices
- switch to phone view (reduce to less than 768px if not initially the case)
- You'll see the 'Due Date' column name dissapear and the value shift to the next column name ('Amount Due')
opw-5239794
Forward-Port-Of: odoo/odoo#235474This update resolves a previous issue that prevented the UK Construction Industry Scheme from installing correctly when used with company branches. The fix prevents the creation of duplicate account codes, ensuring successful installation and proper reporting functionality for UK businesses.
Original PR description
Before this commit: Steps 1) Create a UK localization company 2) Create a branch for that company 3) Try to install UK - Construction Industry Scheme (l10n_uk_reports_cis) => A Validation Error is raised with the message `Account codes must be unique. You can't create accounts with these duplicate codes: 220001, 220101, 220201`, This occurs because the `_l10n_uk_reports_cis_post_init()` method is creating accounts for each UK company even if they aren't root companies (branch). After this commit: UK - Construction Industry Scheme (l10n_uk_reports_cis) is installed successfully with UK companies that have branches. opw-5326079 Forward-Port-Of: odoo/enterprise#99901
Resolved issues and error corrections
This update resolves an issue where incoming emails weren't correctly associating with company records, leading to errors. By enforcing a company ID on quality alerts, the system now properly handles email processing and prevents data inconsistencies. This ensures accurate tracking of quality alerts based on the correct company.
Original PR description
Not having a company on the quality alert team is making incoming emails sent to the alias having a 'company_id' false, defined by the default values. If manually created, a quality alert should have…
Not having a company on the quality alert team is making incoming emails sent to the alias having a 'company_id' false, defined by the default values. If manually created, a quality alert should have a company. In order to avoid company_id issue, enforcing it to the team will add it to the default values of the alias and to the quality alert created by emails. To reproduce: 1. install `quality` 2. add a second company 3. Create 2 mail.lias.domains: company1.com company2.com And assign them to distinct company records by selecting them on the companies menu. 4. On the configuration of the quality team, add a localpart to the alias (like alias_c1, to make the address alias_c1@company1.com). Don't set a company (this field is not required anyway) 5. Send an email using the send-mail script: odoo/addons/mail/static/scripts/odoo-mailgate.py And using the `MAIL_TEMPLATE` defined in odoo/addons/test_mail/data/test_mail_data.py after setting the to the alias of the company: alias_c1@company1.com And giving a value to the following headers: - Return-path, - From, And deleting the following headers: - Cc, - Message-id 6. Error: ``` The operation cannot be completed: - Create/update: a mandatory field is not set. - Delete: another model requires the record being deleted. If possible, archive it instead. Model: Quality Alert (quality.alert) Field: Company (company_id) ``` As the company is not mandatory on the step 4. completing 159309e7c17e0ef8274d89d90bcab1b97b40023b opw-4866977
This update prevents users from attempting to record calls when the system is in demo mode. Previously, users could trigger a recording attempt even without a valid SIP session, leading to a non-functional 'record' button. This change ensures a smoother user experience and avoids unnecessary actions.
Original PR description
Follow-up of https://github.com/odoo/enterprise/commit/7832c1d72abf7e2f59fbb97df06afa0ab062da5f (see https://github.com/odoo/enterprise/pull/99428#pullrequestreview-3471602481). Instead of having a factory method for the session recorders, we now give some more responsibility to the SessionRecorder constructor itself.
Features or functions removed from Odoo
This update simplifies our testing process by removing outdated nightly tags used to avoid external API calls. Now that mock servers are the standard for carrier simulations, these tags are no longer needed. This change improves test efficiency and reduces potential dependencies on external services.
Original PR description
The purpose of nightly tags was to avoid calling external API during every test. But now mostly mock servers are used to simulate the carrier response. For those tests, we should run them in standard test mode. Also removed useless tags and added data (instead of using demo data). Task: 4613407
Scenario: - set the report background to demo logo (621x196 pixels) - print a report with short content (eg. quotation without lines) Result: the logo is cropped at the bottom Why: Before 18.0, the background image was stretched over all the report, so needed to be ok esthetically if stretched. From 18.0 with https://github.com/odoo/odoo/commit/87258f05c7398173d3df6ec39869f52031502ede, the image is only intended to be shown one time on the first page without stretching over the whole document. There is two issues: - the "background-size" value "contains" is a typo of "contain" - if we fixed the typo we would break case where the image has a portait aspect ratio, the image would be zoomed to fit vertically (possibly over several page, which is itself an issue that the commit was trying to fix), but since we have the value "background-position: auto 300px" the contain is computed over the whole element area, and we will have 300px cropped of the bottom of the image Fix: This is not simple to fix, we could have used something like: background-size: auto calc(min(100% - 300px, 800px)); but both min and calc do not seem supported by wkhtmltopdf. So it seems that the only way to make this work better would be: - have a min-width, so people can know that if they can use an image of eg. 300px (for a min-width of 600px) of height without bottom cropped - we could fix the background-size: contain, but then we would possibly bring more issue for vertical image (that will be zoomed up or down all of a sudden) that are not solvable because of background-position. This fix just set the min-height to 600px. opw-4364722
This update resolves an issue where negative amounts (like credit notes) were not being included in the XBRL export of the EC Sales List report. The change ensures that all non-zero amounts, including negative ones, are now correctly generated for the report, improving data accuracy for VAT reporting. This addresses a prior bug impacting report completeness.
Original PR description
To replicate: 1. Install l10n_nl_reports_sbr_icp 2. Create an european partner with a VAT number 3. Create a credit note for this partner 4. Go to Accounting > Reporting > EC Sales List 5. The negative line appears in the report 6. Click on XBRL to export the report The negative line is not included in the exported report Only non-negative positive lines are added to the report in `_generate_codes_values()`. This commit changes that to include non-zero values. opw-5220622 Forward-Port-Of: odoo/enterprise#100009