Wednesday, May 17, 2023
18 changes · master
Enhancements to existing features
The Discuss sidebar no longer shows an unexpected grey background when the module opens. This creates a cleaner, less distracting interface while keeping highlighting only for the active sidebar item.
Original PR description
== ISSUE == When opening the Discuss module, there is a weird grey background on the sidebar. == After this commit == This commit removes that style on the element, to keep only a background on the active one. task-3326309 part of task-3326263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a new company is created, Odoo now automatically prepares a basic Point of Sale setup if POS is installed. This reduces manual setup by creating default shop, payment methods, and restaurant bar configuration when applicable.
Original PR description
A new POS config with the name Shop is created when a new company is created with a dedicated fiscal postion and if point_of_sale is installed. A Bank payement method is created for the POS, as well as a Customer Account payement method. If a there is a cash journal that is not already linked to a payement method it would create a cash payement method for the dedicated POS. If the module pos_restaurantis installed it would also create a POS config with the name Bar of type restaurant with the same specification as for the normal pos config Shop. Since the changes create default configs along with payement methods, there was some conflicts with the test instances. Therefore the payement methods where unlink in the set up of the test to resolve the conflicts. task-3244511 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines how inventory transfers are created, edited, and validated, making new transfers ready for immediate processing while still allowing teams to switch to a planned workflow when needed. It also improves lot and serial number handling by letting users generate or import serials directly from detailed operations, reducing manual steps and errors across inventory and manufacturing processes.
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
Checkout now shows only shipping methods that customers can actually use for their order. This avoids confusion from displaying delivery options that would later be rejected, making the buying process smoother.
Original PR description
When the customer is ordering something, all the available shipping methods are displayed. If one of those is based on rule and that those rules are not respected, then a error message is displayed and the customer is not allowed to choose it. It is then unnecessary to display it. task-3062417 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves everyday project management workflows by adding clearer guidance, easier collaborator invitations, better deadline visibility, and smarter defaults for subtasks and invoicing setup. It also polishes customer-facing rating emails and cleans up shared project forms, helping teams work faster with fewer manual steps.
Original PR description
…ject The purpose of this PR is to improve the generic usage of the project app. So, in this PR done following changes: - In project.update right-side panel added helpers in Sales Section and Profitability Section - In the rating request email template made some grammatical changes and added best regards and company information - Hide transparent tags in form view of project sharing - In project.project form view invoicing notebook > employee/SOL mapping : - set the project's default Sol - selecting existing employees should not be possible - allow for on-the-fly employee creation - Added an Invite collaborator button to the list view of project.collaborator - Now the deadline is shown in red if it has passed and the task is still open - The milestone of the parent task should be set by default for its subtasks task-2947578
The credit note wizard now offers direct action buttons for creating a refund or modifying an invoice, instead of asking users to choose from radio options first. The old cancel option has been removed, making the process clearer and reducing extra steps for accounting users.
Original PR description
Description of the issue/feature this PR addresses: simplification of the credit note wizard Current behavior before PR: First users select reverse option (3 radio buttons): 1) refund 2) cancel 3) modify The reverse action is triggered when the users clicks on the "reverse" button Desired behavior after PR is merged: radio button are removed. There is now two buttons that trigger directly the reverse action with the desired option (refund or modify, cancel is removed) task id: 3244377 [mockup](https://app.excalidraw.com/l/65VNwvy7c4X/2812i7OVfBl) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Clicking a user avatar in property fields now opens that user's chat, matching the behavior people expect from standard avatar widgets. Property tags also avoid automatically using white and have improved label alignment, making records clearer and easier to use.
Original PR description
Purpose ======= Like standard avatar widget, we want to open the chatter of a user when clicking on a many2many / many2one avatar property. Task-3208449
Odoo now uses EU VIES VAT validation when deciding whether certain fiscal positions should be applied automatically. This helps ensure cross-border EU tax rules are applied only when a customer’s VAT number is considered valid, while still allowing users to review or manually adjust the result.
Original PR description
The VIES database is a database of EU VAT numbers that can be accessed to confirm the validity of an EU VAT number for cross border transactions within the EU. At present the user can select an…
The VIES database is a database of EU VAT numbers that can be accessed to confirm the validity of an EU VAT number for cross border transactions within the EU. At present the user can select an option in the settings to check VAT numbers against this database. If the VAT number fails this validation, the result is a non-blocking banner message that informs the user that the VIES validation has failed, but has no further ramifications (the user can still use an unrecognised VAT number). This non-blocking functionality is still desirable, however we wish to determine the validity of certain fiscal positions based on whether the VIES VAT check is valid. If VAT is required on a fiscal position, there are new conditions for automatically applying the fiscal position. 1) Is VIES VAT check enabled on the company? If no, then use the normal behaviour. 2) Is the country of the company within Europe, or is the fiscal position one on which a Foreign VAT is defined and the country in which the fiscal position applies is in Europe? If no, then use the normal behaviour. 3) If the answer to the above two questions is yes, then whether the VAT is valid (and the fiscal position is automatically applied) is determined by the the "vies_valid" field on the partner. The boolean "vies_valid" field is added, and populated based on the existing onchange function for the banner, triggered when the VAT/Partner changes. It can be manually edited by the user and changes to this field are tracked in the chatter. It is added to the partner view as a checkbox visible next to the VAT. A computed field is a added such that the "Vies Valid" checkbox is displayed on the partner form conditionally based on whether company has the vies vat check option enabled in the settings. The existing VIES check failed banner and associated field is removed. A hook called _get_vat_required is placed in the method on fiscal position that retrieves the appropriate fiscal position for a given account move, and it is overridden by a function in base_vat, which specifies whether the partner/delivery address matches the 'vat_required' condition based upon the above listed conditions. task-id: `3218194`
This update improves how Odoo checks whether website and web page assets such as JavaScript and CSS are up to date. It reduces repeated file lookups and separates CSS and JavaScript checks, helping pages load faster when asset caches are cold while preparing for further caching improvements.
Original PR description
Note: This pr contains all changes of #116700 regarding assets unique computation except the assets cache. The _glob_static_file is already there to ensure a consistent generation as well as…
Note: This pr contains all changes of #116700 regarding assets unique computation except the assets cache.
The _glob_static_file is already there to ensure a consistent generation as well as preparing the api for the static cache.
During the assets generation/invalidation one of the most expensive task is to
- list all files needed for one assets
- get the timestamp of the file
This is mainly visible when the bundle already exists, but we want to ensure it is up to date.
In prevision of a memory glob, this commit changes the api of multiple call in order to propagate to information from get_path to the AssetBundle, making some optimization, ....
Note that this commit also removes call to `get_module_path` and `get_resource_path` to get a real speedup.
Some values to show speedup linked to all changes:
Assets pregeneration check (enterprise runbot)
Before all changes:
js: ~3s
css: ~1s
After all changes (including static file cache for memory glob):
js: ~0.6s
css: ~0.2s
After this pr (approximated value tested in a different environment):
js: ~1.5s
css: ~0.4s
# Justification of changes:
## split js and css unique
- this will mainly allow to avoid to regenerate css bundle when a js file is modified and vice versa
- this will allow to help to simplify the way the unique is computed, no need to generate WebAssets for all files, we can get
the one of the files of our filetypes in the asset bundle.
## passing debug to the AssetBundle
Before that, the responsibility of passing the debug was given to the `to_node`
This is mainly needed because now the modified time is part of the information given when generating the bundle.
This parameters allows to ignore timestamps given at init if we are in debug=assets. This information is stored on the AssetBundle and there is no need to
## _process_path extraction from _fill_asset_paths
It looks like the instantiation of the closure had a visible impact, a noticeable speedup was observer after extraction.
## is_wildcard_glob**:
```python
# long path: /home/xdo/osrc/master/odoo/addons/web_enterprise/static/js.some_file.js
In [33]: timeit.timeit("""WILDCARD_CHARACTERS.isdisjoint(part)""", """WILDCARD_CHARACTERS = {'*', "?", "[", "]"}; part= '/home/xdo/osrc/master/odoo/addons/web_enterprise/static/js.some_file.js'""")
Out[33]: 0.99594196700491
In [34]: timeit.timeit("""any(char in part for char in WILDCARD_CHARACTERS)""", """WILDCARD_CHARACTERS = ['*', "?", "[", "]"]; part= '/home/xdo/osrc/master/odoo/addons/web_enterprise/static/js.some_file.js'""")
Out[34]: 0.4327025180682
In [35]: timeit.timeit("""'*' in part or '[' in part or ']' in part or '?' in part""", """WILDCARD_CHARACTERS = ['*', "?", "[", "]"]; part= '/home/xdo/osrc/master/odoo/addons/web_enterprise/static/js.some_file.js'""")
Out[35]: 0.122356166015379
# short path: web
In [42]: timeit.timeit("""WILDCARD_CHARACTERS.isdisjoint(part)""", """WILDCARD_CHARACTERS = {'*', "?", "[", "]"}; part= 'web'""")
Out[42]: 0.106310188071802
In [40]: timeit.timeit("""any(char in part for char in WILDCARD_CHARACTERS)""", """WILDCARD_CHARACTERS = ['*', "?", "[", "]"]; part= 'web'""")
Out[40]: 0.41943872300907
In [41]: timeit.timeit("""'*' in part or '[' in part or ']' in part or '?' in part""", """WILDCARD_CHARACTERS = ['*', "?", "[", "]"]; part= 'web'""")
Out[41]: 0.08835467300377786
```
## os.path.join vs os.sep.join
```python
In [49]: timeit.timeit("""os.sep.join([addons_path, *path_parts])""", """import os; addons_path='/home/xdo/osrc/master/odoo/addons';path_parts='web_enterprise/static/js.some_file.js'.split('/')""")
Out[49]: 0.19142860104329884
In [50]: timeit.timeit("""os.path.join(addons_path, *path_parts)""", """import os; addons_path='/home/xdo/osrc/master/odoo/addons';path_parts='web_enterprise/static/js.some_file.js'.split('/')""")
Out[50]: 1.2845886170398444
```
# Security:
## Removal of some checks in get_paths
Checking that the normalized path is in a addons_path with addon and static should be enough.
This is actually more strict than before were only the xml file must be in a static file, the check is also more precise.
After that the fullpath is propagated and if not present, this must be an attachment or a non aggregable asset.
One file was moved from non static directory to static in another pr to make it work here.
After that the fullpath is propagated to _get_asset_paths and _get_asset_content:
```python
if full_path is not None:
files.append({
'atype': mimetype,
'url': path,
'filename': full_path,
'content': '',
'media': media,
'last_modified': last_modified,
})
```
full_path at this point can be False or have the value coming from get_path
FInally AssetBundle still uses file_open to fetch the content as before.Timesheet users will now see more relevant projects and tasks first when searching in selection dialogs. This helps them find the right work item faster by focusing the default results on records related to the user.
Original PR description
1) Add default field for project/task Before this commit searching on project and task display all records in search more dialog without distinction and because of that sometimes it is difficult for user to find a proper record. This commit add default filter on search more dialog to display user related record. task-3251672
This update improves the web interface tutorial and navigation experience by aligning colors, adding helpful guidance in the control panel, and clarifying the hamburger menu naming. These changes make the interface more consistent and easier for users to understand during onboarding.
Original PR description
This PR follows the tutorial of the R&D UX/UI Requires - https://github.com/odoo/enterprise/pull/38340 task-3234820 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The master branch release label has been updated to 16.4 alpha. This prepares the product codebase for the next development cycle and helps teams align testing, packaging, and release planning around the new version.
This update adds a test to ensure eSignature fields that depend on restricted access settings behave correctly. It helps reduce the risk of future changes accidentally breaking secure field handling in signing workflows.
The timesheet timer now guides users toward relevant projects and tasks when searching, making it easier to pick the right work item. Users can open existing project or task records for context, while quick creation and editing from the timer fields is restricted to prevent accidental or inappropriate entries.
Original PR description
1) Make task/project field no_create_edit and not no_open Before this commit project and task field is was possible to create and edit task/project it was not good cause user create any type of project and task from there even non allowed timesheet project and not opening project and task it not providing any info of name of record if lots of records have similar name. This commit make task/project no_create_edit and make not no_open. 2) Add default filter on timer fields Before this commit searching on project and task display all records in search more dialog without distinction and because of that sometimes it is difficult for user to find a proper record. This commit add default filter on search more dialog to display user related record. task-3251672
Warehouse transfers now start ready for immediate processing, while teams can still switch to the traditional planned workflow when needed. Serial and lot numbers can now be generated or imported from the detailed operations screen, reducing manual work and improving traceability.
Project update screens now include helpful guidance in the budget section of the right-side panel. This makes it easier for users to understand and work with project budget information during regular project follow-up.
Original PR description
The purpose of this PR is to improve the generic usage of the project app. So, in this PR done following changes: -In project.update right-side panel added helpers in : - Budget Section task-2947578
The Knowledge app now shows the external link button for many-to-one property fields with a transparent style. This makes the interface look cleaner and helps the button blend better with the surrounding field design.
Original PR description
Purpose ======= Make the many2one "external link" button transparent. Task-3208449
When a new company is created, Odoo now automatically prepares default Point of Sale setups when POS is installed. This saves setup time by creating standard shop or restaurant configurations and common payment methods such as bank, customer account, and available cash options.
Original PR description
A new POS config with the name `Shop` is created when a new company is created with a dedicated fiscal postion and if `point_of_sale` is installed. A `Bank` payement method is created for the POS, as well as a `Customer Account` payement method. If a there is a cash journal that is not already linked to a payement method it would create a cash payement method for the dedicated POS. If the module `pos_restaurant`is installed it would also create a POS config with the name `Bar` of type restaurant with the same specification as for the normal pos config `Shop`. Since the changes create default configs along with payement methods, there was some conflicts with the test instances. Therefore the payement methods where unlink in the set up of the test to resolve the conflicts. task-3244511