Friday, October 6, 2023
30 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
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
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
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
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.
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
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
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
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
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
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.
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
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
Resolved issues and error corrections
This 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
Code cleanup and technical improvements
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
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.
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
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
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
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)