Daily updates from Odoo
Wednesday, March 26, 2025
32 changes
3 changes
Resolved issues and error corrections
This fixes an intermittent issue in an automated test for buying rental products online. The change helps ensure date changes are properly recognized during testing, reducing false warnings in build checks without affecting customer-facing behavior.
This fixes when the close option appears for subscriptions by removing an impossible date condition. Businesses get more reliable subscription closing behavior and avoid incorrect decisions in the customer portal.
Original PR description
Previously, display_close had a contradiction where order_sudo.end_date was required to be both None and greater than order_sudo.next_invoice_date, which is not possible. This fix ensures that display_close is correctly set when either: - order_sudo.end_date is not defined, OR - order_sudo.end_date is after order_sudo.next_invoice_date. This prevents incorrect evaluations and potential issues in closing logic.
The test suite now explicitly sets required user groups that were previously available by default through demo data. This helps ensure Odoo can be tested reliably when installed without demo data, supporting the planned default installation behavior.
Original PR description
Since https://github.com/odoo/odoo/pull/198078, default groups have been moved from regular data to demo data. Due to many test's reliance on those groups, a big chunk of tests stopped working when ran without demo data; as we want to change the behaviour of odoo to install without demo data by default, we require the test suite to run without it as well. This PR adds those missing groups explicitly to restore the behaviour prior to the PR mentioned above for tests inheriting from odoo/addons/base/tests/common.py:BaseCommon, other instances of missing groups have also been adapted. Those changes are made with the hope that individual teams will go through the necessity of such groups and remove them/adapt the code as appropriate.
29 changes
Resolved issues and error corrections
The survey module's automated performance tests were adjusted to account for a different database query count when Survey is installed by itself. This helps keep internal quality checks reliable without changing the user experience.
Original PR description
Query counter values are higher if only survey app is installed. Based on the SQL query, it looks like with only survey there is extra query to load the default language rb-111093 rb-111094 rb-111095
Saudi localization users will now get the required QR code on invoices created through Point of Sale. The invoice is sent for ZATCA validation before printing, ensuring official fiscal details are included for compliance.
Original PR description
Users of SA localization needs to add a QR (resulting from the EDI validation) to their official invoices. This should occurs also for point of sales invoices but this is currently not working. Steps to reproduce: - With SA localization setup - Open POS session - Add a product - Invoice to a customer - Validate order - Check generated invoice Issue: QR is missing This occurs because we print the invoice before sending it to ZATCA. This way we generate an invoice without the needed fiscal information opw-4562837
This fix prevents website editing metadata from being added to the wrong template elements. It keeps snippet-related markers limited to the intended website snippets, reducing the risk of unexpected behavior when editing website pages.
Original PR description
Since [1], the data-snippet tag was added for each t-call which was not the desired behavior. This commit fix this to restrain the addition of the data-snippet tag only for t-snippet-call. [1]: https://github.com/odoo/odoo/commit/6d5c741820cb69f7619e2cf49bce1457b2cd1efd
The website shop’s attribute filter headings now follow the theme’s text color, making them visible when a dark background is used. This improves storefront readability for businesses using customized or dark color themes.
Original PR description
When a user changes the theme colors and applies a dark background the attribute filters will not be apparent Also the color applied to text is not applied to the attributes only if the accordion is active As a fix now the accordion headers will match the updated text color from the theme opw-4559710 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update brings the spreadsheet component to the latest version with several fixes for charts, Excel imports and exports, colors, and read-only behavior. It also improves spreadsheet formula and compiler performance, making spreadsheet interactions more reliable and responsive for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c687e1ca5 [REL] 18.0.21 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/c687e1ca5 [REL] 18.0.21 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/0dbaaf70c [FIX/PERF] Charts: fix loop condition [Task: 4675166](https://www.odoo.com/odoo/2328/tasks/4675166) https://github.com/odoo/o-spreadsheet/commit/ea7a7ce09 [REF] compiler: rename constants to literals [Task: 4134564](https://www.odoo.com/odoo/2328/tasks/4134564) https://github.com/odoo/o-spreadsheet/commit/282bc0514 [PERF] compiler: build literal value objects once [Task: 4134564](https://www.odoo.com/odoo/2328/tasks/4134564) https://github.com/odoo/o-spreadsheet/commit/c99697d8b [PERF] compiler: faster cache key and args extraction [Task: 4134564](https://www.odoo.com/odoo/2328/tasks/4134564) https://github.com/odoo/o-spreadsheet/commit/ed05832ed [PERF] functions: don't throw in SEARCH [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/729e4c92b [FIX] topbar: empty composer is focusable in readonly mode [Task: 4653139](https://www.odoo.com/odoo/2328/tasks/4653139) https://github.com/odoo/o-spreadsheet/commit/2278f53ae [FIX] color: `toHex` don't work with alpha = 0 [Task: 4660317](https://www.odoo.com/odoo/2328/tasks/4660317) https://github.com/odoo/o-spreadsheet/commit/1a04945bd [FIX] local: delete unused file formula_locale [Task: 4655913](https://www.odoo.com/odoo/2328/tasks/4655913) https://github.com/odoo/o-spreadsheet/commit/4cdce75fb [FIX] xlsx: prevent unwanted legend when importing chart from excel [Task: 4632987](https://www.odoo.com/odoo/2328/tasks/4632987) https://github.com/odoo/o-spreadsheet/commit/3f79a82ac [FIX] xlsx: export reversed icon sets [Task: 4655950](https://www.odoo.com/odoo/2328/tasks/4655950) 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: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@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>
Restaurant point-of-sale sessions now close open popups before automatically returning idle users to the floor plan. This prevents an error when a staff member closes a combo selection popup after the timeout, making table service workflows smoother.
Original PR description
- Fix traceback appearing when after 3 minutes, we're automatically redirected to the floor screen and we had a combo selector popup opened. We were redirected to the floorscreen but the popup was still opened and when closing it it was throwing a traceback. - Now just before redirecting idle user to the floorplan, we first close all opened modal. Steps to reproduce : - Open "Restaurant" - Open an empty table - Click combo product - Wait 180s :d - You'll be automatically redirected to floorplan, the combo selection popup is still opened - When closing it you have a traceback task-id: 4661502 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
The shared project task page now shows the Follow button correctly for portal users with edit access. This prevents important task collaboration controls from being partially hidden, making the page easier to use for external project participants.
Original PR description
Before this commit, when accessing public project sharing page with "edit" access rights, opening a task showed the chatter and "Follow" button above but it was partially cut. This comes from the…
Before this commit, when accessing public project sharing page with "edit" access rights, opening a task showed the chatter and "Follow" button above but it was partially cut. This comes from the following causes: - portal composer has special margin/padding at the top to compensate with website header, so that scrolling on website keeps the composer at the top - portal composers should not autofocus on mount compared to backend views. The portal sharing page was mistakenly not considered a portal composer at some point and was fixed by [1]. However had regression to include the margin/padding top compensation, thus it cut the 'Follow' button. The margin/padding top is not pretty but it works fine for website. Here for project we want to ignore them. This commit fixes the issue by ignoring project sharing for the padding/margin top compensation, using variable `env.projectSharingId`. opw-4509372 [1]: https://github.com/odoo/odoo/pull/189568 Before  After 
Online customers can no longer add more combo products to their cart than the available stock of the included items allows. The cart and product pages now respect the same maximum quantity rules as the combo configurator, helping avoid stock errors and order fulfillment issues.
Original PR description
Before this fix, it was possible to add more combo products than available to the cart. Indeed, the available quantity was only checked in the combo configurator, but not in other places where the quantity could be updated (such as the product page or the cart). This fix introduces a "max quantity" concept for combo products, which is based on the available quantity of their combo items. opw-4378554 Enterprise PR: https://github.com/odoo/enterprise/pull/77741
The HTML editor now ignores Firefox events that report a text change when the text has not actually changed. This prevents unnecessary dirty-state updates, reducing false prompts or indicators that content was modified.
Original PR description
Description of the issue this PR addresses: Current behavior before PR: Firefox triggered a mutation when setting `textContent` to the same value, causing unnecessary dirty state updates in the editor. Desired behavior after PR is merged: Such mutations are now detected and ignored to prevent false positives. task-4629669 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue where replacing an outdated newsletter subscription block in the website editor could trigger an error and interrupt editing. The change prevents internal template references from being treated as reusable snippets, making the editor update flow more reliable.
Original PR description
Scenario: - add a snippet subscription - select it in editor - click on "Replace by new version" in "THIS BLOCK IS OUTDATED" message Result: traceback "Cannot read properties of undefined (reading 'querySelectorAll')". Issue: in 6d5c741820cb69f7619e2cf49bce1457b2cd1efd the code adding data-snippet was changed, and it now set "data-snippet" in code t-called inside a snippet to template name that are not snippet. This cause the snippet code to be applied without a snippet existing. In this case, there is a snippet "s_newsletter_block_default_template" but that's just the name of the t-call'ed template. Fix: remove the code that apply t-snippet-call attribute to t-call inside a snippet. opw-4648786 **PR note**: the forward-port of the mentioned PR commit `https://github.com/odoo/odoo/pull/200690` has already received this change, so besides the test this PR seems only necessary in 18.0
This fix brings back the save button and related trusted-order handling in Point of Sale. Businesses using POS can again save and manage trusted orders as expected, reducing disruption in checkout and restaurant workflows.
Original PR description
The button save and all the logic about trusted orders were removed. This commit puts it back. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change reverts a previous update that caused accounting setup to fail for Argentina and Uruguay. It restores the ability to load the required accounting configuration so companies in those countries can install or use localization features without hitting an error.
Original PR description
…nd uy Description of the issue/feature this PR addresses: Traceback (most recent call last): File "/home/odoo/src/odoo/odoo/tools/convert.py", line 537, in _tag_root f(rec) File…
…nd uy
Description of the issue/feature this PR addresses:
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 537, in _tag_root
f(rec)
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 261, in _tag_function
_eval_xml(self, rec, env)
File "/home/odoo/src/odoo/odoo/tools/convert.py", line 188, in _eval_xml
return odoo.api.call_kw(model, method_name, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 533, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "/home/odoo/src/odoo/addons/l10n_ar/models/account_chart_template.py", line 60, in try_loading
return super().try_loading(template_code, company, install_demo, force_create)
File "/home/odoo/src/odoo/addons/account/models/chart_template.py", line 160, in try_loading
return self._load(template_code, company, install_demo, force_create)
File "/home/odoo/src/odoo/addons/l10n_ar/models/account_chart_template.py", line 39, in _load
res = super()._load(template_code, company, install_demo,force_create)
TypeError: AccountChartTemplate._load() takes 4 positional arguments but 5 were given
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-prThe HTML editor now avoids automatically replacing a link's destination when users edit it through the link popover. This lets users keep custom links, such as a WhatsApp URL attached to a phone number, while still updating simple auto-detected links when the link text itself changes.
Original PR description
Before this commit: The deduceURLfromText function was executed at the normalization step. This caused restrictions when creating links, as the link's href would be overridden if the label was…
Before this commit: The deduceURLfromText function was executed at the normalization step. This caused restrictions when creating links, as the link's href would be overridden if the label was deducible to a URL. Example: If a user wanted to link a WhatsApp URL to a phone number, the href would automatically change to tel:1234, making it impossible to set a different URL. After this commit: The deduceURLfromText function is no longer part of the normalization process. Instead: 1. It is executed only when the user change directly inside a link, not when editing through a link popover. User change can be input, paste or delete 2. If the user edits the link using the popover, the href will not be overridden by deduceURLfromText. 3. If the current href differs from the deduced URL, the href remains unchanged. 4. If the deduced URL matches the current href and the user changes the link's text by typing, pasting or deleting, the href will also be updated to reflect the text changes. These adjustments ensure better flexibility and prevent unwanted overrides when creating or editing links. Related link tests are also adapted. task-3787019 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an accounting issue where opening a vendor bill could fail when tax-based cash rounding was selected but no taxes were applied. This prevents an unexpected error and lets users continue editing bills in that configuration.
Original PR description
The Error is reproducible in the runbot here is an attached video with the steps: https://drive.google.com/file/d/1W1ZJG7aYueFa8Y24LSZlsil0caZB9mE5/view?usp=sharing This happens because of : 1- cash rounding is enabled in the settings of accounting 2 - cash rounding by tax is chosen 3 - opening a vendor bill 4 - putting a decimal price and removing taxes 5- then choosing cash rounding by tax The Error : File "/home/odoo/odoo/odoo/addons/account/models/account_move.py", line 1570, in _compute_tax_totals move.tax_totals = self.env['account.tax']._get_tax_totals_summary( File "/home/odoo/odoo/odoo/addons/account/models/account_tax.py", line 2090, in _get_tax_totals_summary max_subtotal, max_tax_group = max( ValueError: max() arg is an empty sequence opw-4558251 (related to ticket)
Users can now remove an existing value from partner lookup fields and have that change recognized by the form. This ensures the save option appears and the cleared value is properly stored, preventing frustrating data entry issues in contact-related forms.
Original PR description
In a form view with a many2one field using the res_partner_many2one widget (e.g. in the "Contacts" form view) where this field is set, remove the value. Before this commit, this didn't trigger a change in the model. As a matter of fact, the "save" button in the control panel (the small cloud) wasn't displayed. As a consequence, such a change couldn't be saved. This commit fixes the issue. OPW-4669817 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects Belgian payroll deduction amounts for the 3000 rule through April 2025. It helps ensure payroll calculations remain aligned with the latest required amounts, reducing the risk of incorrect payslips.
Mexican electronic invoices using Cuota-type taxes could fail when users tried to send CFDI documents. This fix corrects the tax amount lookup so those invoices can be generated and sent successfully.
Original PR description
### Steps to reproduce: - Install "l10n_mx_edi" and switch to Mexican company - In Accounting > Configuration > Taxes create a new tax with "Factor Type" set to "Cuota" - Create an invoice with this tax - Click "Send", select "CFDI" and send - Traceback ### Cause: Apparently a typo: The code tries to read `grouping_key['importe']` but `importe` is in the dictionary `tax_value` not `grouping_key`. ### Solution: Change `grouping_key` to `tax_value`. opw-4594061
The mobility budget calculation now adjusts iteratively for employees with lower gross wages. This helps ensure they can use the mobility budget option while still preserving the required minimum gross wage.
Original PR description
…putation To allow people with low gross wages to take mobility budget, we allow iterative computation to reduce it until minimum gross wage is obtained task-4647060
Fixes an error introduced when adapting the French balance sheet report to a prior reporting change. This helps ensure French financial statements show the correct figures for business review and compliance purposes.
Original PR description
During this commit: https://github.com/odoo/enterprise/commit/eae026d97399e0cf77c4d55fa1975968a27a3d2d We adapted the report to IMB. But by doing so there was some mistake in the report. opw-4625920
Rentable combo products can no longer be added to carts in quantities higher than the available stock of their included items. This prevents customers from placing rental orders that cannot be fulfilled and keeps cart quantities aligned with real availability.
Original PR description
Before this fix, it was possible to add more combo products than available to the cart. Indeed, the available quantity was only checked in the combo configurator, but not in other places where the quantity could be updated (such as the product page or the cart). This fix introduces a "max quantity" concept for combo products, which is based on the available quantity of their combo items. opw-4378554 Community PR: https://github.com/odoo/odoo/pull/188860
This update fixes unstable automated tests around appointment scheduling and Gantt calendar views. It helps prevent false failures in the testing pipeline, making releases and quality checks more dependable without changing user-facing behavior.
Original PR description
This PR fixes non-deterministic issues with a unit test in the appointment module. The issue was coming from the gantt range being separately from the mounting of the view. This could sometimes be a…
This PR fixes non-deterministic issues with a unit test in the appointment module. The issue was coming from the gantt range being separately from the mounting of the view. This could sometimes be a problem, as the second "get_gantt_data" RPC could return *after* the helper responsible for selecting the range called a `runAllTimers` that would drastically increase the current time, and thus affect the RPC payload. The fix here is to include the desired range directly in the view arch, instead of selecting the range manually from the UI. Furthermore, when trying to reproduce the non-deterministic behavior of the test mentioned above by slowing down RPCs, other gantt tests showed constitently failing results due to a poor architecture relying on animation frames instead of waiting for network calls. These tests have been fixed preventively to avoid potential timing issues. Fixes runbot issues: - [159865](https://runbot.odoo.com/odoo/runbot.build.error/159865) - [161300](https://runbot.odoo.com/odoo/runbot.build.error/161300) - [161490](https://runbot.odoo.com/odoo/runbot.build.error/161490) Community: https://github.com/odoo/odoo/pull/203472
A payroll accounting test was adjusted so it works correctly when demo data is not installed. This helps keep payroll accounting updates reliable across different deployment and testing setups.
Original PR description
With the PR [1] added test case which is failing in no demo mode (see [2]). This commit will ensure the test case will completely run witth no demo mode. [1] https://github.com/odoo/enterprise/pull/77334 [2] https://runbot.odoo.com/runbot/build/76189941
The Group S payroll export now checks whether the required company Group S code is configured before generating a file. Instead of a technical crash, users receive a clear message telling them what needs to be set up, reducing support confusion and failed report generation.
Original PR description
Currently, a traceback occurs when the user tries to create a Export to Group S report. To reproduce this issue: 1) Install `l10n_be_hr_payroll_group_s` without demo data 2) Shift to the Belgium…
Currently, a traceback occurs when the user tries to create a Export to Group S report. To reproduce this issue: 1) Install `l10n_be_hr_payroll_group_s` without demo data 2) Shift to the Belgium company 3) Create a running contract from payroll with stating date should be in past 4) Now create a Work Entry from payroll with the From date also be in the past 5) Now create a new `Export to Group S report` report from payroll/reporting 6) Make sure the date and moth are also in the past and click the `Populate` 7) Now click the `Generate Export File` Error:- ``` TypeError: can only concatenate str (not "bool") to str ``` The error is occurring because there is no `group_s_code` value by default in the company. The user has to give the value from the settings. If there is no `group_s_code` in the company, It leads to the above exception when concatenation is done between False and a string. Also, a userError was already raised from the very next life. https://github.com/odoo/enterprise/blob/eb1eff85d2119a34997067fedb602e963a5d6f02/l10n_be_hr_payroll_group_s/models/hr_payroll_export_group_s.py#L41-L43 So by making an extra check of the presence of the `group_s_code` in the company. We can resolve this issue and also make the code more robust. sentry-6289053708
This update prevents payment failures in the Point of Sale when a company customer is selected and the order is automatically marked for invoicing. It ensures required Mexican localization details are handled correctly so sales can be paid without interruption.
Original PR description
When a company partner is selected for an order, the commit https://github.com/odoo/odoo/commit/270779c8250272920d759fbe7b6cfc889e2f5969 automatically sets the order to invoice. This causes the order to miss required localization fields, leading to an error during payment. opw-4670131
The UrbanPiper POS module can now be installed even after online payments are removed. This prevents a setup error and helps businesses enable the integration without needing extra troubleshooting.
Original PR description
Steps to reproduce: === - Install point_of_sale. - pos_online_payment is auto-installed. - Uninstall pos_online_payment. - Install pos_urban_piper. - Installation fails with an XPath error. Issue: === - XPath targeting is_online_payment is not found when pos_online_payment is uninstalled. Fix: === - Replaced XPath from is_online_payment to split_transactions to ensure proper installation. task-4639074
This update renames an internal password field label used by the Monster recruitment integration to avoid confusion with another password field. It prevents system warnings while leaving the visible settings screen unchanged for users.
Original PR description
The field `res.company.hr_recruitment_monster_password` has the same label `Password` as the field `res.company.l10n_co_edi_password` from module [`l10n_co_edi`](https://github.com/odoo/enterprise/blob/b2fcd4e679fd6e4dedebdc13a5de0c89fbe3ef9a/l10n_co_edi/models/res_company.py#L15), as well as the related field on `res.config.settings` model, which generates warnings. The label on the field can be changed and the [view](https://github.com/odoo/enterprise/blob/b2fcd4e679fd6e4dedebdc13a5de0c89fbe3ef9a/hr_recruitment_integration_monster/views/res_config_settings.xml#L16-L21) where it is used will not be affected since the label is set in the view.
Payslip creation no longer fails when multiple employees have running contracts based on attendances but no working schedule set. This prevents payroll teams from being blocked by an error when editing or generating employee payslips in these cases.
Original PR description
Currently, an error occurs when generating payslips for contracts that have no **Working Schedule**. **Steps to reproduce:** - Install `hr_payroll` and `hr_attendance` modules. - Create at least two **Running** contracts with **Work Entry Source** set to `Attendances` and **Working Schedule** left empty. - Create **Employee Payslips** and try to change the date in the list view. - Observe the error. **Error:** `ValueError - Expected singleton: hr.employee(123, 131, 130, 134, 126, 146, 137, 138, 140, 143, 139, 124, 147, 150, 148, 152)` The error occurs because the method tries to access `self.employee_id.tz` inside a loop at [1], leading to singleton error. This commit ensures that `slip.employee_id.tz` is used instead of `self.employee_id.tz`. [1] - https://github.com/odoo/enterprise/blob/dde492541aa253771f905d0a77650aa35fea0e8c/hr_payroll/models/hr_payslip.py#L1152-L1157 Sentry - 6425128756
Fixes Colombian DIAN electronic invoicing XML so foreign-currency credit notes and invoices report exchange rates as positive values. This prevents DIAN rejections caused by negative currency rate fields and improves compliance for Colombian companies using multicurrency documents.
Original PR description
Reproducing the issue in the database currently requires a real digital DIAN certificate. However, it can be tested in Python: - Create a credit note for a CO company with a foreign currency. - Generate the XML report. The tags SourceCurrencyBaseRate and CalculationRate are being added with a negative sign, but the DIAN only accepts positive values. This commit replace the locally computed rate with the account_move invoice_currency_rate (which meant correcting a few already existing test because of decimal accuracy differences) opw-4608444
This fixes an issue where resetting bank reconciliation involving batch payments could leave accounting information in the wrong state. The change helps ensure finance teams can safely undo and redo reconciliation steps without creating inconsistencies.
Original PR description
TODO: It's a test, please don't review