Friday, October 6, 2023
103 changes · master
Enhancements to existing features
This change improves how accounting entries are searched during bank reconciliation so the system can use an existing database index. It is intended to reduce delays when sorting and matching move lines by amount, especially on larger databases.
Original PR description
The corresponding enterprise PR enables sorting account move lines on the bank recon by matching amount. Unfortunately there is a significant performance impact when enabling this ORDER BY (~300 ms -> ~2600 ms tested on a large db) In order to optimise the above, we slightly modify the domains used so that the existing index `account_move_line__unreconciled_index` is used. This is not yet tested on a large DB (due to the index change), however observations on a populated database indicate an improvement: without index: 80ms with index: 30ms
The mailing subscription portal has been modernized so users can more easily manage mailing list subscriptions, opt out, provide feedback, and control whether their email is blocked from future mailings. Logged-in users also get a new self-service page to manage preferences without needing a link from a specific email, improving transparency and reducing support effort.
Original PR description
PURPOSE Overall cleaning of subscription and exclusion management code from portal. This code comes mainly from v12 and can now benefit from cleaning and update. Globally improve usability and…
PURPOSE
Overall cleaning of subscription and exclusion management code from portal.
This code comes mainly from v12 and can now benefit from cleaning and update.
Globally improve usability and features given by mailing portal about exclusion
list and opt-out management.
SPECIFICATIONS
Cleanup access control (hash usage, returned / raised errors). Globally check
security and usage of controllers.
Refactor JS to be finally using frontend widgets. Split it into sub-widgets to model
main parts of the unsubscribe portal: feedback sending, email blocklist management
and opt-out from mailing lists.
Improve usability of unsubscribe portal, notably
* allow to give a feedback when unsubscribing from mailing not related to
mailing lists. It was previously limited to mailings done on mailing lists.
Now the feedback is allowed in all cases and posts it on the related
document;
* clean display of opt-in and opt-out lists;
* display all public lists, even if not already join. This allows to opt-in
to new lists, which was not possible before;
* switch on a neutral name for non public lists (as they may contain
marketing hints);
* give UI feedback to customer when using buttons: add confirmation of
block list addition / removal, of updated subscriptions, ...
* globally improve wording;
Add a generic 'my' page for mailing, allowing logged users to control their
blocklist status and mailing lists.
Improve feedback sending. Messages and notes are improved to have a
better wording and links to contextual records when possible (mailing,
mailed records, contacts, ...). Add opt out reasons when updating
subscriptions or block list status. This allows to better report on common
causes.
LINKS
Task-2669037 (Mass Mailing: Refactor js/portal for subscription)
Task-2150462 (Mass Mailing: Improve subscription management)Accounting reports can now show a selector for a user's saved favorite filters from journal items. This makes it easier for users to reuse personal reporting views and apply them alongside other report options.
Original PR description
Adds a new boolean field on accounting report to enable the user to select user-defined filter on accounting reports. If activated, the user can visualize its own favorite filter (defined on journal items list view) on a new option selector on top of accounting reports (see enterprise commit). When selected, the domain of the user-defined filter is added to other selected options' domain. task-3444246 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Accounting reports can now keep custom grouping settings separately from the default report setup. This supports enterprise reporting needs while reducing the risk of overwriting standard configuration.
Original PR description
This field is needed by the enterprise counterpart of this commit. It is used to store custom-defined groupby on the report lines without overriding the standard value that's given in data files. Task 3413437
Sales order line discounts are now shown in the mobile kanban view when a discount exists. This helps sales users review pricing details more accurately on mobile devices without switching views.
Original PR description
Before this commit, the discount was not displayed on SOL in mobile view. This commit adds the discount when it exists. task-3111127
This update lets Spanish invoices be explicitly marked as simplified even when a customer is selected, supporting common point of sale workflows. It also aligns Spanish electronic reporting integrations so they use the same simplified-invoice flag, reducing unnecessary tax ID checks and invoice downloads.
Original PR description
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
Employees and managers can now choose a future date to see projected time off balances, including upcoming accruals, expiring days, and allocations that are not yet available. The Time Off app also received underlying cleanup to better handle leave edge cases and improve reliability.
Original PR description
This commit adds the feature to select a date in the future in order to see future allocations, would it be for accrual plans granting new allocated days, lost days due to expired allocations or allocations that are not yet available to the employee. This feature comes with a major refactoring of hr_holidays methods to handle some edge cases in the management of leaves. This commit also fixes some flake8 linting errors. task-2675380
Project tasks now use a single date and time field for both the deadline and planned end, reducing confusion from having two separate end-date fields. This makes task scheduling clearer across project views, reporting, portal sharing, and related timesheet workflows.
Original PR description
**[IMP] project: merge date_deadline and planned_date_end** **Before this commit:** - The existing of two dates behaving as and end date for project_task (date_deadline and planned_date_end) is confusing. **In this commit:** - The main goal is to simplify the interface by having one field/widget that acts as both the deadline and the end date, instead of having two separate fields. So we removed planned_date_end (changes can be seen in the enterprise related pr (link at the end) and changed the date_deadline type from date to datetime in project_task and report_project_task_user Related PRs: Enterprise: https://github.com/odoo/enterprise/pull/40866 task-3084978
This update streamlines recruitment workflows by removing an unnecessary job responsibility field and improving interview scheduling. Applicant attachments are now included when setting up interview meetings, and small tooltip and default value updates make the hiring process clearer for users.
Original PR description
In this PR we'll add the following UX improvements : - Drop the useless responsible_id field from hr_job - Include applicant attachments in the meeting when scheduling an interview - Several tooltip and default value changes task-3380150 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Sales teams can now apply discounts through a dedicated wizard instead of relying on automatic behavior from the first order line. The update supports line-by-line discounts, discounts on the total order value, and fixed discount amounts, making discounting clearer and more controlled.
Original PR description
Replace the magic js logic applying the discount of the first line to all the lines by a dedicated wizard, providing three kind of discounts: * Discount on each sale order lines * Discount on the global order amount * Fixed discount amount task-3369680 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Point of Sale screen now highlights the most relevant next action, making it clearer when staff should send an order to the kitchen or proceed to payment. It also corrects kitchen item counts so restaurant staff see accurate numbers by category and product.
Original PR description
Previously, the order, review and pay buttons were in btn-primary at the same time, or not at the right time. Changes have been made to the current behavior: - If there is no order line, both buttons are gray - if something needs to be sent, the Command button takes priority - if nothing is to be sent, the Payment button takes priority A fix has also been made to the number of items to be sent to the kitchen, both for the category list and for the number of products. The number of products per category was erroneous, so the number of products has been changed to an absolute value.
Duplicating a point of sale combo product now also copies the items included in that combo. This prevents staff from having to manually rebuild combo contents after creating a duplicate, reducing setup errors and saving time.
Original PR description
before this commit, on duplicating a combo product, the combo lines are not copied to new records after this commit, the combo lines will get copied during the duplicate --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Sales teams can now more easily see when a quotation has been signed, while keeping that signature information read-only. The Sales app also adds optional list fields for customer reference and expiration, plus clearer reporting shortcuts grouped by sales, salesperson, product, and customer.
Original PR description
Improve following feature :
- visible if someone signed the quotation and it should be readonly on the quotation.
- make optional field "customer reference" in list view.
- make optional field "Expiration" in list view.
- add sub-menu under the reporting menu:
1. "Sales" :- redirect to the current report.
2. "Salespersons":- redirect to the current report but grouped by salesperson.
3. "products":- redirect to the current report with group by products.
4. "Customer":- redirect to the report with group by customers.
task-3369999
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-prPoint of Sale cash bill denominations are now easier to manage, with clearer ordering and editable setup. Indian Point of Sale also gains support for a 500 bill, while session-opening screens are simplified by removing an unnecessary amount display.
Original PR description
This commit: - Changes the order of bills and how the values are displayed in the pos_bill_view. - Adds a 500 bill for India localisation. - Changes the tree view of pos bill to be editable and set the bill to all the pos_configs if no config is linked to the bill. - To prevent inconsitancy, 'pos_default_bill_ids' field is removed from the res.config.settings view since if no pos config is linked to the bill, the bill is accessible to all the pos configs. - Removes the amount in the open session button in opening cash control popup. Task-3537655
This change lets Odoo automatically fill ordering fields in selected XML data files, so report lines can follow the same order as they appear on screen. It reduces repetitive maintenance work across many country localization files and makes the setup easier to read and update.
Live chat operators can now manage their language preference as part of their user settings. The live chat display name setting is also moved into user settings, making operator configuration more consistent and easier to manage.
Original PR description
Enable livechat language setting for operators Move livechat_username into res_user_setting Upgrade: https://github.com/odoo/upgrade/pull/5113 Enterprise: https://github.com/odoo/enterprise/pull/47382 task-3390821 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
HR demo data now better represents a realistic company structure for showcasing the organization chart. Departments have clearer hierarchy, colors, and assigned managers, making demos easier to understand and more useful for business presentations.
Original PR description
This demo will help us in organization chart In this PR - Demo data was included for the Organization chart view within the employee form view - Created a department hierarchy, and assigned colors to each department - Added the manager to each department task-3510243
Checkout now uses a customer's invoice address as the billing address when one is available, instead of defaulting to the main address. Customers can also add new billing addresses during checkout, making online purchases clearer and reducing billing errors.
Original PR description
at checkout use the invoice address as billing address instead of main address if the invoice one is defined. Add the functionality to add new billings addresses at checkout. task-3258835
New demo accounting records make it easier to test and demonstrate automatic reconciliation in different common scenarios. This helps teams validate receivable and payable workflows using sample customers and vendors such as Azure Interior and Deco Addict.
Original PR description
Adds demo data for auto-reconcile. We now have data that can auto reconcile: - in both modes (zero total balance or opposite balance one-by-one) - on payable and receivable accounts - by filtering on Azure Interior and/or Deco Addict task-id:3517768
Businesses can now adjust the maximum number of product variants that can be created from attribute combinations. This helps companies either allow larger product catalogs when needed or enforce stricter limits to prevent accidental mass creation.
Original PR description
before this commit, if the entered attribute combination in template is creating more than 1000 product, the operation is prevented by raising UserError. as of now, there is no option to increase or decrease the limit if user need to do so. system parameter: product.dynamic_variant_limit after this commit, if user needs to increase or decrease the limit, it can be done by adding a system parameter and set the needed value --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update replaces older internal ways of locating and opening module files with newer methods that include stronger safety checks. It helps ensure files are only accessed from approved Odoo add-on locations, reducing risk while keeping existing business behavior unchanged.
Original PR description
New website trials now open on the homepage outside edit mode, making it clearer that users can choose when to start editing and can navigate Odoo without discarding changes. The website navbar also now includes the user profile menu, giving users easier access to options like their database from the Website app.
Original PR description
*: test_website_modules, website_sale When one starts a trial with the website app, they arrive on a webpage in edit mode. Many users struggle to understand they need to save before accessing the…
*: test_website_modules, website_sale When one starts a trial with the website app, they arrive on a webpage in edit mode. Many users struggle to understand they need to save before accessing the Odoo navbar (app switcher, creation of new page, etc.). Additionally, if they want to navigate through Odoo, not having to discard could save some time. It was therefore decided to land on the homepage without editor after creating a website. The first step of the homepage tour should then be to click on the edit button. When creating an empty website (skipping the configurator), the website loader is shown until the page is ready, to avoid the user leaving the page before the first step is displayed. On another related note, if one wants to try out the Odoo website builder, they might create multiple DB, one per website, which is OK. In such a case, the link to 'my database' is not visible from the website app because the user profile was hidden. The user menu is therefore added to the navbar on the website app. task-3381773
Project task searches and reports that filter or group by creation date should run faster. This restores a database optimization that is heavily used in real-world project workflows, reducing delays for teams working with large task lists.
Original PR description
## Description In eedf37d6e286b995c47b946be1a6b66817094eff the index on `create_date` was removed, but it was still left on our production database. After recent analysis on the usage of the index over the span of 2 months (start July 2023 -> end of August 2023), this index was hit over *100M* times. It's heavily used in custom filters when grouping by `create_date`. So the goal of this PR is to add it back in standard code. ## Reference task-3263544 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now requires Python 3.10 or newer and updates its packaging rules for current Linux distributions. This keeps the platform aligned with supported Ubuntu and Debian versions, simplifying maintenance and preparing for upcoming development needs.
Original PR description
Now that the Debian 12 ("Bookworm") is out with Python 3.11 as the default, it's time to update our requirements. Reminder of the constraints for our requirements: We try choose the smallest version…
Now that the Debian 12 ("Bookworm") is out with Python 3.11 as the default, it's time to update our requirements.
Reminder of the constraints for our requirements:
We try choose the smallest version from the Ubuntu/Debian corresponding package (python3-...).
Also, if we find that one of the package was patched by the Debian/Ubuntu maintainer, we choose the version from which the patch is coming.
So, before this commit, the version were choose between Debian 11 and Ubuntu 22.04. With this commit, we can simplify the requirements because of a better matching between "Jammy" and "Bookworm".
About the choice of the python version:
* Ubuntu 22.04 ("Jammy") provides 3.10
* Debian 12 ("Bookworm") provides 3.11
* Some features that only exists in 3.9 will be needed in a near future
* 3.9 is a small release
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-prLive chat can now support file uploads from website visitors when the business enables this option. This helps customers share screenshots or documents during support conversations while keeping uploads controlled by authorization settings.
Original PR description
Since [1], live chat visitors are using the mail guest system for authentication. With this change, visitors are allowed to reach the attachment upload routes (even if nothing allows it in the frontend for now). This commit restricts attachment upload for guest and portal users with the `allow_visitor_upload` field that can be toggled. At the same time, this commit enables file upload when authorized on the frontend and for cross origin live chats. [1]: odoo#129770 task-3332628
Sales order users can no longer create a new referrer directly from the referrer field. This simplifies data entry and helps ensure referrers are selected from existing partner records instead of being created unnecessarily.
Original PR description
In this PR, remove create option on refferred_id from sale order form view since it is not required on referred field. task-3369999
The customer subscription portal now uses a single "View details" action instead of separate download and print buttons. This simplifies the customer experience and makes it clearer where to go for subscription information.
Original PR description
task-3484125
The subscription portal now shows a single button to view subscription details instead of separate download and print options. This streamlines the customer experience and makes it clearer where users should go to review subscription information.
Original PR description
quack
The Documents app code was reorganized and cleaned up to make it easier for teams to understand and maintain. This is an internal improvement that prepares the module for future changes without introducing new business features.
The payroll demo data now includes examples that make the employee organization chart easier to showcase in the employee form. This helps evaluators and teams better understand reporting relationships during demonstrations or testing.
Original PR description
In this PR - demo data was included for the Organization chart view within the employee form view task-3510243
Financial report definitions across many country-specific Odoo modules now have their sequence fields populated automatically. This improves consistency in how localized accounting reports are ordered and maintained, with minimal direct impact for end users.
Original PR description
Linked to https://github.com/odoo/odoo/pull/85750
This change adds a new setting to better support mass production workflows in manufacturing. It should help teams manage bulk production actions more consistently, with related quality checks covered by tests.
Original PR description
- Add a new perameter to handle mass production's functionality.
This update appears to adjust the employee appraisal survey area, likely improving how appraisal-related surveys are handled. The available details are limited, so the business impact seems modest and focused on HR appraisal workflows.
Project and field service tasks now use a single date field for both deadlines and planned end dates. This reduces confusion for users, simplifies scheduling screens, and keeps related reports, calendars, and templates aligned around one task end date.
Original PR description
**[IMP] project: merge date_deadline and planned_date_end** **Before this commit:** - The existing of two dates behaving as and end date for project_task (date_deadline and planned_date_end) is confusing. **In this commit:** - The main goal is to simplify the interface by having one field/widget that acts as both the deadline and the end date, instead of having two separate fields. So we removed planned_date_end and date_deadline is now behaving as end date. task-3084978
Belgian payroll tests and demo data were updated to stay aligned with changes in employee leave allocation handling. This helps ensure payroll calculations and validations continue to work reliably after the underlying leave management update, with a related correction for Indian payroll salary rule configuration.
Original PR description
Due to the refactoring of the hr.leave.allocation model, some tests are to be adapted. task-2675380
India payroll now includes key national and festival holidays in its calendar data. This helps payroll and leave planning reflect important public holidays such as Republic Day, Independence Day, Gandhi Jayanti, and Makar Sankranti.
Original PR description
- India Festival and National Holidays: - Makar Sankranti - January 14th - Republic Day - January 26th - Independence Day - August 15th - Gandhi Jayanti - October 2nd task-3385019
Customized financial report groupings are now kept separate from the standard groupings needed for official file exports, reducing the risk that user edits break exports. The report setup screen also warns users when a report relies on special custom logic, helping them avoid changes that could disrupt expected behavior.
Original PR description
[IMP] account_reports: avoid breaking exports with groupby customisations From 16.0 on, it is possible for the user to change the groupby value of every report line, giving a lot of flexibility to…
[IMP] account_reports: avoid breaking exports with groupby customisations From 16.0 on, it is possible for the user to change the groupby value of every report line, giving a lot of flexibility to the user in the way the reported data are displayed. The problem is, sometimes, dedicated file exports exist for these report, and depend on the value of this groupby field, considering it always has the value defined in the data files. In such cases, customizing the groupby of some lines will break the export. We solve that by introducing a new user_groupby field, duplicating the content of the groupby at report creation, and manually editable by the user. The print_mode option also disappears in favor of an 'export_mode' key, telling, when we're exporting, what the source of the export is. When the export_mode tells us we're generating a file, we know we must use groupby instead of user_groupby generate the content of the report. Task 3413437 [IMP] account_reports: add info banner on top of form view for reports using a custom handler When customizing reports by hand from the UI, one need to be careful not breaking some behavior enforced by a custom handler. To raise better awareness of this, we add a banner on top of the reports' form view informing the user of the presence of a custom handler. Task 3413437
Accounting reports can now show a new selector for users' saved favorite filters from journal item views when enabled. This helps users quickly apply their own commonly used criteria to reports, making reporting more personalized and efficient.
Original PR description
Adds a new boolean field on accounting report to enable the user to select user-defined filter on accounting reports (see community commit). If activated, the user can visualize its own favorite filter (defined on journal items list view) on a new option selector on top of accounting reports. When selected, the domain of the user-defined filter is added to other selected options' domain. task-3444246
Bank reconciliation now prioritizes accounting entries whose outstanding amount matches the bank transaction, helping users find the right match faster when no partner is set. The supporting database ordering and index changes reduce the performance impact of this improved sorting.
Original PR description
When reconciling bank transactions, it is ideal to have a suggested AML found by the reco model. But in cases where there is no partner set on the transaction, a suggestion from the bank reco model is not possible. To simplify the recon process, we display AML's that have a matching amout_residual first. In order to achieve this a custom ORDER BY is used. Task-3042547
Live chat visitors can now share files during conversations, making it easier to provide documents, screenshots, or other supporting information. This improves collaboration with support teams and reduces back-and-forth when resolving customer requests.
Original PR description
*: account_accountant, documents. task-3332628 community: https://github.com/odoo/odoo/pull/137574
Appointment scheduling now supports one-off appointment types with defined start and end times, making it easier to offer punctual booking windows such as events or resource reservations. Users also get better shared-link management, faster access to newly created appointment types, and clearer appointment lists and filters.
Original PR description
Purpose ======= Allow users to create appointment types for punctual periods. Ease the management of the apt types shareable links. Add a shortcut to open the newly created custom/anytime…
Purpose ======= Allow users to create appointment types for punctual periods. Ease the management of the apt types shareable links. Add a shortcut to open the newly created custom/anytime appointment. Make the custom appointment types available to resources. Specification ============= Add a Shared Links stat button on the appointment type form to have a better overview of the appointment type shared links and delete duplicated links if necessary. Add a "Open" button after selecting slots on the calendar to open the newly created appointment type and allow editing. Add optionals start and end datetimes on the appointment type form to limit the slot generation between 2 specified datetimes. An appointment limited between 2 datetimes is of category 'punctual'. The old 'website' category has been renamed to 'recurring' as the punctual appointment types can also be accessible from the website. Move the anytime appointment type with the recurring and the punctual ones as they are basically recurring ones but 7days/7 from 7AM to 7PM. There is also only one anytime appointment type by user so it isn't an issue to display those in the main menu. Only the custom ones remain in the 'Invitations' menu. Adding filters and group by on the appointment type search view to make things more readable. Make the custom appointment types available for resources. We should now be able to share a link to book a tennis court at a specified time slot. Task-3109254
Resolved issues and error corrections
This fixes a crash that occurred when users selected "Get View" from the debug menu. The debug tool now handles the updated view format correctly, helping administrators and support teams inspect views without interruption.
Original PR description
Since commit [1], there was a crash when the user clicked on the "Get View" item in the debug menu (in any views). This was because the arch now received by the views in props is an XmlDocument, whereas before it was a string. [1] odoo/odoo@cc3a3a328db913da76573404967e1190f40bcc98 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
Code cleanup and technical improvements
This change replaces a temporary internal shortcut with the supported way to access web app information. It reduces maintenance risk in the web interface without changing day-to-day user behavior.
Original PR description
In a previous commit, we temporarily used the `__OWL__DEVTOOLS__` global variable to access the list of all apps. This was obviously not something that we want to do, so we introduced a proper hook in Owl. This commit changes the code to use the static apps object from the App class. 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
Miscellaneous changes
Forward-Port-Of: odoo/odoo#137393 Forward-Port-Of: odoo/odoo#137223
Original PR description
Forward-Port-Of: odoo/odoo#137393 Forward-Port-Of: odoo/odoo#137223
Original PR description
Motivations: * `sequence` is not super intuitive for new devs * It makes "useless" noise in data files * It is redundant when what we want to see in the file is the same as what we want to see on the…
Motivations: * `sequence` is not super intuitive for new devs * It makes "useless" noise in data files * It is redundant when what we want to see in the file is the same as what we want to see on the user screen. Do you understand anything related to sequences in here? https://github.com/odoo/odoo/blob/15.0/addons/l10n_lu/data/account_tax_report_line.xml Explicit is not always better than implicit. * It is not implicit like using `id` it is natural and visual and saves a lot of chore for adding and maintaining sequences. Implementation * It is optional, with the option set on root xml tags _________________ In * `odoo/addons/l10n_*`, we are gaining 2k+ lines of xml on `account.tax.report.line` * `enterprise/l10n_*`, we are gaining 3k+ lines of xml on `account.financial.html.report.line` This could be applied to other records like menuitems, or other models similar where it makes sense to declare in the same order as what we want to see on the user screen. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Deprecate the usage of `get_resource_path`/`get_module_resource`. Using `file_path` has the same features with additional security checks. Replace all the deprecated calls to `open` or `get_resource_path` with the `file_open` and `file_path` method. Differences between `get_resource_path` and `file_path`: - `get_resource_path` returns False if the file does not exsits, `file_path` raises a `FileNotFoundError` - `file_path` ensures the file is within the addons-path Difference between `open` and `file_open` - `file_open` ensures the file is within the addons-path
This update simplifies how Odoo Enterprise locates and opens internal files across accounting, payroll, delivery, HR, localization, and related apps. It removes redundant file checks, which helps keep the codebase cleaner and may slightly improve reliability and maintainability without changing user-facing workflows.
Original PR description
Enterprise part of odoo/odoo#135607
Replace all the calls to `get_resource_path` to the better `file_path` or directly use `file_open` when possilbe.
`file_open` is already checking that the file exists and is within the addons-path. Code like:
```
path = get_resource_path('base', 'static/img', 'avatar.png')
file_open(path)
```
was checking twice that the file exists and made redundant checksThis fixes a problem that prevented users from uploading attachments when posting information, such as in the Expenses app. The change restores support for sending multiple uploaded files correctly, reducing disruption in workflows that rely on attachments.
Original PR description
In a recent commit odoo/enterprise/pull/47775 the post function was modified so that it directly adds the values in params to the FormData object. Before, a check was done to see if the value was an array and handle it accordingly. This change resulted in not being able to upload attachments in the expense app and probably in other places, as the files were sent in an array to the post method. This commit fixes the issue by adding the check for arrays again. task-3527686
Brazilian credit notes now use the same numbering sequence as invoices, preventing duplicate document numbers and validation errors. This helps users create credit notes directly without being blocked by conflicts in electronic invoice numbering.
Original PR description
#### Steps to reproduce 1. Create a fresh DB with the Brazilian localization. 2. Create a new Credit Note (directly from the menu, not from an invoice). Confirm. 3. Observe that you get a…
#### Steps to reproduce 1. Create a fresh DB with the Brazilian localization. 2. Create a new Credit Note (directly from the menu, not from an invoice). Confirm. 3. Observe that you get a ValidationError: "Another entry with the same name already exists." because the name of the Credit Note is NFe 00000001, and an invoice called NFe 00000001 already exists. #### Analysis - The credit note should be called NFe 00000002, because in Brazil the same sequences should be used both for invoices and for credit notes of a given document type. - However, because the `refund_sequence` field is set to True on the 'Customer Invoices' journal, the sequence mixin doesn't consider invoices and credit notes as using the same sequence, and therefore doesn't consider the existing invoice when finding a new name for the credit note. #### Solution - Set the field `refund_sequence` to False on the journal created by the l10n_br template. - We also take the opportunity to move the code that provides a default name to the demo invoices to a separate file demo/account_demo.py, for consistency with other localizations.
Sales reports now group by the main product record rather than separating results by individual product variants. This makes product-level reporting match user expectations, while a separate grouping option remains available for product variants when that detail is needed.
Original PR description
Group by "Product" was grouping by product variant instead of product template. opw-3477918 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes cases where form fields could keep showing a user-entered value even after Odoo's automatic field logic changed it back or encountered an error. Business users will see more reliable form behavior, especially for checkbox, text, and HTML-based fields that depend on automatic updates.
Original PR description
The goal of this commit is to resolve: ===================================== 1. When you edit a Char or Boolean field with an onChange that returns the value before editing, you must display the…
The goal of this commit is to resolve:
=====================================
1. When you edit a Char or Boolean field with an onChange that returns
the value before editing, you must display the value of the onChange.
2. In the model, html fields are always Markup fields. But when we evaluate
a modifier containing an html field, we use the server value (a string or false).
3. When we edit a field and its onChange returns an server error, we want to
revert its value to the valuea before edition.
Solution:
=========
1. Always render when applying a change, even if the value does not change,
because onChange returns the initial value. To do this, we'll apply
the changes to record.data, then apply the changes from onChange.
The value will therefore change, which will cause all the components
observing the value in record.data to render.
2. When we update an html field, its value will always be markup and
we'll store it as a string in _textValue so that we can evaluate the
modifiers without the markup. For changes coming from the onChange, we
will store the value in _textValue and apply markup on it for record.data.
3. When an onChange returns an server error, we will apply the changes and then
revert them directly. This will have the effect of triggering a rendering
on all the components observing to the record.data corresponding to
the changes and so displaying the values before editing.
How to reproduce:
=================
Case 1:
------
- Go to a form view containing a boolean field with an onChange
- Check the boolean field
- The onChange returns with the value false
Before this commit:
The boolean field is always checked
After this commit:
The boolean field is no longer checked
Case 2:
------
- Go to a form view containing an html field and an field "x" with
invisible ="not html_field" and an onChange
- Edit the field "x"
- The onChange returns the value false for "html_field".
Before this commit:
The field "x" is always displayed
After this commit
The field "x" is no longer displayed
Case 3:
------
- Go to a form view containing a char field with an onChange
- Edit the field
- onChange returns a server error
Before this commit:
The field is marked as invalid and contains the value after editing.
After this commit:
The field contains the pre-edit valuePrinting sales quote PDFs now continues even if the header or footer cannot be rendered. Instead of showing users a technical error, the issue is recorded in the log so the document can still be produced.
Original PR description
before this commit, on printing the report if there is an exception happens on rendering the header and footer, traceback is shown to user without skipping the exception AttributeError: 'sale.order.template' object has no attribute '_message_log' after this commit, if exception happens on rendering the header or footer, a message will be added in the log and report will be printed without traceback  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo can now initialize new databases correctly on PostgreSQL 15 and later when using the recommended limited-permission database user. This prevents setup failures caused by newer PostgreSQL permissions and keeps new deployments working without requiring administrator-level database access.
Original PR description
**Description of the issue/feature this PR addresses:** From PostgreSQL's point of view, as of version 15.0 and above the default behavior is to constrain ordinary users to user-private schemas. For…
**Description of the issue/feature this PR addresses:** From PostgreSQL's point of view, as of version 15.0 and above the default behavior is to constrain ordinary users to user-private schemas. For every user needing to create non-temporary objects, it's advised that they create a schema with the same name as that user (Recall that the default search path starts with $user, which resolves to the user name. Therefore, if each user has a separate schema, they access their own schemas by default.) This pattern is a secure schema usage pattern. See Section 5.9.6 https://www.postgresql.org/docs/current/ddl-schemas.html and https://www.postgresql.org/docs/release/15.0/ Databases migrated from previous versions of postgresql will have the default public schema writable, but new odoo instances on postgresql version 15 and above do not work. To fix this We'd create a new schema in the database that's the same name as our database user after we create our empty database **Current behavior before PR:** Initializing a new Odoo database on Postgres version 15.0 and above with a user with only the LOGIN and CREATE DATABASE roles would result in an error `permission denied for schema public` Because of this, no database tables are created on new databases using postgres V15.0 and above Desired behavior after PR is merged: Full functionality is restored by creating all tables in a schema that matches the database user --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where inserting an image in the website or mass mailing editor could add the text "[object HTMLImageElement]" instead of the image. Users can now insert images normally even when the editor is embedded in different page contexts.
Original PR description
Steps: - on website or mass_mailing, insert an image via the "/image" command, - a text node containing "[object HTMLImageElement]" is pasted instead of the expected content. Since [1], when inserting a node, the instanceof operator is used to compare that node to the Editor's document global `Node` object. While it fixed cases where there was as mismatch of `Node` objects (nodes created by the top document x nodes created via the iframe's document), it revealed errors elsewhere. Notably, the MediaDialog inserts an image node created by the top document, regardless if the editor is mounted in an iframe. This commit makes the "insert" command more permissive when resolving if `content` is a Node or a string. task-3543003 [1]: https://github.com/odoo/odoo/commit/bfe0c5fedf172f4c77002a4f54803b376ada43ce
This fix prevents an error when users create calendar records that include custom properties in the related form. It ensures the calendar creation dialog opens normally, improving reliability for teams using project tasks and custom fields.
Original PR description
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
Users who switch dark mode while working in the website backend now remain in the backend after the page reloads. This avoids unintentionally sending them to the public website page and makes the editing experience smoother.
Original PR description
*enterprise Since this task in community adds the user menu in the navbar, it is now possible to toggle the dark mode from the website backend. However, (1) toggling the dark mode reloads the page, and (2) since [commit 1], nothing in the displayed URL differentiates the frontend from the backend in the website app, meaning that reloading the page from the backend actually leads to the frontend page. This commit patches the `color_scheme_service` in order to remain in the backend if it is toggled from the website app. [commit 1]: https://github.com/odoo/odoo/commit/1c18b79972c3b0a97197b98390e0ba9fda703585 task-3381773
The recruitment document digitization message now uses "Resume" instead of "CV" when users do not have enough credits. This makes the wording clearer and more consistent for applicants and recruiters, with no functional change.
Original PR description
Change replaces word "CV" with word "Resume" in error message telling that you don't have enough credits to digitize document in application task-3539236
This update adjusts the Documents test suite to account for a brief delay before boolean toggle changes appear on screen. It helps keep automated checks stable and reduces the risk of false test failures after recent interface behavior changes.
Original PR description
The changes introduced to BooleanToggleField by the PR: https://github.com/odoo/odoo/pull/136924, mean that an update executed on a boolean field from a Component other than the BooleanToggleField displaying it requires waiting for one more nextTick for the change to be displayed. This is caused by useObserveRecord waiting for an animationFrame to execute its callBack and therefore in this case to apply the change of state to the BooleanToggleField.
This change fixes the WhatsApp point-of-sale settings so the receipt template can be selected when WhatsApp is enabled for POS. It prevents users from being blocked by a read-only field and restores the expected setup behavior.
Original PR description
before this commit, if the WhatsApp Enabled is pos setting the receipt template remains readonly and user cannot edit and change the template value after this commit, wrongly given invisible attribute will be changed to required attribute as in the lower version, ie, 16.3 and 16.4
Attachments now appear correctly in the Journal Items list preview. This fixes a display issue that prevented users from seeing attached files where expected, improving access to supporting accounting documents.
Original PR description
After the changes made in odoo/odoo/pull/114024, a related field is not fetched if invisible. This causes the mimetype in main_attachment_ids field to not be fetched in the Journal Items list view therefore no attachments are shown in the preview. This commit fixes the issue. task-3531478
This change makes an automated Studio test wait for an expected error before checking the result. It helps prevent random test failures, improving confidence in release validation without changing user-facing behavior.
Original PR description
This commit ensures the error event is handled before the assert in in the "error when new app's view is invalid" studio test. This could lead to an nondeterministic error in the test. runbot-error-24580
This update adjusts an internal performance test threshold for Australian payroll accounting to reduce false failures caused by variable caching and data volume. It helps keep automated validation reliable without changing payroll features or user workflows.
Original PR description
Those tests could have some random requests, as there are a lot of records and the cache could have some random behavior according to the execution order, the number of installed module, so I'm gonna just bump it a little bit.
This update fixes Avatax accounting tests by removing a dependency on a sales-related field that is not always available. It helps ensure the Avatax module can be tested reliably regardless of installation order, reducing the risk of false test failures.
Original PR description
removed the reference to field invoice_policy, added in a module this one doesn't depend on (sales). This has been wrong since a long time and was only put into light with the recent changes of 70329177713131d3d6ec424137cad3702e9d38ae (#136490) where the order of modules' installation changed, avatax being installed before sales.
This update simplifies how Odoo stores and displays field change history in Chatter, reducing unnecessary stored data while keeping the same visible behavior. It also preserves past change history when fields are removed and improves tracking for relationship fields, making audit trails more reliable for users.
Original PR description
PURPOSE Simplify 'mail.tracking.value' model and code. Remove unnecessary fields and computation. Make code easier to handle and more batch-enabled. Keep tracking when removing fields. SPECIFICATIONS…
PURPOSE Simplify 'mail.tracking.value' model and code. Remove unnecessary fields and computation. Make code easier to handle and more batch-enabled. Keep tracking when removing fields. SPECIFICATIONS Remove 'tracking_sequence' on tracking values in DB. Consider insertion order should be done accordingly and display them based on ID DESC. Sequence is now used only for order records to insert in DB and can be used to resequence them using the field description at any time. Feature is still the same (order based on sequence) but without having to store the sequence itself. It was never updated anyway. Remove 'field_desc' and 'field_type' from 'mail.tracking.value' model. Those can be retrieved when necessary, as it is mainly used for frontend display in Chatter. Remove 'old_value_monetary' and 'new_value_monetary' as float value can be used instead. Rename 'field' to 'field_id' to better indicate it is a m2o, and not a char field holding a field name. When removing fields set the field to False instead. Add a new field to store fields information allowing to keep name, type and groups information to allow displaying removed tracking values. Use this field only when a field is removed to avoid duplicating field information when not necessary and polluting the table. Improve support of o2m / m2m tracking. Cleanup overall tracking code: try to make methods more consistent with I/O, cleanup formatting methods. While working on tracking, let us cleanup a bit tests and various code bits. Task-3345979 (Mail: Simplify tracking model)
This change removes an outdated internal workaround in Odoo's web rendering system and simplifies how server-side rendering is set up. It should make the web codebase easier to maintain without changing day-to-day user workflows.
Original PR description
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
A spreadsheet interface button style was renamed to stay aligned with the underlying spreadsheet component. This is an internal cleanup that helps keep the code consistent and should not change how users work with spreadsheets.
Original PR description
Commit odoo/o-spreadsheet@adcda84 renamed the button class. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change updates spreadsheet interface files to use a renamed button style from the underlying spreadsheet component. It keeps spreadsheet side panels and related tests aligned with the shared component changes, with no expected change to day-to-day user workflows.
Original PR description
Commit odoo/o-spreadsheet@adcda84 renamed the button class.
This change simplifies internal rendering setup for parts of Point of Sale preparation displays and Sign documents. It aligns these areas with a shared platform update, reducing custom code and helping future maintenance without changing day-to-day user workflows.
Some internal quality check logic has been moved from the general Quality app into Quality Control, where the related data is managed. This keeps the product structure cleaner and reduces the chance of future maintenance issues, with no expected change for users.
Original PR description
Both functions use the `measure_on` field of `quality.point` which is defined in the `quality_control` module. This didn't raise any issue as both functions are only used in `quality_control` and `quality_mrp` (which requires `quality_control`). Moved them to `quality_control` as this is where they should have probably been in the first place.
The way Odoo stores and displays change history in the chatter has been streamlined by removing redundant stored data and relying on existing field information when needed. This reduces internal complexity and should make tracking-related code easier to maintain, while preserving the same business behavior for users.
Original PR description
PURPOSE Simplify 'mail.tracking.value' model and code. Remove unnecessary fields and computation. Make code easier to handle and more batch-enabled. SPECIFICATIONS Remove 'tracking_sequence' on…
PURPOSE Simplify 'mail.tracking.value' model and code. Remove unnecessary fields and computation. Make code easier to handle and more batch-enabled. SPECIFICATIONS Remove 'tracking_sequence' on tracking values in DB. Consider insertion order should be done accordingly and display them based on ID DESC. Sequence is now used only for order records to insert in DB and can be used to resequence them using the field description at any time. Feature is still the same (order based on sequence) but without having to store the sequence itself. It was never updated anyway. Remove 'field_desc' and 'field_type' from 'mail.tracking.value' model. Those can be retrieved when necessary, as it is mainly used for frontend display in Chatter. Remove 'old_value_monetary' and 'new_value_monetary' as float value can be used instead. Rename 'field' to 'field_id' to better indicate it is a m2o, and not a char field holding a field name. Improve support of o2m / m2m tracking. Cleanup overall tracking code: try to make methods more consistent with I/O, cleanup formatting methods. While working on tracking, let us cleanup a bit tests and various code bits. Task-3345979 (Mail: Simplify tracking model)
Before this PR, the current user was not considered has a follower, regarding the mention suggestions. This lead him to be lower than other entries. This PR fix the issue by adding him back to the follower list. Task-3531111 Forward-Port-Of: odoo/odoo#137377
Original PR description
Before this PR, the current user was not considered has a follower, regarding the mention suggestions. This lead him to be lower than other entries. This PR fix the issue by adding him back to the follower list. Task-3531111 Forward-Port-Of: odoo/odoo#137377
**Before this commit:** When any activity was created, the displayed created date was in UTC time and not adjusted to the user's timezone. The time was not converted according to the user's timezone. **After this commit:** The activity's created time now displayed is converted from the UTC time stored during the activity's creation. **task-3483695** Forward-Port-Of: odoo/odoo#137411 Forward-Port-Of: odoo/odoo#135107
Original PR description
**Before this commit:** When any activity was created, the displayed created date was in UTC time and not adjusted to the user's timezone. The time was not converted according to the user's timezone. **After this commit:** The activity's created time now displayed is converted from the UTC time stored during the activity's creation. **task-3483695** Forward-Port-Of: odoo/odoo#137411 Forward-Port-Of: odoo/odoo#135107
Switch to a datetime to avoid a wizard that has been created at 00:00 to be deleted one minute later. Forward-Port-Of: odoo/odoo#137666
Original PR description
Switch to a datetime to avoid a wizard that has been created at 00:00 to be deleted one minute later. Forward-Port-Of: odoo/odoo#137666
In this PR, show an action helper to improve the user experience when no data is available in the graph view. This enhancement aligns with the existing functionality we have in the pivot view, which provides users with a clear and informative message when data is absent. By incorporating this action helper, we aim to enhance user understanding and promote better familiarity with the features of our platform. task-3500508 --- I confirm I have signed the CLA and read the PR guidelines at
Original PR description
In this PR, show an action helper to improve the user experience when no data is available in the graph view. This enhancement aligns with the existing functionality we have in the pivot view, which provides users with a clear and informative message when data is absent. By incorporating this action helper, we aim to enhance user understanding and promote better familiarity with the features of our platform. task-3500508 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#137472 Forward-Port-Of: odoo/odoo#133920
Since commit[1] Serial number sequence rule takes priority over already existing Serial numbers Bug: when disabling default Serial number sequence rule a validation error is thrown since lot name is now empty Fix: fall back on the previous behaviour (get next SerialNumber) if sequence is not set (also added a clearer user error if neither is set) note also updated the .pot file opw-3514794 [1]:https://github.com/odoo/odoo/pull/134187 Forward-Port-Of: odoo/odoo#137601
Original PR description
Since commit[1] Serial number sequence rule takes priority over already existing Serial numbers Bug: when disabling default Serial number sequence rule a validation error is thrown since lot name is now empty Fix: fall back on the previous behaviour (get next SerialNumber) if sequence is not set (also added a clearer user error if neither is set) note also updated the .pot file opw-3514794 [1]:https://github.com/odoo/odoo/pull/134187 Forward-Port-Of: odoo/odoo#137601
The aim of this commit is to allow import of OIOUBL xml files. Additional notes: some modification to the way ubl 2.0 retrieve tax node was required as it was unable to retrieve taxes on OIOUBL. task-id: 3420748 Forward-Port-Of: odoo/odoo#136416
Original PR description
The aim of this commit is to allow import of OIOUBL xml files. Additional notes: some modification to the way ubl 2.0 retrieve tax node was required as it was unable to retrieve taxes on OIOUBL. task-id: 3420748 Forward-Port-Of: odoo/odoo#136416
**Steps to reproduce the bug:** - Create a storable product “P1”: - Price at “Wood corner”: - $5, min qty =1 - Price at “Open wood: - $6, min qty = 1 - $4, min qty = 10 - Create a purchase order at wood corner: - 100 units > the price is automatically computed at $500 - Go to Alternative tab in the PO: - Create a one for “Openwood” and copy lines **Problem:** The price for 100 units is computed as $600 instead of $400. When we create
Original PR description
**Steps to reproduce the bug:** - Create a storable product “P1”: - Price at “Wood corner”: - $5, min qty =1 - Price at “Open wood: - $6, min qty = 1 - $4, min qty = 10 - Create a purchase order at…
**Steps to reproduce the bug:**
- Create a storable product “P1”:
- Price at “Wood corner”:
- $5, min qty =1
- Price at “Open wood:
- $6, min qty = 1
- $4, min qty = 10
- Create a purchase order at wood corner:
- 100 units
> the price is automatically computed at $500
- Go to Alternative tab in the PO:
- Create a one for “Openwood” and copy lines
**Problem:**
The price for 100 units is computed as $600 instead of $400.
When we create the alternative purchase order, in the "create" function of “purchase.order.line,” we receive only the quantity as "qty=100" in the values. Therefore, the missing fields should be prepared.
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase/models/purchase.py#L1102
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase/models/purchase.py#L1398
First, the line is created with the received values (“qty=100”), and the price_unit is computed correctly as $4.
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase/models/purchase.py#L1400
So, the price_unit is computed correctly at $4
However, the “onchange_product_id” function is then called, resetting the price_unit and product_qty to 0.
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase/models/purchase.py#L1401
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase/models/purchase.py#L1176
Afterward, the “_suggest_quantity()” function is called
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase/models/purchase.py#L1180
suggesting a minimal quantity based on the seller (so=1).
https://github.com/odoo/odoo/blob/a9cbd2a2ae2e21f1ba14379aecd908c44497b8ab/addons/purchase/models/purchase.py#L1363
Therefore, the price_unit is computed based on qty=1, resulting in $6.
Finally, the price is returned because it is the only missing field.
opw-3497825
Forward-Port-Of: odoo/odoo#135446Exact steps (or video) to reproduce the issue (on runbot): 1. Go to Website > Shop > Open a product with specifications table (Customizable Desk). 2. Open Editor > Set Specification to None > Compare button is removed from Product page Fix: display the compare button under add to cart if spec disabled opw-3329219 Forward-Port-Of: odoo/odoo#133518
Original PR description
Exact steps (or video) to reproduce the issue (on runbot): 1. Go to Website > Shop > Open a product with specifications table (Customizable Desk). 2. Open Editor > Set Specification to None > Compare button is removed from Product page Fix: display the compare button under add to cart if spec disabled opw-3329219 Forward-Port-Of: odoo/odoo#133518
Currently, `<ul>` and `<li>` is missing `role` in navbar. This thing can effect on accessibility point on Lighthouse report. https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitem_role This PR will fix this problem Same as PR https://github.com/odoo/odoo/pull/99783 because i accident close pr  -- I confirm I
Original PR description
Currently, `<ul>` and `<li>` is missing `role` in navbar. This thing can effect on accessibility point on Lighthouse report. https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitem_role This PR will fix this problem Same as PR https://github.com/odoo/odoo/pull/99783 because i accident close pr  -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#137575 Forward-Port-Of: odoo/odoo#99895
[opw-3502704](https://www.odoo.com/web#id=3502704&cids=1&menu_id=4720&action=4043&model=project.task&view_type=form) Forward-Port-Of: odoo/odoo#137766 Forward-Port-Of: odoo/odoo#137271
Original PR description
[opw-3502704](https://www.odoo.com/web#id=3502704&cids=1&menu_id=4720&action=4043&model=project.task&view_type=form) Forward-Port-Of: odoo/odoo#137766 Forward-Port-Of: odoo/odoo#137271
__Current behavior before commit:__ When `context_today()` is in a domain, UTC is used. However this is not consistent with [the legacy method](https://github.com/odoo/odoo/blob/81183495a07eb5928b29ae56f3f86671234d602c/addons/web/static/src/legacy/js/core/py_utils.js#L232) used before OWL migration. This has the consequence that filters with this method in their domain will not behave correctly and use UTC date instead of the actual date of the user. __Description of the fix:__ Switch th
Original PR description
__Current behavior before commit:__ When `context_today()` is in a domain, UTC is used. However this is not consistent with [the legacy…
__Current behavior before commit:__ When `context_today()` is in a domain, UTC is used. However this is not consistent with [the legacy method](https://github.com/odoo/odoo/blob/81183495a07eb5928b29ae56f3f86671234d602c/addons/web/static/src/legacy/js/core/py_utils.js#L232) used before OWL migration. This has the consequence that filters with this method in their domain will not behave correctly and use UTC date instead of the actual date of the user. __Description of the fix:__ Switch the UTC methods calls to regular ones. __To reproduce:__ (Reproducible only in Odoo 16, since the old method is still used in 15) 1. Change computer date and timezone so that UTC date is not the same as your date (e.g. if timezone is CEST, set the hour to 1am) 1. On any record, schedule an activity with the due date to today. 1. In the Activities notifications panel, click on **1 Today** 1. The page display nothing because it will filter by the previous day. opw-3423316 Forward-Port-Of: odoo/odoo#132622
**Before PR:** -While reading chatter notifications in the chat window, SMS and email icons are not accessible to click due to action list overlap. -While reading a reply on any message or attachment in chat widow, the attachment link is not accessible to click due to action list overlap. **After PR:** -When SMS and email icons are visible, time and that icon will display to the following line so the user can click on it easily. -Attachment links will display to the following line of men
Original PR description
**Before PR:** -While reading chatter notifications in the chat window, SMS and email icons are not accessible to click due to action list overlap. -While reading a reply on any message or attachment in chat widow, the attachment link is not accessible to click due to action list overlap. **After PR:** -When SMS and email icons are visible, time and that icon will display to the following line so the user can click on it easily. -Attachment links will display to the following line of mentioned so the user can click on it easily. Task-2713371 Forward-Port-Of: odoo/odoo#137470 Forward-Port-Of: odoo/odoo#131020
Steps to reproduce the bug: - Create a storable product “P1”: - set sales price: 10 - Go to attributes & variants tab: - Color: red & blue - Size: S - Go to Red attribute and add extra price: 5 - Go to the product variant “P1 red S” - Print label: - ZPL with price Problem: The product.template price is printed instead of the product variant because we use “list_price” instead of “lst_price” opw-3537277 Forward-Port-Of: odoo/odoo#137674
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- set sales price: 10
- Go to attributes & variants tab:
- Color: red & blue
- Size: S
- Go to Red attribute and add extra price: 5
- Go to the product variant “P1 red S”
- Print label:
- ZPL with price
Problem:
The product.template price is printed instead of the product variant because we use “list_price” instead of “lst_price”
opw-3537277
Forward-Port-Of: odoo/odoo#137674Steps to reproduce: ------------------- - go to project form view; - edit the sale order item of a task; - make `is_so_line_edited` visible in Timesheet list on the form; Issue: ------ The `is_so_line_edited` field is not set to `True`. Solution: --------- Use the widget designed to correctly update the `is_so_line_edited` field. opw-3476614 Forward-Port-Of: odoo/odoo#137782 Forward-Port-Of: odoo/odoo#137365
Original PR description
Steps to reproduce: ------------------- - go to project form view; - edit the sale order item of a task; - make `is_so_line_edited` visible in Timesheet list on the form; Issue: ------ The `is_so_line_edited` field is not set to `True`. Solution: --------- Use the widget designed to correctly update the `is_so_line_edited` field. opw-3476614 Forward-Port-Of: odoo/odoo#137782 Forward-Port-Of: odoo/odoo#137365
Some strings were not translated in website_forum because translation marks inside backticks will not be extracted to be translated. i.e., Markup`${_t("Please translate me"}, OK` will not work. This PR fixes the issue by explicit translation before putting it inside the backticks. **Task**-3462273 Forward-Port-Of: odoo/odoo#136900
Original PR description
Some strings were not translated in website_forum because translation marks inside backticks will not be extracted to be translated. i.e., Markup`${_t("Please translate me"}, OK` will not work.
This PR fixes the issue by explicit translation before putting it inside the backticks.
**Task**-3462273
Forward-Port-Of: odoo/odoo#136900We do not clean the event handlers properly (because we do .bind()). So we have another version of the handlers and they are not unbinded. In this commit, to remedy this, we use the useBus function which resolves this problem. Forward-Port-Of: odoo/odoo#137817
Original PR description
We do not clean the event handlers properly (because we do .bind()). So we have another version of the handlers and they are not unbinded. In this commit, to remedy this, we use the useBus function which resolves this problem. Forward-Port-Of: odoo/odoo#137817
Add missing '#' that prevent correct evaluation of the dynamic href attribute. To reproduce: - To to /jobs - Ensure 'Office Filter' page option is enabled (if not edit the page and enable it) - Click the office dropdown and hover 'All Offices' We ends ups with a URL like: `/jobs?{'all_countries=1' if is_remote else current_country_path}` --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#137580
Original PR description
Add missing '#' that prevent correct evaluation of the dynamic href attribute.
To reproduce:
- To to /jobs
- Ensure 'Office Filter' page option is enabled (if not edit the page and enable it)
- Click the office dropdown and hover 'All Offices'
We ends ups with a URL like:
`/jobs?{'all_countries=1' if is_remote else current_country_path}`
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#137580Rewrite test with `contains` to avoid race conditions. runbot-22827 Forward-Port-Of: odoo/enterprise#48275 Forward-Port-Of: odoo/enterprise#48252
Original PR description
Rewrite test with `contains` to avoid race conditions. runbot-22827 Forward-Port-Of: odoo/enterprise#48275 Forward-Port-Of: odoo/enterprise#48252
How to reproduce: - Add a file in a Knowledge article through `/file` - delete that file from the chatter thread - click on download on the file block in the Knowledge article Current behavior: - The file does not exists, but there is no error, instead a html file containing the error is downloaded instead Expected behavior: - Throws an error if the url for the file is invalid/does not match with any file in the database. Technical explanation: `downloadFile` returns a `XMLH
Original PR description
How to reproduce: - Add a file in a Knowledge article through `/file` - delete that file from the chatter thread - click on download on the file block in the Knowledge article Current behavior: - The file does not exists, but there is no error, instead a html file containing the error is downloaded instead Expected behavior: - Throws an error if the url for the file is invalid/does not match with any file in the database. Technical explanation: `downloadFile` returns a `XMLHttpRequest` instance when provided with an url. Launching the alert dialog `onerror` using the `web` util will allow to properly inform the user of a failure. Tracking: - usage of `downloadFile` in Knowledge introduced in [1]. - util in web to configure error management, see [2]. [1]: https://github.com/odoo/enterprise/pull/47056 [2]: https://github.com/odoo/odoo/pull/136259 task-3517796 Forward-Port-Of: odoo/enterprise#48517 Forward-Port-Of: odoo/enterprise#48321
before this commit, the documentation url for whatsapp is returning 404 * open general settings * click on documentation for whatsapp * 404 page after this commit on clicking documentation icon in res.config.settings whatsapp documentation page will be opened Forward-Port-Of: odoo/enterprise#48420
Original PR description
before this commit, the documentation url for whatsapp is returning 404 * open general settings * click on documentation for whatsapp * 404 page after this commit on clicking documentation icon in res.config.settings whatsapp documentation page will be opened Forward-Port-Of: odoo/enterprise#48420
In some cases transfer warning message was displaying the wrong amount. Only UI is affected, the actual amount transferred was correct. Forward-Port-Of: odoo/enterprise#48331
Original PR description
In some cases transfer warning message was displaying the wrong amount. Only UI is affected, the actual amount transferred was correct. Forward-Port-Of: odoo/enterprise#48331
Before this commit when the report editor asked for the Qweb, the specific rendering context did not contain the studio key. It could produces issues down the line, as some reports are prepared to receive that key and produce another output. After this commit, the studio key is present in the context and in the data passed to render the report. Forward-Port-Of: odoo/enterprise#48521
Original PR description
Before this commit when the report editor asked for the Qweb, the specific rendering context did not contain the studio key. It could produces issues down the line, as some reports are prepared to receive that key and produce another output. After this commit, the studio key is present in the context and in the data passed to render the report. Forward-Port-Of: odoo/enterprise#48521
Steps to reproduce: - Create a new shipping method with sendcloud as a provider - Enable DPD pickup points (must be enabled on your sendcloud account too) - Buy a product and proceed to check-out Bug: when selecting a pickup point house numbers aren't set which in turns leads to the delivery not being able to be validated Fix: set house number as part of the adress and remove redundant adress on template opw-3443246 Forward-Port-Of: odoo/enterprise#48317
Original PR description
Steps to reproduce: - Create a new shipping method with sendcloud as a provider - Enable DPD pickup points (must be enabled on your sendcloud account too) - Buy a product and proceed to check-out Bug: when selecting a pickup point house numbers aren't set which in turns leads to the delivery not being able to be validated Fix: set house number as part of the adress and remove redundant adress on template opw-3443246 Forward-Port-Of: odoo/enterprise#48317
In Studio, it is not possible to scroll the xml code of a view by clicking and moving the scroll bar Steps to reproduce: 1. Install CRM 2. Go to CRM, open a lead and toggle Studio 3. Open the view tab in the sidebar panel and click on xml 4. Try to scroll the template code by clicking on the scroll bar 5. It's not possible, instead you resize the sidebar Problem: The resizable_panel_handle was too wide and overlapped the scroll bar opw-3427984 Forward-Port-Of: odoo/enterprise#484
Original PR description
In Studio, it is not possible to scroll the xml code of a view by clicking and moving the scroll bar Steps to reproduce: 1. Install CRM 2. Go to CRM, open a lead and toggle Studio 3. Open the view tab in the sidebar panel and click on xml 4. Try to scroll the template code by clicking on the scroll bar 5. It's not possible, instead you resize the sidebar Problem: The resizable_panel_handle was too wide and overlapped the scroll bar opw-3427984 Forward-Port-Of: odoo/enterprise#48462
Before this commit: After configuring the WhatsApp integration under POS settings, it is not populating the WhatsApp field on the Receipt screen. After this commit: WhatsApp field displayed on the Receipt screen when WhatsApp POS is properly configured Task - 3516767 Forward-Port-Of: odoo/enterprise#48153
Original PR description
Before this commit: After configuring the WhatsApp integration under POS settings, it is not populating the WhatsApp field on the Receipt screen. After this commit: WhatsApp field displayed on the Receipt screen when WhatsApp POS is properly configured Task - 3516767 Forward-Port-Of: odoo/enterprise#48153
Added archive filter in WhatsApp template and Whatsapp Account view. Added an Archived ribbon in the form view for archived records. Task - 3516243 Forward-Port-Of: odoo/enterprise#47535
Original PR description
Added archive filter in WhatsApp template and Whatsapp Account view. Added an Archived ribbon in the form view for archived records. Task - 3516243 Forward-Port-Of: odoo/enterprise#47535
Problem --------- Some report lines where bolded even though they had no children. This should not be the case. The case where a line is bold even though it has no sublines occurs when all the sublines are hidden because they equals to 0. Thus, they exist but are not shown. Objective --------- Make the report line not bold when its sublines are hidden because they eqeual 0. Solution --------- Add a condition on the `unfolded` report line class so that it is not given to lines that ha
Original PR description
Problem --------- Some report lines where bolded even though they had no children. This should not be the case. The case where a line is bold even though it has no sublines occurs when all the sublines are hidden because they equals to 0. Thus, they exist but are not shown. Objective --------- Make the report line not bold when its sublines are hidden because they eqeual 0. Solution --------- Add a condition on the `unfolded` report line class so that it is not given to lines that have no visible children. task-3508362 Forward-Port-Of: odoo/enterprise#48445 Forward-Port-Of: odoo/enterprise#48432
- Enable Debug Mode - Navigate to the Project app - Click on the three dots on a project and then click on Settings - Enable Studio - Click View - Enable Show Invisible Elements - Click on Settings tab Invalid props for component Setting: studioIsVisible opw-3500479 Forward-Port-Of: odoo/enterprise#48415
Original PR description
- Enable Debug Mode - Navigate to the Project app - Click on the three dots on a project and then click on Settings - Enable Studio - Click View - Enable Show Invisible Elements - Click on Settings tab Invalid props for component Setting: studioIsVisible opw-3500479 Forward-Port-Of: odoo/enterprise#48415
Before the conversion in Gantt, when a pill was dragged arount the Gantt view, other pills were not highlighted when hovered. This behavior is broken since the conversion. This commit fix this. Steps ===== - Install project(_enterprise) - Open a project with multiple tasks with planned dates set (e.g. `Research & Development` in the demo data - Go to the Gantt view of the tasks of this project - Click on a pill and drag it arount the Gantt view Issue ===== Other cell are higlighted
Original PR description
Before the conversion in Gantt, when a pill was dragged arount the Gantt view, other pills were not highlighted when hovered. This behavior is broken since the conversion. This commit fix this. Steps…
Before the conversion in Gantt, when a pill was dragged arount the Gantt view, other pills were not highlighted when hovered. This behavior is broken since the conversion. This commit fix this. Steps ===== - Install project(_enterprise) - Open a project with multiple tasks with planned dates set (e.g. `Research & Development` in the demo data - Go to the Gantt view of the tasks of this project - Click on a pill and drag it arount the Gantt view Issue ===== Other cell are higlighted when hovered Cause ===== The classes `o_grabbing`, `o_copying` and `o_no_dragging` are added to the div with class `o_gantt_renderer` instead of `o_gantt_view`. The selector used to define the conditions to provide visual feedback on hover is therefore not valid anymore. Fix === The structure of the stylesheet is modified to have the o_gantt_renderer tag in the root selector as it is the one having the relevant class now instead of o_gantt-view. Note: It would have been WAY easier and clearer to simply add the pseudo-class :has in the initial selector but, unfortunately, it is not supported in Firefox. task-3444256 Forward-Port-Of: odoo/enterprise#48431 Forward-Port-Of: odoo/enterprise#44737
While we filter the columns where we insert things, we forgot to filter the elements to insert. opw-3499902 Forward-Port-Of: odoo/enterprise#48436
Original PR description
While we filter the columns where we insert things, we forgot to filter the elements to insert. opw-3499902 Forward-Port-Of: odoo/enterprise#48436
- SRI validates only 2 decimal digits on the 'descuento' tag, currently we exceed this number of decimal places with 6 digits. We format to 2 and correct unit tests Forward-Port-Of: odoo/enterprise#48166
Original PR description
- SRI validates only 2 decimal digits on the 'descuento' tag, currently we exceed this number of decimal places with 6 digits. We format to 2 and correct unit tests Forward-Port-Of: odoo/enterprise#48166
The DIN 5008 layout is mandatory in Germany, Austria, and a part of Switzerland. In enterprise, DIN 5008 extensions have already been added for `account_followup` and `industry_fsm`, but not `sale_renting`. Consequently, pickup receipts would be titled as sales orders when printed using the DIN 5008 layout. This commit extends the `l10n_din5008` & `sale_renting` modules to differentiate between pickup receipts & sales orders. opw-3470280 Forward-Port-Of: odoo/enterprise#46808
Original PR description
The DIN 5008 layout is mandatory in Germany, Austria, and a part of Switzerland. In enterprise, DIN 5008 extensions have already been added for `account_followup` and `industry_fsm`, but not `sale_renting`. Consequently, pickup receipts would be titled as sales orders when printed using the DIN 5008 layout. This commit extends the `l10n_din5008` & `sale_renting` modules to differentiate between pickup receipts & sales orders. opw-3470280 Forward-Port-Of: odoo/enterprise#46808
Currently, KeyError 'docs' occurs when users try to edit the sources or preview of 'Reception Report' report template because there is not any key available in ctx like 'docs' here: https://github.com/odoo/enterprise/blob/b8056c51cc8223761ecd9997c367c07b49b32a5f/web_studio/models/ir_actions_report.py#L45 Step to produce: - Install 'inventory' and 'studio' - Open inventory > Operations > Receipts - Click on studio icon left side of user image > Click on reports - Click "Reception Repor
Original PR description
Currently, KeyError 'docs' occurs when users try to edit the sources or preview of 'Reception Report' report template because there is not any key available in ctx like 'docs' here:…
Currently, KeyError 'docs' occurs when users try to edit the sources or preview of
'Reception Report' report template because there is not any key available in ctx like 'docs' here:
https://github.com/odoo/enterprise/blob/b8056c51cc8223761ecd9997c367c07b49b32a5f/web_studio/models/ir_actions_report.py#L45
Step to produce:
- Install 'inventory' and 'studio'
- Open inventory > Operations > Receipts
- Click on studio icon left side of user image > Click on reports
- Click "Reception Report" report
- Click "Edit resources" or try to preview >>> Error occur
Traceback on sentry:
```
KeyError: 'docs'
File "odoo/http.py", line 2134, in __call__
response = request._serve_db()
File "odoo/http.py", line 1710, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1737, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1938, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 191, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 717, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "home/odoo/src/enterprise/saas-16.4/web_studio/controllers/report.py", line 475, in save_report
report_html = self._render_report(report, record_id)
File "home/odoo/src/enterprise/saas-16.4/web_studio/controllers/report.py", line 419, in _render_report
return request.env['ir.actions.report'].with_context(studio=True)._render_qweb_html(report, [record_id] if record_id else [])
File "home/odoo/src/enterprise/saas-16.4/web_studio/models/ir_actions_report.py", line 24, in _render_qweb_html
return super(IrActionsReport, self)._render_qweb_html(report_ref, docids, data)
File "odoo/addons/base/models/ir_actions_report.py", line 874, in _render_qweb_html
data = self._get_rendering_context(report, docids, data)
File "home/odoo/src/enterprise/saas-16.4/web_studio/models/ir_actions_report.py", line 45, in _get_rendering_context
if self.env.context.get("studio") and not ctx["docs"]:
```
This is because recently refector [Commit](https://github.com/odoo/enterprise/commit/2ae63d9a43ba973d905232105201d88e423a8245#diff-f51038885176025d325e1eac026ece97c9fd6d945f0141c482080252e5efc829R43) was added ant tries to access 'docs' which is not available in ctx.
The data was added in ctx from the here [Code](https://github.com/odoo/odoo/blob/b8cbed1138cd9ea94c09bb34762184c76a79d6c3/odoo/addons/base/models/ir_actions_report.py#L898-L910), but in many reports, due to validation, 'docs'
may not be added for stock see [Line](https://github.com/odoo/odoo/blob/b8cbed1138cd9ea94c09bb34762184c76a79d6c3/addons/stock/report/report_stock_reception.py#L38).
This commit fixes this issue by accessing 'docs' with 'get()' instead of direct
access to prevent KeyError if 'docs is not available in ctx.
sentry-4404390033
Forward-Port-Of: odoo/enterprise#46275Before this PR, all the sales quotation status was set to cancel, but the data still appeared in reports and non-recurring filters in both graph and pivot views. After this PR, add domain for cancelled records to not showing in reporting graph view and pivot view. task-3500508 Forward-Port-Of: odoo/enterprise#48338 Forward-Port-Of: odoo/enterprise#46687
Original PR description
Before this PR, all the sales quotation status was set to cancel, but the data still appeared in reports and non-recurring filters in both graph and pivot views. After this PR, add domain for cancelled records to not showing in reporting graph view and pivot view. task-3500508 Forward-Port-Of: odoo/enterprise#48338 Forward-Port-Of: odoo/enterprise#46687
In 16.3, in case some checks failed on the tax report, the XML export wizard displayed a banner informing the user some checks had not been successful. From 16.4 on, it is not allowed to modify the options dict while generating the lines, and doing so has no effect anymore (since options are generated from a distinct RPC call). Because of that, the banner did show up anymore in the Belgian export wizard. We cannot restore the behavior of the banner (as it would mean we have to recompute th
Original PR description
In 16.3, in case some checks failed on the tax report, the XML export wizard displayed a banner informing the user some checks had not been successful. From 16.4 on, it is not allowed to modify the options dict while generating the lines, and doing so has no effect anymore (since options are generated from a distinct RPC call). Because of that, the banner did show up anymore in the Belgian export wizard. We cannot restore the behavior of the banner (as it would mean we have to recompute the report when generating the options, which is of course not acceptable). Instead, we make the failed checks more visible on the report, by using a red banner and the standard warnings mechanism. The wizard does not show anything anymore, but it is assumed the user cannot open the export wizard without having first noticed the big red banner on the report. Forward-Port-Of: odoo/enterprise#46804