Monday, November 14, 2022
15 changes · master
Enhancements to existing features
Employees linked to timesheets can no longer be deleted directly, preventing broken or incomplete timesheet records. Users are guided to either remove the related timesheets first or archive the employee instead, keeping reporting and historical records consistent.
Original PR description
Before this PR user can directly delete employees even though employees have timesheets that make employee field in timesheet black which is not right behavior because in timesheet employee field is required. This PR adds a delete wizard for employee delete action if employees have any timesheet then user cannot delete that employees without deleting timesheets instead user can archive that employees. task-2938632
This update simplifies several Point of Sale workflows, including cash opening and closing, product entry, customer display, and restaurant floor handling. It helps store staff avoid unnecessary clicks, preserve entered cash details, better understand setup issues, and use clearer controls during daily operations.
Original PR description
Overall improvement and simplification (along with some minor re-alignment) for the point of sale. POS Dashboard: - added a new check for companies that hasn't installed any chart of account, this…
Overall improvement and simplification (along with some minor re-alignment) for the point of sale. POS Dashboard: - added a new check for companies that hasn't installed any chart of account, this gives them a better understanding of the real problem. - added a new `menuitem` in the configuration tab that list all the pos configs, this gives the user a way to access the sub-config of a pos (and indirectly give access to its whole settings) Opening/closing control: - the `MoneyDetailsPopup` is now opened through the `showPopup` method, we're no longer using the css to show/hide. - the details of the money (if it exists) is now given to the `MoneyDetailsPopup` component, this allows to have a record data usable of the details and the user doesn't have to start from scratch if he just wants to modify one thing - opening the `MoneyDetailsPopup` no longer resets the cash input, that way the user can just quickly check if everything is correct again without having to recount everything and this won't reset the outcome Customer display: - added "Powered by" before the Odoo logo in order to accentuate that it's from the software used is from Odoo Product screen: - visual improvement of the `EditListInput` component which is mostly used by the lot/serial number, it gives more information to the user and better UX - "Cash out" is now automatically selected upon opening the `CashMovePopup`. No more minus sign (-) in the input amount. This should give better intuitiveness and one less click to do - no more clear search button shown if the search input is empty - removed the hover and clickable effect on `CashierName` component in the normal point_of_sale since nothing happens when we click on it - increased the width of the click zone with a label in the `ProductConfiguratorPopup` which makes it easier to select a radio input - the `PrintBillButton`, `SplitBillButton`, `RewardButton` and `ResetProgramsButton` are now disabled when nothing happens - the `textarea` of the `TextAreaPopup` component has been fixed and is no longer resizable Partner list screen: - fixed phone, mobile and mail icons the contact area - increased details button size Floor screen: - when idle, no longer redirect to the floor screen if there's an open error popup. An error popup is opened for a specific reason, we shouldn't redirect while having this open or automatically close it. Other kinds of popup will be closed since those are issued by the user that went away. task-2916197
This update adds missing automated tests for Odoo's background task scheduler, helping catch issues before they affect operations. It especially strengthens coverage for timing and concurrency scenarios that previously caused subtle reliability problems.
Original PR description
The cron subsystem is the system responsible of running background task at regular interval, it runs in multiple dedicated threads or workers that are independent of the regular HTTP threads/workers.…
The cron subsystem is the system responsible of running background task at regular interval, it runs in multiple dedicated threads or workers that are independent of the regular HTTP threads/workers. There was a major overhaul of the system in v15 (4b28f1162a8) to introduce cron triggers, a way to run a task at a given moment in addition to the regular configured interval. Although the cron system was not extensively tested before that v15 refactor, no new test were introduced with that refactor leaving the system mostly untested. Since then we had to fix multiple subtle concurrency bugs such as b940d1c25f8 and c06cee44fe1. Due to the lack of an existing test suite, no regression tests were added next to those fixes. With this commit we introduce the missing cron test suite. The test suite is separated in two different test cases: - A standard pre-install TransactionCase to test everything that can be tested with a single cursor. This case can be run the usual way with `--test-tags :TestIrCron`. - A non-standard post-install **database breaking** test case to run concurrency tests that often require multiple SQL transactions. This case requires the special `--test-tags database_breaking` to be executed. You MUST backup your current database before running that test or you'll loose data.
This change improves how Odoo loads customer and contact names by preparing the needed information in advance. It should make screens and processes that display many contacts feel faster, without changing what users see or how they work.
Original PR description
Task: 2482847
This update modernizes how Odoo serves digital product downloads and hardware driver logs. It uses a unified streaming approach that improves caching and can make file delivery more efficient through web proxies.
Original PR description
**[IMP] website_sale_digital: use ir.binary to serve attachment** We introduced `odoo.http.Stream` and its `ir.binary` companion model to refactor all the "stream data over http" bits into a single unified API. The API takes care of creating a cache-aware, proxy-accelerated, headers-rich HTTP response out of any path, attachment or binary-field. **[IMP] hw_drivers: use clever HTTP cache for logs** `odoo.http.send_file` is deprecrated, `odoo.http.Stream` using the `from_path` constructor is a drop-in replacement.
This update moves styling settings that are only used by Live Chat out of the broader Mail area and into the Live Chat module. This keeps the product code better organized and reduces unnecessary coupling between Mail and Live Chat, with no expected change for end users.
Administrators editing interface views can now select and open the related model from a proper linked field instead of editing only a text value. This makes configuration easier and reduces friction when reviewing or updating view settings.
Original PR description
When using the view "edit view" on the interface as administrator, the user can see and modify the model of the view as a string, but cannot navigate to the model easily or edit the model field by selecting the model in a list. This pull request adds the possibility to view and edit the model field as a many2one. task-id: 3007619 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change removes an unnecessary internal processing step when filtering records by a field name. It can make filtering faster on very large datasets, with minimal visible impact in everyday use.
Original PR description
The mapped call is supposed to populate the cache, but that's already taking care of by prefetching.
It ends up adding an overhead instead.
The perf improvement is more noticeable on large recordsets.
For example, on a database populated with 100k res.partner records.
Before:
```py
partners = env["res.partner"].search([])
partners.filtered("name") # warm up
timeit.timeit(lambda: partners.filtered("name"), number=100)
# result: 71.54
```
After:
```py
partners = env["res.partner"].search([])
partners.filtered("name") # warm up
timeit.timeit(lambda: partners.filtered("name"), number=100)
# result: 46.72
```
Although the perf imp is miniscule in real world cases, these lines can be misleading IMO.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThe Mail module has been added to automated formatting and linting checks. This helps keep the codebase consistent and easier to maintain, reducing the risk of future issues without changing user-facing behavior.
Project task actions in the command palette are now clearer and adapt to the current task status. Users can more easily move tasks to the next stage, switch priority, and update kanban state without seeing irrelevant options.
Original PR description
- Add 'Move to next stage': Stage and Personal Stage both have a status bar widget. Yet, when this widget creates a command in the registry, it stores it at the same key. So it overrides the last…
- Add 'Move to next stage': Stage and Personal Stage both have a status bar widget. Yet, when this widget creates a command in the registry, it stores it at the same key. So it overrides the last saved. This is the reason why this command was not available. An improvement to come in the framework js aims to not create commands for invisible fields. As, in our case, only one will be visible at a time, the conflict will be resolved. - Change the 'set priority' command to 'set priority as normal/important' : Depending on the priority of the ticket, the command will display 'Set priority as [the other priority]'. This improvement comes with a migration script to change 'High/Low' into 'Important/Normal'. - Transform the 'Set kanban state' command into three commands Only two of them are now displayed, depending on the current kanban state of the task. task-2857447 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
The user notification alert has been moved from the mail area into the core web and base user form where it more naturally belongs. This makes the feature available without relying on mail-specific functionality and should simplify maintenance with little visible impact for users.
Original PR description
The code does not actually depend on mail features and it is intended to be used in the base form view of user.
Project task screens now make it easier for users to find the right tasks and understand copied stages. My Tasks shows personal stages for private tasks, subtask and parent task searches use more relevant default filters, and duplicated stages are clearly marked as copies.
Original PR description
Description of the issue/feature this PR addresses: - project.task > search parent task > if possible, add a default filter on the current project-->pending - my tasks list view: if possible display the personal stage instead of the stage for private tasks - project.task form view > sub-tasks notebook > add a line > apply a default filter on 'open tasks' - indicate '(copy)' in the name of the stage when duplicating it Current behavior before PR: Desired behavior after PR is merged: Task-3024152 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Helpdesk module now includes population logic to create sample or test data more easily. This helps teams evaluate, demonstrate, and test Helpdesk scenarios with more realistic data.
Original PR description
task-3035507
Users can now edit the reference and narration directly from the bank reconciliation widget. This makes it easier to correct or enrich transaction details during reconciliation, reducing follow-up work and improving accounting records.
Original PR description
…dget
The timesheet experience is clearer with simpler time rounding wording and settings that hide irrelevant options when time is entered in days. Grid views now visually mute empty placeholder rows, helping users distinguish real records from suggested or expandable rows.
Original PR description
Purpose of this PR to improve generic UX of timesheet app. So, in this PR done following changes: - hide 'time rounding' div if encoding unit is days regardless of 'awesome timesheet' is enabled or not. - change label from minute to min in 'time rounding' feature. - show empty rows muted so user can distinguish between actual rows and rows(empty rows) that are come from group_expand in grid view. task-2938632