Daily updates from Odoo
Thursday, May 7, 2026
208 changes
9 changes
Resolved issues and error corrections
This update fixes an issue where a blank box was sometimes visible on smaller screens when rental dates weren't entered. The change ensures the display is only shown when rental dates are present, improving the user experience and visual consistency across devices. This is a minor fix to enhance usability.
Original PR description
Previously, the `<div>` was displayed even when its content was hidden due to the "invisible" attribute. To fix this, we move the visibility condition to the parent. This works since the `<button>` (in charge of updating rental line prices) already has a stricter invisibility condition. Note that `.o_input_box` doesn't exist anymore. Related commit: https://github.com/odoo/enterprise/commit/7cdfe5bd1541380d746f3208bc198fb89f7cb22a
This pull request corrects a technical issue where a duplicate email snippet template was introduced. The change removes this redundant template, ensuring consistent email formatting and preventing potential errors in mass mailing campaigns. This improves the reliability of our email communications.
Original PR description
A duplicated snippet template was introduced in a prior [commit], and is removed through this commit. [commit]: https://github.com/odoo/odoo/commit/81e43a8dd70ffa2746740f7bd5904007e76d2260 task-5959046 Forward-Port-Of: odoo/odoo#262980
This update resolves an issue where the 'Back to edit mode' link in the land portal invoice section of the Invoicing app was incorrectly directing users to the wrong application. Switching to the correct action ensures users always access the Invoicing app, improving usability and data accuracy. This was a minor fix to ensure proper functionality.
Original PR description
The "Back to edit mode" link used action_move_out_invoice_type, which isn't bound to any menu, so the backend fell back to whichever app happened to match (e.g. Website when installed) instead of Invoicing. Switch to action_move_out_invoice (the one referenced by the Invoicing menu) so the webclient resolves the correct app automatically. task-5882256 Forward-Port-Of: odoo/odoo#259263 Forward-Port-Of: odoo/odoo#257841
This update resolves an issue where inactive reports were appearing in search results, and a bug impacting VAT Return reports in the Czech language. The fix ensures accurate report filtering and correct navigation, improving the user experience and data accuracy.
Original PR description
When searching for reports through the search panel inactive reports still show up in the result, this change hide the inactive variant reports from the search result. Also, fixes a minor bug related the l10n_cz, When search for VAT Return (CZ) it would cause a bug due to missing the target report to look into. task: 6149101
This update ensures payrun steps are reliably marked as complete after the 'Continue' action. Previously, errors could linger, making it appear like steps weren't processed correctly. Now, the system validates completed steps, providing a clearer picture of payrun status and improving data accuracy.
Original PR description
## Before: - Clicking Continue moved the payrun to the next step, but the previous step could remain in `error` if anomalies were still present. - This made explicitly passed steps (version/time/attendance) look unresolved. ## After: - Continue marks the passed step as `valid`. - because if the user willfully ignore an error, then it's ok to put it as validated. - This is applied consistently for all payrun step state points. Task-6053982
This update fixes an issue where multiple documents with the same subject wouldn't all be included in the downloaded zip file. The change ensures that all signed documents with identical subjects are correctly bundled together, resolving a potential data loss scenario. This improves the reliability of the Sign app's document download feature.
Original PR description
## Issue In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file. ## Steps to reproduce 1. Install *Sign* (`sign`)…
## Issue
In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file.
## Steps to reproduce
1. Install *Sign* (`sign`)
2. Sign a same template twice, using the same subject S1. This gives us Documents D1 an D2.
3. (Optionally), sign the same template a third time, using a different subject S2, creating document D3.
4. In Sign > Documents, select the 2 (3) signed documents and click *Download*.
5. **In the resulting zip file, there's one folder S1 containing a single pdf document (D1) (and one folder S2 containing D3). Document D2 is missing from the zip file.**
## Cause
When generating the zip file, the path used for each document is `{subject}/{doc_name}`.
https://github.com/odoo/enterprise/blob/863abc99469c12acdebcab05788d566c370bb46f/sign/controllers/main.py#L276-L286
Neither of this attribute are unique, which means that two signed documents with the same name and subject can be downloaded simultaneously, but will then overwrite each other.
## Fix
Before version 18.3, the zip file would contain folders named with the (unique) request id, which would consistently make them distinct from one another. This behavior was changed by https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b to use the `sign_request.subject` instead. This commit adds the `request.id` after the subject to keep the clarity of the subject, and add the uniqueness of the id.
opw-6143128
Forward-Port-Of: odoo/enterprise#116179
Forward-Port-Of: odoo/enterprise#116013This update resolves an issue where a key form element, `.o_input_box`, was removed from the Odoo system. The change adapts the form views for the MRP and POS Self-Order modules to ensure proper functionality and data input. This ensures these features continue to operate as expected.
Original PR description
`.o_input_box` doesn't exist anymore, and this commit adapts the form view accordingly. 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 removes unnecessary code that previously handled multiple formats for receiving electronic invoices from Belgium (BE). Previously, the system was unsure which format to use, leading to complexity. Now, the system consistently uses the standard 0208 format, simplifying the process and improving efficiency.
Original PR description
When adding peppol, we didn't know if we needed to use the 9925:BE or 0208. Therefore, we switched between them if the endpoint was not found. This has no more use today as we use 0208. opw-5976574 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261307 Forward-Port-Of: odoo/odoo#258297
This update fixes a limitation in how Odoo Enterprise updates its UNSPSC product codes. Previously, new codes required a full module installation, but now an upgrade script automatically adds missing codes to the database during module updates. Existing codes remain unchanged.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#116063 Forward-Port-Of: odoo/enterprise#112652
9 changes
Resolved issues and error corrections
This update corrects an issue where free services linked to FSM tasks were not appearing on invoices due to a technical setting. The change ensures that prepaid invoice services associated with FSM tasks now correctly appear on invoices, resolving a previous error that prevented proper invoicing. This improves the accuracy of service billing.
Original PR description
Changed _compute_qty_to_invoice in industry_fsm_sale, SaleOrderLine to no longer set qty_to_invoice to 0 for free services with prepaid invoicing. Previous changes seem intended for goods. Steps to reproduce: - Create service product with 0 price, prepaid invoice policy, creates FSM task - Create/Confirm sales order with created product - Attempt to create invoice, get 0 quantity to invoice error Current Behavior: Free services linked to FSM tasks do not appear on invoices due to compute 0 qty_to_invoice Expected Behavior: Prepaid Invoice Services linked to FSM tasks appear on invoices. Other invoice policies can be invoiced through the generated sales order lines (timesheets, delivered quantity, etc.) opw-6047992 Forward-Port-Of: odoo/enterprise#116413 Forward-Port-Of: odoo/enterprise#113718
This update corrects a technical issue where a duplicate email snippet was introduced. The commit removes this redundant template, ensuring consistent email formatting and preventing potential errors in mass mailing campaigns. This change improves the reliability of our email communications.
Original PR description
A duplicated snippet template was introduced in a prior [commit], and is removed through this commit. [commit]: https://github.com/odoo/odoo/commit/81e43a8dd70ffa2746740f7bd5904007e76d2260 task-5959046 Forward-Port-Of: odoo/odoo#262980
This update resolves an issue where tracking monetary properties within Odoo wasn't correctly handling currency information, leading to errors. The fix ensures that currency fields are properly associated with tracking values, improving the reliability of financial data tracking. This enhances the accuracy of reports and processes related to money.
Original PR description
`_create_tracking_values_property` was missing `currency_field` in `col_info` when processing monetary-type properties, causing a traceback. Fixed by injecting it from the property definition dict. task-6175845 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#262353
This update fixes an issue where multiple signed documents with the same subject were not being correctly downloaded into a single zip file. The change ensures that all documents with identical subjects are included in the download, resolving a potential data loss scenario. This improves the reliability of the Sign app's document management.
Original PR description
## Issue In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file. ## Steps to reproduce 1. Install *Sign* (`sign`)…
## Issue
In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file.
## Steps to reproduce
1. Install *Sign* (`sign`)
2. Sign a same template twice, using the same subject S1. This gives us Documents D1 an D2.
3. (Optionally), sign the same template a third time, using a different subject S2, creating document D3.
4. In Sign > Documents, select the 2 (3) signed documents and click *Download*.
5. **In the resulting zip file, there's one folder S1 containing a single pdf document (D1) (and one folder S2 containing D3). Document D2 is missing from the zip file.**
## Cause
When generating the zip file, the path used for each document is `{subject}/{doc_name}`.
https://github.com/odoo/enterprise/blob/863abc99469c12acdebcab05788d566c370bb46f/sign/controllers/main.py#L276-L286
Neither of this attribute are unique, which means that two signed documents with the same name and subject can be downloaded simultaneously, but will then overwrite each other.
## Fix
Before version 18.3, the zip file would contain folders named with the (unique) request id, which would consistently make them distinct from one another. This behavior was changed by https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b to use the `sign_request.subject` instead. This commit adds the `request.id` after the subject to keep the clarity of the subject, and add the uniqueness of the id.
opw-6143128
Forward-Port-Of: odoo/enterprise#116179
Forward-Port-Of: odoo/enterprise#116013This update prevents errors that occurred when loading paid orders with loyalty cards whose programs had been deactivated. Previously, the system would fail to open the partner list, causing a disruption in the sales process. This fix ensures smooth operation for all loyalty card transactions.
Original PR description
Before this commit, when loading a paid order with a loyalty card that its program had been archived, an error was raised when opening the partner list due to the missing program. opw-6166079 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261501
This update fixes a misleading notification that appeared when users discarded a reply composer in the History view. Previously, the system incorrectly triggered a 'Message posted' notification even when no message was actually sent. The change ensures notifications are now only displayed when a message is truly sent, improving the clarity and accuracy of the system.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- When replying to messages from the History (Inbox) view, opening the full composer and…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- When replying to messages from the History (Inbox) view, opening the full composer and discarding it could incorrectly trigger a toast notification indicating that a message was posted. This behavior is misleading, as no message is actually sent when the composer is discarded. **Current behavior before PR:** ---------------------------------------------- - Replying to a message from History opens the full composer - Discarding the full composer closes the dialog normally - A “Message posted” toast is shown even though no message was sent - Notification logic depends on dialog close behavior, leading to incorrect triggers **Desired behavior after PR is merged:** ---------------------------------------------- - Discarding the full composer does not show any notification - Notifications are only shown when a message is actually sent Task-5431682 ---------------------------------------------- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262004 Forward-Port-Of: odoo/odoo#241705
This update removes unnecessary complexity in how Odoo handles electronic invoices from Belgium (BE). Previously, the system was switching between different invoice formats, which is no longer needed as the standard 0208 format is now used. This simplifies the process and improves efficiency.
Original PR description
When adding peppol, we didn't know if we needed to use the 9925:BE or 0208. Therefore, we switched between them if the endpoint was not found. This has no more use today as we use 0208. opw-5976574 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261307 Forward-Port-Of: odoo/odoo#258297
This update fixes a limitation in how Odoo Enterprise updates its UNSPSC product codes. Previously, new codes could only be added during initial module installation. Now, an upgrade script automatically adds any new UNSPSC codes to the database, ensuring the system remains current with industry standards. Existing codes are not modified.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#116063 Forward-Port-Of: odoo/enterprise#112652
This update eliminates a misleading warning message that appeared when sequences didn't begin with the number 1. Sequences can legitimately start at any number, and this change ensures users aren't unnecessarily alerted to a standard configuration. It improves the user experience by removing irrelevant notifications.
Original PR description
We don't want to warn users about their sequence not starting at 1 as it is a perfectly valid case. This removes the warning both in the list view and in the dashboard. task-5253768 Forward-Port-Of: odoo/odoo#263117 Forward-Port-Of: odoo/odoo#235117
32 changes
New functionality added to Odoo
This update aligns Odoo's data with international standards by incorporating the states of Georgia, as defined by ISO 3166-2. The change also improves address formatting to display state names instead of codes, enhancing data accuracy and usability.
Original PR description
Added the states in Georgia to align with official ISO 3166-2 standards. task-6119824 Forward-Port-Of: odoo/odoo#261689
This update adds the ability to export General Ledger reports as CSV files. This allows users to easily download and analyze their financial data for reporting and record-keeping purposes. This enhancement improves data accessibility and streamlines financial reporting workflows.
Original PR description
task-5734354 Forward-Port-Of: odoo/enterprise#115493 Forward-Port-Of: odoo/enterprise#107638
Enhancements to existing features
This update enhances the appearance of online order notifications on smaller devices. By using a full-width layout and improved alignment, the notifications now display more clearly and professionally, creating a better user experience. This change was made to improve the visual consistency and usability of the online ordering system.
Original PR description
In this commit: ------------------- - Use a full-width layout on small screens by removing container padding and improving alignment with `justify-content-between`. task: 6054267 Forward-Port-Of: odoo/enterprise#111614
Resolved issues and error corrections
This update corrects a problem with the Intrastat CSV export functionality, which was broken following a technical update in 18.0. The fix ensures accurate data is exported by addressing formatting errors and database synchronization, preventing potential reporting discrepancies.
Original PR description
Since the technical refactoring of intrastat in 18.0, the csv export in `l10n_nl_intrastat` seems broken. Here is the fixes done in this commit: 1. `Commodity flow` is supposed to be a single diggit (6 or 7) but an empty blank space was hidden. 2. Switching the condition on `country_origin_code` as it was the opposite 3. Add a `flush_all` before calling the report during the export, to be sure the database is up to date. opw-5799126 Forward-Port-Of: odoo/enterprise#116230 Forward-Port-Of: odoo/enterprise#115791
This update resolves an issue where the AI systray button in the Odoo interface had excessive padding. The change removed unnecessary styling classes, streamlining the button's appearance and improving the user experience. This was a minor visual adjustment.
Original PR description
Remove the `btn` class because it adds additional padding, and eliminate the other unnecessary classes since the rules have already been applied in the `navbar.scss` file. task-5079952 Forward-Port-Of: odoo/enterprise#116423
A technical issue preventing the build of the l10n_ae_faf module in Odoo Enterprise has been resolved. The fix adjusts a reference within the tax view to avoid a dependency on a related module, ensuring smoother operation for UAE accounting features.
Original PR description
the inherited tax view form was raising an error since ubl_cii_tax_category_code is in the view under the module account_edi_ubl_cii and this module is not in the resolved dependencies of l10n_ae_faf but is usually autoinstalled. to fix this we are changing the xpath to be something that doesn't need the dependency of the account_edi_ubl_cii but only account. runbot-239123 Forward-Port-Of: odoo/enterprise#116163
This update resolves a bug where the color picker would unexpectedly close when users tried to change the color of icons within the HTML editor. The fix ensures that icons wrapped in styling elements are correctly handled, preventing the toolbar from closing prematurely and improving the user experience.
Original PR description
Problem: Trying to change the color of an icon causes the color picker to close when hovering over colors. Cause: When the icon (`span`) is wrapped inside a `font` element, the `toolbar_namespace_providers` for the icon return `false` because the `font` wrapper was not handled. As a result, the `namespace` becomes `undefined`, which causes the toolbar to close during selection changes. Solution: Handle cases where an icon is wrapped by styling elements (such as `font`) so the correct toolbar namespace is preserved. Steps to reproduce: - Insert a Font Awesome icon using `/media`. - Click on the icon to open the toolbar. - Try to apply a color or background color. - Notice the color picker closes instantly when hovering over colors. task-6109153 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#258729
This update fixes an issue where the HTML editor's undo function sometimes restored the selection to the wrong position. The fix ensures the selection is 'staged' before deletion, allowing for 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 resolves an issue where the power button test in the HTML editor was unreliable due to timing differences. The fix ensures the test consistently triggers, preventing potential delays and ensuring proper functionality. This improves the stability of the HTML editor feature.
Original PR description
The previous fix [1] removed one animation frame too many because the first one after arow down is needed in order to trigger the hiding of the power buttons in the first place, otherwise the timer can have elapsed without an animation frame when the runbot is slow. Then, for the other ones, the animation frame must not be awaited, otherwise we risk having an animation frame when the runbot waited more than the debouce delay, as explained in [1]. runbot-242466 [1]: https://github.com/odoo/odoo/pull/259654 Forward-Port-Of: odoo/odoo#262929 Forward-Port-Of: odoo/odoo#262679
This update fixes an issue where long translated labels in product category configuration forms (like 'Reserve Packagings') would overlap with other fields, creating a cluttered and difficult-to-use layout. The fix allows radio labels to wrap correctly, ensuring a cleaner and more organized user experience, especially on smaller screens.
Original PR description
Steps to reproduce: - Go to Accounting > Configuration > Product Categories - Open the "Goods" category in a narrow enough form layout - Check the "Reserve Packagings" radio field in Ukrainian #### Issue: In configuration forms, `.o_form_label` is forced to `white-space: nowrap`. Since radio option labels also use `.o_form_label`, long translated labels cannot wrap and can overlap the neighboring valuation field area. #### Fix: Exclude `.form-check-label` from that rule so radio labels can wrap without changing the behavior of regular form labels. opw-6086700 <img width="1872" height="966" alt="image" src="https://github.com/user-attachments/assets/db5e5803-b5e7-4904-a036-8bdfbb5504fc" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261284
This update resolves an issue where the product carousel on the website would fail when displaying a large number of product variants. The change reverts a previous update that introduced this problem, ensuring a smoother and more reliable experience for users browsing our products. This improves the overall user experience and prevents potential errors.
Original PR description
This reverts commit 3bf17962a12581c0b96ece61428cb749c7780569. Steps to reproduce ================== - Install website_sale - Go to Website > eCommerce > Product Tags - Create a new record - Go to site > Homepage - Edit - Click on catalog - Click on the last block (with the dynamic content) - Click on it - Select the created tag in the sidebar - Disable the "Show variants" option => A traceback occurs: KeyError 'all_product_tag_ids' opw-6197201 Forward-Port-Of: odoo/odoo#263235
This update corrects a bug in the Mod 349 tax report that prevented it from showing vendor bills with amounts less than 1 Euro. The fix adjusts how the report filters data, ensuring accurate reporting of all transactions, regardless of their value. This ensures compliance and accurate financial reporting.
Original PR description
Steps to reproduce: - Install l10n_es_reports. - Create a company from France. - Create and post a vendor bill for that company with an amount of 0.12 EUR. - Open the Tax Return report and switch to the Mod 349 report for the current year. - Click the 0.12 EUR amount line. Observed: - The journal items view opens with no records. Cause: - `_get_modelo349_audit_aml_domain()` calls `_custom_modelo349_common()`, which filters lines using: `float_compare(result_dict['value'], 0, precision_rounding=2)` - Using `precision_rounding=2` treats values below 1 as equal to 0, so those lines are excluded from the audit domain. Fix: - Replace `precision_rounding` with `precision_digits=2` so values are only treated as zero when they are effectively below 0.01. opw-6134339 Forward-Port-Of: odoo/enterprise#116102 Forward-Port-Of: odoo/enterprise#114776
This update resolves an issue where the system wasn't correctly tracking monetary values with currency information. The fix ensures that all monetary properties now accurately record the currency associated with them, preventing errors and improving the reliability of financial tracking within Odoo. This ensures accurate reporting and data integrity for financial transactions.
Original PR description
`_create_tracking_values_property` was missing `currency_field` in `col_info` when processing monetary-type properties, causing a traceback. Fixed by injecting it from the property definition dict. task-6175845 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#262353
This update resolves an error that occurred when users attempted to merge mailing lists within the Email Marketing module. The issue stemmed from an incorrect record ID being used during the merging process. This fix ensures that the merge function operates reliably and prevents the warning message from appearing.
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 from cog menu Click merge.
Warning:
```
odoo.http: Record does not exist or has been deleted.
(Record: mailing.list(6,), User: 2)
```
Cause:
- When the user clicks Merge, the `mailing.list.merge` form opens and `default_get()` is executed to populate defaults.
- At this point, `src_list_ids` is added to res in a structured format like `[(6, 0, ids)]` [1].
- Later, `res.get('src_list_ids')` is reused and assigned to `src_list_ids` [2].
- Taking `src_list_ids[0]` [3] returns `(6, 0, ids)`, and its first element `6` is incorrectly treated as a record ID and assigned to `dest_list_id`.
- This leads to an attempt to access a record with ID 6, which does not exist, causing the error.
Solution:
- Instead of reading `src_list_ids` back from `res` after it has been set, we initialize and reuse local variables (src_list_ids, active_ids) at the beginning of the method.
- This avoids relying on transformed values in `res` and ensures that `dest_list_id` is computed using a consistent and valid list record IDs.
[1]: https://github.com/odoo/odoo/blob/21877c09863222a237fe99334787ac46935dcca4/addons/mass_mailing/wizard/mailing_list_merge.py#L20-L22
[2]: https://github.com/odoo/odoo/blob/21877c09863222a237fe99334787ac46935dcca4/addons/mass_mailing/wizard/mailing_list_merge.py#L24
[3]: https://github.com/odoo/odoo/blob/21877c09863222a237fe99334787ac46935dcca4/addons/mass_mailing/wizard/mailing_list_merge.py#L26
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#262466This update fixes a technical issue that caused a traceback error when users replaced images within the HTML editor. The fix ensures the system correctly identifies the relevant block element during image deletion, preventing errors and improving stability. This enhances the overall user experience when working with images in Odoo.
Original PR description
Steps to Reproduce: - Go to the website - Add an image and set it to center alignment - Copy the image - Paste it into a To-Do note - Replace the image - Click the Delete button Description of the issue: - A traceback error occurs when deleting the image after replacement. Cause: - When an image has display: block, the closestBlock function returns the image element itself as the closest block. However, this causes an issue, After the image is deleted, fillEmpty is called on this closestBlock, which refers to an image that has already been removed from the dom resulting in a traceback. Solution: - Instead of finding the image's closestBlock directly, find the closestBlock of its parent element. - This ensures the correct block is found even when the image has display:block. task-6171827 Forward-Port-Of: odoo/odoo#262217
This update fixes an issue where payment reminders weren't being sent to newly duplicated subscriptions. The root cause was a shared 'last_reminder_date' field, preventing reminders from being triggered for the copy. The fix sets this field to 'false' for duplicate subscriptions, ensuring reminders are sent as expected.
Original PR description
Payment reminders are not sent to the duplicate of a subscription when a reminder has already been sent for the original subscription Steps to reproduce: 1. Install Subscriptions 2. Create a new…
Payment reminders are not sent to the duplicate of a subscription when a reminder has already been sent for the original subscription Steps to reproduce: 1. Install Subscriptions 2. Create a new subscription for customer Acme Corporation with product Office Cleaning Service (SUB), a Monthly recurring plan and in the Other Info tab, set the subscription Start Date to one week ago 3. Confirm the subscription 4. Go to Scheduled Actions and run the action "Sale Subscription: send reminder for subscriptions with no token" 5. Go back to the previously created subscription (see that a reminder email has been added in the chatter) 6. Duplicate the subscription and confirm the duplicate 7. Run the action "Sale Subscription: send reminder for subscriptions with no token" again 8. There are no reminder for the duplicate subscription Issue: The copy of a subscription uses the same `last_reminder_date`, preventing payment reminders to be sent here https://github.com/odoo/enterprise/blob/5a2ab62254cd5f684a3b1a0d7c0001b888c70d08/sale_subscription/models/sale_order.py#L2114-L2120 Solution: Set `copy=False` on the field `last_reminder_date` opw-6167356 Forward-Port-Of: odoo/enterprise#116335 Forward-Port-Of: odoo/enterprise#115509
This update corrects a display issue with the Folder report layout when using right-to-left (RTL) languages like Arabic. The change ensures that the report title's SVG image is mirrored, resolving a broken appearance that occurred when the system was configured for RTL. This improves the user experience for international users.
Original PR description
Steps: - Enable rtlcss - Install an RTL language (e.g Arabic or change english direction to rtl) - Enable RTL language - Go to settings - Configure report layout document - Select Folder type - Try to print an invoice - The header title style is broken the svg image used in the title should be mirrored to be displayed correctly on RTL opw-6140277 Forward-Port-Of: odoo/odoo#262830
This update prevents errors that occurred when loading paid orders with loyalty cards whose programs had been archived. Previously, the system would fail to open the partner list, disrupting the loyalty program functionality. This fix ensures smooth processing of paid orders with loyalty cards, improving the customer experience.
Original PR description
Before this commit, when loading a paid order with a loyalty card that its program had been archived, an error was raised when opening the partner list due to the missing program. opw-6166079 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261501
This update fixes a minor calculation error related to the reversal of Quebec Sales Tax (QST) in the Swiss payroll module. The change ensures accurate tax reporting, aligning with Swiss tax regulations and improving the reliability of payroll data. This update was prompted by a previous issue and is a routine maintenance fix.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update resolves an issue where child contacts linked to Spanish companies were incorrectly flagged as companies themselves. The change ensures that only companies with their own commercial entities are recognized as such, improving data accuracy for Spanish tax reporting. This prevents misclassification and ensures compliance.
Original PR description
Problem: When l10n_es is installed, child contacts of a Spanish company are incorrectly considered as companies as well. Steps to reproduce: 1. Install l10n_es 2. Create a company with a Spanish VAT number (e.g. ESA12345678) 3. Create a child contact under that company 4. The child contact will be incorrectly considered as a company Cause: If l10n_es is installed, any partner with a Spanish VAT number is considered as a company. Since child contacts share the same VAT as their company, they would be considered as companies as well, which is not correct. However, a partner should only be considered as a company if they are their own commercial entity. https://github.com/odoo/odoo/blob/e6bd6b106c376336594edd868c09505032008ac1/odoo/addons/base/models/res_partner.py#L819 Similar to https://github.com/odoo/enterprise/commit/3536cdd opw-6132064
This pull request updates the core spreadsheet component, addressing several minor bugs and improving chart rendering. Specifically, it fixes issues with chart visibility, error messages in charts, and improves the overall stability and performance of the spreadsheet functionality. This ensures a smoother and more reliable experience for users creating and viewing charts.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/fcdbaa36ed [FIX] chart: ensure chart values remain visible (remove clipping) [Task:…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/fcdbaa36ed [FIX] chart: ensure chart values remain visible (remove clipping) [Task: 5993132](https://www.odoo.com/odoo/2328/tasks/5993132) https://github.com/odoo/o-spreadsheet/commit/b4e8b1ffcb [FIX] Gauge chart: error message in the side panel [Task: 6179300](https://www.odoo.com/odoo/2328/tasks/6179300) https://github.com/odoo/o-spreadsheet/commit/dfe8311831 [FIX] grid overlay: unhide buttons visibility [Task: 6127335](https://www.odoo.com/odoo/2328/tasks/6127335) https://github.com/odoo/o-spreadsheet/commit/47fa9a64c9 [REF] lint: enforce braces for all control statements [Task: 6140827](https://www.odoo.com/odoo/2328/tasks/6140827) https://github.com/odoo/o-spreadsheet/commit/ac35849ad1 [FIX] package: add missing types dependency [Task: 6140820](https://www.odoo.com/odoo/2328/tasks/6140820) https://github.com/odoo/o-spreadsheet/commit/3784e2be25 [FIX] pivot: `getPivotCellFromPosition` will throw on invalid formula [Task: 6109696](https://www.odoo.com/odoo/2328/tasks/6109696) https://github.com/odoo/o-spreadsheet/commit/faf0440efd [FIX] format: don't humanize scientific format [Task: 6068353](https://www.odoo.com/odoo/2328/tasks/6068353) https://github.com/odoo/o-spreadsheet/commit/ff534e926a [FIX] zoom: scorecard chart rendering with zoom [Task: 6072348](https://www.odoo.com/odoo/2328/tasks/6072348) https://github.com/odoo/o-spreadsheet/commit/b307b467b9 [FIX] Data filter : clear/select all button [Task: 6075166](https://www.odoo.com/odoo/2328/tasks/6075166) 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 automatically refreshes the payment screen when the PIS payment status changes. Previously, users had to manually refresh the page to see the updated status, leading to delays. This improvement streamlines the payment process and ensures accurate payment information is always displayed.
Original PR description
There were some buttons like sign payment that were visible even when the PIS status was signed which needed a manual page refresh for the update to reflect, now it's reflected automatically on the PIS status change. task-5417365 Forward-Port-Of: odoo/enterprise#114299
This update fixes a visual inconsistency in the shop page's filmstrip. Previously, the filmstrip height varied depending on whether an image was present. Now, the filmstrip maintains a consistent height regardless, and a placeholder image is displayed when no image is available. This ensures a more polished and professional appearance for customers.
Original PR description
This commit fixes two issues regarding the filmstrip in the /shop page : - Adding a minimum height to the elements of the `default` and `bordered` designs, so that their heights remain consistent…
This commit fixes two issues regarding the filmstrip in the /shop page : - Adding a minimum height to the elements of the `default` and `bordered` designs, so that their heights remain consistent whether they contain an image or not. - Display a placeholder image for the `images` filmstrip if empty. task-5491550 | Before | After | |--------|--------| | <img width="613" height="103" alt="image" src="https://github.com/user-attachments/assets/852ef2ce-6265-4622-9e30-4e8112bbf264" /> | <img width="618" height="114" alt="image" src="https://github.com/user-attachments/assets/0933c0c2-a669-4236-9148-a25226214ce6" /> | | <img width="718" height="164" alt="image" src="https://github.com/user-attachments/assets/ac1b8d91-44fa-4ce0-8ddb-beba271a2423" /> | <img width="718" height="164" alt="image" src="https://github.com/user-attachments/assets/8676e9f9-074b-40e9-a75b-76561437c081" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255543
This update corrects a technical issue where a duplicate email snippet template was introduced. The fix removes this redundant template, ensuring consistent and accurate email formatting within the mass mailing functionality. This improves the reliability of email campaigns.
Original PR description
A duplicated snippet template was introduced in a prior [commit], and is removed through this commit. [commit]: https://github.com/odoo/odoo/commit/81e43a8dd70ffa2746740f7bd5904007e76d2260 task-5959046 Forward-Port-Of: odoo/odoo#262980
This update fixes an issue where multiple documents with the same subject wouldn't all be included in the downloaded zip file. The change ensures that all signed documents with identical subjects are correctly bundled together, preventing data loss during downloads. This improves the reliability of the Sign app for users.
Original PR description
## Issue In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file. ## Steps to reproduce 1. Install *Sign* (`sign`)…
## Issue
In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file.
## Steps to reproduce
1. Install *Sign* (`sign`)
2. Sign a same template twice, using the same subject S1. This gives us Documents D1 an D2.
3. (Optionally), sign the same template a third time, using a different subject S2, creating document D3.
4. In Sign > Documents, select the 2 (3) signed documents and click *Download*.
5. **In the resulting zip file, there's one folder S1 containing a single pdf document (D1) (and one folder S2 containing D3). Document D2 is missing from the zip file.**
## Cause
When generating the zip file, the path used for each document is `{subject}/{doc_name}`.
https://github.com/odoo/enterprise/blob/863abc99469c12acdebcab05788d566c370bb46f/sign/controllers/main.py#L276-L286
Neither of this attribute are unique, which means that two signed documents with the same name and subject can be downloaded simultaneously, but will then overwrite each other.
## Fix
Before version 18.3, the zip file would contain folders named with the (unique) request id, which would consistently make them distinct from one another. This behavior was changed by https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b to use the `sign_request.subject` instead. This commit adds the `request.id` after the subject to keep the clarity of the subject, and add the uniqueness of the id.
opw-6143128
Forward-Port-Of: odoo/enterprise#116179
Forward-Port-Of: odoo/enterprise#116013This update corrects an issue where free FSM services with prepaid invoicing were not appearing on invoices. The change ensures that these services, linked to FSM tasks, are now correctly included when generating invoices, resolving a previous error that prevented proper invoicing.
Original PR description
Changed _compute_qty_to_invoice in industry_fsm_sale, SaleOrderLine to no longer set qty_to_invoice to 0 for free services with prepaid invoicing. Previous changes seem intended for goods. Steps to reproduce: - Create service product with 0 price, prepaid invoice policy, creates FSM task - Create/Confirm sales order with created product - Attempt to create invoice, get 0 quantity to invoice error Current Behavior: Free services linked to FSM tasks do not appear on invoices due to compute 0 qty_to_invoice Expected Behavior: Prepaid Invoice Services linked to FSM tasks appear on invoices. Other invoice policies can be invoiced through the generated sales order lines (timesheets, delivered quantity, etc.) opw-6047992 Forward-Port-Of: odoo/enterprise#116413 Forward-Port-Of: odoo/enterprise#113718
This update fixes a discrepancy in how invoiced quantities are calculated on Sales Orders, specifically when dealing with packaged products. Previously, rounding differences led to an inaccurate Invoiced Quantity. The change ensures consistent rounding, aligning Delivered and Invoiced Quantities for accurate invoicing.
Original PR description
Steps to reproduce: --- - Install the `Sales and Inventory` modules. - Enable `Units of Measure & Packagings` from Settings. - Go to `Sales > Configuration > Products > Units & Packagings.` - Create…
Steps to reproduce: --- - Install the `Sales and Inventory` modules. - Enable `Units of Measure & Packagings` from Settings. - Go to `Sales > Configuration > Products > Units & Packagings.` - Create a new unit > Pack of 12 with quantity 12 and unit Units. - Create a new product > enable Track Inventory, set Quantity On Hand to 100, and in the `sales` tab, under `Upsell & Cross-Sell`, set `packaging` as` Pack of 12`. - Create a Sales Order > add the product and set the quantity to 3, with a unit Pack of 12. - Confirm the order and validate the delivery. - Create and confirm the invoice. - Return `1 unit` from the delivery and validate it. - From the invoice, create a `credit note` with quantity 1 unit and confirm it. - Go back to the Sales Order. Issue: --- - On the Sales Order: `Delivered Quantity` shows` 2.92` while `Invoiced Quantity` shows `2.91`. Root cause: --- - At [1] & [2], in `_compute_qty_invoiced`, the `_compute_quantity` method is called without specifying a `rounding_method`, so it defaults to `UP` (1/12 rounded to 0.09), while `_compute_qty_delivered` explicitly uses `HALF-UP` (1/12 rounded to 0.08), leading to inconsistent rounding. Solution: --- - In this PR, the same rounding method (HALF-UP) is applied when computing the invoiced quantity to ensure consistency with the delivered quantity. [1]https://github.com/odoo/odoo/blob/64c1f1a7d3b24ca613d0b29a2412f1094fea08d9/addons/sale/models/sale_order_line.py#L896-L912 [2]https://github.com/odoo/odoo/blob/64c1f1a7d3b24ca613d0b29a2412f1094fea08d9/addons/sale_stock/models/sale_order_line.py#L193-L209 opw-6073690 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263011 Forward-Port-Of: odoo/odoo#258024
This update resolves an issue where users without full project access were unable to view project details. The fix adds a temporary `sudo()` call to grant access, ensuring timesheet users can correctly see the project information they're assigned to. This improves usability for all users.
Original PR description
### Steps to reproduce: - Download 'Sales', 'Project', 'Employees', and 'Timesheets' apps - Create an employee and link them to a user that doesn't have any access rights except to 'Timesheets =…
### Steps to reproduce:
- Download 'Sales', 'Project', 'Employees', and 'Timesheets' apps
- Create an employee and link them to a user that doesn't have any access rights except to 'Timesheets = User:own timesheets'
- In Sales, create a service with the following specifications:
- 'Create on Order' is 'Project'
- 'Invoicing Policy' is 'Based on Timesheets'
- Create a new quotation that requests this service and click 'Confirm'
- In 'Project' > 'Configuration' > 'Projects', choose the newly created project and add a line that has the new employee in the 'Invoicing' tab
- Log in as that employee and go to 'Timesheets'
- Create a new entry for the newly created project
- Click the project's name
> Access Error: You are not allowed to access 'Collaborators in project shared'
(project.collaborator) records.
### Cause of Issue:
This happens because the user doesn't have access rights to the 'Project' app, hence they don't have access to `collaborator_ids` which are retrieved here. https://github.com/odoo/odoo/blob/3dfb2849acd899ccbf4048f2a15dff3c74aed96d/addons/project/models/project_project.py#L1113-L1120
### Fix:
Since an access to the 'Projects' app isn't necessary to view a project assigned to you, `sudo()` is necessary for hr_timesheet users without project access rights.
opw-6074833
Forward-Port-Of: odoo/odoo#262884
Forward-Port-Of: odoo/odoo#258370This update fixes a misleading notification that appeared when users discarded replies in the message history. Previously, closing the composer triggered a 'Message posted' notification even without sending a message. Now, notifications are only displayed when a message is actually sent, improving clarity and accuracy for users.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- When replying to messages from the History (Inbox) view, opening the full composer and…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- When replying to messages from the History (Inbox) view, opening the full composer and discarding it could incorrectly trigger a toast notification indicating that a message was posted. This behavior is misleading, as no message is actually sent when the composer is discarded. **Current behavior before PR:** ---------------------------------------------- - Replying to a message from History opens the full composer - Discarding the full composer closes the dialog normally - A “Message posted” toast is shown even though no message was sent - Notification logic depends on dialog close behavior, leading to incorrect triggers **Desired behavior after PR is merged:** ---------------------------------------------- - Discarding the full composer does not show any notification - Notifications are only shown when a message is actually sent Task-5431682 ---------------------------------------------- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262004 Forward-Port-Of: odoo/odoo#241705
This update fixes an issue where child contact zipcodes were incorrectly overriding manually entered zipcodes, even when a parent contact had a defined city and zipcode. The change ensures child contact zipcodes now accurately reflect the parent's city zipcode, improving address consistency and data accuracy.
Original PR description
Currently, when a res.parter is given a parent, base_address_extended runs _onchange_city_id. This sees the city change and alters the zipcode to match the city's zipcode. However, this field can be…
Currently, when a res.parter is given a parent, base_address_extended runs _onchange_city_id. This sees the city change and alters the zipcode to match the city's zipcode. However, this field can be manually altered to differ from the city's zipcode. Thus, when a parent has a city, the zipcode will override the manually entered zipcode for a child contact. This commit solves this by checking for the parent's zipcode before blindly setting it to the city's zipcode. Steps to reproduce: 1. Install `base_address_extended` 2. Enable "Enforce Cities" on a country `(res.country)` 3. Add a city to that country with a zipcode of 123 4. Create a new contact (parent) and select the configured country 5. Select the city (the zipcode will fill in from the city's zipcode) 6. Overwrite the zipcode with 456 7. Save the contact (parent) 8. Create a new contact (child) 9. Set the company to the parent contact and save 10. The zipcode of the child will be the city's zip (123), not the parents' zip (456), thus the addresses will be different, and the child contact type will be 'other' opw-6131280 closes #262651
This update removes a redundant process in our account management system that was previously used to handle electronic invoices from Belgium (BE). Previously, the system was uncertain about which invoice format to use, leading to unnecessary calculations. Now that we consistently use the 0208 format for BE invoices, this fix streamlines the process and improves efficiency.
Original PR description
When adding peppol, we didn't know if we needed to use the 9925:BE or 0208. Therefore, we switched between them if the endpoint was not found. This has no more use today as we use 0208. opw-5976574 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261307 Forward-Port-Of: odoo/odoo#258297
This update adds a new upgrade script that automatically adds the latest UNSPSC codes to the Odoo database. Previously, these codes could only be added during initial module installation, creating a delay in updating existing data. This change ensures that Odoo always reflects the most current UNSPSC classifications.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#116063 Forward-Port-Of: odoo/enterprise#112652
2 changes
Resolved issues and error corrections
This update fixes a minor accounting error related to the reversal of source tax (QST) calculations in Odoo's Swiss payroll module (l10n_ch_hr_payroll). The change ensures accurate tax reporting by correctly calculating and reversing the minimum IS (Incentive Scheme) amount, improving financial compliance.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update fixes a limitation in how Odoo updates its UNSPSC product codes. Previously, new codes could only be added during initial installation, not subsequent updates. A new upgrade script now automatically adds the latest UNSPSC codes to the database, ensuring our product data remains current. Existing product codes are not modified.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#116063 Forward-Port-Of: odoo/enterprise#112652
4 changes
Resolved issues and error corrections
This update ensures a consistent look and feel for product and combo product cards across the point-of-sale system. Previously, combo items had a different background style, now they match the standard product cards, creating a more polished and user-friendly experience for customers.
Original PR description
In this commit: --- - Applied the same background styling to combo items as normal product cards. - Ensured visual consistency between product cards on the product screen and in combo configuration popup. | Before | After | | -------- | -------- | | <img width="979" height="447" alt="image" src="https://github.com/user-attachments/assets/6d91e1d7-99d5-47c4-a1bf-6604765d08d5" /> | <img width="979" height="453" alt="image" src="https://github.com/user-attachments/assets/602c9a8f-9e56-4633-84bf-0710cb5debab" /> | task-6103260
This update fixes an issue where public holidays without a working schedule weren't appearing in payroll reports. The fix modifies the system's search criteria to include all public holidays, regardless of whether they have a defined working schedule. This ensures accurate reporting for all holiday types.
Original PR description
### Steps to reproduce: - Create a public holiday without working schedule - Generate a SD worx for the month of the public holiday - Notice the public holiday is not shown in the report ### Cause: When searching for the public holiday we don't take into condsideration the holidays without working schedule. ### Fix: Modify the domain to fetch those holidays as well opw-5500070 Forward-Port-Of: odoo/enterprise#114900
This update fixes an issue where products with public categories weren't appearing on the website. The change reverts a previous update that was causing this problem, allowing products in public categories to be visible to customers. This ensures all products are accurately displayed, improving the customer experience.
Original PR description
This commit reverts 9ce0bf477b4490e654dcdd7e73c7813f1f68248c which is breaking stable. To reproduce: 1- Create a product with public category set and website published. 2- Assign a company to the product. The product under category is not shown in the website. opw-6197535 Forward-Port-Of: odoo/odoo#263248
This update removes a redundant process in our account EDI system that was previously used to handle different data formats for electronic invoices from Belgium (BE). Previously, the system was switching between two formats, but now we exclusively use the standard 0208 format. This simplifies the system and improves efficiency.
Original PR description
When adding peppol, we didn't know if we needed to use the 9925:BE or 0208. Therefore, we switched between them if the endpoint was not found. This has no more use today as we use 0208. opw-5976574 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261307 Forward-Port-Of: odoo/odoo#258297
2 changes
Resolved issues and error corrections
This update resolves an error that occurred when the account_followup module was installed without the related payment module. The fix ensures the system doesn't attempt to access a missing payment method, preventing template rendering failures for payment reminder emails. This ensures consistent email functionality.
Original PR description
Repro steps: 1. Initialize a new DB 2. Install account_followup module without payment module 3. Go to Email templates > Payment reminder 4. Click on Preview You will get an error Failed to render QWeb template for Mail Template: 'Payment Reminder' (ID: 9) Target Model: res.partner Language context: en_US Error: Error while render the template KeyError: 'payment.method' Root cause: The method `_show_pay_now_button` that was being called in the template email_template_followup_1 was using self.env['payment.method'] even tho payment module is not a dependency of account_followup Fix: The introduced fix ensures that 'payment.method' model exists before attempting to use it build_error-243030 Forward-Port-Of: odoo/enterprise#116079
This update fixes a visual issue in the Point of Sale (POS) system where the displayed change amount was not showing the correct negative value. The change ensures that the POS interface accurately reflects the amount of change given to customers, improving the user experience and reducing potential errors.
Original PR description
In this commit: --------------- - The tours are updated to adapt the change as now frontend display the change amount with the correct (negative) sign. Community PR: https://github.com/odoo/odoo/pull/256776 task: 6074620 Forward-Port-Of: odoo/enterprise#112560
25 changes
New functionality added to Odoo
This update introduces a new button within the subscription and rental modules, allowing sales users to quickly create quotations using pre-defined templates. This streamlines the quotation process and improves efficiency. The change will be enabled once the sale_management module is installed.
Original PR description
This PR completes the override of the New button, allowing users to see a custom New button and directly select a template from it. This new button will be enabled as soon as the sale_management module (which contains the templates) is installed. These changes are applied in both the subscription app and the rental app (for list and kanban and form views). Community PR: https://github.com/odoo/odoo/pull/258679 Upgrade PR: https://github.com/odoo/upgrade/pull/9913 task-6088445
Enhancements to existing features
This update streamlines the Odoo Enterprise module by removing redundant code related to worksheet property editing. The changes consolidate custom code specifically for worksheet templates, improving the module's overall structure and efficiency. This results in a cleaner codebase and potentially faster performance.
Original PR description
This commit moves custom code related to worksheet in that module since that custom code to make the definition of properties field editable in the form view is only useful in worksheet template and so it is not really needed to have it in web module.
Resolved issues and error corrections
This update resolves a minor issue that occasionally caused the Gantt chart's side panel to fail during edge scrolling tests. The fix ensures the chart's elements are consistently accessible, improving overall stability and reliability of the Gantt chart feature. This prevents disruptions for users relying on this functionality.
Original PR description
This commit resolves intermittent flakiness in the Gantt side panel edge scrolling tests. Previously, the test could fail because the target pill element would occasionally become unbound (detached from the DOM) following the unsuccessful drag-and-drop sequence. The test logic has been updated to ensure the element reference is re-queried appropriately. runbot-error-243446 Forward-Port-Of: odoo/enterprise#116059
This update simplifies the account reports module by removing unused parameters from a method. This small change improves the efficiency of the system without impacting functionality. It's a routine maintenance task to keep the code clean and performant.
Original PR description
In account return, the `_get_return_name` and `_get_period_name` method uses `minimal` default parameter which does not seems to be used anywhere else, hence it always evaluates to `False` and this leads to unnecessary condition evaluations. This commit removes this default parameter from the related methods and make the it slightly more simpler :-)
This update prevents users from creating joint committees directly from the employee form. This change reduces the risk of configuration errors and improves the overall stability of the HR payroll module. It ensures that committee setup is managed through the correct processes.
Original PR description
Disabling the creation of joint committee from the employee form, as its configuration is not something user are supposed to create on the fly, it can quickly lead to errors. task-6187649
This update addresses an issue where incorrect NISS codes (identification numbers) could cause errors when populating employee birthdates. The system now gracefully handles these invalid codes, preventing errors and ensuring accurate data entry. Additionally, a warning is displayed if a correctly entered birthdate is later changed, highlighting potential inconsistencies.
Original PR description
NISS codes are 11-digit-long codes that encode information about a person. The first 6 should be encoding the birthday in the format YYMMDD but sometimes the given code indicates a date that doesn't exist. One example of such a code is 88000119769 and we should allow these codes to be inserted. The last two digits of the code are computed based on the first 9, so if those are correct we suppose there was no typo and the date is meant to be like that. In a function called _parse_niss we extract some information from the code to populate some fields on the employee model, however if the date is not correct a traceback is thrown. Here we catch the error and we just avoid updating the birthday in these cases. In cases were, instead, we put a correct NISS and the birthday gets autofilled but we later change the birthday, we add a Dashboard Warning signaling this inconsistency. Task: 6180252
This update streamlines the sign refusal process by ensuring the email notifications now correctly include the name of the partner who refused to sign. Previously, the system requested redundant information (name and email) when a sign request was sent directly to a known signer. This change improves user experience and data accuracy.
Original PR description
When a sign request was sent directly to a known signer (not via a shared link), the refusal dialog asked for the signer's name and email even though it's already available on their partner. Also update the refusal emails title to reflect the actual partner name who refused to sign. task-6146458
This update fixes a problem where demo data in the Odoo test database caused ESG report tests to fail. The team adjusted the report's date and related records to an ancient date, eliminating interference from external data and ensuring reliable test results. This improves the stability of the ESG reporting process.
Original PR description
There was an issue when setting in draft all the account moves of the test DB before running the ESG report tests. In that process, some account moves were actually removed, which results in a 'Not found' record error. As the ESG report searches for all the account moves given a period (in all companies of the DB), some demo data could make the test to fail. We handle that issue by changing the date of the report and the related records to a very ancient date, to ensure that no external data will disturb the test. We also make that change for tests related to the HR part of the ESG report. runbot-error: https://runbot.odoo.com/odoo/runbot.build.error/242321 Forward-Port-Of: odoo/enterprise#116257
This update fixes a minor issue in the Swiss payroll module (l10n_ch_hr_payroll) related to the calculation of minimum income tax (min-IS) during the reversal of Quebec Sales Tax (QST). The change ensures accurate tax reporting, aligning with Swiss tax regulations and improving financial reporting accuracy.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update resolves an issue where multiple signed documents with the same subject were not being correctly downloaded into a single zip file. The fix ensures that all documents with identical subjects are included in the generated zip file, improving the user experience and preventing data loss. This change was made to maintain consistent behavior across versions.
Original PR description
## Issue In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file. ## Steps to reproduce 1. Install *Sign* (`sign`)…
## Issue
In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file.
## Steps to reproduce
1. Install *Sign* (`sign`)
2. Sign a same template twice, using the same subject S1. This gives us Documents D1 an D2.
3. (Optionally), sign the same template a third time, using a different subject S2, creating document D3.
4. In Sign > Documents, select the 2 (3) signed documents and click *Download*.
5. **In the resulting zip file, there's one folder S1 containing a single pdf document (D1) (and one folder S2 containing D3). Document D2 is missing from the zip file.**
## Cause
When generating the zip file, the path used for each document is `{subject}/{doc_name}`.
https://github.com/odoo/enterprise/blob/863abc99469c12acdebcab05788d566c370bb46f/sign/controllers/main.py#L276-L286
Neither of this attribute are unique, which means that two signed documents with the same name and subject can be downloaded simultaneously, but will then overwrite each other.
## Fix
Before version 18.3, the zip file would contain folders named with the (unique) request id, which would consistently make them distinct from one another. This behavior was changed by https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b to use the `sign_request.subject` instead. This commit adds the `request.id` after the subject to keep the clarity of the subject, and add the uniqueness of the id.
opw-6143128
Forward-Port-Of: odoo/enterprise#116179
Forward-Port-Of: odoo/enterprise#116013This update removes unnecessary padding from the AI systray button, resulting in a cleaner and more consistent look. The change was made to streamline the styling and ensure the button's design aligns with the overall application theme. This is a minor visual improvement.
Original PR description
Remove the `btn` class because it adds additional padding, and eliminate the other unnecessary classes since the rules have already been applied in the `navbar.scss` file. task-5079952 Forward-Port-Of: odoo/enterprise#116509 Forward-Port-Of: odoo/enterprise#116423
This update resolves a problem where a tour element was incorrectly triggered in the VoIP feature, causing unexpected behavior. The fix narrows the trigger to only the keypad tab, ensuring the tour initiates correctly when users switch to that mode. This improves the user experience for VoIP calls.
Original PR description
Similar as [1], trigger `.o-voip-Softphone .o-voip-countryFlag` can be found on both recent and keypad tab. It's possible to find it before dom actually change to keypad tab. In this commit, we narrow down the trigger so that it can only be found on keypad tab. [1]: d838dd6dccdaeb8e9d6676ef4ccb5bbced4441a9 Forward-Port-Of: odoo/enterprise#116535
This update resolves a few minor issues related to appointment scheduling within the Enterprise module. Specifically, it ensures resources are correctly filtered based on appointment types, addresses a warning in the search filter, and corrects a problem where the wrong customer form was used when booking appointments from the Gantt view. These changes enhance the user experience and data accuracy.
Original PR description
1. Filter resources based on the appointment type When adding a closing day from the Gantt view, every resource could be selected, even those not related to the current appointment type. Now, if a default appointment type is set in the context, resources are filtered to only show those related to that appointment type. 2. Warning with PosAppointmentSearchFilter A console warning was logged because the empty props of the PosAppointmentSearchFilter component were not explicitly declared. 3. Change partner form view when booking from the Gantt view When creating or editing a booking from the Gantt view, we could select a customer, but the default partner form was used instead of the one already created for the PartnerList component. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6147711 Forward-Port-Of: odoo/enterprise#114677
The Gantt view now accurately displays operation durations in hours instead of minutes. This change was necessary to ensure that production planning timelines are presented correctly, improving the reliability of work order scheduling. This fix resolves a discrepancy identified during a recent formatting update.
Original PR description
Issue ----- In the gantt view, operation duration is displayed as minutes but is actually in hours. Steps to reproduce ----- - Enable work orders - Create a product with a BoM - Add an operation with some duration on the BoM - Creation a MO for the product, confirm & plan - Open the gantt view > Duration is displayed in minutes Cause ----- Overlooked by the rework of formatter done in b764335. Value is in hours but unit is set to "minutes". https://github.com/odoo/enterprise/blob/8281fe6c830dce94ca851bf4bd5c768443721f17/mrp_workorder/static/src/mrp_workorder_gantt_renderer.js#L46-L49 ----- Ticket: opw-6109524 Forward-Port-Of: odoo/enterprise#113829
This update fixes an issue where a blank box was sometimes visible on smaller screens when rental dates weren't being entered. We've adjusted the display logic to ensure the box only appears when rental dates are actually selected, improving the user experience. This change focuses on the 'sale' module.
Original PR description
Previously, the `<div>` was displayed even when its content was hidden due to the "invisible" attribute. To fix this, we move the visibility condition to the parent. This works since the `<button>` (in charge of updating rental line prices) already has a stricter invisibility condition. Note that `.o_input_box` doesn't exist anymore. Related commit: https://github.com/odoo/enterprise/commit/7cdfe5bd1541380d746f3208bc198fb89f7cb22a Forward-Port-Of: odoo/enterprise#116429
This update resolves an issue where inactive reports were appearing in report search results, and a bug related to the VAT Return (CZ) report. The fix ensures accurate report filtering and prevents crashes when selecting reports, improving the user experience for financial reporting.
Original PR description
When searching for reports through the search panel inactive reports still show up in the result, this change hide the inactive variant reports from the search result. Also, fixes a minor bug related the l10n_cz, When search for VAT Return (CZ) it would cause a bug due to missing the target report to look into. task: 6149101 Forward-Port-Of: odoo/enterprise#115500
This update automatically adds new UNSPSC codes to the Odoo database when the product module is updated. Previously, these codes could only be added during initial installation, creating a delay in reflecting the latest industry standards. This change ensures our product data remains current and accurate.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#116063 Forward-Port-Of: odoo/enterprise#112652
Features or functions removed from Odoo
This update removes unnecessary data from notifications related to knowledge articles. This change streamlines the notification process, improving performance and reducing potential data storage needs. It's a standard improvement for the Enterprise version of Odoo.
Original PR description
Enterprise counter-part. https://github.com/odoo/odoo/pull/260476
This update removes a redundant stage in the payment terminal drivers for Odoo Enterprise. This simplifies the drivers and reduces network traffic by eliminating a stage that isn't used in Point of Sale (PoS) transactions. The change was made to improve efficiency and performance.
Original PR description
To simplify drivers and reduce the amount of requests on the network, we remove the WaitingForCard stage on payment terminals (we don't use this stage in PoS). see odoo/odoo#263057 task: 6196796
This pull request removes outdated and unused code from several Odoo Point of Sale (POS) modules. This cleanup improves the overall stability and maintainability of the system, reducing potential future issues. The changes primarily focus on internal code improvements within the POS functionality.
Original PR description
https://github.com/odoo/odoo/pull/257287 Task 6085691
This update removes outdated code related to a previously removed component, specifically `o.__TipTemplateDef`, from several test files within the HR and payroll modules. This cleanup improves the efficiency of the testing process and ensures the codebase remains streamlined.
Original PR description
…TemplateDef With this commit, we remove steps that use unused odoo.__TipTemplateDef that was removed in https://github.com/odoo/enterprise/commit/18217a3d4d2580f4216daf6fdcc57cddcb2c757b
Code cleanup and technical improvements
This update improves the speed of Odoo's automated tests by optimizing how test environments are set up. Specifically, a change was made to the setup process, leading to faster test execution times. This results in quicker feedback during development and a more efficient testing cycle.
Original PR description
Enterprise counter-part. https://github.com/odoo/odoo/pull/252626
This update refactors how access tokens are used within the Enterprise documents module, enhancing its flexibility and reusability across other Odoo controllers. This change improves the overall architecture and makes it easier to integrate documents with other features within the system. It's a routine maintenance update focused on code quality.
Original PR description
This improves extensibility and reuse in other controllers. Task-6196107
This update prepares Odoo for OWL3 by adding `.this` to template variables that reference component data. This change is necessary to ensure proper functionality with the new OWL3 rendering engine. Manual adjustments were also made to specific modules to accommodate this update.
Original PR description
[REF] *: run rendering context migration script on inline xml In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Script PR: #247965 If this script did an incorrect change, add variable to whitelist (see script PR) or send msg to JESC. task: OWL3 prep - add this. to template variables Community PR: odoo/odoo#262992
This update streamlines testing for Odoo's document management features by consolidating tests across different bridges and modules. It also improves how company settings are handled when documents are moved, and avoids unnecessary edits within test code, ensuring more reliable and organized testing.
Original PR description
Additionally, improving check_company use on res.config.settings in bridges. As the documents mixins are not used in `documents`, we've previously been adding tests about them across bridges as usage arose. This was impractical because these tests are spread, need to be moved when the mixin use changes in that bridge, etc. Note on test changes: The most 'generic' tests are moved out of each bridge while the specific logic ones are left in place and a variant is added to `test_documents_full`. Task-4855358
4 changes
Enhancements to existing features
This update clarifies the messaging when users don't have enough credits for a purchase. The wording has been simplified from 'not enough credits' to simply 'Buy', making the process more intuitive for customers. This change improves the user experience and encourages purchases.
Original PR description
Better wording when not enough credits (from _Buy more credits_ to just _Buy_) Task-6128791
Resolved issues and error corrections
This update resolves an issue where multiple documents with the same subject wouldn't all be included in the downloaded zip file. The fix ensures that all signed documents with identical subjects are correctly bundled together, improving the reliability of the download process. This prevents users from missing important documents.
Original PR description
## Issue In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file. ## Steps to reproduce 1. Install *Sign* (`sign`)…
## Issue
In the *Sign* app, when attempting to download multiple documents with similar subjects, only one document appears in the resulting zip file.
## Steps to reproduce
1. Install *Sign* (`sign`)
2. Sign a same template twice, using the same subject S1. This gives us Documents D1 an D2.
3. (Optionally), sign the same template a third time, using a different subject S2, creating document D3.
4. In Sign > Documents, select the 2 (3) signed documents and click *Download*.
5. **In the resulting zip file, there's one folder S1 containing a single pdf document (D1) (and one folder S2 containing D3). Document D2 is missing from the zip file.**
## Cause
When generating the zip file, the path used for each document is `{subject}/{doc_name}`.
https://github.com/odoo/enterprise/blob/863abc99469c12acdebcab05788d566c370bb46f/sign/controllers/main.py#L276-L286
Neither of this attribute are unique, which means that two signed documents with the same name and subject can be downloaded simultaneously, but will then overwrite each other.
## Fix
Before version 18.3, the zip file would contain folders named with the (unique) request id, which would consistently make them distinct from one another. This behavior was changed by https://github.com/odoo/enterprise/commit/4254542e8fb4ce3b2b9b46c624d86f7fcac8df7b to use the `sign_request.subject` instead. This commit adds the `request.id` after the subject to keep the clarity of the subject, and add the uniqueness of the id.
opw-6143128
Forward-Port-Of: odoo/enterprise#116179
Forward-Port-Of: odoo/enterprise#116013This update resolves an issue where free FSM services with prepaid invoicing were not appearing on invoices. The change adjusts a calculation to ensure these services are correctly reflected when creating invoices, allowing for accurate billing and reporting. This improves the functionality for handling service-based sales.
Original PR description
Changed _compute_qty_to_invoice in industry_fsm_sale, SaleOrderLine to no longer set qty_to_invoice to 0 for free services with prepaid invoicing. Previous changes seem intended for goods. Steps to reproduce: - Create service product with 0 price, prepaid invoice policy, creates FSM task - Create/Confirm sales order with created product - Attempt to create invoice, get 0 quantity to invoice error Current Behavior: Free services linked to FSM tasks do not appear on invoices due to compute 0 qty_to_invoice Expected Behavior: Prepaid Invoice Services linked to FSM tasks appear on invoices. Other invoice policies can be invoiced through the generated sales order lines (timesheets, delivered quantity, etc.) opw-6047992 Forward-Port-Of: odoo/enterprise#116413 Forward-Port-Of: odoo/enterprise#113718
This update resolves a technical issue preventing users from correctly booking appointments with flexible scheduling and capacity limits. The fix addresses a problem where the system incorrectly processed boolean values during the appointment slot calculation, leading to a booking error. This ensures appointments with multiple participants and capacity management now function as expected.
Original PR description
### Steps to reproduce: - Download "Appointment" and "Website" - Configure an appointment to be booked by resource with multiple seats and manage capacity - Set the schedule to be flexible and configure valid time slots - Go to the booking page and select the number of participants > Traceback: cannot unpack non-iterable bool object ### Cause of Issue: The `_get_appointment_slots` method unpacks the `appointment_slots_force_month` directly: https://github.com/odoo/enterprise/blob/4ca3dddaeadeb6c937d555cc4da8fb4bb61fea35/appointment/models/appointment_type.py#L871 Since the `appointment_slots_force_month` value was explicitly set to `False` in https://github.com/odoo/enterprise/blob/4ca3dddaeadeb6c937d555cc4da8fb4bb61fea35/appointment/controllers/appointment.py#L1063-L1070 the unpacking operation failed because it tried to unpack a boolean instead of a tuple. opw-6197653
13 changes
Resolved issues and error corrections
This update ensures that the terms and conditions displayed to customers are translated into their preferred language, rather than the administrator's. Previously, the system incorrectly used the administrator's language, leading to inconsistent and potentially confusing customer experiences. This fix corrects a technical issue and improves the accuracy of translated content.
Original PR description
## Problem
When `terms_type == 'html'`, a `context` dict with the partner's language was created but immediately deleted without ever being applied. As a result, `_()` ran in the admin's language instead of the partner's language:
```python
context = {'lang': order.partner_id.lang or self.env.user.lang}
order.note = _('Terms & Conditions: %s', baseurl)
del context # context was never used
```
This was introduced in 466ee8f5fe48 and left unaddressed when 07b9d0e2307b fixed the plain-text branch.
## Fix
Replace the unused context dict with `with_context(lang=lang)` so the translation is evaluated in the partner's language (or the user's language as fallback), consistent with the `elif` branch below.
## Steps to reproduce
1. Configure HTML terms and conditions with translations in two languages
2. Create a sale order for a partner with a language different from the admin's
3. The `note` field stores the translation in the admin's language instead of the partner'sThis update ensures that invoices sent to users in the 'smp_registration' state (pending) are now correctly processed by the system's automated invoice retrieval process. Previously, these invoices were missed, leading to potential delays. This change improves the efficiency of invoice handling and ensures all incoming invoices are captured.
Original PR description
Previously, invoices sent to users in "smp_registration" state (pending) were not fetched by the cron. This commit allows retrieval of incoming invoices while the user is still in "smp_registration" state (pending). task-6110730 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where pressing backspace at the edge of a button caused a crash. It also corrects the backspace behavior, ensuring that the cursor accurately deletes characters when pressing backspace at the button's left edge. This enhances the overall stability and usability of the HTML editor.
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
This update corrects a bug where the 'Purchase Orders' button disappeared from analytic accounts when the account plan was changed. The fix adjusts how the system searches for purchase order counts, ensuring it correctly identifies orders linked to the updated analytic account plan. This ensures users can always access relevant purchase order information.
Original PR description
# How to reproduce - Enable the analytic accounting in the settings - Create a PO - Add a PO line - Set the Analytic Distribution of that PO line to an Analytic Account of your choice - Confirm the…
# How to reproduce
- Enable the analytic accounting in the settings
- Create a PO
- Add a PO line
- Set the Analytic Distribution of that PO line to an Analytic Account of your choice
- Confirm the PO
- Create a Vendor Bill from that PO and confirm the VB
- Go to the Analytic Account chosen before
- Change the Plan of that Analytic Account
# The problem
When the Plan is not set to the "Project Plan", the Purchase Orders smart button disappears
# Why
The Purchases Orders smart button is invisible if the variable purchase_order_count is equal to 0. That field is computed by a function that does a search with the following domain :
```py
[('order_line.invoice_lines.analytic_line_ids.account_id', '=', account.id)]
```
When we change the Plan of the Analytic Account, analytic_line_ids.account_id is set to NULL, so the search return nothing.
Why is that field set to NULL ?
Well, to reference its plan, an Analytic Line does not use a python-defined field. In fact, each time a new Analytic Plan is added to the database, a new column is added to the Analytic Line model. That column's name is x_plan{plan.id}_id or, for the specific case of the "Project Plan", it is account_id
When the Plan of an Analytic Account is changed, it takes every Analytic Line associated with that Plan and switch which column containing the id of the Analytic Account.
Take for exemple the following Analytic Line :
```
(account_id = NULL, x_plan2_id = NULL, x_plan3_id = 1)
```
When the associated Analytic Account's Plan is changed to the "Project Plan", it becomes :
```
(account_id = 1, x_plan2_id = NULL, x_plan3_id = NULL)
```
So, we need to adapt to search so that it uses the right plan's name.
opw-5897037
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves an issue preventing the sales team from opening milestones within projects created from sales orders. The fix utilizes a temporary bypass of access restrictions to correctly calculate quantities, ensuring users can now manage milestones effectively. This improves the sales process by allowing for better project tracking.
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#245392
This update fixes an issue where public holidays without a defined working schedule were not appearing in payroll reports. The change expands the system's search criteria to include all public holidays, regardless of whether they have a working schedule associated with them. This ensures accurate reporting for all holiday scenarios.
Original PR description
### Steps to reproduce: - Create a public holiday without working schedule - Generate a SD worx for the month of the public holiday - Notice the public holiday is not shown in the report ### Cause: When searching for the public holiday we don't take into condsideration the holidays without working schedule. ### Fix: Modify the domain to fetch those holidays as well opw-5500070 Forward-Port-Of: odoo/enterprise#114900
The budget report was incorrectly displaying amounts from analytic lines that weren't linked to any budgets. This update fixes a bug in the SQL query that prevented the report from properly filtering out these unbudgeted lines. Users will now see only budgeted amounts in the report.
Original PR description
**Issue:** Budget report shows analytic lines that are not linked to any budget report lines. **Steps to reproduce:** In a new company with no analytic budgets, - Create one analytic item. - Open the budget report and remove the default "open budget" filter. You will see the amount from the analytic line (in pivot view) or the whole line (in list view) even though the analytic line doesn't belong to any budget. **Cause:** The SQL else clause is not only covering the `ba.budget_type = 'both'` but also the case where there is no matching budget `ba.budget_type = None`. **Fix:** Explicitly handle both cases `ba.budget_type = 'both'` and the else (`ba = None`). opw-6051696
This update fixes a flaw in the Microsoft Calendar sync tests. Previously, the tests were evaluating the sync immediately after creation, rather than after a reasonable delay. This change ensures the tests accurately verify the calendar synchronization process after events have been created.
Original PR description
A sync test added with 48b212189331c3c94dff5764a672e9b12678d92b is not actually testing the fix as the sync is done with the same mocked time as the create/write whereas the whole point is to check the sync after some time passed from create/write opw-5212908
This update addresses a technical issue within the Odoo spreadsheet component, specifically related to chart visibility. The changes ensure that chart values remain fully visible by removing clipping, improving the user experience. This update also includes standard code improvements for consistency and stability.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/24a7e5513f [FIX] chart: ensure chart values remain visible (remove clipping) [Task:…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/24a7e5513f [FIX] chart: ensure chart values remain visible (remove clipping) [Task: 5993132](https://www.odoo.com/odoo/2328/tasks/5993132) https://github.com/odoo/o-spreadsheet/commit/f36e6ce39f [REF] lint: enforce braces for all control statements [Task: 6140827](https://www.odoo.com/odoo/2328/tasks/6140827) https://github.com/odoo/o-spreadsheet/commit/17db4384c7 [FIX] pivot: `getPivotCellFromPosition` will throw on invalid formula [Task: 6109696](https://www.odoo.com/odoo/2328/tasks/6109696) 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 fixes an issue where HR leave requests with 'both' approval types didn't send notifications to the designated responsible parties. The change ensures that notifications are correctly sent to the 'Notified Time Off Officer' when this approval type is selected, improving the accuracy of leave request workflows.
Original PR description
…cer') no fallback for responsible_ids
Issue:
When ('both','By Employee's Approver and Time Off Officer') is selected on a new HR Leave Type it does not fall back to the responsible_ids or “Notify HR”.
Steps:
1) Setup a neutralized outgoing mail server
2) install hr_holidays
3) make a new hr.leave.Type (Approval) with ('both','By Employee's Approver and Time Off Officer') and select a 'Notified Time Off Officer'(responsible_ids) 4) select an emplyee with a reelated user and remove the coach, manager, and responsible 'Time Off'. 5) save
6) Sign in as the employee, make a time off request under the new Type 7) No email
Fix:
Add a conditional with the lowest priority to fall back to responsible_ids
opw-6101637
Forward-Port-Of: odoo/odoo#261853The budget report now accurately displays data without duplicate analytic lines. This issue stemmed from a recent performance optimization that inadvertently created duplicate entries. The fix ensures unique reporting by using a more precise query structure.
Original PR description
#### Issue: The budget report displays duplicate analytic lines. #### Steps to reproduce: In a new company: - Create a budget with one budget line (Analytic Account A). - Create one analytic item…
#### Issue: The budget report displays duplicate analytic lines. #### Steps to reproduce: In a new company: - Create a budget with one budget line (Analytic Account A). - Create one analytic item (linked to Analytic Account A). - Open the budget report and remove the default "open budget" filter. Duplicate amounts appear in the pivot view and duplicate lines appear in the list view. #### Cause: In #104299, the query in `_get_aal_query` was refactored for performance to avoid a single query with an OR condition in the LEFT JOIN. It was replaced by two separate queries combined with `UNION ALL`. This caused some lines to be captured by both queries, resulting in duplicates in the final report. #### Fix: Use three separate queries, each with specific filter conditions to guarantee unique results: Q1 - Analytic lines with no matching budget line. Q2 - Analytic lines matched to a budget line with no company (null-company). Q3 - Analytic lines matched to a company-specific budget line. OPW-6051696
This update fixes an issue where the shipping weight in package creation was incorrectly calculated, using the total weight of all delivery lines instead of just the selected ones. This ensures accurate weight calculations for package preparation, leading to more precise shipping costs and inventory management. The change impacts the stock delivery module.
Original PR description
Issue ----- When putting a subset of lines in a pack, the wizard computes the weight as if all of the picking's lines were selected. Steps to reproduce ----- - Enable packages - Create a packaging type for carrier "No carrier integration" (std delivery) - Create 2 products with different weights - Create a delivery - Add a demand for both products - Additional Info > Carrier: Standard delivery - Mark as Todo - Open the moves view - Select one of the 2 lines - Click Put in pack - Select the package type > The "Shipping Weight" is the picking's weight instead of the selected line's ----- Ticket: opw-6125285
This update fixes an issue where some UBL invoices were being incorrectly processed. The change ensures that invoices with a valid CustomizationID are prioritized, improving the system's ability to correctly interpret UBL invoices. A fallback mechanism remains in place for unknown formats to maintain compatibility.
Original PR description
Some UBL invoices we receive both have a node CustomizationID signifying that it's a bis3 and a UBLVersionID 2.1 (which should be illegal). We don't block malformed bis3 invoices. But we should try to guess that it's a bis3 if it has the perfect customization. We can keep the fallback in case it's an unknown bis3 format. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263285