Daily updates from Odoo
Saturday, June 13, 2026
47 changes
6 changes
Resolved issues and error corrections
This update fixes an issue where users couldn't save a 'Company Name' entered in their account settings. The fix ensures that when a new company name is added, a new company record is automatically created, aligning with expected user behavior. This improves data accuracy and simplifies the process for users managing their company information.
Original PR description
### Steps to reproduce: - Download "Website" app - In the portal's "/my/account" address form, enter a "Company Name" - Click "Save" to submit the form - Reload the page and check if the company name…
### Steps to reproduce: - Download "Website" app - In the portal's "/my/account" address form, enter a "Company Name" - Click "Save" to submit the form - Reload the page and check if the company name was saved > Company name isn't updated ### Cause of Issue: `_create_or_update_address()` method was passing the 'parent_name' field directly through the main `partner_sudo.write(address_values)` call. https://github.com/odoo/odoo/blob/391cec39b6048ad4f49015fd67888895dc176ee5/addons/portal/controllers/portal.py#L564-L571 Since `parent_name` is a readonly related field (related to `parent_id.name`), the write operation would fail silently to update it, creating orphaned changelog entries instead of properly updating the parent company entity. ### Fix: Since the update of contact forms in v19.1, we can't just edit the "Company Employer" field without assigning an actual partner (existing or create new). The solution here was to add a case to account for when the portal user is an individual adding a "Company Name" for the first time. opw-6115158 Forward-Port-Of: odoo/odoo#269521 Forward-Port-Of: odoo/odoo#264356
This update resolves an issue where report customizations made in Odoo's Studio were incorrectly applied to other reports, leading to unexpected behavior and potential rendering problems. The fix ensures that report edits are now saved within the specific report document, preventing these issues and improving Studio's reliability.
Original PR description
Report edits could be applied on shared layouts such as web.basic_layout instead of the report-specific document view. This caused Studio customization diffs to affect unrelated reports and could…
Report edits could be applied on shared layouts such as web.basic_layout instead of the report-specific document view. This caused Studio customization diffs to affect unrelated reports and could also lead to rendering errors when report-specific fields were evaluated in a different report context. The issue occurred because content was inserted directly into the shared layout article section instead of the nested report document view. Steps to reproduce: 1. Open Studio on any module and create or edit a report. 2. Select any of the External, Minimal, or Blank report types. 3. Add content to the report body and save the report. 4. Open another module and create a report using the same report type. 5. Observe that the previous customization is already present. Before this fix, the generated diff could inherit from web.basic_layout. After this fix, body edits are kept inside the report-specific document view. Related Ticket: opw-6245485 Forward-Port-Of: odoo/enterprise#120357 Forward-Port-Of: odoo/enterprise#118880
This update resolves an issue where the 'Show Sub-Tasks' option was incorrectly displayed in the mobile My Tasks menu. The fix ensures that this button is hidden in project and project_todo views, aligning with the functionality of To-Do items which do not support subtasks. This improves the user experience on mobile devices.
Original PR description
Steps to reproduce: - Install project - Open the My Tasks menu on mobile view Issue: The "Show Sub-Tasks" option was visible in the My Tasks menu on mobile view. Cause: The condition only applied `showTaskOptions` to the desktop part of the expression, so the dropdown was still rendered on mobile when there were no embedded actions. Apply `showTaskOptions` to the whole condition to properly hide the dropdown in the My Tasks mobile view. Fix-2: Steps to reproduce: - Install project_todo Issue: The Show Sub-Tasks button was visible in project_todo views even though To-do items do not support subtasks. Fix: Ensure that the Show Sub-Tasks button is hidden in project_todo views. task-6026239 Forward-Port-Of: odoo/odoo#269027 Forward-Port-Of: odoo/odoo#255283
This update fixes a visual issue where users without HR access rights saw a placeholder image in the timesheet grid view. The fix ensures that all users, regardless of their permissions, correctly display employee avatars within the grid, improving the user experience and visual consistency.
Original PR description
Steps to reproduce: ------------------- - Install the hr_timesheet module - Create a user without HR access rights - Create a timesheet - Log in with the above user - Open the kanban view Issue: ------- Instead of showing the employee's avatar, a placeholder image is displayed. Reason: ---------- The user does not have access to the hr.employee model. Fix: ----- In this commit, if the user does not have access to hr.employee,we fetch the image from the hr.employee.public model. task: 4461272 Forward-Port-Of: odoo/enterprise#120165 Forward-Port-Of: odoo/enterprise#83574
This update fixes an issue where multi-line text in Point of Sale receipts (like headers and footers) was being combined into a single line. The fix restores the original formatting, ensuring that line breaks are preserved on the printed receipt, improving the presentation of order details.
Original PR description
Steps to reproduce ------------------ 1. Open PoS settings, set a multi-line receipt header and footer. 2. Open PoS, pay an order and print the receipt. -> The lines of the header and footer end up on the same line, instead of keeping the line breaks. Example when setting footer to ``` ------ Footer ------ ``` It will show up on the receipt as ``` ------Footer------ ``` Why it's happening ------------------ The refactor commit aeaca097ae39 mistakenly dropped the `style="white-space:pre-line"` for the header and footer templates. The fix ------- Add back `style="white-space:pre-line"` back for both the header and the footer divs. opw-6222055 Forward-Port-Of: odoo/odoo#266334
This update resolves an issue where accounting users were incorrectly denied access to Point of Sale closing journal entries. The fix ensures that all users can access relevant reports, regardless of their Point of Sale access rights, improving reporting accuracy and user experience. This change was made to prevent potential reporting discrepancies.
Original PR description
Accounting users can access POS closing journal entries even when they do not have Point of Sale access rights. The PDP POS helper checked POS session/order links directly while computing e-reporting fields on account moves. This could raise an access error on `pos.session` for accounting users without POS rights. <img width="1621" height="728" alt="image" src="https://github.com/user-attachments/assets/fdee75b6-83f0-4d46-b8d1-e06d286447d3" /> Forward-Port-Of: odoo/odoo#269815
1 change
Resolved issues and error corrections
This update resolves an issue where accounting users were incorrectly denied access to Point of Sale closing journal entries. The fix prevents access errors related to POS sessions, ensuring all users can properly view and manage these reports. This improves data visibility and reporting accuracy.
Original PR description
Accounting users can access POS closing journal entries even when they do not have Point of Sale access rights. The PDP POS helper checked POS session/order links directly while computing e-reporting fields on account moves. This could raise an access error on `pos.session` for accounting users without POS rights. <img width="1621" height="728" alt="image" src="https://github.com/user-attachments/assets/fdee75b6-83f0-4d46-b8d1-e06d286447d3" /> Forward-Port-Of: odoo/odoo#269815
1 change
Resolved issues and error corrections
This update resolves an issue where accounting users were incorrectly denied access to Point of Sale closing journal entries. The fix prevents access errors related to POS sessions, ensuring all users can properly view and manage POS reporting data. This improves data visibility and reporting accuracy for accounting teams.
Original PR description
Accounting users can access POS closing journal entries even when they do not have Point of Sale access rights. The PDP POS helper checked POS session/order links directly while computing e-reporting fields on account moves. This could raise an access error on `pos.session` for accounting users without POS rights. <img width="1621" height="728" alt="image" src="https://github.com/user-attachments/assets/fdee75b6-83f0-4d46-b8d1-e06d286447d3" /> Forward-Port-Of: odoo/odoo#269815
4 changes
Resolved issues and error corrections
This update resolves an issue where attendees received duplicate emails when rescheduling meetings. The fix prevents a nested calendar event write, which was causing the duplicate notifications. By adding a context flag, the system now correctly updates meeting dates without triggering redundant email alerts.
Original PR description
Steps to reproduce: 1. Install CRM, Calendar, and Contacts. 2. Create a contact with an email address you can receive emails on. 3. Configure an outgoing email server. 4. Open a CRM lead and create a…
Steps to reproduce: 1. Install CRM, Calendar, and Contacts. 2. Create a contact with an email address you can receive emails on. 3. Configure an outgoing email server. 4. Open a CRM lead and create a meeting activity using the calendar. 5. Add the created contact as an attendee of the meeting. 6. Return to the lead and click the Reschedule button on the activity. 7. Select the same meeting and change its start date to a future date. Issue: - Attendees receive the meeting date-change email twice. Root cause: - When a calendar event linked to an activity is rescheduled, the event write syncs the new start date to the related activity through `_sync_activities`. That activity write was not marked as calendar-originated after commit https://github.com/odoo/odoo/commit/bc090486bd7810b1b0af1bae398255a2d6615f09, so `mail.activity.write` treated the updated deadline as an activity-originated change and wrote back to the same calendar event. https://github.com/odoo/odoo/blob/8cbb0fe91a35fcdb4a7e4e1a7e8afe40b1691f11/addons/calendar/models/calendar_event.py#L779 https://github.com/odoo/odoo/blob/8cbb0fe91a35fcdb4a7e4e1a7e8afe40b1691f11/addons/calendar/models/mail_activity.py#L24-L33 - This created a nested calendar event write. Both the nested write and the original write then triggered attendee date-change notifications, resulting in duplicate emails. Solution: - Pass the existing `calendar_event_meeting_update` context flag when syncing calendar event changes to linked activities. This prevents the activity sync from writing back to the event while preserving activity-to-event rescheduling. opw-6209956
This update resolves an issue where users were unable to simultaneously edit the names of multiple projects. The fix prevents a technical error that occurred when updating analytic account names during a multi-edit operation, ensuring smoother project management.
Original PR description
Currently, an error will occur when user multi edits name of projects. Steps to replicate: - Install `project` and open projects. - From the list view select multiple projects and edit their name.…
Currently, an error will occur when user multi edits name of projects.
Steps to replicate:
- Install `project` and open projects.
- From the list view select multiple projects and edit their name.
Error:
```
File '/home/odoo/src/odoo/saas-19.3/addons/project/models/project_project.py', line 754, in write
analytic_account_to_update.write({'name': self.name})
File '/home/odoo/src/odoo/saas-19.3/odoo/orm/fields.py', line 1728, in __get__
record.ensure_one()
File '/home/odoo/src/odoo/saas-19.3/odoo/orm/models.py', line 5341, in ensure_one
raise ValueError('Expected singleton: %s' % self)
ValueError: Expected singleton: project.project(8, 9, 10)
```
Cause:
- As multiple records were changed at the moment, `self` had multiple recordsets and trying to access `self.name` [1] causes this error.
Solution:
- Avoided accessing `self.name` on a multi-recordset during multi-edit.
- Updated analytic account names using the name recieved in the vals.
[1]: https://github.com/odoo/odoo/blob/a69ec43f490735f639292d116b0207182c5b2581/addons/project/models/project_project.py#L608
sentry-7452096418
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#267620This update resolves an issue that prevented users from successfully editing multiple project names simultaneously. The fix ensures that the system handles multi-editing correctly, preventing a common error. This improves the overall reliability of the project management feature.
Original PR description
Currently, an error will occur when user multi edits name of projects. Steps to replicate: - Install `documents_project` and open any project's settings using kebab menu (3 dots). - Click new > name…
Currently, an error will occur when user multi edits name of projects. Steps to replicate: - Install `documents_project` and open any project's settings using kebab menu (3 dots). - Click new > name `Test` > open settings page and unselect `Documents` > Save. - Click new > name `Test1` > Save. - From the list view select `Test` and `Test1` and edit their name. Error: ``` ValueError: Expected singleton: project.project(9, 10) ``` Cause: - During `multi-edit`, self contains multiple project records. - When only one of the selected projects has a documents folder (i.e. `use_documents` enabled), `self.documents_folder_id` contains that single folder, making `len(self.documents_folder_id.project_ids) == 1` to be True [1]. - The condition then proceeds to access `self.name` on the `multi-recordset`, raising singleton. Solution: - Avoided accessing `self.name` on a `multi-recordset` during multi-edit. - Filtered projects individually and updated the document folders using the name in vals. [1]: https://github.com/odoo/enterprise/blob/3c2985ca6011700c271ed14e40e08c89be822753/documents_project/models/project_project.py#L101 sentry-7452096418 Forward-Port-Of: odoo/enterprise#119060
This update resolves an issue where accounting users were incorrectly receiving access errors when viewing Point of Sale reports. The fix ensures that accounting users only access POS data when they have the necessary Point of Sale permissions, improving data security and usability.
Original PR description
Accounting users can access POS closing journal entries even when they do not have Point of Sale access rights. The PDP POS helper checked POS session/order links directly while computing e-reporting fields on account moves. This could raise an access error on `pos.session` for accounting users without POS rights. <img width="1621" height="728" alt="image" src="https://github.com/user-attachments/assets/fdee75b6-83f0-4d46-b8d1-e06d286447d3" /> Forward-Port-Of: odoo/odoo#269815
33 changes
Resolved issues and error corrections
This update fixes a warning related to how Odoo generates PDFs using the PyPDF library. The change ensures that PDF pages are handled correctly, preventing potential errors and improving the stability of our PDF generation process. This resolves a technical issue that could have impacted PDF output quality.
Original PR description
In recent versions of PyPDF, modifying a `PageObject` directly from a `PdfFileReader` instance triggers a `PageObject.replace_contents` deprecation warning. As identified in the pypdf library's…
In recent versions of PyPDF, modifying a `PageObject` directly from a `PdfFileReader` instance triggers a `PageObject.replace_contents` deprecation warning. As identified in the pypdf library's architecture updates (specifically PR #3638 [^1] and PR #3669 [^2]), a reader's page is intended to be read-only. Mutating it directly (e.g., using `mergePage` or `compressContentStreams`) before attaching it to a writer can break internal object references and cause `NullObject` errors. This commit resolves the warning by inverting the order of operations to ensure we only mutate writable objects. The fix implements the following flow: 1. Add the unmodified source page directly to the `PdfFileWriter`. 2. Retrieve the newly created, writable output page. 3. Apply `mergePage` and `compressContentStreams` exclusively to the writer's copy of the page. [^1]: https://github.com/py-pdf/pypdf/pull/3638 [^2]: https://github.com/py-pdf/pypdf/pull/3669 Forward-Port-Of: odoo/enterprise#119694 Forward-Port-Of: odoo/enterprise#119239
This update prevents the generation of empty ICS calendar files when attempting to add open shifts to a calendar. Previously, the system would create an empty file when a matching time slot wasn't found. Now, the ‘Add to Calendar’ button is hidden and the ICS file is only generated when a valid time slot is linked to an employee.
Original PR description
**Step:** - install planning - create a resource - create an open shift for a future date - in Gantt view: - publish shift and select the created resource - click “Publish & Send” - check the email and click “Add to Calendar” **Issue:** Currently, clicking “Add to Calendar” generates an empty ics file. **Reason:** During ics file generation, the planning token to find a slot using the planning date and employee. but, no matching slot is found, so the process returns an empty slot, resulting in an empty ics file. **Fix:** Generate the `planning_url_ics` only when a slot is linked with an employee. Otherwise, hide the “Add to Calendar” button and do not generate the ics file. Forward-Port-Of: odoo/enterprise#119945 Forward-Port-Of: odoo/enterprise#118978
This update fixes an issue with how the Stripe cardholder address is formatted, aligning with Stripe's requirements for ISO 3166-2 state codes. Previously, the system incorrectly handled state information, which caused failures when Stripe started validating US addresses. This ensures compatibility with Stripe's systems and avoids potential issues.
Original PR description
Stripe says that address.state is "State, county, province, or region (ISO 3166-2)". There didn't seems to be any issues since it seems that it's not checked for the EU. However, this is still wrong and could raise an issue if Stripe decide to start checking them. Also, with the US coming soon, it's being checked and failed. Forward-Port-Of: odoo/enterprise#120096 Forward-Port-Of: odoo/enterprise#114480
A bug causing a traceback when clicking calendar slots within Knowledge articles has been resolved. The issue stemmed from an incorrect reference to a component variable, which has now been corrected. This ensures that calendar slots function correctly and prevents errors for users.
Original PR description
How to reproduce: 1. Create a new Knowledge article 2. Insert an "item calendar" embedded view by typing /calendar 3. Click anywhere to create an article item 4. Go back to the parent article 5. Click on the calendar slot -----> Traceback ### Technical The [commit] adds the `this.` to migrate templates to access values from the component correctly in the owl3. It mistakenly added `this.` too when accessing the `slot` in the template `knowledge.ArticleItemsCalendarCommonPopover.body`. But the `slot` isn't a variable associated with the component. It's associated with the owl3, which must be accessed directly. Therefore, we revert the change from [commit] inside Knowledge's item_calendar. [commit]: https://github.com/odoo/enterprise/commit/e43f89a0bb8e85521bbf062ab70e7a7b4bda2eb8 Task-6279097 Forward-Port-Of: odoo/enterprise#120058
This update resolves a problem where multi-country tax grids on the journal report were not functioning correctly, specifically when more than two countries were selected. The fix ensures that country names are displayed accurately in the header, and that all countries are visible within the tax grid. This improves the accuracy of financial reporting across multiple regions.
Original PR description
When more than 2 country are used in the taxes, the colspan of the header is wrong. When more than 2 country are used in tax grids, the country isn't displayed anymore. Forward-Port-Of: odoo/enterprise#120140 Forward-Port-Of: odoo/enterprise#119348
This update resolves a technical issue that was preventing the system from correctly handling failed meta requests within the social module. The fix ensures that the system gracefully manages errors by returning a list of 'None' values when requests fail, preventing a critical type error. This improves the stability and reliability of social features.
Original PR description
Error: ``` TypeError: unsupported operand type(s) for *: 'NoneType' and 'int' ``` Cause: - `None * len(queries_batch)` is invalid because `None` cannot be repeated with`*`. Solution: - The result should contain one None for each request in the failed batch. sentry-7541540366 Forward-Port-Of: odoo/enterprise#120044
This update corrects a reporting issue where tax reports for Moroccan businesses incorrectly included zero-balance entries. The fix filters out these unnecessary lines, ensuring that tax reports accurately reflect financial data. This improves the reliability and clarity of tax reporting for our Moroccan clients.
Original PR description
When generating the tax report for a Moroccan company, entries with a zero balance were appearing in the report. Steps to reproduce: ------------------- * Create a Moroccan company * Create a bill with a tax to pay * Change the bill date and accounting date to a past date * Make a first payment of the bill, with a date to today * Unreconcile the payment, and make a second payment with a date in the past (the same one as the bill date for example) * Now generate the tax report for the period of today > Observation: The report contains useless entries with a zero balance. Why the fix: ------------ We add `HAVING SUM(account_move_line.balance) != 0` to filter out the line that have a zero balance. opw-5911669 Forward-Port-Of: odoo/enterprise#113956
This update aligns Odoo's GSTR-3B and GSTR-2B reports with new Indian tax regulations regarding purchase composition supplies. The changes ensure accurate reporting of these transactions, streamlining tax compliance for our users.
Original PR description
As a new GSTR section for purchase composition supplies has been introduced, the related report domains also need to be updated accordingly. With this commit: GSTR-3B domains are updated to properly include purchase_composition_supplies transactions in the relevant report section. GSTR-2B now includes a separate line for composition supplies, aligned with the government utility format. task-6239870 Forward-Port-Of: odoo/enterprise#120117 Forward-Port-Of: odoo/enterprise#118312
This update clarifies the status shown when a user signs a document on behalf of another. Previously, it always displayed the sender's name and date. Now, it correctly shows 'via [user]' only when signing for someone else, maintaining consistency for self-signed documents.
Original PR description
Before this commit, the signer status always displayed "On <date> via <sender>". Now the message only mentions "via <user>" when the document was actually signed by a different user (for example, when an admin is logged in and signs through a signer's link). When the signer uses their own link, only the date is shown. task-6216243 Forward-Port-Of: odoo/enterprise#117460
This update resolves an issue where PDF links within the Odoo viewer were not functioning correctly. The fix adjusts the layering of elements to ensure clicks are properly directed to the PDF links, improving the user experience when working with documents containing internal and external links. This ensures all links within the PDF viewer are accessible.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
This update fixes an issue where automation rules using dotted field paths for user assignment in activity creation didn't correctly populate the activity description. The change utilizes a mapping approach, mirroring a recent fix in the mail module, to reliably handle relational field chains and ensure accurate user assignment.
Original PR description
Steps to reproduce: ------------------------------------ 1. Install `ai` and `contacts` modules 2. Create an automation rule on Contact model: * Trigger: On Creation * Action To Do: Execute AI Action…
Steps to reproduce:
------------------------------------
1. Install `ai` and `contacts` modules
2. Create an automation rule on Contact model:
* Trigger: On Creation
* Action To Do: Execute AI Action
* Add a server action tool with 'Create Next Activity' action
* Set Activity User Type to Dynamic
* Set User Field to a dotted path (e.g., user_ids or partner_id.user_id)
3. Create a contact with a linked user
Observation:
------------------------------------
The activity description in the toast message fails to retrieve the user when using dotted field paths
Issue:
------------------------------------
The direct field access `record[self.activity_user_field_name]` in `_ai_get_action_description` method doesn't support dotted paths like 'partner_id.user_id'. This causes the same issue as in the mail module where relational field chains cannot be traversed
Solution:
------------------------------------
Use `record.mapped()` to support dotted paths by traversing the relational chain, consistent with the fix applied to the mail module
opw-6191715
Related Community PR: https://github.com/odoo/odoo/pull/263530
Forward-Port-Of: odoo/enterprise#119179
Forward-Port-Of: odoo/enterprise#118921This update fixes an issue where currency rates from the Bank of Mexico were incorrectly displayed. The change shifts the rate date by one day to align with the Bank of Mexico's data retrieval process, ensuring accurate currency conversions within the Odoo Enterprise system. This ensures financial reporting and transactions are based on the most current exchange rates.
Original PR description
banxico fetches the rates applied on the previous day, when we introduced using previous day's currency rate (here: https://github.com/odoo/odoo/pull/231948), we broke their logic. shift the rates date by one day to account for the change. task-6264708 Forward-Port-Of: odoo/enterprise#118999
This update resolves a tour test failure caused by a dependency on a specific module. The fix ensures the tour correctly identifies when a page has loaded, even in installations without the necessary component, and addresses a bug where progress bars weren't displaying for employees without email addresses.
Original PR description
The tour relied on the chatter loading to know when the page was done loading. Unfortunately, the chatter on that model is only added if planning_field_service is installed, so the test fails in single module installs. The "See employee progress bar" then failed because some employees do not have an email adress but we do not close the employee_no_email_list_wizard modal before checking the progress bars. We now click on action_send before the failing step. runbot-938958 Forward-Port-Of: odoo/enterprise#118492
This update fixes an issue where the shop floor displayed component quantities with excessive decimal places, leading to inaccurate readings. The fix addresses a floating-point calculation error that resulted in a slight rounding discrepancy. This ensures more precise and reliable component tracking on the shop floor.
Original PR description
**Issue** In the shop floor, floating-point values may display excessive decimals. **Steps to reproduce** - Create a BoM for a product, with a component tracked by lots - Set the component to be…
**Issue** In the shop floor, floating-point values may display excessive decimals. **Steps to reproduce** - Create a BoM for a product, with a component tracked by lots - Set the component to be consumed in a work order operation - Create several lots for the component, per ex 2: - LOT01 with 16.528 units - LOT02 with 10,000.00 units - Create an MO for 220.800 units of the finished product - Click on the shopfloor icon - Click to register the component consumption for the component. - Choose the first lot - Then choose the remaining units from the second lot -> This will display the quantity consumed as 220.79999999999998, even if the decimal accuracy is set to only 2 digits. **Cause** Since, there are 2 `moveLines`, one for each lot, the getter `quantityDone` add 2 floating point together: https://github.com/odoo/enterprise/blob/d7ab7ee1287342638006e290ede20b955aae8370/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.js#L63-L69 inducing a floating-point precision error. The result is rendered directly in the XML template: https://github.com/odoo/enterprise/blob/d7ab7ee1287342638006e290ede20b955aae8370/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.xml#L8-L14 without rounding. opw-6243804 Forward-Port-Of: odoo/enterprise#118976
This update fixes a misleading warning message displayed in the expense settings for users with certain localization settings. The system now accurately checks if a company's country supports Stripe issuing based on its fiscal country ID, ensuring a more reliable experience. This resolves a potential confusion for users and improves the accuracy of expense processing.
Original PR description
In the Expense settings, under 'Expense Card', the warning 'Stripe issuing is not yet supported for your localization' was displayed when the checkbox 'Expense Card' was unchecked, even if the stripe issuing is supported by the current localization. We now use the fiscal country id of the company to check if the company's country supports stripe issuing. task-6253582 Forward-Port-Of: odoo/enterprise#118654
This update resolves an issue where the systray timer highlight test was failing. The change ensures the system's task queue is properly cleared, allowing the test to accurately verify the timer's functionality. This improves the reliability of the test and ensures the timer feature works as expected.
Original PR description
This PR replaces the `tick` with an `advanceTime` when clicking the timer input in the corresponding test, to make sure the macrotask queue is cleared and that the setTimeout to select the field has had time to run. Forward-Port-Of: odoo/enterprise#119975
This update corrects a minor error in how email notifications are sent within the scheduling module. The previous configuration was incorrect, preventing the email composer from opening. This fix ensures that email notifications function as expected, allowing users to easily send emails directly from the scheduling interface.
Original PR description
the used action name for the Send Email action was false its supposed to be action_send and not action_send_email task: 6244506 Forward-Port-Of: odoo/enterprise#119674 Forward-Port-Of: odoo/enterprise#118334
This update resolves an issue where users without specific accounting permissions were encountering an error when selecting templates within the knowledge article feature. The fix delays access to sensitive audit reporting data, ensuring the feature works correctly for all users, regardless of their access rights. This improves the usability and reliability of the knowledge article system.
Original PR description
Steps to reproduce: 1. Install `accountant_knowledge` with `demo data` 2. Remove demo user from bookkeeper access right and give some lesser right 3. Open knowledge and create a new artical with demo user 4. Click on Load template for example `Meeting Minutes` Issue: It gives a access error: `This operation is allowed for the following groups: - Accounting/Bookkeeper` Cause: - accountant_knowledge was doing accounting-only work during generic template loading. Immediately calling `target_article._get_inherited_audit_report()` that returns `inherited_audit_report_id`, which is a computed relation to audit report. `audit.report` is only readable by `account.group_account_user` Solution: - delay that access until it is actually needed, - only if the template contains data-embedded="accountReport" opw-6067390 Forward-Port-Of: odoo/enterprise#117292 Forward-Port-Of: odoo/enterprise#112946
This update streamlines the test connection process for the timesheet grid. The 'Close' button has been removed from the successful connection modal, and users are now automatically redirected to the timeline view after a successful connection, improving usability.
Original PR description
- Remove 'Close' button from connection successful modal - Change Redirect users to http://localhost:5600/#/timeline after successful connection. task-6272843 Forward-Port-Of: odoo/enterprise#120353 Forward-Port-Of: odoo/enterprise#119800
This update corrects a previous issue where website orders automatically generated CFDI invoices to the public. Now, invoices are only CFDI to public when the customer provides all necessary information, aligning with standard e-commerce practices. This ensures data privacy and compliance.
Original PR description
There is no reason why we would always cfdi to public when creating orders from the e-commerce. When the customer give all their info, the invoice should not be cfdi to public. opw-6180766 Forward-Port-Of: odoo/enterprise#119442 Forward-Port-Of: odoo/enterprise#116061
This update resolves an issue where the website rental planning module would crash when the quantity input field was removed. A recent architectural change moved data evaluation logic into the DaterangePicker component, and this fix prevents a crash caused by attempting to update the quantity selector when it's no longer present. This ensures the rental planning feature remains stable and functional.
Original PR description
Steps to reproduce: 1. Install website_sale_renting_planning 2. In rental module, create a product that is of type service and can be sold 3. Go to the website and remove the quantity selector input…
Steps to reproduce: 1. Install website_sale_renting_planning 2. In rental module, create a product that is of type service and can be sold 3. Go to the website and remove the quantity selector input field from the page and save. Issue: `TypeError: Cannot read properties of null (reading 'dataset')` Why this happens: Following architectural changes in v19.1, the rental data evaluation logic was moved directly into the DaterangePicker component lifecycle. Commit 4e5f71d introduces a new method to where, during initialization (`willStart`), the component triggers `setAddQtyInputMax()` to update the dataset attributes of the quantity selector input box. If the quantity selector has been removed via the website customizer `querySelector` returns `null`, causing the assignment to crash. In v19.0, this logic lived in the `WebsiteSale` interaction, executing only during post-render UI event listener triggers which kept it safe. opw-6268945 Forward-Port-Of: odoo/enterprise#119574
This update prevents unnecessary placeholder images from being sent during menu synchronization. It now only includes actual product image URLs, improving data transfer efficiency and reducing potential performance issues. This change ensures a cleaner and more streamlined menu display for users.
Original PR description
This commit prevents placeholder images from being included in the menu sync payload and only sends `img_url` when an actual image is configured on the product or category. Task-6251430 Forward-Port-Of: odoo/enterprise#120229 Forward-Port-Of: odoo/enterprise#119482
A technical glitch prevented users from successfully adding AI-generated images to product pages. This update corrects a flaw in the system's image handling process, ensuring that users can now seamlessly integrate AI-created visuals into their product listings. The fix ensures a smoother user experience when utilizing the 'Add More' feature for extra media.
Original PR description
A traceback is produced when trying to add AI-generated images to a product using "Extra Media" -> "Add More". **Origin of the problem** The `ProductAddExtraImageAction` in `website_sale` always opens the Media dialog with `props.multiImages = true` and the save handler expects `loadResult.imgEls` to be an array. The `aiSave` method patched onto `ProductAddExtraImageAction` by `ai_website_sale` did not account for this, and called `apply()` with a single image element instead of an array, causing a traceback. **Fix** In `aiSave`, wrap `imgEls` in an array before calling `apply()`. task-6263899 Forward-Port-Of: odoo/enterprise#119273
This update corrects a technical oversight during a recent port of code. Unnecessary code was inadvertently left in the l10n_pe_reports module, which has now been removed. This ensures the Peruvian reporting functionality operates correctly within Odoo Enterprise version 19.0.
Original PR description
During the FW port of https://github.com/odoo/enterprise/pull/117891 We forgot to remove the unnecessary code opw-5978673 Forward-Port-Of: odoo/enterprise#120183
This update resolves a bug preventing the daily sales report from displaying its title correctly when the Colombian EDI module is enabled. The change ensures compatibility with a related POS HR report, and also corrects a previous issue where the report would render without a title when the module was installed without DIAN enabled.
Original PR description
The daily report template was replacing `//h2[@id='daily_report_title']` entirely, removing the node from the XML source. This caused `pos_hr.single_employee_sales_report` (a primary template that applies its own xpaths against the same patched base) to crash at compile time since its xpaths could no longer find that node. Switch from `position="replace"` to `position="attributes"` + `position="after"`: the h2 stays in the XML source at all times so pos_hr's xpaths always resolve, while the original title is hidden at render time via t-if when CO EDI is enabled and the Colombian content is inserted as a sibling after it. As a side effect, this also fixes a pre-existing bug where installing the module with DIAN disabled would render the daily report with no title at all. opw-6265637 Forward-Port-Of: odoo/enterprise#119668 Forward-Port-Of: odoo/enterprise#119003
This update resolves an issue where thumbnails weren't automatically generated when attaching documents to messages within the composer. Previously, users wouldn't see previews of attached files. This change ensures that document thumbnails are now correctly displayed, improving the user experience when sharing documents.
Original PR description
When attaching a documents to a message in the composer, the thumbnail was not generated. This commit fix this issue. Task-5096039 Forward-Port-Of: odoo/enterprise#116188
This update resolves an issue where the LNA button in the POS navbar wasn't properly testing functionality for IoT Boxes. Now, the system correctly sends a status action when LNA is enabled for these IoT devices, ensuring accurate tracking and reporting.
Original PR description
The LNA button in the POS navbar wasn't testing LNA for IoT Boxes. We now send a status action for IoT Boxes with LNA enabled. Forward-Port-Of: odoo/enterprise#119998
This update simplifies spreadsheet management by disabling unnecessary versioning for spreadsheet and frozen spreadsheet documents. This reduces file size and improves performance, aligning with how spreadsheets already track their own history. The Manage Versions action is also hidden for these document types.
Original PR description
Spreadsheet documents already manage their own history through spreadsheet revisions. Running generic Documents versioning on top of that creates unnecessary history attachments and additional documents when spreadsheet data is written or when a spreadsheet is copied. Keep the default Documents versioning behavior for regular documents, but allow spreadsheet and frozen spreadsheet documents to opt out of Documents versioning. Also hide the Manage Versions action for those records. * enterprise commit 0e319d063ae868d6e48e9fd6741caf5156308eae disabling Documents versioning for spreadsheets; * this change hiding the Manage Versions action for spreadsheet records. Task: [6236496](https://www.odoo.com/odoo/project/2328/tasks/6236496) Forward-Port-Of: odoo/enterprise#120230 Forward-Port-Of: odoo/enterprise#118484
This update fixes a previous issue where sales employees transitioning to non-commission roles incorrectly accrued commission losses for public holidays and sick time. Now, employees in non-sales positions will no longer experience these inaccurate commission deductions, ensuring accurate payroll calculations.
Original PR description
If a salesman moves to another job that doesn't pay commission, he shouldn't have loss on commissions for public holidays and sick time off. Forward-Port-Of: odoo/enterprise#120386
This update resolves a technical issue that caused the account reports audit tour to fail intermittently, specifically when accessing balances. The fix ensures the tour correctly waits for the Kanban view to be active, preventing premature actions and improving the overall user experience.
Original PR description
The account_reports_audit tour was failing at the "Balances" button step due to a race condition in the preceding steps. In environments with many modules, the "Open the working file" step was triggered prematurely while still on the return checks view, because its selector was too broad. This commit narrows the selector for "Open the working file" to ensure it only triggers once the Kanban view is actually active. [runbot-938920](https://runbot.odoo.com/odoo/runbot.build.error/938920) Forward-Port-Of: odoo/enterprise#118346
This update fixes a technical issue that was causing errors in Odoo's IoT polling requests. By ensuring all listening requests are handled, the system now reliably avoids displaying tracebacks when polling fails. This improves the stability and reliability of the IoT integration.
Original PR description
We were not awaiting the listening request in every case, making poll requests failures display tracebacks. We now await in any case to avoid this. Forward-Port-Of: odoo/enterprise#120408
This update simplifies error handling within the French reporting module (l10n_fr_reports). Specifically, redundant error codes related to subscription checks have been removed. Now, all errors from this area will result in a generic internal error, reducing the detail provided to support staff.
Original PR description
This commit: https://github.com/odoo/enterprise/commit/23afa6f2520a676dcb4cd94867065f1be03708bc change a bit the error codes but removed the ones from the check subscription. By doing so, all the error from that wrapper will give an internal error, and no other info on the error. no task id Forward-Port-Of: odoo/enterprise#120393 Forward-Port-Of: odoo/enterprise#120286
This update resolves an issue where report customizations made in Odoo's Studio were incorrectly applied to other reports, leading to potential rendering problems. The fix ensures that report edits are now stored within the specific report document view, preventing unintended side effects and improving Studio's stability.
Original PR description
Report edits could be applied on shared layouts such as web.basic_layout instead of the report-specific document view. This caused Studio customization diffs to affect unrelated reports and could…
Report edits could be applied on shared layouts such as web.basic_layout instead of the report-specific document view. This caused Studio customization diffs to affect unrelated reports and could also lead to rendering errors when report-specific fields were evaluated in a different report context. The issue occurred because content was inserted directly into the shared layout article section instead of the nested report document view. Steps to reproduce: 1. Open Studio on any module and create or edit a report. 2. Select any of the External, Minimal, or Blank report types. 3. Add content to the report body and save the report. 4. Open another module and create a report using the same report type. 5. Observe that the previous customization is already present. Before this fix, the generated diff could inherit from web.basic_layout. After this fix, body edits are kept inside the report-specific document view. Related Ticket: opw-6245485 Forward-Port-Of: odoo/enterprise#120357 Forward-Port-Of: odoo/enterprise#118880
2 changes
Resolved issues and error corrections
This update resolves an issue where UBL import failed due to a mismatch between the imported UoM category and the product's UoM category. The fix prevents automatic UoM setting in these cases, allowing users to easily correct the UoM after import. This ensures UBL invoices are successfully imported without disruption.
Original PR description
The new collected_values UBL import flow sets product_uom_id from the XML unitCode without checking that the resolved UoM category matches the matched product's UoM category. When they diverge, writing the line triggers the incompatible error. Steps to reproduce: - Create a product "XYZ" with UoM "Units" (category "Unit"). - Import a Peppol UBL bill whose line has Item/Name "XYZ" and unitCode="MTK" (uom_square_meter, "Surface"). - Import fails with: "The Unit of Measure (UoM) 'm²' you have selected for product 'XYZ', is incompatible with its category : Unit." This fix will avoid setting the product_uom_id when the UoM category doesn't match the product's UoM category, allowing the line to be imported without error. The user can then manually set the correct UoM after import. opw-6121714
This update resolves an issue where accounting users were inadvertently accessing Point of Sale data due to a technical limitation in the PDP POS helper. The fix prevents access errors related to POS sessions, ensuring that accounting users only see data relevant to their roles. This improves data security and user experience.
Original PR description
Accounting users can access POS closing journal entries even when they do not have Point of Sale access rights. The PDP POS helper checked POS session/order links directly while computing e-reporting fields on account moves. This could raise an access error on `pos.session` for accounting users without POS rights. <img width="1621" height="728" alt="image" src="https://github.com/user-attachments/assets/fdee75b6-83f0-4d46-b8d1-e06d286447d3" />