Tuesday, May 12, 2026
35 changes · saas-19.3
Resolved issues and error corrections
This update corrects a UI issue where the `l10n_co_edi_ubl` field on the Units of Measure form was missing its label, causing user confusion. The fix ensures the field is clearly identified, improving the overall usability of the CO Company settings.
Original PR description
Currently, the field `l10n_co_edi_ubl` is displayed without a label in the UoM form, confusing users. **Steps to reproduce:** - Install the `l10n_co_edi` module and switch to the CO Company. -…
Currently, the field `l10n_co_edi_ubl` is displayed without a label in the UoM form, confusing users. **Steps to reproduce:** - Install the `l10n_co_edi` module and switch to the CO Company. - Navigate to Invoicing > Settings. - Enable `Units of Measure & Packagings`. - Open `Units & Packagings` and click `New`. **Observation:** The `l10n_co_edi_ubl` field appears between the `Quantity` label and its corresponding field, but its own label is not visible. <img width="1905" height="324" alt="6180769_before" src="https://github.com/user-attachments/assets/f35c345a-f449-46e4-ad15-6981109fca7a" /> **Root Cause:** The inherited view [1] inserts the field `l10n_co_edi_ubl` before `relative_factor` in the base view [2]. In the base view, `relative_factor` is wrapped inside a `<div>` with a shared label (`Quantity`). Since the new field is inserted inside this structure, it inherits the same layout without having its own label, resulting in the label being hidden. **Fix:** This commit updates the view to ensure that the field `l10n_co_edi_ubl` is properly displayed with its own label, avoiding UI confusion and improving form clarity. **After:** <img width="1907" height="376" alt="6180769_after" src="https://github.com/user-attachments/assets/f96470d3-8df2-4ca4-acf8-f6511a49d725" /> [1]: https://github.com/odoo/enterprise/blob/7b0d07bce92fb4b2cb588344fb0f6e3dd5d94f4a/l10n_co_edi/views/product_uom_views.xml#L4-L13 [2]: https://github.com/odoo/odoo/blob/bae4fa4e0dde2d2e2e4fcdbb968f630c080af818/addons/uom/views/uom_uom_views.xml#L15-L34 opw-6180769 Forward-Port-Of: odoo/enterprise#115933
This update fixes an issue where the 'Import Records' option was missing from the Journals list view. The change was caused by a technical setting that incorrectly prevented the import framework from recognizing the view's import capabilities. Now users can import journals directly from the list view.
Original PR description
**Steps to reproduce:** * Go to Accounting App. * Open the Journals list view (Configuration > Accounting > Journals). * Click on the "Action" (cog) menu. **Observed behavior:** * The "Import…
**Steps to reproduce:**
* Go to Accounting App.
* Open the Journals list view (Configuration > Accounting > Journals).
* Click on the "Action" (cog) menu.
**Observed behavior:**
* The "Import records" option is completely missing.
**Cause:**
* In [commit](https://github.com/odoo/odoo/commit/082c70e6d411afd28efffbaf437d8b56d8351e38), `create="False"` was added to the `account.journal` list view to hide the "New" button, intentionally redirecting users to use the journal creation wizard instead.
* However, Odoo's standard `base_import` framework evaluates the XML architecture of the view (`config.viewArch.getAttribute("create")`). Because `create="False"` was set on the view, the framework automatically hid the `Import records` action menu item, assuming importing was entirely restricted.
**Fix:**
* Remove `create="False"` from the XML view architecture so the `base_import` framework evaluates it correctly and displays the "Import records" action.
* Introduce a custom `js_class` (`account_journal_list`) for the journal list view. By explicitly setting `this.activeActions.create = false` inside the controller's `setup()` lifecycle method, we can safely hide the inline "New" button on the UI layer without interfering with the backend XML architecture evaluation.
Ticket [link](https://www.odoo.com/odoo/project.task/6132990)
opw-6132990
Forward-Port-Of: odoo/odoo#260561This update resolves an issue preventing sales team members from opening milestones linked to sales orders. The fix uses a temporary workaround to grant necessary access, allowing users to properly manage project milestones. This ensures sales teams can effectively utilize milestone-based project creation.
Original PR description
Steps to reproduce: - Install the sale_project module - Create a sale order based on milestones - Create the project from the order - Open the project, click the three dots, and open a milestone Issue: Users are unable to open milestones and get an access error. Cause: Users in `sales_team.group_sale_salesman` lack read access to the related `sale.order.line`, causing an AccessError when `sale_line_id` is accessed during the computation of `product_uom_qty`. Fix: Compute `product_uom_qty` using `sudo()` to bypass record rule restrictions. task-5477304 Forward-Port-Of: odoo/odoo#263331 Forward-Port-Of: odoo/odoo#245392
This update resolves a bug in the HTML editor where inserting `/code` into a list would prevent the cursor from correctly positioning within the newly created code block. The fix eliminates the creation of an unnecessary empty text node during the shortcut process, ensuring accurate cursor placement and functionality.
Original PR description
#### Description of the issue this PR addresses: - In shortcut plugin, extractContent leaves an empty text node at block start - When converting to a code block, that invisible node is removed, so the editor cannot restore the cursor correctly #### Desired behavior after PR is merged: - Delete the selection directly instead of extracting text - This prevents creating the invisible empty node #### Steps to reproduce: - Type `1. ` to create a list - Immediately insert `/code` - Cursor does not move inside the code block task-6169180 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263517 Forward-Port-Of: odoo/odoo#261799
This update resolves an issue where sponsor logos on event pages were broken due to incorrect image URLs being generated. The fix limits the image options used to ensure only available sizes are included, guaranteeing sponsor logos display properly for all users. This improves the visual presentation of event sponsorships.
Original PR description
Problem: Sponsor logos were broken on the event sponsor footer cards after https://github.com/odoo/odoo/commit/36e680feca4884940e020119de6a13cd7f927516, even when `image_128` / `image_512` were set. The QWeb image widget generated a `srcset` including larger sizes (`image_1024`, `image_1920`) that do not exist on `event.sponsor`, allowing browsers to pick invalid URLs. Cause: The template renders `sponsor.image_128` with the generic image widget, which auto-generates a `srcset` from the image family. Without restricting it, larger nonexistent variants are included. Solution: Set `t-options` with `"preview_image": "image_128"` in the sponsor footer template to limit `srcset` to existing variant and ensure valid image URL is selected. Task-6079695 Forward-Port-Of: odoo/odoo#257461
This update optimizes how the system removes old device log entries, preventing performance slowdowns. By filtering records based on the last cron run, the database only needs to process relevant data, reducing the load on the system. This results in faster cleanup and improved overall system performance.
Original PR description
The current query to delete unnecessary records from `res.device.log` must be run on all records in the table. This means that the entire table will be placed in the psql buffer. This can degrade…
The current query to delete unnecessary records from `res.device.log` must be run on all records in the table.
This means that the entire table will be placed in the psql buffer. This can degrade performance if autovacuum is very frequent.
This commit introduces a fix so that a seq scan does not have to be performed on the table to carry out the cleanup.
We can use an `USING` if the condition on the joined table (L2) significantly reduces the volume before the join.
This will avoid having the corresponding rows from the first table (L1).
Pseudo query:
```sql
DELETE FROM L1
USING L2
WHERE
<L2_selective_filter>
AND L1.<device> = L2.<device>
AND L1.last_activity < L2.last_activity
```
If `<L2_selective_filter>` is very selective, PostgreSQL will use L2 as the "base" table for the join.
PostgreSQL will therefore not place the entire table in the buffer.
With:
```
d: device
c: cron
t: time
```
```
d t1 - insert
d t2 - insert
d t3 - insert
c t4 - cleanup (delete d t1 and d t2)
d t3
d t5 - insert
d t6 - insert
c t7 - cleanup (delete d t3 and d t5)
d t6
d t8 - insert
c t9 - cleanup (delete d t6)
d t8
c t10 - cleanup
d t8
...
```
In the example, cron t9 cannot look at the time window between the moment it runs and the last cron t7. The proof is that the device inserted in t6 must be deleted because a device t8 has been inserted.
It is not possible to cleanup between two crons because older lines can still be deleted by a later cron if a more recent line has been inserted after the previous cron.
So if a device is inserted between the time of the current cron (t0) and the previous cron (t-x), it is necessary to scan the entire table to cleanup the previous devices.
Therefore, it is possible to create a filter so that devices for which there has been no new insertion in the table between the two crons (t0 and t-x) do not need to be checked.
Pseudo query becomes:
```sql
DELETE FROM L1
USING L2
WHERE
L2.last_activity >= <last_cron_time>
AND L1.<device> = L2.<device>
AND L1.last_activity < L2.last_activity
```
Task-5951999
Forward-Port-Of: odoo/odoo#263625
Forward-Port-Of: odoo/odoo#249738This update fixes an issue where interactive tours were incorrectly triggered when the POS was loaded, causing errors. We've added a flag to the tour to prevent triggering if the necessary tour steps aren't available, ensuring a smoother POS experience for users. This improves stability and reduces potential errors.
Original PR description
When loading the POS, interactive tours were triggered but their steps were not included in the POS bundle. This caused a traceback each time the POS was opened or refreshed. To prevent this, we added a flag `onHold` onto the tour if no steps were found from the database and the registry wasn't loaded. --- Task: https://www.odoo.com/odoo/project/1737/tasks/605029 Forward-Port-Of: odoo/odoo#262812 Forward-Port-Of: odoo/odoo#255094
This update fixes an issue where quiz answers weren't updating correctly after saving. Previously, a full page reload was required to see the changes. The fix restores a necessary field to ensure the web client accurately reflects updated answer data, improving the quiz experience.
Original PR description
After adding new answers or editing existing ones in a quiz question and clicking 'Save & Close', the question overview displays incorrect data. New answers appear as empty tags, and modified answers continue to show their old values. The correct data only appears after a full page reload. This regression was introduced in commit 8ceea093, where invisible fields were removed during code cleanup. The `display_name` field is required in the `answer_ids` list view for the web client to correctly update its local cache. Without this field, the client cannot refresh the display names of the tags immediately after modification. This commit restores the `display_name` field as `column_invisible` in the `slide.question` form view. Task-5449335 Forward-Port-Of: odoo/odoo#244460
This update corrects a technical issue where partners with VAT information were incorrectly flagged in the annual VAT listing warning. The change ensures that only partners with genuine VAT obligations appear in this report, improving data accuracy and reducing potential user confusion. This resolves a minor reporting concern.
Original PR description
Partners with / in VAT shouldn't be displayed in the warning for the annual VAT listing. task-6081162 Forward-Port-Of: odoo/enterprise#113839
This update resolves an issue where users were sometimes redirected to archived contract versions after signing an offer multiple times. The fix prioritizes active contract versions during the 'Signed Contract' button search, ensuring users always access the correct, current contract information. This improves the user experience and prevents incorrect contract access.
Original PR description
Steps to reproduce: 1- Create an offer for an applicant 2- Sign the offer as an applicant multiple times 3- Counter sign only one of them 4- Click on the "Signed Contract" smart button Issue: In some cases, the smart button will redirect to an archived version. Cause: The search for the version allows for archived versions and has a limit of 1, so sometimes that 1 version turns out to be one of the signed contracts that weren't counter signed. Fix: Add a sort to the search to prioritize active versions. Task-6144381 Forward-Port-Of: odoo/enterprise#116885 Forward-Port-Of: odoo/enterprise#115505
This update resolves a visual glitch in the knowledge article editor where the table of contents would incorrectly display the TOC of the previously viewed article. The fix ensures the TOC accurately reflects the current article's structure, improving the user experience when creating and editing knowledge content. This prevents confusion and ensures consistent article navigation.
Original PR description
### Steps to reproduce 1. Open knowledge 2. Create a new empty article 3. Click on Templates 4. Close the modal ------> Current article's side panel TOC shows the TOC of the previewed article. ### Technical The side panel's TOC is managed by the TOC service. When opening/updating any article, the side panel's TOC is updated according to the current article. When the article picker is previewing the article using the `HtmlViewer`, it also updates the side panel's TOC using the previewed article. Then if we close the dialog without loading the article, the side panel's TOC doesn't get updated. Therefore, opening the side panel's TOC shows the last previewed article's TOC. After this commit, we add a cleanup inside the `HtmlViewer` and the `KnowledgeTableOfContent` to restore the previous TOC manager when it is destroyed. Task-6186675 Forward-Port-Of: odoo/enterprise#116615
This update fixes several issues within the spreadsheet component, ensuring a smoother and more reliable experience for users. The changes include improvements to the installation process and addressing permissions related to OpenID Connect. This ensures the spreadsheet functionality continues to operate correctly within Odoo.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/14395f75f1 [REL] 19.3.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/14395f75f1 [REL] 19.3.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/62a64fd1b4 [FIX] package: husky should run at post install [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/38b1f8ca83 [FIX] workflow: fix the tag definition [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/e5d20dd4ff [FIX] Workflow: fix missing permission to use OpenID Connect [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/33f3342c49 [FIX] workflow: Split the workflow in parallel jobs [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/a22b83d2ed [FIX] composer: remove forced reflow in content editable [Task: 6199661](https://www.odoo.com/odoo/2328/tasks/6199661) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update resolves an issue that occurred when users attempted to merge a single mailing list. The fix addresses a technical error related to empty recordsets, preventing a syntax error and ensuring the merge function operates correctly.
Original PR description
Currently, error occurs when user tries to merge a mailing list. Steps to replicate: - Install `mass_mailing`. - Open Email Marketing > Mailing Lists > Mailing Lists and switch to list view. - Select…
Currently, error occurs when user tries to merge a mailing list.
Steps to replicate:
- Install `mass_mailing`.
- Open Email Marketing > Mailing Lists > Mailing Lists and switch to list view.
- Select a single record and Click merge.
Error:
```
psycopg2.errors.SyntaxError: syntax error at or near ")"
LINE 8: AND src_sub.list_id IN ()
^
ValueError: SyntaxError('syntax error at or near ")"\nLINE 8: 'AND src_sub.list_id IN ()\n'
^\n') while evaluating 'action = records.action_mailing_lists_merge()'
```
Cause:
- Error occurs due to a recent [PR].
- When the user selects only a single record, `self - dest` [1] evaluates to an empty recordset. As a result, `action_merge()` receives an empty `src_lists`.
- Later, this is used [here] and converted into an empty tuple, producing an invalid SQL clause like `src_sub.list_id IN ()`, which leads to this error.
Solution:
- When `src_lists` is an empty recordset, we early return from `action_merge()`.
[PR]: https://github.com/odoo/odoo/pull/72156
[1]: https://github.com/odoo/odoo/blob/4193b3735d64518290613f5c8132f1fd07afa229/addons/mass_mailing/models/mailing_list.py#L218
[here]: https://github.com/odoo/odoo/blob/4193b3735d64518290613f5c8132f1fd07afa229/addons/mass_mailing/models/mailing_list.py#L266
sentry-7447326420
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#262404This update adjusts the default date range for the Lead and Pipeline dashboards to 'Last 30 days'. This change ensures users consistently see the most recent data, providing a clearer and more relevant view of sales performance. It resolves a previous issue where the default date range was not clearly defined.
Original PR description
This commmit fixes the date filter default value to `Last 30 days`. Task: 5902231 Forward-Port-Of: odoo/enterprise#114560
This update resolves a visual glitch where the status bar appeared twice for sub-tasks. The fix ensures that the status bar accurately reflects the task's project association, preventing a confusing and inconsistent user experience. This change improves the overall usability of the project management tool.
Original PR description
Steps: - Create a task inside any project. - Create a sub-task under that parent task. - Open the sub-task and remove the project (clear the project field). - Look at the status bar at the top of the form view. Issue: - The status bar is displayed twice (both the Project stages and Personal stages - are visible simultaneously). Cause: - When the project field is cleared from a sub-task in the UI, conflicting visibility rules or residual stage data can cause the status bar widget to render twice. Fix: - To resolve this, an `onchange` event is added to the `project_id` field. If the user removes the project from a sub-task, the system now instantly falls back to the parent task's project and sets `display_in_project = False`. This syncs the frontend UI with the intended backend behavior, preventing the interface from entering the broken state and removing the duplicate status bars. task-6033970 Forward-Port-Of: odoo/odoo#255319
A recent update caused shifts created from the Gantt day view to be incorrectly delayed by an hour. This was due to a change in how timezone information was handled. This fix ensures that shift times are accurately reflected, resolving this scheduling issue.
Original PR description
Steps to reproduce:
-
- Open Planning
- Switch to Gantt day view
- Select a time slot from 1 PM to 3 PM for a resource
Issue:
-
- When creating a planning shift from the Gantt day view, the created shift has a 1 hour time lag compared to the selected slot.
Cause:
-
- In saas-19.2, the timezone field was removed from the resource calendar.
- _work_intervals_batch was called without resources_per_tz, causing it to default to {UTC: resource} instead of the correct resource timezone.
Solution:
-
- Pass the resource timezone when calling _work_intervals_batch so attendance times are stamped with the correct resource timezone instead of defaulting to UTC.
task-5966733
Forward-Port-Of: odoo/enterprise#111122This update resolves a test failure in the MRP module related to how manufacturing routes are configured. The fix ensures that the test setup correctly identifies and utilizes available routes, preventing errors when running tests in environments without demo data. This improves the reliability of our manufacturing test suite.
Original PR description
The setup in `TestMultistepManufacturingWarehouse` was failing with: ``` AssertionError: field 'route_ids' is not visible ``` This happens because the `route_ids` field on the product form view is only visible when `has_available_route_ids` is True, which depends on having at least one `product_selectable` route. This commit enables `product_selectable` on those routes in the test setup, so that `route_ids` becomes visible and the Form helper can access it safely. [RB-232576](https://runbot.odoo.com/odoo/error/232576) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#259036 Forward-Port-Of: odoo/odoo#237293
This update resolves a technical issue preventing on-the-fly product creation in the SOL editable form test. Specifically, the system was failing a test due to an incorrect initial value for 'reinvoice_policy'. The fix ensures this field is correctly initialized with its default value ('no') during product creation, preventing errors and ensuring data integrity.
Original PR description
When creating an on-the-fly product in the SOL editable form test,
reinvoice_policy was not initialized to its default value ('no') on the
transient record created with `new()`.
This happens because `new()` only initializes defaults for fields needed
by the current form view (required fields, modifiers, onchanges, etc.),
and reinvoice_policy is not part of them in this flow.
Also Since `product_id.reinvoice_policy` is also not a dependency of
`qty_delivered_method`, the compute keeps using the incorrect initial
value, causing the readonly assertion on `qty_delivered` to fail.
Fix by explicitly passing the reinvoice_policy's default value in the product
creation values.
runbot error-239939
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#263042This update corrects a misleading validation error that appeared when using the translation button on Sale Order Templates, particularly in multi-language setups. The fix ensures the system correctly handles nested records, preventing unnecessary error messages and improving the user experience. This resolves a previous issue impacting template creation.
Original PR description
Steps to reproduce: * Enable multiple languages * Go to Sale Order Templates and create a new template * Add a product line, then click the translate button on the description field * A confusing…
Steps to reproduce: * Enable multiple languages * Go to Sale Order Templates and create a new template * Add a product line, then click the translate button on the description field * A confusing validation error appears for missing `sale_order_template_id` Issue: * Instead of highlighting the missing required fields on the sale order template form view, it raises a misleading validation error on `sale_order_template_id` Cause: * `useTranslationDialog` always attempts to save the passed record directly. In O2M list views, the field can belong to a nested relational record, so the correct behavior is to save the root record instead. Affected Version: 17.0 Before: <img width="1919" height="1014" alt="image" src="https://github.com/user-attachments/assets/cd61381d-289a-4df4-bdf2-7881fa851939" /> After: <img width="1920" height="887" alt="image" src="https://github.com/user-attachments/assets/5218c74b-c024-4994-b816-cb7ae69b420f" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262988 Forward-Port-Of: odoo/odoo#262755
This update resolves a technical error that was preventing the MRP Kanban module from functioning correctly. The change ensures that JavaScript code related to the Kanban interface is properly defined, improving overall system stability and performance. This fix addresses a reported runbot error and ensures consistent operation.
Original PR description
js_class defined in mrp_workorder should have been defined in mrp. This solves runbot error 242288 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a technical issue within the MRP Work Order Kanban module, resolving a run-time error. The fix ensures that JavaScript classes are correctly defined, improving the overall stability and performance of the Kanban interface. This change addresses a reported bug and enhances the user experience.
Original PR description
js_class defined in mrp_workorder should have been defined in mrp. This solves runbot error 242288
This update corrects a bug where the 'Ledger' group was incorrectly displayed in multi-company reports. Previously, when multiple companies were selected, the report only considered the active one. Now, the report correctly uses the selected companies based on the 'companies' option, ensuring accurate reporting across different business entities.
Original PR description
The "Ledger" horizontal group is (among other possible criteria) supposed to be displayed when there is more than one company considered by the report. Before this commit, when opening a report with filter_multi_company set to 'tax_units' with more than one non-branch company in self.env.companies and no tax unit set, "Ledger" was shown. This was wrong, since, in this case, the report will only consider the active company, disregarding the other selected ones. All in all, _init_options functions should only rely on options['companies'] to check the active companies, for consistency.
This update resolves an issue where users experienced an error when accessing the sitemap after installing the website. The fix corrects a code error that resulted in the system incorrectly handling the sitemap attachment, ensuring smoother website functionality.
Original PR description
Currently an exception is generated when the user tries to open the `/sitemap.xml` page twice after installing the website. Error: ``` Error on request: Traceback (most recent call last): ``` This is because the code line [1] tries to access the site map twice; code line [1] gets the `raw` from the existing sitemap attachment, and the contains the `LocalBinaryFile` object due to recent changes with [2]. This commit will fix the above issue by using `sitemap.raw.content` instead of `sitemap.raw` which returns the actual content from the sitemap attachment, instead of `LocalBinaryFile` object instead. [1]: https://github.com/odoo/odoo/blob/93b39025009c80ead3337738443fed7df5b6f51e/addons/website/controllers/main.py#L323 [2]: https://github.com/odoo/odoo/commit/41fe2ebdb9cc37341362d7af829c087a5f72f9f1 Sentry-5691330773
This update fixes an issue where product variants added through the product matrix on purchase orders weren't showing the correct product descriptions. The change restores a previous helper function to ensure product descriptions, including attribute values, are displayed accurately. This improves the clarity and usability of purchase orders.
Original PR description
From 7e553d25890d1, the `product_label_section_and_note_field` has been split into a mixin in `product` and an override in `account`. In this split. the `get label()` helper has been slightly modified in a way the product template is not extracted from the label to keep only the additional description (usually filled with product attribute values). This lead to having only the product template name displayed on the purchase order line if the product variant was added via the matrix widget. This commit brings back the old `label` helper only for the product matrix widget. Task: 6042382 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#262735
A recent issue caused the first line of product descriptions in quotation templates to be cut off when creating sales orders. This update adds a test to prevent this regression, ensuring that all product descriptions are fully displayed in sales orders. This improves the clarity and accuracy of sales order information.
Original PR description
Issue: --- When using quotation template, the first line of description is always removed. Steps to reproduce: 1- Create a quotation template and add a description to the line. 2- Create a SO from quotation template. As you see the first line of description is removed in SO. Cause: --- This regression is introduced after aba778538c2032a2924f99258c5c75e463296d21 which was done under the assumption that the description always starts with product name. This breaking commit is reverted by: a702a4989fc53ccc43f57213e0db3e62e7b69e8f However it's better to have a test in order to prevent this issue being introduced in the future. opw-6178360 Forward-Port-Of: odoo/odoo#262563
The Point of Sale's category grouping feature has been updated to accurately filter out products designated as 'special' that should not be included in the grouped listings. This change ensures that sales staff see only the relevant product categories, improving the accuracy of sales reports and reducing potential errors.
Original PR description
The group products by category feature in the POS was not filtering out the products marked as special and that should not be displayed. It is now the case by extracting the filtering logic and applying it to the grouped products as well. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#257845
This update resolves a bug where pressing backspace in the HTML editor, specifically at the button's edge, would cause an error. The fix ensures backspace correctly deletes characters and prevents the crash, improving the editor's stability and user experience.
Original PR description
**Description of the problem** Pressing backspace when the cursor is positioned at the very left edge of a button could trigger a traceback. Additionally, even if the crash did not occur, the…
**Description of the problem** Pressing backspace when the cursor is positioned at the very left edge of a button could trigger a traceback. Additionally, even if the crash did not occur, the backspace behavior would be incorrect, because the cursor would move across a zero-width non-breaking space (Zwnbsp) without deleting the first character to the left. **How to reproduce** In the `html_editor`, create a button. Click on its very left edge, then press backspace. An error is thrown. **Why the problem happens** 1. Traceback when backspace is pressed `LinkPlugin.handleDeleteBackward` assumes that `previousSibling` is an element node, and calls the `matches` method. However, when clicking on the very left edge of a button, the cursor is positioned such that the left sibling (`previousSibling`) is a text node. Text nodes do not implement `.matches()`, leading to the crash. 2. No deletion of the character to the left of the cursor `DeletePlugin.isVisibleChar` handles the edge cases where backspace is pressed while the cursor is positioned to the side of a button, and defines the visibility of Zwnbsp to determine how much is deleted. The padding Zwnbsp to the left of a button are considered as visible, such that the user can delete an empty button without removing also the first character on its left. Anyway, the current code does not actually check if the button is empty, thus it applies to more cases than necessary. Probably this has never been observed before, because it takes a very precise click to the left edge to position the cursor between a button and its left Zwnbsp. **Fix** 1. Prevent the crash in `LinkPlugin` `LinkPlugin.handleDeleteBackward` now ensures that `previousSibling` is an element node before calling `matches`, otherwise it returns. 2. Fix backspace behavior in `DeletePlugin` `deletePlugin.isVisibleChar` now considers as visible only the Zwnbsp positioned to the left of an empty button. This way, if the user clicks on the very left edge of a button (which moves the cursor outside the button, to the left), pressing backspace actually deletes the character on the left. task-6102282 Forward-Port-Of: odoo/odoo#258858
This update resolves an error that occurred when posting journal entries using accounts shared between companies during an open audit period. The issue stemmed from a permissions problem preventing users in one company from accessing audit status information, which blocked the posting process. This fix ensures accurate reporting across shared accounts.
Original PR description
Posting a journal entry using an account shared between multiple companies during an open audit period raises an AccessError. Steps to reproduce: - Configure an account to be shared between Company A and Company B. - Add Company A and Company B in 'Companies' - In the mapping tab, add a code for each company - In Company A, create a tax audit for a specific fiscal period. - Switch to Company B and keep just Company B selected. - Create and post a journal entry using the shared account within the same date period. Issue: An AccessError is raised when posting the move. The system attempts to check the status of the audit records linked to the shared account, to which the user in Company B does not have read access. opw-5993450 Forward-Port-Of: odoo/enterprise#116912 Forward-Port-Of: odoo/enterprise#115454
This update removes redundant logging messages within the account_edi_ubl_cii module. Previously, similar log entries were repeated multiple times, which didn't provide valuable insights. This change streamlines logging for better clarity and efficiency.
Original PR description
Before this commit, we had repeated logs (n-times if we had similar lines) but this doesn't help too much. To avoid this we decided to remove duplicated messages Task-None --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263779
This update fixes an issue where contacts enrolled in the same courses were incorrectly merged. Now, the system prevents this merge, displaying an error message to the user, ensuring data accuracy and preventing duplicate course information. This improves the reliability of our contact management system.
Original PR description
Expected Behaviour: Contacts enrolled in common courses should not be merged and the merge should fail. Steps to reproduce: 1- Go to one of the courses 2- Add two attendees to the course 3- Go to Contacts App 4- Select the two attendees you added to the course 5- Try merging the two contacts Actual Behaviour before the Fix: Contacts enrolled in common courses are getting merged and the common courses are kept in the destination contact. Behaviour with the Fix: Contacts enrolled in common courses are blocked from being merged and an error message is shown to the user saying that the reason the merge is blocked is a duplicate course. opw-5417223 Forward-Port-Of: odoo/odoo#263196 Forward-Port-Of: odoo/odoo#244500
This update resolves a technical issue preventing the correct display of the employee form within the South Africa (SA) localization of Odoo Enterprise. The fix ensures accurate data presentation and functionality for South African users, improving the overall user experience.
Original PR description
this commit fixes the broken view of employee form in SA localization. task-6205661
This update resolves a bug that prevented price changes in the Blackbox POS module when the user's language used a comma (e.g., European format) instead of a dot as a decimal separator. The fix ensures accurate price calculations regardless of the user's locale, improving the reliability of order pricing.
Original PR description
Before this commit, when changing the price of an orderline with the blackbox installed, if the decimal separator of the user language was not a dot and was used during the price change, the price was not changed. This was due to the fact that we were comparing a string with a number, the string would be implicitly be converted to a number and, when there was a comma for example, it would return a NaN which would cause the discount to not be applied and thus the price to not change. Forward-Port-Of: odoo/enterprise#113341 Forward-Port-Of: odoo/enterprise#113151
This update fixes an issue where the HTML editor's undo function sometimes restored the selection to an incorrect position. The fix ensures the selection is properly staged before deletion, guaranteeing accurate restoration during undo operations. This improves the user experience and prevents data inconsistencies.
Original PR description
Problem: In some cases, undo restores the selection to an incorrect position. Cause: The selection state was not staged before the deletion started, leading to an inconsistent selection being restored during undo. Solution: Stage the selection before performing the deletion to ensure it can be restored to the correct position. Steps to reproduce: - Go to To-Do → Create New. - Type something on the first line and press Enter. - Type something on the second line and apply styling to it. - Use the Up arrow key to move to the first line. - Remove a character. - Press Undo (Ctrl + Z). - Observe that the selection and toolbar appear on the second line. task-6142055 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262896 Forward-Port-Of: odoo/odoo#260630
This update corrects a display issue where the 'Reconnect Bank' button appeared incorrectly when account online consent wasn't expiring. The fix ensures the button only appears when consent is actually about to expire, preventing unnecessary prompts and improving user experience. This change ensures the system behaves as expected under normal consent scenarios.
Original PR description
Since this commit 375516ccfd20d3a969c532376d0ba9db195b35fd, the reconnect bank button is displayed when the account online link doesn't have consent expiration date, which is wrong, if the consent doesn't expire, we shouldn't display the button. Why this happens? Because we don't check if expiring_synchronization_date is falsy, we only check if expiring_synchronization_due_day <= 0, which is always true in this case, has the compute set 0 as a fallback value. no-task
This update corrects a technical issue within the l10n_be_hr_payroll module, specifically addressing how loop variables are handled. The change ensures the system operates more reliably and efficiently. This is a routine maintenance fix to improve the stability of the payroll processing.
Original PR description
Don't use `self` in loop body. Oversight of 724edab8d5be8e774f00ae84e9ebeb5a70f4fa93. Forward-Port-Of: odoo/enterprise#116915