Friday, October 6, 2023
42 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
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 checks