Daily updates from Odoo
Monday, December 8, 2025
116 changes
14 changes
Resolved issues and error corrections
This update resolves an error that occurred when sending invoices for Taiwan customers who didn't have a phone number listed. The fix prevents the system from attempting to access a missing field, ensuring invoices can be successfully generated and sent to Ecpay. This improves the reliability of the Taiwan Electronic Invoicing process.
Original PR description
This error occurs when the user try to send invoice. Steps to reproduce: - Install `l10n_tw_edi_ecpay` module > Switch to `Taiwan` company - SetUp `Taiwan Electronic Invoicing` in settings - Create a…
This error occurs when the user try to send invoice. Steps to reproduce: - Install `l10n_tw_edi_ecpay` module > Switch to `Taiwan` company - SetUp `Taiwan Electronic Invoicing` in settings - Create a New Customer with `Email` and `Tax ID` (eg: 12345678) - and no `phone` number. - Create New Invoice with created Customer > Confirm > Send > `Send to Ecpay` > Generate Traceback: `AttributeError: 'res.partner' object has no attribute 'mobile'` This issue occurs at [1] because when the `phone` field is not set, the system tries to fall back to the `mobile` field. However, the `mobile` field was removed from `res.partner` (see related reference), and it was reintroduced in the referenced [commit]. This commit cleans up the logic to avoid referencing a non-existent field. [1]: https://github.com/odoo/odoo/blob/f1deed16e2355a74fea522439826625535eb7052/addons/l10n_tw_edi_ecpay/models/account_move.py#L677-L678 reference- https://github.com/odoo/odoo/pull/189739 [commit]: https://github.com/odoo/odoo/pull/236938/commits/c7404dff58f232103af4271a445d3841a82be8a3 sentry-7086174794 Forward-Port-Of: odoo/odoo#238657
This update simplifies the appointment calendar by showing only one period (day, week, month, quarter, or year) at a time, instead of three. This change reduces visual clutter and provides users with a clearer view of their appointments, improving usability.
Original PR description
This PR displays one period of the requested scale (day, week, month, quarter and year) in the calendar instead of three. It avoids displaying unwanted periods and overwhelming users with information. Task-5022091 Forward-Port-Of: odoo/enterprise#98796
This update resolves a minor visual glitch in the Email Marketing app when creating campaigns with plain text templates. The fix ensures the snippet menu is initially folded, preventing a brief, distracting appearance. This improves the overall user experience and consistency within the application.
Original PR description
**Steps to reproduce:** - Go to the Email Marketing app - Create a new campaign and select the "Plain Text" Mail body for the template - Change between Mail body and Settings tabs - On Mail body tab, the right-hand building block section appears briefly (1 second) and then disappears **Issue:** Default state of the snippet menu has `snippetsMenuFolded` set to False before being inserted. **Fix:** As described in the comment just after the insert: ``` // Hide the snippetsMenu at first, other code will handle // if it should be shown or not. ``` So the fix ensure the menu is folded by default (not sure as to why the state was changed after inserting, so maybe it's expected). opw-5130191 Forward-Port-Of: odoo/odoo#238766
A recent change to exclude US-specific report variants from account_reports tests has inadvertently introduced a bug in the 18.4 version. This fix removes the variant exclusions from the tests, resolving the issue. This change was originally intended for the 19.0 release.
Original PR description
In this commit f030cbefb8885ad023d40dcc5a023a04014f6715, we decided to exclude all the report variant in some account_reports test, because we only want to test with the generic tax report, and not the specific localizations variants. This has been merged in 19.0, but it's breaking tests in 18.4 as well, since this change https://github.com/odoo/enterprise/pull/100063 This commit remove the variants from the tests as well. runbot-234444
A recent test failure related to task scheduling was caused by incorrect timezone calculations. This update corrects the system to use UTC for interval computation, ensuring accurate task planning and preventing scheduling discrepancies. This resolves a potential issue impacting task scheduling accuracy.
Original PR description
The test `test_plan_task_in_calendar` failed with a one-hour difference in `planned_date_begin`. The error occurred because the work intervals were computed using the resource's timezone (`Europe/Brussels`) instead of `UTC`, leading to a shifted planned date. Setting the resource timezone to `UTC` ensures consistent interval computation and resolves the test failure. [RB-227059](https://runbot.odoo.com/odoo/error/227059)
This update resolves an issue where a warning banner appeared during SEPA batch payments if a linked employee lacked an address. The change ensures the system correctly uses the employee's address, eliminating the misleading warning and improving the payment process. This change was made to enhance user experience and data accuracy.
Original PR description
…oyee has an address Doing batch payment for sepa payment would generate a warning banner if the partner has no address ( city and country ) However in reality ( already working ) the xml report will be generated with the linked employee address in the case of absence of the partner address thus it should not show a warning. The change removes the warning in this case. task: 5266346 Forward-Port-Of: odoo/enterprise#99928
This update resolves a technical issue within the HTML editor that prevented users from successfully coloring text when selecting a link containing a specific character (feff). The fix ensures the editor accurately handles selections and avoids a traceback, improving the overall coloring functionality. This change was made to enhance the stability and reliability of the HTML editor.
Original PR description
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the…
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the selection at: https://github.com/odoo/odoo/blob/bee7fc1f955c52a88b527ad9a2ddf0021529bbc7/addons/html_editor/static/src/main/font/color_plugin.js#L247-L247 and then call `getFonts()`, which internally uses `this.dependencies.split.splitAroundUntil()`. If the selection is on a `feff` node, `splitAroundUntil()` can clear those nodes because `splitElement()` inside it dispatches to `clean_handlers` with the selected element containing the `feff`. Since the preserved cursor offset refers to the node before the `feff` was removed, restoring it throws: `The offset x is larger than the node's length (y).` Solution: After `splitAroundUntil()`, adjust the preserved cursor offsets if the nodes were mutated to ensure they remain valid. Steps to reproduce: It is difficult to reproduce manually, but the issue occurs when coloring a link with the selection on a `feff`. A test case replicating the situation can be based on the original failing template in the customer’s database. opw-4953943 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238450 Forward-Port-Of: odoo/odoo#234328
This update fixes a bug where form fields without labels were not being submitted correctly. Now, all form fields, even those without labels, are reliably captured and sent when the 'send' button is clicked. Additionally, the system now prevents users from removing labels on form fields, ensuring data integrity.
Original PR description
Before this commit, a form input without a label would not send its data when clicking send. Steps to reproduce - go to the website editor - add a form - choose any field - delete the field label - save and exit the editor - now in the website, fill the form and click send => the fields without a name label are not sent After this commit fields without a label get sent with a placeholder "unknown_field" task-5062575 Forward-Port-Of: odoo/odoo#237805 Forward-Port-Of: odoo/odoo#225545
This update corrects a bug where inactive accounts were hidden from reports. The change reflects a new setting ('active') for account status, which previously caused the reporting engine to ignore inactive accounts. This ensures all accounts, active or inactive, are accurately reflected in reports.
Original PR description
In replacing the deprecated field with the special `active` field the account_codes prefix engine no longer displays values for accounts that are inactive.
This disables the active test in:
- computing the domain for accounts
- auditing the value (since the domain is `('account_id.code', 'in'...)`
opw-5226153
Forward-Port-Of: odoo/enterprise#100885This update corrects an issue where shipping labels for FedEx deliveries weren't including the company name entered during checkout. The fix ensures that the correct company information is used on shipping labels, improving order accuracy and customer experience. This resolves a problem where the system wasn't properly capturing company names from the ecommerce form.
Original PR description
Steps to reproduce: - install ecommerce (i.e. website_sale) and delivery_fedex_rest - setup demo payment + fedex delivery method (including publishing it) - open the db while not logged in (i.e. in private browsing) - add something in the ecommerce page to cart + checkout > checkout - type in random contact info INCLUDING "Company Name" - continue checkout > select FEDEX as delivery method > pay now - go to Sales App > Sale orders > open the SO generated by ecommerce - open delivery + validate Expected result: - Shipping label with the name + company name from the ecommerce form Actual result: - company name is missing Issue is due to a company not being generated by ecommerce. Instead a string field is filled in (which is not visible when creating a contact directly via the contacts app). Code has been adapted to consider this use case. opw-5119089 Forward-Port-Of: odoo/enterprise#101376
This update resolves an issue preventing the payroll demo data installation from working correctly at the start of the year. The fix sets a fixed past year for Mitchell Admin's contract, ensuring accurate demo data generation. This resolves a technical error reported by automated testing.
Original PR description
Before this commit, the relative date used to generate Mitchell Admin's contract was always at January 1st of the current year, making the payroll demo data install fail when at the start of the year. This commit sets a fixed year in the past for Mitchell's contract. runbot error 234623 and 234612
This update resolves an issue where setting image field widths in list views caused a system crash during development. The change clarifies that image field widths should be controlled through list view configurations, not the image field itself, ensuring stability and proper functionality.
Original PR description
Before this commit, if one set the `width` attribute on an image field in a list view arch, there was a props validation crash (in debug mode). The `width` attribute is relevant to be set in list view archs as it allows to specify the width of the column. That attribute isn't meant to be used by the image field itself, where the option `size` can be used to specify the size of the image as a pair `[width, height]`. opw~5392068 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 fixes an issue where Vimeo video settings (loop and hide controls) weren't being applied after saving a website page. The problem stemmed from an unnecessary escaping of URL characters in the video source, which was preventing Vimeo from correctly interpreting the settings. Now, these settings work as expected.
Original PR description
When setting options like "Loop" or "Hide Player Controls" on an embedded Vimeo video, these settings were not applied on the final page after saving. Steps to reproduce: =================== - Go to…
When setting options like "Loop" or "Hide Player Controls" on an embedded Vimeo video, these settings were not applied on the final page after saving. Steps to reproduce: =================== - Go to the Website editor. - Drag and drop a "Media List" or similar snippet. - Double-click the video placeholder to open the media dialog. - In the "Video" tab, paste a Vimeo URL. - Enable "Loop" and/or "Hide Player Controls". - Save the page. -> Observe that the video does not loop and the controls are still visible. Cause: ====== When rebuilding the iframe, `generateVideoIframe` was processing the video's `src` URL through using `escape()` function. This function is designed to prevent XSS by converting characters like `&` into their HTML entity equivalent, `&`. However, Vimeo video URLs use the `&` character to separate query parameters (e.g., `?loop=1&controls=0`). The `escape()` function was converting this URL to `?loop=1&controls=0`. but `setAttribute` already handles URL values safely. so Vimeo player will receive url containing &. This broke the URL's structure. The Vimeo player received a malformed URL, could not parse the parameters correctly, and therefore ignored the options for looping and controls. escape was used before cause The original code was adding the iframe using `.html(...)` see commit: https://github.com/odoo-dev/odoo/commit/8749410b1033ddec1207ce1db42d1889a0d2ea33 side note 1: before saving the vimeo video works because we render it without the double escaping of & (as will be the case for saved video if this PR is applied) side note 2: the issue of double escaping also apply to youtube, but it seems to be ok with superfluous & in URL while in vimeo: https://player.vimeo.com/video/1138854841?autoplay=1&muted=1&autopause=0&controls=0&loop=1 has the video that doesn't loop, is not muted (so doesn't auto play in an iframe on most browser) and show controls https://player.vimeo.com/video/1138854841?autoplay=1&muted=1&autopause=0&controls=0&loop=1: all option works Solution: ========= The unnecessary `escape()` call has been removed. since the video should be only added using media dialog and the `setAttribute(...)` will escape it by default opw-5225261 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238040 Forward-Port-Of: odoo/odoo#236677
This update fixes an issue where invoices containing special characters would fail to send to Peppol, causing errors. The change ensures that all invoice data conforms to XML standards, preventing these failures and guaranteeing successful Peppol invoice transmissions. This improves the reliability of our Peppol integration.
Original PR description
## Issue: When a character that's not compatible with XML is in an invoice, and you send it to Peppol, a traceback was raised: `ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters` ## Cause: `dict_to_xml` converts each invoice field into XML, but certain control characters (e.g., `\x02`) are not allowed in XML according to the specification: https://www.w3.org/TR/xml/#charsets If such a character appears in the data (e.g., imported through a product CSV), the XML generation crashes ## Steps to produce: - Install `account_peppol` and `l10n_be` (to get the BE Company CoA) - Import a product containing a control character: `echo -e "name,default_code\nTest\x02Product,ABC123" > products.csv` - Create an invoice for the BE company using the product `Test\x02Product` - Send it via Send > by Peppol - A traceback is raised opw-5114648 Forward-Port-Of: odoo/odoo#238978 Forward-Port-Of: odoo/odoo#236836
12 changes
Resolved issues and error corrections
This update simplifies the appointment calendar by showing only one period at a time (day, week, month, etc.) instead of three. This change reduces visual clutter and provides users with a clearer view of their appointments, improving usability.
Original PR description
This PR displays one period of the requested scale (day, week, month, quarter and year) in the calendar instead of three. It avoids displaying unwanted periods and overwhelming users with information. Task-5022091 Forward-Port-Of: odoo/enterprise#98796
This update resolves a minor visual glitch in the Email Marketing app when creating campaigns with plain text templates. The fix ensures the snippet menu is initially folded, preventing a brief, distracting appearance. This improves the overall user experience and consistency within the application.
Original PR description
**Steps to reproduce:** - Go to the Email Marketing app - Create a new campaign and select the "Plain Text" Mail body for the template - Change between Mail body and Settings tabs - On Mail body tab, the right-hand building block section appears briefly (1 second) and then disappears **Issue:** Default state of the snippet menu has `snippetsMenuFolded` set to False before being inserted. **Fix:** As described in the comment just after the insert: ``` // Hide the snippetsMenu at first, other code will handle // if it should be shown or not. ``` So the fix ensure the menu is folded by default (not sure as to why the state was changed after inserting, so maybe it's expected). opw-5130191 Forward-Port-Of: odoo/odoo#238766
This update resolves an issue where a warning banner appeared during SEPA batch payments if a linked employee lacked an address. The change ensures the system correctly uses the employee's address, eliminating the misleading warning and streamlining the payment process. This improves user experience and data accuracy.
Original PR description
…oyee has an address Doing batch payment for sepa payment would generate a warning banner if the partner has no address ( city and country ) However in reality ( already working ) the xml report will be generated with the linked employee address in the case of absence of the partner address thus it should not show a warning. The change removes the warning in this case. task: 5266346 Forward-Port-Of: odoo/enterprise#99928
This update prevents errors during Peppol invoice sending caused by invalid characters in invoice data. The system now filters out control characters that are not compatible with XML, ensuring invoices can be successfully transmitted to Peppol. This resolves a technical issue that could have disrupted Peppol integration.
Original PR description
## Issue: When a character that's not compatible with XML is in an invoice, and you send it to Peppol, a traceback was raised: `ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters` ## Cause: `dict_to_xml` converts each invoice field into XML, but certain control characters (e.g., `\x02`) are not allowed in XML according to the specification: https://www.w3.org/TR/xml/#charsets If such a character appears in the data (e.g., imported through a product CSV), the XML generation crashes ## Steps to produce: - Install `account_peppol` and `l10n_be` (to get the BE Company CoA) - Import a product containing a control character: `echo -e "name,default_code\nTest\x02Product,ABC123" > products.csv` - Create an invoice for the BE company using the product `Test\x02Product` - Send it via Send > by Peppol - A traceback is raised opw-5114648 Forward-Port-Of: odoo/odoo#236836
This update resolves an issue preventing users from adding products from the parent company to quotation templates within a multi-company setup. Previously, this was allowed in standard sales orders, but not quotation templates. The change ensures consistent functionality across sales processes, simplifying product selection for users.
Original PR description
### Issue In this issue, having multi-company setup, we cannot make a quotation template with a product from the parent company. While this is allowed in sale order. #### To reproduce: 1- Create a product and in the product form, set the the company field to the parent company. 2- Create a quotation template and set the company field to the child branch. 3- In the quotation template, add a line and use the created product from the parent company. 4- Saving the form will raise an error. Talked with PO about the issue and he agreed that the quotation template should allow product from the parent company. This is already the flow in the quotation itself. opw-5177590 Forward-Port-Of: odoo/odoo#237732
This update fixes an issue that prevented the generation of SAFT files when a journal entry lacked a partner but included a receivable account. The fix ensures that SAFT exports now function correctly for companies using this reporting standard, resolving a potential reporting error. This improves compliance and data accuracy.
Original PR description
If we try to export a SAF-T file when a line doesn't have any partner but having a receivable account, then a traceback is displayed.
(Backport of #98240)
How to reproduce?
1. Use a company with a localization using SAF-T (e.g. l10n_dk)
2. Create and post a journal entry with no partner, and with a line having a receivable account.
3. Go on the general ledger, and export in the SAF-T format
opw-5260937
Forward-Port-Of: odoo/enterprise#100960
Forward-Port-Of: odoo/enterprise#100296A test related to filtering work orders by user was intermittently failing. This fix addresses a timing issue where the test checked for record visibility too early after a user switch. By splitting the test into two steps – verifying the user switch and then confirming the presence of new records – the test now consistently passes.
Original PR description
The test `test_shop_floor_my_wo_filter_with_pin_user` sometimes fails on these steps:…
The test `test_shop_floor_my_wo_filter_with_pin_user` sometimes fails on these steps: https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L177-L190 https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L196-L206 https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L212-L221 This happends since changing the user requires some time to display the related shopfloor records, but the steps check the number of visible records as soon as it has switched rather than when it is sure that the records are displayed. #### Fix: Since switching employees will first empty the recordset and later display the related records, we can split the steps in two. We first check that we switched users, then we check the existence of a record that is not present for the previous user, and only then perform the related checks. #### runbot-226734 Forward-Port-Of: odoo/enterprise#100908 Forward-Port-Of: odoo/enterprise#100746
This update corrects a technical issue preventing users from successfully revoking trusted devices within the security settings. The problem stemmed from a typo in the system's dynamic content, which blocked the revocation process. This ensures users can properly manage their 2FA security settings.
Original PR description
After public widgets have been rewritten as Interactions [1], there were 2 typos in `dynamicContent` that led to the wrong behavior. Because of that, we couldn't revoke a trusted device, or all of them. Steps to see the issue, - Turn the 2FA on - Add a trusted device, for example, by checking `Don't ask again on this device` when prompted to enter the authentication code while logging in. - Go to /my/security - Try to revoke a trusted device, either just by clicking on the trash icon button, or the 'Revoke all' button. => Nothing happens. [1]: https://github.com/odoo/odoo/commit/22e777c046521f3f89b62caa5876680beb7f5aba Forward-Port-Of: odoo/odoo#238830
This update fixes an issue where the keyboard unexpectedly appeared on mobile date fields, causing a frustrating user experience. The change now prevents the keyboard from opening and hides the cursor, resulting in a smoother and more intuitive date selection on smaller screens.
Original PR description
Before this commit:
- The cursor was shown inside the date/datetime input field on mobile,
which triggered the keyboard unnecessarily and degraded the user
experience.
Steps to reproduce:
1. Add a form snippet.
2. Add a Date/Datetime field.
3. Click on the Date field.
- The virtual keyboard appears and the datepicker popover may be
clipped or partially hidden.
After this commit:
- The virtual keyboard is now prevented from opening on date/datetime
inputs, and the text cursor within these fields is also hidden.
task-[4745714](https://www.odoo.com/odoo/project/974/tasks/4745714)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#238771
Forward-Port-Of: odoo/odoo#212053This update corrects an issue where shipping labels for FedEx deliveries weren't including the company name entered during checkout. The fix ensures that the correct company name is used on shipping labels, improving order accuracy and customer experience. This was triggered by a discrepancy in how contact information is handled during ecommerce checkout.
Original PR description
Steps to reproduce: - install ecommerce (i.e. website_sale) and delivery_fedex_rest - setup demo payment + fedex delivery method (including publishing it) - open the db while not logged in (i.e. in private browsing) - add something in the ecommerce page to cart + checkout > checkout - type in random contact info INCLUDING "Company Name" - continue checkout > select FEDEX as delivery method > pay now - go to Sales App > Sale orders > open the SO generated by ecommerce - open delivery + validate Expected result: - Shipping label with the name + company name from the ecommerce form Actual result: - company name is missing Issue is due to a company not being generated by ecommerce. Instead a string field is filled in (which is not visible when creating a contact directly via the contacts app). Code has been adapted to consider this use case. opw-5119089 Forward-Port-Of: odoo/enterprise#101376
This update fixes an issue where Vimeo video settings (loop and hide controls) weren't being applied after saving a website page. The fix removes a redundant escaping process that was incorrectly altering Vimeo video URLs, ensuring the desired settings are now consistently applied.
Original PR description
When setting options like "Loop" or "Hide Player Controls" on an embedded Vimeo video, these settings were not applied on the final page after saving. Steps to reproduce: =================== - Go to…
When setting options like "Loop" or "Hide Player Controls" on an embedded Vimeo video, these settings were not applied on the final page after saving. Steps to reproduce: =================== - Go to the Website editor. - Drag and drop a "Media List" or similar snippet. - Double-click the video placeholder to open the media dialog. - In the "Video" tab, paste a Vimeo URL. - Enable "Loop" and/or "Hide Player Controls". - Save the page. -> Observe that the video does not loop and the controls are still visible. Cause: ====== When rebuilding the iframe, `generateVideoIframe` was processing the video's `src` URL through using `escape()` function. This function is designed to prevent XSS by converting characters like `&` into their HTML entity equivalent, `&`. However, Vimeo video URLs use the `&` character to separate query parameters (e.g., `?loop=1&controls=0`). The `escape()` function was converting this URL to `?loop=1&controls=0`. but `setAttribute` already handles URL values safely. so Vimeo player will receive url containing &. This broke the URL's structure. The Vimeo player received a malformed URL, could not parse the parameters correctly, and therefore ignored the options for looping and controls. escape was used before cause The original code was adding the iframe using `.html(...)` see commit: https://github.com/odoo-dev/odoo/commit/8749410b1033ddec1207ce1db42d1889a0d2ea33 side note 1: before saving the vimeo video works because we render it without the double escaping of & (as will be the case for saved video if this PR is applied) side note 2: the issue of double escaping also apply to youtube, but it seems to be ok with superfluous & in URL while in vimeo: https://player.vimeo.com/video/1138854841?autoplay=1&muted=1&autopause=0&controls=0&loop=1 has the video that doesn't loop, is not muted (so doesn't auto play in an iframe on most browser) and show controls https://player.vimeo.com/video/1138854841?autoplay=1&muted=1&autopause=0&controls=0&loop=1: all option works Solution: ========= The unnecessary `escape()` call has been removed. since the video should be only added using media dialog and the `setAttribute(...)` will escape it by default opw-5225261 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238040 Forward-Port-Of: odoo/odoo#236677
This update resolves an issue where freezing a spreadsheet with empty lists didn't accurately represent the data. Specifically, it corrects how ODOO.LIST is processed when there are no records, ensuring that the frozen spreadsheet displays the correct data. This improves the reliability of spreadsheet sharing and reporting.
Original PR description
Steps to reproduce: - insert a list - expand the list beyond the number of records in order to have ODOO.LIST with no result - add =ISTEXT( <a reference to an empty ODOO.LIST> ) -> the result is TRUE - Freeze and share the spreadsheet => the result of ISTEXT is FALSE in the frozen version task-5360561 opw-5359100 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#237970 Forward-Port-Of: odoo/odoo#237511
3 changes
Resolved issues and error corrections
This change eliminates a misleading warning banner that appeared during SEPA batch payments when a linked employee had an address. The system was already correctly generating reports using the employee's address, so this fix ensures a smoother user experience and avoids unnecessary alerts. This improves the reliability of batch payment processing.
Original PR description
…oyee has an address Doing batch payment for sepa payment would generate a warning banner if the partner has no address ( city and country ) However in reality ( already working ) the xml report will be generated with the linked employee address in the case of absence of the partner address thus it should not show a warning. The change removes the warning in this case. task: 5266346 Forward-Port-Of: odoo/enterprise#99928
This update resolves an issue where clicking a Field Service record in the kanban view opened it in the same tab instead of a new one. The fix corrects a technical error within the `industry_fsm` module that prevented the expected new-tab behavior when using a middle mouse click. This ensures a smoother user experience when accessing records.
Original PR description
Steps to reproduce: 1. Install `industry_fsm` 2. Open Field service module 3. In the kanban view, click a record with the middle mouse button Issue: - The record opens in the same tab instead of a new tab. Cause: - `FsmMyTaskKanbanRecord` overrides `onGlobalClick` without propagating the `newWindow` argument, preventing the expected new-tab behavior. Solution: - Forward the `newWindow` parameter to the parent implementation to restore the correct handling of the middle mouse click opw-5351842
This update fixes an issue where subscription details weren't correctly displayed in the dashboard. Specifically, it addressed a bug where sale order items were incorrectly shown alongside subscriptions and the subscription titles were not accurate. The change ensures subscriptions are presented clearly and accurately within the dashboard.
Original PR description
Before this commit, when subscriptions were linked to the analytic account of a project, the sale order items appears in an unwanted section when the section is unfolded. Meanwhile, when the subscription section is unfolded the title of the subscriptions items are not correctly displayed. The first issue is due to the fact that we did not correctly exclude the subscriptions items from the domain. The second issue is due to the fact that we fetch the field 'name' from the subscription search instead of the field 'display_name' task-5159781
17 changes
Resolved issues and error corrections
This update resolves a bug where the 'lock document' action wasn't consistently updating in the document previewer's action menu. The fix ensures the action menu reflects the current document status, improving the user experience when managing document access.
Original PR description
Steps to reproduce =================== - Preview any documents. - Click on the actions menu and lock the document. - Now go to the actions menu again. => The set of options is not updated. Technical =========== - The action menu, which we are using inside the file previewer, is passed explicitly inside the FileViewer component of the document. We were using the `record.load()`, which will not have any effect on the FileViewer component and that's why the action menu was not updating. After this commit ================== - Used the `this._notifyChange()` method, which closes the preview and loads the model to align with the same behaviour as other actions. Task-4988116 Forward-Port-Of: odoo/enterprise#100639 Forward-Port-Of: odoo/enterprise#91760
This update resolves an issue causing errors during payslip generation. The fix ensures the system handles missing data gracefully by using a safer method to access dictionary values, preventing a key error. This improves the reliability of 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#100709 Forward-Port-Of: odoo/enterprise#99245
This update resolves a technical issue where calculations for new electronic invoice documents in the l10n_uy_edi module were failing. The fix ensures that necessary data is correctly assigned when a new document record is created, preventing calculation errors. This improves the reliability of invoice processing.
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 Forward-Port-Of: odoo/enterprise#101060
This update resolves a technical issue that prevented the printed receipt tour from working correctly after installing the `l10n_se_pos` module. The fix corrects a programming error that caused a runtime error, ensuring the receipt tour functions 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 or `l10n_se_pos`. runbot-233248 Forward-Port-Of: odoo/enterprise#101016 Forward-Port-Of: odoo/enterprise#97355
This update improves the accuracy of pay dates displayed on payslips. Now, the payslip will show the actual payment date if available, otherwise it defaults to the current date. This ensures employees and payroll teams have the most up-to-date information.
Original PR description
Change the pay date in the payslip to the payment date if available; otherwise, use the current date. task-5358370
This update simplifies the export of HR work entries by automatically hiding the company selection field when only one company is available for the user. Previously, users could only export from their current company. Now, the system intelligently adapts to allow selection of other accessible companies, improving usability and flexibility.
Original PR description
In the HR Work Entry Export mixin form view, the company_id field is now hidden when there is only one available company in the selection. A computed boolean field determines whether the field should be visible, based on the current user's allowed companies and any country restrictions. The form view uses this flag to automatically hide the field when unnecessary. task-5149817
A test related to employer costs calculations within the South Africa payroll module (l10n_sa_hr_payroll) was failing. This was resolved by moving the test to the related module, l10n_sa_hr_contract_salary, ensuring accurate calculations for employer contributions.
Original PR description
**Issue** : TestEmployerCostsWithSaFields.test_employer_costs_with_sa_fields fails in Single app testing of l10n_sa_hr_payroll causing this error "AttributeError: 'hr.version' object has no attribute '_compute_final_yearly_costs'" **Cause** : _compute_final_yearly_costs is defined in hr_contract_salary which is not a dependency of l10_sa_hr_payroll **Fix** : move the test to l10n_sa_hr_contract_salary , because the module depends on l10n_sa_hr_payroll and hr_contract_salary **task** - 5361838 **related PR** : enterprise#98239
This update resolves a problem with the monthly payroll summary report, preventing errors when generating reports. The fix involved updating how the report template references company information, ensuring accurate data reporting for payroll summaries.
Original PR description
Step to Reproduce: - install l10n_ch_hr_payroll with demo - create a employee - create a payslip for it, move it to paid stage. - go to Reporting > Monthly summary and generate summary for same period/month Observation: - traceback for faulty template Fix: - After this commit [1] `t-call` is now parametric and cannot not accept its child variables. - to fix this, we pass set res_company for company variable [1] https://github.com/odoo/odoo/commit/eb6e88a25050fff2bd09317739dd51ba451450df opw-5243792 Forward-Port-Of: odoo/enterprise#100684
This update resolves a test failure in the payroll module (l10n_eg_hr_payroll) caused by incorrect calculations for employee leave balances in 2026. The fix incorporates a 'freeze_time' setting to ensure accurate balance projections, preventing test failures and guaranteeing correct leave tracking.
Original PR description
Before this commit, the test `test_get_annual_remaining_leaves_with_allocation` was checking the balance of an employee with an allocation for 2025. As no freeze_time was set, the test would fail in 2026 as the allocation would be invalid and the employee balance would fallback to 0. Same issue for the test `test_get_annual_remaining_leaves_after_leave_taken` The PR https://github.com/odoo/enterprise/pull/98223 was targetting the wrong test and thus, the error was not fixed. This commit merges all 3 tests in one using freeze_time runbot error 231559 Forward-Port-Of: odoo/enterprise#101458
This update resolves an issue where the Frontdesk kiosk URL wouldn't display the correct company logo when switching companies. The fix ensures the kiosk always accesses the correct company record, allowing the logo to load properly. This improves the user experience and visual consistency of the Frontdesk station.
Original PR description
When switching companies in a Frontdesk station and opening the kiosk URL, the company logo does not appear. **Steps to produce:** - Install the `frontdesk` module. - Ensure the database has at least…
When switching companies in a Frontdesk station and opening the kiosk URL, the company logo does not appear. **Steps to produce:** - Install the `frontdesk` module. - Ensure the database has at least two companies, each with a logo configured. - `Enable multi-company` access (user has access to all companies). - Open any Frontdesk station configuration and change the company to one different from the currently active company. - Copy the kiosk URL and open it in an incognito/private window. - The kiosk opens, but the company logo is missing. **Issue:** - Company logo not comes on frontdesk kiosk. **Root cause:** - When the kiosk URL is accessed, Odoo logs an `Access Denied by record rules`. - This happens because the selected company on the station is not included in the `Public User’s companies`. - As a result, the public user cannot read the company record, so the logo does not load. **Solution:** - Added an `onchange` on `company_id` to automatically include the selected company in the Public User’s `company_ids` if it is not already present. - This ensures the kiosk always has access to correct company record and logo. - Also added an XML-side fix to prevent an access error that occurs when a company is not activated and we attempt to select it in the company field. **Before:** <img width="500" height="500" alt="frontdesk_image_before" src="https://github.com/user-attachments/assets/b002ac6e-5271-4561-bf03-542a3feeefd1" /> **After:** <img width="500" height="500" alt="frondesk_image_after" src="https://github.com/user-attachments/assets/7b5bffe4-ccbf-48f5-ad9c-d5e6d2e7678e" /> **opw-5138980** Forward-Port-Of: odoo/enterprise#101534 Forward-Port-Of: odoo/enterprise#100300
This update addresses a potential issue where changes to product subscriptions weren't consistently flagged, leading to incorrect behavior. The change introduces a warning message when modifying subscription settings on products that have already been sold, ensuring data integrity and preventing unintended subscription changes. This improves the reliability of our subscription management system.
Original PR description
**Purpose:** When a product has already been sold, we cannot change the subscription field in the product form. Odoo was correctly raising an error when the user tried to do it at the product.template level, but no warning was raised when doing it at the product.product level. **Specification:** Raise a warning when trying to change the subscription field at the product.product level Task-5081772 See also: - https://github.com/odoo/odoo/pull/231606
This update allows users to optionally select a date range for fields, even when those fields are required. Previously, the date range option was automatically enforced, making it less flexible. This change simplifies the user experience and provides more control over date selection.
Original PR description
…equired Before this commit, the range was automatically enforced when the main field was required (either in the view or on the field itself). As a result, the button to switch to a date range was hidden and both start and end dates became mandatory. With this change, the range option remains available and optional. The range will only be required when the related field is required. If you really want to have the related field required, you should probably use the `always_range` option. task-5186221
This update enhances the automatic bank reconciliation process by prioritizing matching bank statements with transactions from the prior or equal date. Previously, the system would hesitate when multiple matches were found. This change ensures the most accurate reconciliation by selecting the closest matching transaction, minimizing discrepancies.
Original PR description
When having multiple candidates with the try_auto_reconcile we used to do nothing since there was a doubt. This commit will slightly change that by selecting the move line with the closer prior or equal date. task-5212876 Forward-Port-Of: odoo/enterprise#98269
This update simplifies the appointment calendar by showing only one period (day, week, month, quarter, or year) at a time, instead of three. This change reduces visual clutter and provides users with a clearer view of their appointments, improving usability.
Original PR description
This PR displays one period of the requested scale (day, week, month, quarter and year) in the calendar instead of three. It avoids displaying unwanted periods and overwhelming users with information. Task-5022091 Forward-Port-Of: odoo/enterprise#98796
This update resolves an issue where filters weren't consistently applied to reports included within annual reports. Specifically, the analytic group by filter was missing from the Profit & Loss (US) report when it was part of a larger annual report. This ensures all report filters work as expected regardless of report inclusion.
Original PR description
For reports that are part of an annual reports, the _compute_report_option_filter prevent the update of the filters when the report is added as a section of another report. In the case of the analytic group by for example, even when the options was enabled, the filter was not present on the profit and loss (us) since it is a section of the annual report. opw-5185296 Forward-Port-Of: odoo/enterprise#100064
This update ensures that test reports are now generated using the Odoo test server instead of the production server. This change prevents test data from impacting live operations and improves the reliability of our testing process. The system now recognizes test mode to direct report generation to the appropriate test environment.
Original PR description
Before this commit: - when generating test reports, the files were sent to prod aspone IAP server for processing which should not be the case After this commit: - added system parameter to recognize test mode to generate test return files - if test mode is enabled the files will be send to test iap server Upgrade PR: https://github.com/odoo/upgrade/pull/8465 Task-5015350
This update resolves a bug that prevented the generation of SAFT files when a journal entry lacked a partner but included a receivable account. The fix ensures that SAFT exports can now successfully process these entries, addressing a potential compliance issue for businesses using SAFT reporting. This change was backported from another issue.
Original PR description
If we try to export a SAF-T file when a line doesn't have any partner but having a receivable account, then a traceback is displayed.
(Backport of #98240)
How to reproduce?
1. Use a company with a localization using SAF-T (e.g. l10n_dk)
2. Create and post a journal entry with no partner, and with a line having a receivable account.
3. Go on the general ledger, and export in the SAF-T format
opw-5260937
Forward-Port-Of: odoo/enterprise#100960
Forward-Port-Of: odoo/enterprise#10029633 changes
Resolved issues and error corrections
This update resolves an issue where the server logger was experiencing excessive queue buildup. The change reverts a recent adjustment to the logging interval, restoring it to a more stable setting. This ensures smoother data transmission and prevents potential performance slowdowns in the IoT driver.
Original PR description
Based on this review of https://github.com/odoo/odoo/pull/238740 this pr reverts the flush interval to 0.5s introduced in https://github.com/odoo/odoo/pull/238648 to avoid queue saturation. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238912
This update resolves a technical issue that prevented the printed receipt tour from functioning correctly after installing the `l10n_se_pos` module for Swedish POS systems. The fix corrects a programming error, ensuring the receipt tour operates as intended and improving the user experience.
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 or `l10n_se_pos`. runbot-233248 Forward-Port-Of: odoo/enterprise#101016 Forward-Port-Of: odoo/enterprise#97355
This update resolves a minor visual glitch in the Email Marketing app where a section briefly appeared and disappeared when switching between email templates. The fix ensures the snippet menu is initially folded, providing a smoother and more consistent user experience when creating campaigns. This improves the overall usability of the Email Marketing functionality.
Original PR description
**Steps to reproduce:** - Go to the Email Marketing app - Create a new campaign and select the "Plain Text" Mail body for the template - Change between Mail body and Settings tabs - On Mail body tab, the right-hand building block section appears briefly (1 second) and then disappears **Issue:** Default state of the snippet menu has `snippetsMenuFolded` set to False before being inserted. **Fix:** As described in the comment just after the insert: ``` // Hide the snippetsMenu at first, other code will handle // if it should be shown or not. ``` So the fix ensure the menu is folded by default (not sure as to why the state was changed after inserting, so maybe it's expected). opw-5130191 Forward-Port-Of: odoo/odoo#238766
This update resolves an issue where saving changes to course descriptions in the website editor would trigger an error. The fix modifies a template to ensure the correct HTML attributes are included, preventing the error and allowing users to successfully save their changes. This ensures a stable and functional website experience.
Original PR description
Steps to reproduce: --------------------------- 1. Install the `website_slides` module. 2. Navigate to the Courses page on the website. 3. Open the Website Editor. 4. Modify the short description of…
Steps to reproduce:
---------------------------
1. Install the `website_slides` module.
2. Navigate to the Courses page on the website.
3. Open the Website Editor.
4. Modify the short description of any course.
5. Click the Save button.
Observation:
---------------------------
A traceback is raised:
```
File '/data/build/odoo/addons/website/models/ir_ui_view.py', line 514, in save_embedded_field
Model = self.env[el.get('data-oe-model')]
```
Issue:
---------------------------
In the template
https://github.com/odoo/odoo/blob/9333df06e15134df92efed765cf95db38c0dfede/addons/website_slides/views/website_slides_templates_homepage.xml#L375 the short description is rendered inside a `<small>` tag. When parsed by `lxml`, the `<small>` tag is converted to a self-closing element and the text becomes wrapped in a new `<p>` inside an additional `<div>`.
```
b'<div><small class='o_line_clamp' data-oe-xpath='/t[1]/a[1]/div[2]/div[1]/small[1]'
data-oe-model='slide.channel' data-oe-id='1' data-oe-field='description_short'
data-oe-type='html' data-oe-expression='channel.description_short'
data-oe-sanitize='allow_form' spellcheck='false'/><p>Learn the basics of gardening! th new</p></div>'
```
This wrapper `<div>` does not contain the required `data-oe-model` attribute, causing `save_embedded_field` to fail.
Solution:
---------------------------
Replace the `<small>` tag with a `<div>` tag, adding the `small` class to preserve styling. This prevents lxml from producing a self-closing tag and ensures the attributes remain on the correct element.
opw-5273079This update resolves a testing error related to employee leave balances in the EG payroll module. Previously, tests incorrectly checked allocations for 2025, causing failures when calculating balances for 2026. The fix incorporates a 'freeze_time' setting across all relevant tests to ensure accurate calculations and prevent incorrect balance resets.
Original PR description
Before this commit, the test `test_get_annual_remaining_leaves_with_allocation` was checking the balance of an employee with an allocation for 2025. As no freeze_time was set, the test would fail in 2026 as the allocation would be invalid and the employee balance would fallback to 0. Same issue for the test `test_get_annual_remaining_leaves_after_leave_taken` The PR https://github.com/odoo/enterprise/pull/98223 was targetting the wrong test and thus, the error was not fixed. This commit merges all 3 tests in one using freeze_time runbot error 231559 Forward-Port-Of: odoo/enterprise#101458
This update fixes an issue where the keyboard would unexpectedly appear on mobile date fields, causing a poor user experience. Now, the keyboard doesn't open automatically, and the cursor is hidden on small screens, resulting in a smoother and more intuitive date selection process.
Original PR description
Before this commit:
- The cursor was shown inside the date/datetime input field on mobile,
which triggered the keyboard unnecessarily and degraded the user
experience.
Steps to reproduce:
1. Add a form snippet.
2. Add a Date/Datetime field.
3. Click on the Date field.
- The virtual keyboard appears and the datepicker popover may be
clipped or partially hidden.
After this commit:
- The virtual keyboard is now prevented from opening on date/datetime
inputs, and the text cursor within these fields is also hidden.
task-[4745714](https://www.odoo.com/odoo/project/974/tasks/4745714)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#238771
Forward-Port-Of: odoo/odoo#212053This update fixes a minor issue on the Odoo portal where an empty filter menu appeared when no data was available on mobile devices. The change ensures a cleaner, more user-friendly experience by hiding the offcanvas filter section when there's no data to display. This improves usability and reduces visual clutter.
Original PR description
This PR prevents the offcanvas containing filters/sort buttons to be displayed in there is no data in the view, preventing to show an empty menu on screen. task-5072304 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enables administrators to modify the work entries associated with payslips that have been reversed or refunded. Previously, these entries were immutable. This change improves operational efficiency by allowing for corrections to be made directly within the system through a user-friendly interface.
Original PR description
-Originally, work entries for validated payslips cannot be modified. -This task allows for the modification of the work entries for the reverted payslips. -State of work entries can be modified manually through list view + form view on gear icons Task-id: #5380821
This update simplifies the appointment calendar by showing only one period (day, week, month, quarter, or year) at a time, instead of three. This change reduces visual clutter and provides users with a clearer view of their appointments. It addresses a previous issue with overwhelming information.
Original PR description
This PR displays one period of the requested scale (day, week, month, quarter and year) in the calendar instead of three. It avoids displaying unwanted periods and overwhelming users with information. Task-5022091 Forward-Port-Of: odoo/enterprise#98796
This update resolves an issue where a warning banner appeared during SEPA batch payments if a linked employee lacked an address. The change ensures the system correctly generates XML reports using the employee's address, even when the primary partner lacks address information. This improves the reliability of batch payment processing.
Original PR description
…oyee has an address Doing batch payment for sepa payment would generate a warning banner if the partner has no address ( city and country ) However in reality ( already working ) the xml report will be generated with the linked employee address in the case of absence of the partner address thus it should not show a warning. The change removes the warning in this case. task: 5266346 Forward-Port-Of: odoo/enterprise#99928
This update resolves an issue where newly created documents in the l10n_uy_edi module weren't correctly calculating certain fields. The fix ensures that these fields are properly assigned when a new document record is first created, preventing calculation errors. This improves the accuracy of edi document generation.
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 Forward-Port-Of: odoo/enterprise#101060
This update resolves an issue where opening GIF pickers within knowledge article comments would cause Odoo to crash. The fix adjusts how the GIF picker identifies action placement, ensuring it correctly recognizes buttons within 'extra actions' like those found in standard chat interfaces. This improves stability and usability for knowledge article commenting.
Original PR description
Before this commit, opening gif picker in a comment of a knowledge article would lead to crash. This happens because composer uses chatter visual, and pickers in composer picks either the quick or more node element as anchor of picker, depending on whether the action is in the quick or more action. In the case of knowledge article, the buttons are placed in extra actions like in chatter. However the picker placement was not taking into account this place, thus it fails to find action placement. This commit fixes the issue by adding support of extra actions as anchor for composer picker. Task-5163888
This update improves the time off dashboard by displaying the remaining unspent amount of overtime hours instead of the total overtime. This provides a clearer picture of an employee's available time off and avoids confusion regarding already used hours.
Original PR description
Instead of showing total overtime on the timeoff dashboard, show the unspent amount. Task-5261777
This update resolves a technical issue where the Chatter widget in the bank reconciliation module would display an error if a statement line wasn't selected when opening the chat. Making the 'statementLine' property optional eliminates this error and ensures the Chatter widget functions correctly.
Original PR description
The aim of this commit is putting the bank reco widget chatter's props "statementLine" as optional. Since we saved the last state of chatter (open/close), it might happen that we are opening the chatter without a statement line selected. This leads to an error in debug where the props statementLine of our custom chatter is not filled and leads to a traceback. By putting the props as optional, we are removing the error. no task id
This update simplifies the display of payment references in the bank reconciliation view. Previously, excessively long payment references were automatically expanded, now users must manually unfold the line to view the complete reference. This change improves the user experience and reduces potential visual clutter.
Original PR description
This commit removes the expand text feature available on payment reference field in the bank reconciliation. Before this commit, a payment reference too long to be fully displayed in the bank reconciliation view could be expanded to have the full payment ref. Now, the user has to unfold the line to get the full payment ref. no task id
This update corrects a technical issue preventing users from successfully revoking trusted devices through the security settings. The problem stemmed from a typo in the system's dynamic content, which blocked the removal of trusted devices. This ensures users can properly manage their 2FA security.
Original PR description
After public widgets have been rewritten as Interactions [1], there were 2 typos in `dynamicContent` that led to the wrong behavior. Because of that, we couldn't revoke a trusted device, or all of them. Steps to see the issue, - Turn the 2FA on - Add a trusted device, for example, by checking `Don't ask again on this device` when prompted to enter the authentication code while logging in. - Go to /my/security - Try to revoke a trusted device, either just by clicking on the trash icon button, or the 'Revoke all' button. => Nothing happens. [1]: https://github.com/odoo/odoo/commit/22e777c046521f3f89b62caa5876680beb7f5aba Forward-Port-Of: odoo/odoo#238830
This update ensures that Indian payroll localization settings are only displayed for companies located in India. Previously, all companies could see these settings, which has now been corrected to improve accuracy and compliance for Indian payroll operations. This change was made to align with local regulations.
Original PR description
Before: - Indian payroll localization setting was visible to all company. After: - Indian payroll localization settings will be visible to only Indian company. Steps to reproduce: - Install l10n_in_hr_payroll > Go to non Indian company > Payroll setting visible to all company. Task: 5383944
This update simplifies the creation of sign templates by automatically assigning them to the standard 'Sign' folder. Previously, users had to manually select the folder for each new template, which is now handled automatically. This streamlines the process and reduces the potential for errors.
Original PR description
Assign a default document folder to sign templates so that each newly created template automatically points to the default "Sign" folder. task-5023107 Forward-Port-Of: odoo/enterprise#92624
This update fixes an issue where product images on the website were incorrectly defaulting to the first product variant's image instead of the product's main image. The change ensures that the correct product image is displayed by default, improving the visual presentation of products on the website and enhancing the customer experience. This was a simple fix to a template logic error.
Original PR description
Steps to reproduce: =================== 1- Add a product & product variants 2- Add different photos for product & product variants 3- visit website shop -> observe that the product image is set to…
Steps to reproduce: =================== 1- Add a product & product variants 2- Add different photos for product & product variants 3- visit website shop -> observe that the product image is set to the image of the first product variant Cause: ====== The `product_tile` template defined a variable `variant` that defaulted to the first available variant if no specific variant was selected. The condition https://github.com/odoo/odoo/blob/bf83a4efefedae61e06a6b29ad82e647fd673ce2/addons/website_sale/views/product_tile_templates.xml#L62 subsequently used this default variant's image, bypassing the intended fallback to the product template's image. Solution: ========= Update the condition to check `product_variant` instead of `variant`. `product_variant` is only set when a specific variant is explicitly selected. This ensures the product template image is displayed by default, and the variant image is only shown when specifically requested. opw-5362624 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug that prevented the resume section from generating correctly when an employee lacked a version record. The change adds a safeguard to prevent errors during resume generation, ensuring all employees' resumes can be created smoothly. This improves the reliability of the HR resume feature.
Original PR description
Due to some issues with migration, some employee might not have a version, which would result in breaking the code of generating the resume lines. This commit adds an extra level of protection for those case. Task-5336589 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a stability issue in Odoo's mail functionality, specifically related to how it checks for changes within web pages. By adding short pauses during these checks, the system is now more reliable in detecting updates, particularly those not immediately reflected in the DOM. This prevents test failures and ensures consistent performance.
Original PR description
Backport of https://github.com/odoo/odoo/pull/234508 Before this commit, contains had 3 seconds timeout to make a final runOnce. Some tests could be longer than necessary due to: - change not observed by DOM mutation, e.g. `:focus` in selector - some selectors are sometimes not properly observed by mutation somehow, like discuss badges. This commit adds 100ms ticks to re-check selector, and the 3 seconds timeout now happens with calling the ticks 30 times.
This update fixes a problem where users without specific permissions were unable to view overtime attendance records. The change adjusts security rights to grant access, ensuring all users can properly access and manage overtime attendance data. This improves usability and prevents data access restrictions.
Original PR description
## Issue - Getting access error when the user having no special access rights tries to access the attendance record. ## Steps to reproduce 1. Log in as user (a user with no special access rights) 2. Open the Attendances app, and click on a record with overtime attendance 3. You get an Access error wizard, upon closing will show the attendance wizard of that record, without extra hours captured on it. ## Solution - Fixed security rights to access attendance records when you do not have any special access rights. task-5366484 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where emojis at the end of HTML emails weren't being properly formatted. The fix adjusts the code to correctly identify and transform emojis within HTML content, ensuring they display correctly for all users. This improves the overall email experience and prevents visual errors.
Original PR description
Currently, emojis are not transformed when they are at the end of the HTML composer content. This is due to the regex used in the `formatEmojisInHtml` function, which does not account for HTML boundaries properly. task-5357675 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where users without the necessary permissions to upload documents within a project couldn't successfully upload. The fix checks user rights before allowing uploads, preventing errors and ensuring proper functionality for all users with the correct access levels. This improves the reliability of document sharing within projects.
Original PR description
Step To Reproduce: - install Project - login with admin and open any Project settings, say Project 1. - create a upload document activity for 'marc demo' - ensure marc demo has 'User' access for…
Step To Reproduce: - install Project - login with admin and open any Project settings, say Project 1. - create a upload document activity for 'marc demo' - ensure marc demo has 'User' access for project - login with marc demo - open same project (kanban card -> view) - upload a document for the created activity Observation: - Traceback ``` TypeError: Cannot destructure property 'id' of '(intermediate value)' as it is undefined at Activity.onFileUploaded ``` Cause: - upload request to `/mail/attachment/upload` , calls `mail_attachment_upload` which then tries to access thread for 'write' mode, 'project.project ' model . - as marc demo does not have write access to this model, no thread is returned - so `NotFound()` is raised https://github.com/odoo/odoo/blob/322c6d0468bf79e9d29e1375c49aa13d4a7b7a67/addons/mail/controllers/attachment.py#L48-L55 Fix: - we check if selected user has appropriate rights or not for upload activity opw-5160132 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238533 Forward-Port-Of: odoo/odoo#234936
This update resolves an issue preventing users from creating quotation templates using products set up in the parent company of a multi-company setup. Previously, this was allowed in standard sales orders, but not quotation templates. The change ensures consistency and simplifies the process for users managing products across multiple branches.
Original PR description
### Issue In this issue, having multi-company setup, we cannot make a quotation template with a product from the parent company. While this is allowed in sale order. #### To reproduce: 1- Create a product and in the product form, set the the company field to the parent company. 2- Create a quotation template and set the company field to the child branch. 3- In the quotation template, add a line and use the created product from the parent company. 4- Saving the form will raise an error. Talked with PO about the issue and he agreed that the quotation template should allow product from the parent company. This is already the flow in the quotation itself. opw-5177590 Forward-Port-Of: odoo/odoo#237732
This update resolves an issue where notifications triggered by the Data Cleaning app would incorrectly open a chat window and fail to send messages. The fix ensures notifications are correctly routed to the user's discuss inbox, improving the user experience when identifying duplicate records.
Original PR description
**Steps to reproduce:** - Install `Data Cleaning` app - Activate notification in Odoo in the admin user profile - Create a few duplicate contacts - Go the the "Data Merge: Find Duplicate Records"…
**Steps to reproduce:**
- Install `Data Cleaning` app
- Activate notification in Odoo in the admin user profile
- Create a few duplicate contacts
- Go the the "Data Merge: Find Duplicate Records" scheduled action
- Run the action manually
- You should see new notifications telling you that they found potential duplicates
- In the top right MessaginMenu click on the notification, it opens a chatter
- Try to send a message in the chat window
- Traceback : `AttributeError: 'data_merge.model' object has no attribute '_get_thread_with_access'`
**Issue:**
The model doesn't inherit `mail.thread` so it uses `self.env['mail.thread']` directly to send notification:
```
self.env['mail.thread'].sudo().message_notify(
...
model=self._name,
notify_author=True,
partner_ids=partner_ids,
res_id=self.id,
)
```
But when sending the information with the `model` and `res_id` parameters the newly created `Store` uses `self.add("mail.thread", {"id": data.id, "model": data._name, **values})` and the message is assigned to a non-existing thread in the frontend.
**Fix:**
Explicitly check if the message is a `user_notification` and redirect the user to the discuss inbox if it's the case by reapplyng part of https://github.com/odoo/odoo/commit/b3be992c57dc5e412a127d05fc50b059814523aa
opw-5101510
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#238563
Forward-Port-Of: odoo/odoo#234737This update fixes an issue where toggling a block element on product pages caused a page reload. By explicitly setting the button type to 'button', the change now seamlessly updates the product page without requiring a new load, resulting in a smoother user experience. This resolves a minor usability concern.
Original PR description
**Context** If you add a toggle block element in the ecommerce description of a product in your backend, it will be rendered inside a `<form />` element on your website's product page. **Before this commit** The button controlling the toggling of this element does not have an explicit "type" attribute set. This has the effect that these buttons will act as "submit" buttons for the form element on the website, causing a page reload. https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/button#type **After this commit** Explicitly set the "type" attribute to be "button" so that toggling a block doesn't reload the user's website. opw-5369171 Forward-Port-Of: odoo/odoo#238892
This update corrects an issue where shipping labels for FedEx deliveries weren't including the company name entered during checkout. The fix ensures that the correct company name is used on the shipping label, improving order accuracy and customer experience. This was caused by a misunderstanding of how contact information is handled in the ecommerce system.
Original PR description
Steps to reproduce: - install ecommerce (i.e. website_sale) and delivery_fedex_rest - setup demo payment + fedex delivery method (including publishing it) - open the db while not logged in (i.e. in private browsing) - add something in the ecommerce page to cart + checkout > checkout - type in random contact info INCLUDING "Company Name" - continue checkout > select FEDEX as delivery method > pay now - go to Sales App > Sale orders > open the SO generated by ecommerce - open delivery + validate Expected result: - Shipping label with the name + company name from the ecommerce form Actual result: - company name is missing Issue is due to a company not being generated by ecommerce. Instead a string field is filled in (which is not visible when creating a contact directly via the contacts app). Code has been adapted to consider this use case. opw-5119089 Forward-Port-Of: odoo/enterprise#101376
A recent test failure related to task scheduling time zones has been fixed. The issue stemmed from incorrectly calculating task durations based on resource time zones instead of UTC. This change ensures accurate task planning and scheduling across different time zones.
Original PR description
The test `test_plan_task_in_calendar` failed with a one-hour difference in `planned_date_begin`. The error occurred because the work intervals were computed using the resource's timezone (`Europe/Brussels`) instead of `UTC`, leading to a shifted planned date. Setting the resource timezone to `UTC` ensures consistent interval computation and resolves the test failure. [RB-227059](https://runbot.odoo.com/odoo/error/227059) Forward-Port-Of: odoo/enterprise#100580
This update resolves a minor formatting issue in Odoo's email composer. Specifically, it ensures a space is automatically added after mentions within email messages, improving readability and preventing potential display problems. This change ensures emails are formatted correctly for recipients.
Original PR description
This commit fixes an issue where there was no space inserted after a mention in the HTML composer. task-5354233 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures that the terms 'Night' and 'Nights' are properly translatable within the Odoo Sale Renting module. The team took a pragmatic approach, delaying full translation for these specific terms to monitor for potential inconsistencies with website language settings. This ensures accurate localization for users in different languages.
Original PR description
Not sure why the existing `SINGULAR_LABELS` is lazy translated whereas the not single units (i.e. `self._fields['unit']._description_selection(self.env))[self.unit]`) is not, so we assume that in this case it's fine to not lazy translate both "Night" and "Nights" and see if a bug pops up later on (maybe via mismatching website language?) opw-5392109
This update ensures that all B2C invoices in the Saudi Arabia localization (l10n_sa) module now correctly display 'Simplified Tax Invoice' as the invoice title. Previously, this requirement was only applied to phase 2 ZATCA invoices. This change aligns with regulatory requirements and improves invoice consistency.
Original PR description
For B2C invoices, the invoice's title must be "Simplified Tax Invoice". This was only applied to phase 2 ZATCA in "l10n_sa_edi". This change makes sure to apply the same requirement for phase 1 invoices. Task-5322118 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#237505
This update fixes an issue where Vimeo video settings (loop and hide controls) weren't being applied after saving a website page. The problem stemmed from unnecessary escaping of URL parameters, which was preventing Vimeo from correctly interpreting the video settings. This change removes the escaping, ensuring settings are applied as intended.
Original PR description
When setting options like "Loop" or "Hide Player Controls" on an embedded Vimeo video, these settings were not applied on the final page after saving. Steps to reproduce: =================== - Go to…
When setting options like "Loop" or "Hide Player Controls" on an embedded Vimeo video, these settings were not applied on the final page after saving. Steps to reproduce: =================== - Go to the Website editor. - Drag and drop a "Media List" or similar snippet. - Double-click the video placeholder to open the media dialog. - In the "Video" tab, paste a Vimeo URL. - Enable "Loop" and/or "Hide Player Controls". - Save the page. -> Observe that the video does not loop and the controls are still visible. Cause: ====== When rebuilding the iframe, `generateVideoIframe` was processing the video's `src` URL through using `escape()` function. This function is designed to prevent XSS by converting characters like `&` into their HTML entity equivalent, `&`. However, Vimeo video URLs use the `&` character to separate query parameters (e.g., `?loop=1&controls=0`). The `escape()` function was converting this URL to `?loop=1&controls=0`. but `setAttribute` already handles URL values safely. so Vimeo player will receive url containing &amp;. This broke the URL's structure. The Vimeo player received a malformed URL, could not parse the parameters correctly, and therefore ignored the options for looping and controls. escape was used before cause The original code was adding the iframe using `.html(...)` see commit: https://github.com/odoo-dev/odoo/commit/8749410b1033ddec1207ce1db42d1889a0d2ea33 side note 1: before saving the vimeo video works because we render it without the double escaping of & (as will be the case for saved video if this PR is applied) side note 2: the issue of double escaping also apply to youtube, but it seems to be ok with superfluous & in URL while in vimeo: https://player.vimeo.com/video/1138854841?autoplay=1&muted=1&autopause=0&controls=0&loop=1 has the video that doesn't loop, is not muted (so doesn't auto play in an iframe on most browser) and show controls https://player.vimeo.com/video/1138854841?autoplay=1&muted=1&autopause=0&controls=0&loop=1: all option works Solution: ========= The unnecessary `escape()` call has been removed. since the video should be only added using media dialog and the `setAttribute(...)` will escape it by default opw-5225261 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238040 Forward-Port-Of: odoo/odoo#236677
13 changes
Resolved issues and error corrections
This update fixes a bug that prevented users with multiple company employees from correctly creating helpdesk tickets. The change ensures that resources are filtered by company to avoid incorrect working interval calculations, preventing errors and ensuring accurate ticket creation for all users.
Original PR description
after https://github.com/odoo/enterprise/commit/6268dbaf07d742b5371a08dbf9f2dbb5fc0f8ce5 when computing working intervals for users, we filter resources by company to avoid concidering resources from employees in other companies different than the helpdesk team one. the method `_get_working_user_interval` is overriden in `helpdesk_holidays` and was not updated to follow same logic, which lead ro a traceback when a user with multiple employees in different companies was assigned is part of a helpdesk team and you try to create a ticket for that team. this commit fix the issue and add a test case covering this scenario. opw-5223717
This update resolves an issue where the server logger was experiencing excessive logging activity, leading to potential performance slowdowns. The change reverts a recent adjustment to the logging interval, restoring it to a more stable setting to ensure reliable and efficient logging of system events. This improves overall system stability and responsiveness.
Original PR description
Based on this review of https://github.com/odoo/odoo/pull/238740 this pr reverts the flush interval to 0.5s introduced in https://github.com/odoo/odoo/pull/238648 to avoid queue saturation. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238912
This update resolves an issue where removing a video URL in the website editor would create a broken link, resulting in a 404 error. The fix ensures that the 'Add' button is disabled when a video URL is empty, preventing the creation of invalid links and improving the user experience. This ensures videos display correctly.
Original PR description
*=website **Steps to reproduce:** 1. Drop a video 2. Reopen the media dialog 3. Remove the URL 4. Confirm **Issue:** When the URL was removed and confirmed, an iframe without a valid source was saved, leading to a 404 error. **Fix:** When the video URL is cleared, VideoSelector component calls selectMedia with an empty object. MediaDialog did not previously handle this case, so the media selection was not cleared. Now we Update MediaDialog to treat an empty object as a clear-selection signal and disable the Add button accordingly. task-5190485 Forward-Port-Of: odoo/odoo#234085
This update fixes an issue where new employees were incorrectly generating timesheets due to a misconfiguration with time off entries. The change ensures that only global time offs are considered, resolving this problem and improving timesheet accuracy for all employees.
Original PR description
**Steps to reproduce** 1. Have a future `resource.calendar.leaves` without a `calendar_id` but with a `resource_id`. To achieve this, you can for example install Payroll and Attendance, create a contract with the work entry source being attendances and with no working schedule. Then, create a time off in hours for that employee and validate it. In that case, the `hr.leave` has no `resource_calendar_id` as computed in `_compute_resource_calendar_id`. This leads to a `resource.calendar.leaves` record without a `calendar_id` once the time off is validated. 2. Create a new employee. A timesheet corresponding to the previously created time off is created. **Change** Make sure only global time offs are considered. opw-5248992
This update fixes an issue where outdated sub-channels were incorrectly unpinned, leading to unnecessary email notifications. The change now prevents unpinning sub-channels if there are still unread messages, ensuring users can easily access important threads. This improves the overall email experience.
Original PR description
Before this commit, outdated sub-channels were unpinned each time the vacuum ran. It occurs because a condition on sub-channel being pinned is missing. In practice, it's not a big deal funtionnaly but leads to useless notifications being sent. While at it, this PR prevents unpins when there are still unread messages in the sub-channel: the pin feature is used to see unread messages on otherwise hidden threads.
This update resolves a technical error within the Luxembourg payroll module (l10n_lu_hr_payroll) where a duplicate method was present. This fix ensures the payroll calculations are accurate and reliable, preventing potential discrepancies in employee payments.
Original PR description
There was a duplicate method in hr_payslip.py of Luxembourg Loca. Runbot error: 234334 Task: 5391399
This update resolves an issue preventing errors when sending vendor bills to eTIMS. The problem was triggered by removing product names or descriptions from the bill. This fix ensures smooth eTIMS integration for Kenyan businesses using the l10n_ke_edi_oscu module.
Original PR description
Backport of commit https://github.com/odoo/enterprise/pull/77750/commits/ed19d1db79d8ea3a228eee15b02dd8668123dd3c Because the issue is also reproducible in 18.0 using the same steps (removing the product name and the product description). sentry-7027319462
This update resolves an issue where a warning banner appeared during SEPA batch payments if a linked employee lacked an address. The change ensures the system correctly generates XML reports using the employee's address, even when the primary partner's address is missing. This improves the reliability of batch payment processing.
Original PR description
…oyee has an address Doing batch payment for sepa payment would generate a warning banner if the partner has no address ( city and country ) However in reality ( already working ) the xml report will be generated with the linked employee address in the case of absence of the partner address thus it should not show a warning. The change removes the warning in this case. task: 5266346 Forward-Port-Of: odoo/enterprise#99928
This update prevents a confusing traceback error that appeared when users tried to access the account.code.mapping view through Studio. The fix replaces a technical error with a clear message, guiding users to properly filter their searches and improving the overall user experience.
Original PR description
**Steps to reproduce:** * Install **Accounting** and ensure Studio is available. * Using **Studio**, create a new menu item pointing to the model *account.code.mapping*. * Save the menu and click it to open the corresponding view. **Observed behavior:** * Opening the Studio-created menu triggers a full traceback. **Cause:** * The model *account.code.mapping* overrides `_search()` and raises `NotImplementedError` when no `account_ids` can be extracted from the domain, which is the case when opening the view without filters. * The missing `_search` logic for empty domains was never implemented, and the resulting exception propagates to the UI as a traceback. **Fix:** * Replace the `NotImplementedError` with a user-friendly `UserError` explaining that the view cannot be opened without specifying relevant filters, preventing the traceback and improving clarity. opw-5183909
This update resolves an issue that previously blocked users from creating new Amazon accounts within a newly created company. The fix ensures that the system correctly handles the absence of warehouses and stock locations when a company is first set up, preventing a technical error.
Original PR description
Currently, an error occurs when user tries to create a new amazon account on a new company. Steps to replicate: - Install `sale_amazon`. - Create a new company and switch to it. - Go to Settings >…
Currently, an error occurs when user tries to create a new amazon account on a new company.
Steps to replicate:
- Install `sale_amazon`.
- Create a new company and switch to it.
- Go to Settings > Amazon account > Try to Create a new account.
Error:
```
File /home/odoo/odoo18/enterprise/sale_amazon/models/amazon_account.py, line 214, in create
'location_id': parent_location_data[0]['view_location_id'][0],
IndexError: list index out of range
```
Cause:
- Whenever a new company is created, it doesnt have any warehouses [1] and amazon stock locations [2].
- This causes the `parent_location_data` to be an empty list and causes error at line [3].
Solution:
- Assigning the `location_id` if the `parent_location_data` exists.
[1]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L206-L210
[2]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L201-L204
[3]: https://github.com/odoo/enterprise/blob/23f085bdba333807a25a2d41214b25f474c7edf8/sale_amazon/models/amazon_account.py#L214
sentry-7086464738This update corrects an issue where shipping labels for FedEx deliveries weren't including the company name entered during checkout. The fix ensures that the correct company name is used on shipping labels, improving order accuracy and customer experience. This was caused by a misunderstanding of how contact information is handled in the ecommerce system.
Original PR description
Steps to reproduce: - install ecommerce (i.e. website_sale) and delivery_fedex_rest - setup demo payment + fedex delivery method (including publishing it) - open the db while not logged in (i.e. in private browsing) - add something in the ecommerce page to cart + checkout > checkout - type in random contact info INCLUDING "Company Name" - continue checkout > select FEDEX as delivery method > pay now - go to Sales App > Sale orders > open the SO generated by ecommerce - open delivery + validate Expected result: - Shipping label with the name + company name from the ecommerce form Actual result: - company name is missing Issue is due to a company not being generated by ecommerce. Instead a string field is filled in (which is not visible when creating a contact directly via the contacts app). Code has been adapted to consider this use case. opw-5119089 Forward-Port-Of: odoo/enterprise#101376
This update fixes an issue where website form fields were displaying a placeholder text of 'null' instead of an empty field. This change ensures that all form fields, regardless of their type, appear blank when initially presented to users. This improves the user experience and consistency across the website.
Original PR description
Steps to see the issue: - Open website and start editing - Drop a form - Add a new field, or click on an optional field, the type of which we can modify - Set the field type to 'Selection' or 'Radio Buttons' (or any other that does not have placeholders) - Set the field type back to 'Text' => Field's placeholder is `'null'`, but it should just be empty. task-5383835
This update fixes an issue where downloading invoices as PDFs in version 18.0 resulted in a proforma document instead of the actual invoice. The fix ensures that the correct invoice PDF is generated when downloading via the 'Download' option, resolving a discrepancy in report delivery.
Original PR description
## Issue: In 18.0, downloading an invoice via the Download option returns a proforma PDF instead of the proper invoice The PDF (without payment) works as expected ## Cause: The standard report is hidden and therefore not listed in the Print options An equivalent report is added in the Download options by `get_extra_print_items()` But this action relies on `_get_invoice_legal_documents()` which only returns the invoice if it was already generated using `Send` The `Print` button works correctly because it uses the proper report directly ## Steps to reproduce: - Open an Invoice - Use the gear to Download > PDF - The file is a proforma opw-5111272
8 changes
Resolved issues and error corrections
This change prevents distracting audio notifications during local testing of Odoo. Previously, unexpected beeps and ringtones could interrupt the testing process. This improvement ensures a smoother and more reliable testing experience.
Original PR description
When running tests locally, it's really annoying (and sometimes really jarring / surprising) to hear random beeps and boops from your machine, especially when it's an old timey ringtone from voip. Make it stop. Forward-Port-Of: odoo/odoo#238882
This update resolves an issue preventing users from renaming the "Help" menu item in the Helpdesk module. Previously, a system error blocked renaming, even without attempting to modify the URL. Now, users can freely change the menu item's name, improving usability and flexibility.
Original PR description
**Issue** It was not possible to rename the "Help" menu item, an error appeared with the message: "This URL is reserved for the helpdesk teams with 'website form' feature enabled.", even if the user was not trying to edit the URL. **Change** Allow the user to edit the menu item's name. opw-5375334
This update fixes a technical error that was causing tracebacks when sending snail mail for documents other than the standard followup report. The issue stemmed from a misconfiguration in the code, and this change corrects that to ensure reliable snail mail functionality. This resolves a potential disruption to our mail delivery process.
Original PR description
Currently there is a traceback when sending snailmail for anything that is not the followup report. The call to the super function has the wrong name and misses an argument The issue was introduced in this commit 08ec299cf2b06cd900f84be0a95b5917abe7d453 . task-None
This change reverts a recent update to Odoo's portal access functionality. The original fix, intended for newer versions, wasn't stable for Odoo 17. This ensures continued stability and functionality for existing Odoo 17 users regarding portal access management.
Original PR description
**Issue:** Active check is needed when granting access to a previous portal user which was archived. But changing the template to fix this is not stable for previous versions. **Fix:** Reverted https://github.com/odoo/odoo/pull/233757 in 17.0 (Fixed with https://github.com/odoo/odoo/pull/236462 in 18.0+) -> reverted as well for now https://github.com/odoo/odoo/pull/239477 opw-4760550
This update resolves an issue in the l10n_se_sie_import module related to how SHA512 hashes are generated. The fix ensures that SHA512 hashing is performed correctly, improving the reliability of data import processes for Swedish SIE files. This prevents potential errors during data synchronization.
This update corrects a formatting error in the invoice report for KE (Kenya) invoices. Previously, the total and taxable amounts lacked proper currency formatting (commas). The fix removes a duplicate XPath and applies the correct formatting options, ensuring invoices display accurate price values.
Original PR description
Steps to reproduce: 1. install `l10n_ke` 2. Switch to KE Company 3. Create a product with all KRA eTIMS details set on the Accounting page. 4. Create an invoice to KE Company with that product and set unitprice > 10000 5. Confirm the invoice and send it. Now, see the invoice report Issue: 1. xpath for `td_subtotal` was duplicated 2. The total amount and taxable amount were not formatted as prices (no commas). Before: <img width="771" height="397" alt="image" src="https://github.com/user-attachments/assets/492fe911-18d6-4e01-a16d-d7450c17373f" /> After: <img width="766" height="389" alt="image" src="https://github.com/user-attachments/assets/bbe5d4e2-b337-445c-833a-06492a8c827d" /> Solution: Updated the invoice report to: - Remove the duplicated `td_subtotal` xpath. - Properly format the total and taxable amounts with `t-options`. opw-5341578
This update resolves a potential error that caused invoices to fail during confirmation when specific currency and pricing settings were used. The fix prevents a division-by-zero error, ensuring invoices can be processed correctly under these circumstances. This improves the reliability of the invoicing process.
Original PR description
Steps to reproduce:
--------------------
1. Install l10n_cl and switch to the CL company
2. Create a new invoice:
- Change the currency to a value different from the company currency
(e.g., from CLP to USD)
- Add an invoice line with a price value of 0
- Remove the default tax value
3. Try to confirm the invoice
Issue:
------
A traceback occurs:
`ZeroDivisionError: float division by zero`
Cause:
------
Since the price value is 0, the `amount_total` of the move becomes 0.
When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError.
Solution:
---------
Add a conditional check before division to ensure the `amount_total` is non-zero
Related enterprise PR: https://github.com/odoo/enterprise/pull/99518
opw-5247058
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes a potential error that could prevent invoices from being confirmed when specific currency and pricing settings are used. The fix adds a check to avoid division by zero, ensuring invoices can be processed correctly. This improves invoice processing reliability and prevents disruptions to financial workflows.
Original PR description
Steps to reproduce: -------------------- 1. Install l10n_cl and switch to the CL company 2. Create a new invoice: - Change the currency to a value different from the company currency (e.g., from CLP to USD) - Add an invoice line with a price value of 0 - Remove the default tax value 3. Try to confirm the invoice Issue: ------ A traceback occurs: `ZeroDivisionError: float division by zero` Cause: ------ Since the price value is 0, the `amount_total` of the move becomes 0. When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError. Solution: --------- Add a conditional check before division to ensure the `amount_total` is non-zero Related community PR: https://github.com/odoo/odoo/pull/235252 opw-5247058