Wednesday, March 22, 2023
67 changes · master
Enhancements to existing features
This update improves how accounting-related imports and commit suggestions are handled, with changes touching core accounting and Italian electronic invoicing. It should make related accounting operations more reliable while limiting the visible impact for day-to-day users.
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
The payment form now carries the related invoice reference when customers pay through the portal. This helps subscription payments be linked to the correct invoice during transaction creation, improving payment processing accuracy.
Original PR description
Passing the invoice_id through the payment form values will allow receving this parameter in subscriptions and then use it during the transaction creations. Task-id: 3144077 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Spreadsheet downloads are improved so users can export spreadsheet content more reliably and with better supporting data handling. This helps teams share and work with spreadsheet reports outside Odoo with fewer interruptions or incomplete data issues.
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
Reception reports now show the barcode for each stock transfer alongside the transfer name. This makes it easier for warehouse teams to identify and process incoming transfers directly from the report.
Original PR description
Currently, transfer barcode is not available in reception report. So in this commit, I have added transfer barcodes. Also, align the barcode and transfer name according to the report. TaskID - 3081077
Users can more reliably manage unread messages in Mail and Live Chat. The update also prevents a confusing new-message marker and message flicker when a user posts a message, making conversations feel smoother and clearer.
Original PR description
task-3232911
The timesheet timer is now available directly from list and kanban views. This makes it easier for employees to start or manage time tracking from the views they already use, reducing navigation and improving daily timesheet usability.
Original PR description
task-2276491 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 emoji picker in Odoo Mail now shows recently used emojis, making it faster for users to reuse their favorite reactions and symbols. This small usability improvement helps streamline everyday messaging and collaboration.
Original PR description
Task-2982627 
Knowledge demo articles now show emojis again, making sample content more engaging and easier to scan. The update also adds an installation check that warns administrators if their local setup may still have the older parsing issue that previously required emojis to be removed.
Original PR description
This commit reverts the changes made in commit [1], in which the emojis in xml files had been removed to avoid some crash that happened on some MacOS with some specific lxml and python versions. This commit also adds a pre_init_hook that will try to parse an emoji and show a message advising to reinstall the lxml package without binaries if parsing the emoji crashed. Task-2993768 [1]: https://github.com/odoo/enterprise/commit/fd09b6f900e82d532505ad46905c549d1c237262
This change removes temporary maintenance code that was previously needed to adjust an existing accounting view without a full module update. It simplifies the accounting module in the main version with no expected impact on day-to-day users.
Original PR description
To avoid a module update, code was added to update an existing view. This can be removed in master.
Resolved issues and error corrections
The activity popover now shows its placeholder text in a more readable way. This makes the mail activity interface easier to understand at a glance, especially when there is no detailed content to display.
Original PR description
Before <img width="651" alt="before" src="https://user-images.githubusercontent.com/6569390/226924326-8ce91819-f30e-46b0-8b8c-acaf965fbee1.png"> After <img width="643" alt="after" src="https://user-images.githubusercontent.com/6569390/226924358-54d7fb75-1ee1-47de-9657-421a0b08f174.png">
Code cleanup and technical improvements
This update reorganizes the internal code that powers selectable suggestion lists in Odoo Mail, such as composer mentions and discussion selectors. It should make future maintenance easier while preserving the existing user experience for email and chat interactions.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
In this commit fixes below bugs which were produced in version 16, - remove the 'per hour' label next to the hourly cost in employee form view - minimize space on 'allocated hours' field input task-3000757 Forward-Port-Of: odoo/odoo#115998 Forward-Port-Of: odoo/odoo#102824
Original PR description
In this commit fixes below bugs which were produced in version 16, - remove the 'per hour' label next to the hourly cost in employee form view - minimize space on 'allocated hours' field input task-3000757 Forward-Port-Of: odoo/odoo#115998 Forward-Port-Of: odoo/odoo#102824
Users can now switch from webcam video to screen sharing during a call without the previous camera stream blocking the change. This improves reliability for online meetings and includes tests to help prevent the issue from returning.
Original PR description
Before this commit, trying to share screen while using the user video (webcam) wouldn't work because the old stream was kept instead of trying to obtain a new one. This commit fixes this issue, does a small cleanup of `rtc_service.js` and adds tests related to streams.
The chatter area has received visual fixes for spacing, styling, and missing borders. This makes messages and activity details clearer and more polished for users working in Odoo records.
Original PR description
This commits makes some improvement on the chatter visuals -Spacing/styling of various elements -Missing borders around chatter (Reintroduces https://github.com/odoo-dev/odoo/pull/2385 after retargeting the right branch).
Point of Sale receipts will now include the selected client's name when one is provided. This helps businesses give customers clearer receipts while leaving the field blank when no client is selected.
Original PR description
Description of the issue/feature this PR addresses: Client name is not printed in POS receipts Current behavior before PR: Client name is not printed in POS receipts Desired behavior after PR is merged: When a client name is selected on the POS screen, the name will be printed in the POS receipt, otherwise blanc. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Starred messages in Odoo Mail now display with the expected gold color. This makes important messages easier to recognize at a glance and restores the intended visual cue for users.
When users edit a message in the Mail app, the editing area now expands to use the full available width. This makes longer messages easier to review and update, improving readability and reducing layout frustration.
Original PR description
Before: <img width="1993" alt="Screenshot 2023-03-22 at 10 18 09" src="https://user-images.githubusercontent.com/6569390/226856917-55f79420-46b1-4cf8-ab50-bf4a838160e0.png"> After: <img width="2000" alt="Screenshot 2023-03-22 at 10 17 50" src="https://user-images.githubusercontent.com/6569390/226856926-d98af662-0895-400d-b096-c09a195f6d8c.png">
The mail discussion area now gives translators fuller context for certain labels, helping translated text better match the intended meaning. This reduces confusing wording for users working in languages other than English.
This fix prevents some views from failing to load when related property information is missing from the loaded record data. It improves reliability for users by safely handling incomplete view data instead of showing an error.
Original PR description
When loading a view, the system will populate the related property field with the values stored in the datapoint of the record. Currently, the system does not do any safe check when reading those values. The system can hence raise an error if the view does not load the record storing the property definition of the current record. This commit will fix that issue by adding a safe check when populating the related property field with the values of the datapoint. task-3218435 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
An unnecessary final step was removed from a point of sale automated test because it could fail unpredictably. This helps keep validation runs stable without changing how users work with the point of sale.
Original PR description
The last step of PaymentScreenTotalDueWithOverPayment tour is not really needed and it randomly breaks in runbot. Better to remove it. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The mail composer now shows suggested recipients with less empty space, making the recipient area cleaner and easier to scan. This is a small visual fix that improves the message composition experience without changing functionality.
Original PR description
Before <img width="904" alt="before" src="https://user-images.githubusercontent.com/6569390/226929307-dd600e95-b6c8-4bec-997e-e1a1849321dc.png"> After <img width="901" alt="after" src="https://user-images.githubusercontent.com/6569390/226929040-b65df7b8-e04d-4418-84de-202d7fc935e0.png">
The mail message deletion confirmation dialog now properly prevents clicks from passing through while it is open. This avoids accidental actions in Discuss and makes deleting messages safer and more predictable for users.
Original PR description
Since the discuss refactoring, clicks are not disabled in the message delete dialog. This commit fixes the issue.
Folded chat windows no longer show member-list and settings buttons that do not visibly do anything in that state. This reduces confusion and keeps the chat interface cleaner until the window is expanded.
Original PR description
They make sense when the chat window is unfolded, as it changes the content. But when folded, the buttons have no visible affect. Better hide them in that case. Before: <img width="344" alt="before" src="https://user-images.githubusercontent.com/6569390/226970740-fd67f6e2-cad4-4f3a-a28c-f533472f01b3.png"> After: <img width="346" alt="after" src="https://user-images.githubusercontent.com/6569390/226970601-5c1660c5-9810-4aee-8355-0c1db692842b.png">
This fixes how timestamps are shown when multiple mail messages are grouped together. Users now see these times in the expected 24-hour format, reducing confusion and keeping the mail interface consistent.
Original PR description
Before <img width="242" alt="before" src="https://user-images.githubusercontent.com/6569390/226932127-9efd8e68-255a-4562-a507-37f392b19961.png"> After <img width="242" alt="after" src="https://user-images.githubusercontent.com/6569390/226932151-3b7ca6e9-6daf-4c6a-954d-d05c98634701.png">
The chatter panel now fits correctly within Marketing app forms instead of stretching across the full page. This keeps key record details and communication history easier to view side by side, improving usability for marketing users.
Original PR description
Before <img width="2305" alt="before" src="https://user-images.githubusercontent.com/6569390/226975094-8eb0a7a4-297a-4447-b72d-75869cb46a94.png"> After <img width="2303" alt="after" src="https://user-images.githubusercontent.com/6569390/226975112-7d5c43af-86c1-40e8-8b92-2b7eebde538e.png">
The employee time-off interface now aligns the instant messaging status icon correctly. This small visual fix makes the screen look cleaner and easier to read for users managing leave information.
Original PR description
Before: <img width="116" alt="before" src="https://user-images.githubusercontent.com/6569390/226967510-e8455a4b-1581-4499-aeab-359cf8b5d86a.png"> After: <img width="109" alt="after" src="https://user-images.githubusercontent.com/6569390/226967535-858fbcce-d0f2-4fe0-b696-7158da44be03.png">
The follower subtype dialog in Mail is now more compact, making it easier to view and use without taking up excessive screen space. This improves the user experience when managing notification preferences for followers.
Original PR description
Before <img width="907" alt="before" src="https://user-images.githubusercontent.com/6569390/226976906-ac21e3d3-ea5d-4234-8e03-5b8a02e716c7.png"> After <img width="915" alt="after" src="https://user-images.githubusercontent.com/6569390/226976926-41348c04-0115-49dc-a2ea-906670330546.png">
The emoji picker now shows category selections without clipping emojis. This makes the chat experience cleaner and easier to use for users choosing emojis.
Original PR description
Before <img width="287" alt="before" src="https://user-images.githubusercontent.com/6569390/226983018-6e74b81e-4ca0-45d2-8b7a-43e7e8b95354.png"> After <img width="290" alt="after" src="https://user-images.githubusercontent.com/6569390/226983048-12b91583-b979-49a5-bc73-d1815f5b4aa4.png">
The Project app's internal files have been reorganized so each business object has its own model and view file. This does not introduce new user-facing features, but it makes the codebase easier to search, maintain, and update safely over time.
Original PR description
This PR aims to create a separate file per model, in folders "models" and "views", to ease grepping. In order to keep the history, it contains to commits. The first one just moves/copies the files (e.g.: $ cp project.py project_task.py $ mv project.py project_project.py ). The second one update the content of each file to only keep the contents it is supposed to be containing. task-3234479 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Forum module has been reorganized so its code, data, views, templates, and tests are easier for Odoo teams to find and maintain. This is mainly an internal cleanup that prepares the module for future improvements, with a few small performance and code-quality refinements included.
Original PR description
PURPOSE Reorganize website_forum module. This allows to better locate code, understand organization, and prepare future changes. SPECIFICATIONS Split python files / model. It is easier to have a…
PURPOSE
Reorganize website_forum module. This allows to better locate code, understand
organization, and prepare future changes.
SPECIFICATIONS
Split python files / model. It is easier to have a global view of a module
organization and content when looking at the models directory. Each model
now belongs to a single file.
Do the same with data, views.
Split templates by main usage. Files have been duplicated previously, they
are now cleaned to keep only content relevant to their usage. Split is done
according to
* base file: layouts for main actions not specifically managed in other
sub-files: display a forum, manage tags, post a new question or edit
a question;
* '_forum_all': 'all' page in multi-forum display, displaying the list of
available forum;
* '_layout': layouting templates. Modifications to global layout and forum
specific page header used through all main templates;
* '_moderation': moderation tools;
* '_post': display a forum post;
* '_tools': tooling and utility blocks, used as black boxes in various
main templates;
Rename other files according to guidelines.
Reorganize main content of python code
* group compute fields on top, order them following fields definition;
* add section separators, to separate compute methods / CRUD methods /
business methods / Mail methods / Tooling in file and have a way to
sort a bit the code out;
* rename compute methods to start with '_compute', to match guidelines
and be coherent with global odoo naming;
* perform some relining in fields definition, don't enforce any char
length but try to stay aligned with Odoo apps;
Finally, provide some fixes or code improvements (batch, performance,
poorly written or named code) that are quick-wins.
LINKS
Task-3240082 (Forum: Reorganize and lint module)The project-related manufacturing, purchasing, SMS, and expense add-ons have been reorganized so each business object has its own file. This does not change features for users, but it makes the codebase easier to navigate and maintain, helping future updates move faster with lower risk.
Original PR description
This PR aims to create a separate file per model, in folders "models" and "views", to ease grepping. In order to keep the history, it contains to commits. The first one just moves/copies the files (e.g.: $ cp project.py project_task.py $ mv project.py project_project.py ). The second one updates the content of each file to only keep the contents it is supposed to be containing. task-3244226 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The forum-related helpdesk modules were reorganized so code and templates are easier to find and maintain. This is an internal cleanup that prepares the forum area for future improvements without changing day-to-day user workflows.
Original PR description
PURPOSE Reorganize website_forum module. This allows to better locate code, understand organization, and prepare future changes. Task-3240082 (Forum: Lint module)
==== Purpose ==== There is an issue with the `/@/` symbol website is using to display a page in the backend: if someone copy paste a link with `/@/` in it and send it in an email, some mail client will block those mails. It was reported by our internal team, after feedback from some sales persons. Office 365 was incriminated (not the outlook.com web platform). While we couldn't reproduce the issue, it was decided by the hierarchy to get rid of it as it was judged impossible to educate our sa
Original PR description
==== Purpose ==== There is an issue with the `/@/` symbol website is using to display a page in the backend: if someone copy paste a link with `/@/` in it and send it in an email, some mail client…
==== Purpose ==== There is an issue with the `/@/` symbol website is using to display a page in the backend: if someone copy paste a link with `/@/` in it and send it in an email, some mail client will block those mails. It was reported by our internal team, after feedback from some sales persons. Office 365 was incriminated (not the outlook.com web platform). While we couldn't reproduce the issue, it was decided by the hierarchy to get rid of it as it was judged impossible to educate our sales to not send such links. It's probably a good decision as: - `@` in URL are usually used for HTTP Authorization: `http://username:password@example.com` Link [1] seems to mention that some mail client will not implement correctly the URL check to see if the `@` is problematic and will simply block mails having links containing `@`. - The tradeoff of removing it is impacting dev/tech people, not the end user (except for F5, see below). ==== Technical ==== Before this commit and since commit [2] the following behaviors were introduced: 1. a `/@/` prefix was added visually in the URL bar of the browser when accessing the website app (previewing your website in the backend) to differentiate it from the regular website/frontend URL 2. the possibility to type yourself `/@/` in the URL to access a website page in the backend app It was improving the following pain point: A. On page refresh (F5 or browser button), the user would land on the frontend version of the website instead of remaining in the backend. B. When the user edited the URL (Like removing `/shop` and typing `/jobs` instead, he would land on the frontend version too. C. Impossible to directly go to the backend version of the website. This commit is now reverting point 1. while keeping the possibility of point 2. It means that while you can still reach directly your page in the backend, the backend URL part `/@/` won't be kept. About the mentioned point above: A. This pain point will be back B. This one too but workaround possible: need to edit the URL but also need to now add the `/@/` C. This one will still be "fixed" as `/@/` still reachable. While it seems to be decreasing the UX, it actually is an acceptable tradeoff as: - It mostly impacts dev/tech people, lambda end user don't play with URLs (low risk) - It will prevent their mail to be blocked (high value) [1]: https://www.malwarebytes.com/blog/news/2022/05/long-lost-symbol-gets-new-life-obscuring-malicious-urls [2]: https://github.com/odoo/odoo/commit/030d3cb10ee79aa1f010134578f4bcf65a1cfcde Forward-Port-Of: odoo/odoo#116040 Forward-Port-Of: odoo/odoo#115077
Before this commit, when a user moved its mouse from only a few pixels, a kanban record could not be clicked on it, or an item in a sortable list couldn't handle the click, since the dragging state was immediatly applied to the element. Now, there is a 10 pixels tolerance, meaning that the dragging sequence is only applied once the user has moved the cursor from at least 10px horizontally, or vertically from the original point where the mouse button was pressed and remains down. This reduces
Original PR description
Before this commit, when a user moved its mouse from only a few pixels, a kanban record could not be clicked on it, or an item in a sortable list couldn't handle the click, since the dragging state was immediatly applied to the element. Now, there is a 10 pixels tolerance, meaning that the dragging sequence is only applied once the user has moved the cursor from at least 10px horizontally, or vertically from the original point where the mouse button was pressed and remains down. This reduces frustation when the user didn't intended to move the kanban card with the mouse moving by mistake. task-3233698 Forward-Port-Of: odoo/odoo#115918 Forward-Port-Of: odoo/odoo#115636
In 64fc704527105afc8f06cafe8428e5c30c3ee097, we made it so that when an async module throws an error, we catch the error and log it so that we can mark the module as being in error. This means the error is now invisible to the error service. We do not want to rethrow the error, as this would stop us from loading the rest of the modules, but we can still allow the error service to see the error by simply dispatching it as a promise rejection in a separate async call stack, allowing us to conti
Original PR description
In 64fc704527105afc8f06cafe8428e5c30c3ee097, we made it so that when an async module throws an error, we catch the error and log it so that we can mark the module as being in error. This means the error is now invisible to the error service. We do not want to rethrow the error, as this would stop us from loading the rest of the modules, but we can still allow the error service to see the error by simply dispatching it as a promise rejection in a separate async call stack, allowing us to continue loading modules but also giving the opportunity to the error service to see the error if it is started. Closes #92192 Forward-Port-Of: odoo/odoo#115337 Forward-Port-Of: odoo/odoo#115052
So fat, the default sale and purchase taxes were so on the account.accounts depending on the user type id. These taxes were meant to be used as default taxes on products and not accounts, so this is not right. It also is an issue since the default tax isn't visible on the COA list until the user add it from the optional fields. Task id # 3223731 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114892
Original PR description
So fat, the default sale and purchase taxes were so on the account.accounts depending on the user type id. These taxes were meant to be used as default taxes on products and not accounts, so this is not right. It also is an issue since the default tax isn't visible on the COA list until the user add it from the optional fields. Task id # 3223731 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114892
There is an issue with the search panel categories that has a limit=20; It means it will only display the categories matching the expense reports in the view if they are in the 20 first records fetched. There shouldn't be enough categories to cause an issue here, so we can drop the limit and ensure that it will work in any cases. Task id # 3224719 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114906
Original PR description
There is an issue with the search panel categories that has a limit=20; It means it will only display the categories matching the expense reports in the view if they are in the 20 first records fetched. There shouldn't be enough categories to cause an issue here, so we can drop the limit and ensure that it will work in any cases. Task id # 3224719 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114906
Steps: - Enable `Worder orders` in Manufacturing settings - Create a manufacturing order with a bill of materials and workorder operation set and confirm - Go to the workorder tab and start, then finish after few seconds - Update the real duration - Try to save Issue: User Error: null value Cause: When writing on a `mrp.production` object we check if the production is still planned and if, it try to plan all the workorders which are not done or cancelled. But in our case all the wor
Original PR description
Steps: - Enable `Worder orders` in Manufacturing settings - Create a manufacturing order with a bill of materials and workorder operation set and confirm - Go to the workorder tab and start, then finish after few seconds - Update the real duration - Try to save Issue: User Error: null value Cause: When writing on a `mrp.production` object we check if the production is still planned and if, it try to plan all the workorders which are not done or cancelled. But in our case all the workorders are done so it try to write to an empty object. opw-3230310 Forward-Port-Of: odoo/odoo#116025
Previously: The displaying of the technical menu email would be cut if you had a zoom of > than 100% on your browser Currently: It allows to see the whole content of the message without scrolling. Forward-Port-Of: odoo/odoo#116056
Original PR description
Previously: The displaying of the technical menu email would be cut if you had a zoom of > than 100% on your browser Currently: It allows to see the whole content of the message without scrolling. Forward-Port-Of: odoo/odoo#116056
This update contains the following commits: [IMP] implement .alike suffix on props [IMP] release: add version number on App [IMP] app: add name as a config option [FIX] runtime, compiler: fix refs getting set or unset incorrectly [FIX] compiler: call translate function with correct string [FIX] compiler: properly handle readonly attribute/readOnly property [REF] blockdom,compiler: implement properties [REF] tests: move properties tests in own file [FIX] compiler: dynamic value on inputs
Original PR description
This update contains the following commits: [IMP] implement .alike suffix on props [IMP] release: add version number on App [IMP] app: add name as a config option [FIX] runtime, compiler: fix refs…
This update contains the following commits: [IMP] implement .alike suffix on props [IMP] release: add version number on App [IMP] app: add name as a config option [FIX] runtime, compiler: fix refs getting set or unset incorrectly [FIX] compiler: call translate function with correct string [FIX] compiler: properly handle readonly attribute/readOnly property [REF] blockdom,compiler: implement properties [REF] tests: move properties tests in own file [FIX] compiler: dynamic value on inputs doesn't turn 0 into empty string [FIX] components: do not crash when binding anonymous function More details at: https://github.com/odoo/owl/releases/tag/v2.0.9 Note that this owl update required a few adaptations in Odoo code. The main problem was that some code would access references after the component was unmounted. However, Owl is now stricter and properly remove the reference. 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 Forward-Port-Of: odoo/odoo#115954 Forward-Port-Of: odoo/odoo#115086
By default the reminder for tax report is set to 7 days after period (date is correct). On the Accounting Dashboard, we should therefore not see the reminder on the dashboard of the Miscellaneous journal if the deadline of the tax report is not due. For example, we are the 16th of March, we do not want to see the reminder for the Tax Report for March. We only want to see it from the 7th of April. Task: 3231957 --- I confirm I have signed the CLA and read the PR guidelines at www.o
Original PR description
By default the reminder for tax report is set to 7 days after period (date is correct). On the Accounting Dashboard, we should therefore not see the reminder on the dashboard of the Miscellaneous journal if the deadline of the tax report is not due. For example, we are the 16th of March, we do not want to see the reminder for the Tax Report for March. We only want to see it from the 7th of April. Task: 3231957 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115703
In the Accounting app, on the Dashboard in the 'Customer Invoices' card, the indicator 'to check' has incorrect amount when multi currency is activated. Step to reproduce the issue: - create an invoice in another currency than the one of the company - check the dashboard of Accounting Result: the amount displayed is the one on the invoice but we want the converted amount. Original feedback: https://www.odoo.com/web#id=3212264&menu_id=4720&cids=1&action=333&active_id=809&model=proj
Original PR description
In the Accounting app, on the Dashboard in the 'Customer Invoices' card, the indicator 'to check' has incorrect amount when multi currency is activated. Step to reproduce the issue: - create an invoice in another currency than the one of the company - check the dashboard of Accounting Result: the amount displayed is the one on the invoice but we want the converted amount. Original feedback: https://www.odoo.com/web#id=3212264&menu_id=4720&cids=1&action=333&active_id=809&model=project.task&view_type=form task: 3215921 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114432
is_transpiled is only needed when generating a asset bundle while JavascriptAsset can be generated to compute a hash. is_transpiled needs to read the content to be defined which is quite slow. Transforming is_transpiled into a lazy property will speedup the cold loading of generate_assets_node, especially when attachment already exists. The expected speedup for a cold generate_assets_node on /web is ~240ms over ~300 ms on runbot for `debug=assets` mode Locally: /web with all modules
Original PR description
is_transpiled is only needed when generating a asset bundle while JavascriptAsset can be generated to compute a hash. is_transpiled needs to read the content to be defined which is quite slow.…
is_transpiled is only needed when generating a asset bundle while JavascriptAsset can be generated to compute a hash. is_transpiled needs to read the content to be defined which is quite slow. Transforming is_transpiled into a lazy property will speedup the cold loading of generate_assets_node, especially when attachment already exists. The expected speedup for a cold generate_assets_node on /web is ~240ms over ~300 ms on runbot for `debug=assets` mode Locally: /web with all modules installed in debug=assets goes from ~350 to ~150 ms generate_assets_nodes goes from ~230 to ~55 ms Before:  After  Note, those numbers can vrry a lot depending on the disk, cached files and modules installed. Other tests (cold orm_cache) may show a ~125 ms gain over ~730 ms for `generate_assets_nodes` if `_get_asset_content `is cold. Forward-Port-Of: odoo/odoo#116035
Before this commit, error messages appeared when a user tried to put an unsupported video on a page of his website, but the user could still add this bad video on his page, which broke it. Steps to reproduce the bug fixed by this commit: - On a page of a website in edit mode, double-click on an image. - Go to the video tab and type an unsupported URL like google.com. => An error message appears but the user can still add the media on his page which will break it. --- Before [this o
Original PR description
Before this commit, error messages appeared when a user tried to put an unsupported video on a page of his website, but the user could still add this bad video on his page, which broke it. Steps to…
Before this commit, error messages appeared when a user tried to put an unsupported video on a page of his website, but the user could still add this bad video on his page, which broke it. Steps to reproduce the bug fixed by this commit: - On a page of a website in edit mode, double-click on an image. - Go to the video tab and type an unsupported URL like google.com. => An error message appears but the user can still add the media on his page which will break it. --- Before [this other commit], it was possible to add a wrong video on a page of its website. If the user did this and saved the page, it was no longer possible for him to enter edit mode. To solve this, two improvements have been made: 1. We now prevent the user from putting a wrong video on his page when he goes through the media dialog (see [this other commit]). 2. Since there are probably websites that have a bad video (it was possible before [this other commit]), this commit allows users to edit the pages that have these wrong videos. Steps to reproduce before [this other commit]: - Edit a page. - Via the media dialog add a video with the following URL: 'google.com'. - Save the page. => It is no longer possible to enter edit mode. Note that part 1 was merged from 14.0 but part 2 was merged from 16.0 because the media dialog adds `iframe` without `src` attribute since [the refactor of the media dialog] and we cannot edit a page containing this code `<div class="media_iframe_video"><iframe/></div>` since the merge of the frontend into the backend. [this other commit]: https://github.com/odoo/odoo/commit/fbab1bffa033638553750d49fcde89a9a2fc5e6c [the refactor of the media dialog]: https://github.com/odoo/odoo/commit/7fd0698cf765a79959566b51e33cb76bff83d344 opw-3167707 Forward-Port-Of: odoo/odoo#115957 Forward-Port-Of: odoo/odoo#114959
.. to other deeper logic. As spotted on the ticket, if there is an ARCHIVED outgoing email server and an invoice is created after clicking on the smart button of a Contact, the active_test=False is propagated and the email is sent using the archived outgoing mail server. The propagation of this context key can impact a lot of other logic and is even more risky in accounting. Reverting fe9b460d29d6537e0c14af54ba31d935c746810b is solving the issue. The main error reported on 2853525 tha
Original PR description
.. to other deeper logic. As spotted on the ticket, if there is an ARCHIVED outgoing email server and an invoice is created after clicking on the smart button of a Contact, the active_test=False is propagated and the email is sent using the archived outgoing mail server. The propagation of this context key can impact a lot of other logic and is even more risky in accounting. Reverting fe9b460d29d6537e0c14af54ba31d935c746810b is solving the issue. The main error reported on 2853525 that led to this previous commit seems also solved somewhere else (that I did not find) opw-3217999 Forward-Port-Of: odoo/odoo#115894
When refactoring the SelectCashierMixin into a hook, the "exclusive" parameter was hardcoded to true, this makes it so that when multi-employee per session is active, the cashier selector button in the navbar takes exclusive control of the barcode reader and prevents scanning products. The exclusive mode should only be active in the login screen. This commit fixes that by making "exclusive" configurable in the useCashierSelector hook and making it non-exclusive in the navbar's cashier
Original PR description
When refactoring the SelectCashierMixin into a hook, the "exclusive" parameter was hardcoded to true, this makes it so that when multi-employee per session is active, the cashier selector button in the navbar takes exclusive control of the barcode reader and prevents scanning products. The exclusive mode should only be active in the login screen. This commit fixes that by making "exclusive" configurable in the useCashierSelector hook and making it non-exclusive in the navbar's cashier selector. Forward-Port-Of: odoo/odoo#115978
Bug === The session duration added in the KPI have the wrong value because of a typo in the SQL query. Task-2827996 Forward-Port-Of: odoo/odoo#116055 Forward-Port-Of: odoo/odoo#98442
Original PR description
Bug === The session duration added in the KPI have the wrong value because of a typo in the SQL query. Task-2827996 Forward-Port-Of: odoo/odoo#116055 Forward-Port-Of: odoo/odoo#98442
Before this commit, when in a call on another device and then calling from another device, there might be the following traceback: ``` TypeError: Cannot read properties of undefined (reading 'lastObservedRecords') at ModelManager.removeListener at RelationSet.delete at RelationSet.clear at ModelField._setRelationReplace at ModelField.parseAndExecuteCommands at ModelManager._update at Listener.onChange at ModelManager._notifyListenersInUpdateCycle at ModelManager._flushUpdateCycle a
Original PR description
Before this commit, when in a call on another device and then calling from another device, there might be the following traceback: ``` TypeError: Cannot read properties of undefined (reading 'lastObservedRecords') at ModelManager.removeListener at RelationSet.delete at RelationSet.clear at ModelField._setRelationReplace at ModelField.parseAndExecuteCommands at ModelManager._update at Listener.onChange at ModelManager._notifyListenersInUpdateCycle at ModelManager._flushUpdateCycle at ModelManager.update ``` This is caused by removing a non-existent listener on a field, very likely related to a relational field from the call being terminated. This commit fixes the issue by silently skipping removal of listener when it's undefined. Task-3241562 Forward-Port-Of: odoo/odoo#116080
Commit [1] adds some tests on Odoo 14.0 in a file named `test_report`. However, from 15.0 on, the file has became `test_sale_stock_report` but the tests of [1] have not been moved in that new file . Instead, a new file `test_report` has been created and did not have been added in `__init__` (see [2]). Therefore, the tests are never executed [1] https://github.com/odoo/odoo/commit/012e25f27ffc0bc51682c06896c9116944661011 [2] https://github.com/odoo/odoo/commit/15194cec233332e787b9f546e39
Original PR description
Commit [1] adds some tests on Odoo 14.0 in a file named `test_report`. However, from 15.0 on, the file has became `test_sale_stock_report` but the tests of [1] have not been moved in that new file . Instead, a new file `test_report` has been created and did not have been added in `__init__` (see [2]). Therefore, the tests are never executed [1] https://github.com/odoo/odoo/commit/012e25f27ffc0bc51682c06896c9116944661011 [2] https://github.com/odoo/odoo/commit/15194cec233332e787b9f546e39c6127301ff9aa Forward-Port-Of: odoo/odoo#115984 Forward-Port-Of: odoo/odoo#114712
Steps to reproduce: 1. Inventory / Configuration / Warehouse Management / Warehouses 2. Need at least 2 warehouses 3. Inventory / Products / Products 4. Click forecasted quantity on a product that has some on hand 5. Click warehouse and select any option 6. Refresh the page 7. Error Bug: when refreshing the page the context gets cleared and productID lost which leads to an error when looking for its bomIDS Fix: when refreshing the page get the productID from the url opw-3217987
Original PR description
Steps to reproduce: 1. Inventory / Configuration / Warehouse Management / Warehouses 2. Need at least 2 warehouses 3. Inventory / Products / Products 4. Click forecasted quantity on a product that has some on hand 5. Click warehouse and select any option 6. Refresh the page 7. Error Bug: when refreshing the page the context gets cleared and productID lost which leads to an error when looking for its bomIDS Fix: when refreshing the page get the productID from the url opw-3217987 Forward-Port-Of: odoo/odoo#116114 Forward-Port-Of: odoo/odoo#114852
Fix applied to ease user experience after the user_id field removal for performance in 509b4cad. This is a simple fix to allow users to have ready filters available instead of having to enter them. This is especially helpful because, for performance reason, when no domain is selected, no user will be added, even though the widget on the webclient shows that all user records are matched and will be added. This is why `("active", "=", True)` is also added, allowing to simply remove the "inte
Original PR description
Fix applied to ease user experience after the user_id field removal for performance in 509b4cad.
This is a simple fix to allow users to have ready filters available instead of having to enter them. This is especially helpful because, for performance reason, when no domain is selected, no user will be added, even though the widget on the webclient shows that all user records are matched and will be added.
This is why `("active", "=", True)` is also added, allowing to simply remove the "internal user" rule to have really all users.
Task-3214005
Forward-Port-Of: odoo/odoo#114219Reproduction: 1. Go to settings -> Technical -> user-defined defaults, create a default for sales type Journal for an account.move 2. Go to Accounting-> Customer -> payment, create a payment, and select Bank for jounal 3. The payment method is not changed to Manual, in V15 it does Reason: from Odoo 16.0, the method new is added to account_payment, and we compute the journal id when it’s not set. However, this doesn’t consider the case where we have a default value for journal_id. Currently
Original PR description
Reproduction: 1. Go to settings -> Technical -> user-defined defaults, create a default for sales type Journal for an account.move 2. Go to Accounting-> Customer -> payment, create a payment, and…
Reproduction: 1. Go to settings -> Technical -> user-defined defaults, create a default for sales type Journal for an account.move 2. Go to Accounting-> Customer -> payment, create a payment, and select Bank for jounal 3. The payment method is not changed to Manual, in V15 it does Reason: from Odoo 16.0, the method new is added to account_payment, and we compute the journal id when it’s not set. However, this doesn’t consider the case where we have a default value for journal_id. Currently, when there’s a default value, we still compute the journal id This causes the onchange, which uses record created by method new, is not triggered when we select the journal id as the computed journal id, e.g bank. Fix: don’t compute journal id when there’s a default value for it PR of adding the new method (big PR for 16): https://github.com/odoo/odoo/pull/96134 opw-3148919 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116011 Forward-Port-Of: odoo/odoo#113879
Steps to reproduce the bug: - Create a storable Product “p1” with BoM: - Add a component and a byproduct: - Archive “P1” - Go to BOM Overview - Filter -> see archived BoM - Print BOM Structure Problem: A traceback is triggered,`ValueError: Expected singleton:product.product()` The `_match_all_variant_values` function is called but without the product, while it takes at least one: https://github.com/odoo/odoo/blob/15.0/addons/mrp/models/mrp_bom.py#L456 https://github.com/odoo/o
Original PR description
Steps to reproduce the bug: - Create a storable Product “p1” with BoM: - Add a component and a byproduct: - Archive “P1” - Go to BOM Overview - Filter -> see archived BoM - Print BOM Structure…
Steps to reproduce the bug:
- Create a storable Product “p1” with BoM:
- Add a component and a byproduct:
- Archive “P1”
- Go to BOM Overview
- Filter -> see archived BoM
- Print BOM Structure
Problem:
A traceback is triggered,`ValueError:
Expected singleton:product.product()`
The `_match_all_variant_values` function is called but without the product, while it takes at least one:
https://github.com/odoo/odoo/blob/15.0/addons/mrp/models/mrp_bom.py#L456 https://github.com/odoo/odoo/blob/15.0/addons/mrp/models/product.py#L286
The product must be set in the `_get_pdf_line` function, in our case, the function does not receive it as an argument, so we have to get it from the BOM, but as the `product variant` field has not been set in the BOM, we should get it from the product_template:
https://github.com/odoo/odoo/blob/02cd750da6a79e6aa7104473fff2ab986b6e607c/addons/mrp/report/mrp_report_bom_structure.py#L378
The `product_variant_id` field is a non-stored compute field: https://github.com/odoo/odoo/blob/34a2948d3d6e0f597c1b5d65f9f118e891c07cc4/addons/product/models/product_template.py#L133
And in the compute function, we use the first element of the `product_variant_ids`: https://github.com/odoo/odoo/blob/34a2948d3d6e0f597c1b5d65f9f118e891c07cc4/addons/product/models/product_template.py#L177-L179
But it is a `Many2one` field, and for this type of field we have to add `with_context(active_test=False)` to the ORM returns all records, active or archived.
opw-3236421
Forward-Port-Of: odoo/odoo#116148This commit fixes a small issue in the survey invite modal layout. The label and the associated field for the share link did not have a matching attrs configuration, leading to an extra label which broke the form visually. Oversight of 220e0271bf43e914950b8ae0d4a1cca5f3ea6d9c Task-3203875 Forward-Port-Of: odoo/odoo#114830
Original PR description
This commit fixes a small issue in the survey invite modal layout. The label and the associated field for the share link did not have a matching attrs configuration, leading to an extra label which broke the form visually. Oversight of 220e0271bf43e914950b8ae0d4a1cca5f3ea6d9c Task-3203875 Forward-Port-Of: odoo/odoo#114830
There's a `write` in the method of a non-stored compute field and so it triggers `write` upon reading, which is unnecessary because we just want to get the updated value. Forward-Port-Of: odoo/enterprise#38584
Original PR description
There's a `write` in the method of a non-stored compute field and so it triggers `write` upon reading, which is unnecessary because we just want to get the updated value. Forward-Port-Of: odoo/enterprise#38584
https://github.com/odoo/enterprise/commit/d6e771f1f9ab4440e47188ea24c2fc80f58c2919 introduced the ability for some reports to automatically index their lines by prefix when being rendered to the UI in order to avoid overloading the browser with too many lines. We now also enable this feature (if the appropriate config parameter is set) on the Depreciation Schedule, as it faces the same issue. OPW 2995591 Task 3207965 Forward-Port-Of: odoo/enterprise#38376 Forward-Port-Of: odoo/enterprise#38
Original PR description
https://github.com/odoo/enterprise/commit/d6e771f1f9ab4440e47188ea24c2fc80f58c2919 introduced the ability for some reports to automatically index their lines by prefix when being rendered to the UI in order to avoid overloading the browser with too many lines. We now also enable this feature (if the appropriate config parameter is set) on the Depreciation Schedule, as it faces the same issue. OPW 2995591 Task 3207965 Forward-Port-Of: odoo/enterprise#38376 Forward-Port-Of: odoo/enterprise#38033
The _get_generic_line_id function is not defined on account.report.custom.handler. This part of the code had badly been converted when introducing the new reports in 16.0. Forward-Port-Of: odoo/enterprise#38281
Original PR description
The _get_generic_line_id function is not defined on account.report.custom.handler. This part of the code had badly been converted when introducing the new reports in 16.0. Forward-Port-Of: odoo/enterprise#38281
- Activate Analytic Accounting - Open P&L - Group By an Analytic Account => The debug icon is doubled We even shouldn't see the debug column as we have several columns, so the numbers it shows are pretty useless. The decision has been made to separate the generation of the column headers from the columns, so we can do an init_options between them. We create the headers in a `_init_options_column_headers` that is done before the columns, and we override these headers in analytic, so
Original PR description
- Activate Analytic Accounting - Open P&L - Group By an Analytic Account => The debug icon is doubled We even shouldn't see the debug column as we have several columns, so the numbers it shows are pretty useless. The decision has been made to separate the generation of the column headers from the columns, so we can do an init_options between them. We create the headers in a `_init_options_column_headers` that is done before the columns, and we override these headers in analytic, so the columns are created following these new headers. Forward-Port-Of: odoo/enterprise#37765
This commit fixes a bug where in the kanban view of all the articles, when you group them by their Parent Article and try to add a new column the view would crash. This crash is caused by the name_create function when called by the rpc service on the client's side. The function is unable to receive the necessary input in order for it to work properly, leading to a crash. To fix this function we added the decorator `api.model` above it, this way when we the function via the rpc service, it
Original PR description
This commit fixes a bug where in the kanban view of all the articles, when you group them by their Parent Article and try to add a new column the view would crash. This crash is caused by the name_create function when called by the rpc service on the client's side. The function is unable to receive the necessary input in order for it to work properly, leading to a crash. To fix this function we added the decorator `api.model` above it, this way when we the function via the rpc service, it will receive the correct parameters and work properly. task-3244062 Forward-Port-Of: odoo/enterprise#38533
Create an invoice for "AGRICOLA SL", confirm, send for validation You'll get CFDI40144 error This occur because the XML will only have "AGRICOLA" in the "Receptor Rfc" node. After 040f4a0869839b3ccb9e8f7aaff929cce2a9b9c5 we strip the name using an heuristic as users may save the partner name including also the the type of company (SA, Ltd, ...) In some cases a customer's "Razón Social" has these letters, they'll get deleted, and you won't be able to create invoices for them. opw-3162
Original PR description
Create an invoice for "AGRICOLA SL", confirm, send for validation You'll get CFDI40144 error This occur because the XML will only have "AGRICOLA" in the "Receptor Rfc" node. After 040f4a0869839b3ccb9e8f7aaff929cce2a9b9c5 we strip the name using an heuristic as users may save the partner name including also the the type of company (SA, Ltd, ...) In some cases a customer's "Razón Social" has these letters, they'll get deleted, and you won't be able to create invoices for them. opw-3162803 Forward-Port-Of: odoo/enterprise#36981
Add a new report, a variant of the Profit and Loss report, for the french localization. (IMB) Intermediate management balances = (SIG) Soldes Intermédaires de gestion In France, the structure of the P&L is useless management-wise. This IMB report structures the information in a meaningful way that helps the user identify some ratios he is interested in. task: 3164564 Forward-Port-Of: odoo/enterprise#38485 Forward-Port-Of: odoo/enterprise#37238
Original PR description
Add a new report, a variant of the Profit and Loss report, for the french localization. (IMB) Intermediate management balances = (SIG) Soldes Intermédaires de gestion In France, the structure of the P&L is useless management-wise. This IMB report structures the information in a meaningful way that helps the user identify some ratios he is interested in. task: 3164564 Forward-Port-Of: odoo/enterprise#38485 Forward-Port-Of: odoo/enterprise#37238
To Reproduce ============ - go to inventory -> Reporting -> locations - click on the icon that allows you to customize the columns in list view - click on *Add Custom Field* Traceback is raised Problem ======= The button *Add Custom Field* shouldn't be visible, because the current action is not Studio editable, that's why we have the traceback when going to studio Solution ======== a condition based on `action.xml_id` was added to `isStudioEditable` computation. opw-3147354 For
Original PR description
To Reproduce ============ - go to inventory -> Reporting -> locations - click on the icon that allows you to customize the columns in list view - click on *Add Custom Field* Traceback is raised Problem ======= The button *Add Custom Field* shouldn't be visible, because the current action is not Studio editable, that's why we have the traceback when going to studio Solution ======== a condition based on `action.xml_id` was added to `isStudioEditable` computation. opw-3147354 Forward-Port-Of: odoo/enterprise#38362 Forward-Port-Of: odoo/enterprise#36772
Steps to reproduce the bug: - Create a storable product “C1”: - UoM: KG - Create a storable product “P1” - Add an operation “OP1” - add “C1” as by product - Produced in Operation: “op1” - Create a MO with “P1” - open the tablet view - Go to “Register by product” section - Try to validate 1 unit of “C1” Problem: A user error is triggered `“The unit of measure Units defined on the order line doesn't belong to the same category as the unit of measure
Original PR description
Steps to reproduce the bug:
- Create a storable product “C1”:
- UoM: KG
- Create a storable product “P1”
- Add an operation “OP1”
- add “C1” as by product
- Produced in Operation: “op1”
- Create a MO with “P1”
- open the tablet view
- Go to “Register by product” section
- Try to validate 1 unit of “C1”
Problem:
A user error is triggered `“The unit of measure Units defined on the order line doesn't belong to the same category as the unit of measure kg defined on the product. Please correct the unit of measure defined on the order line or on the product, they should belong to the same category.”`
The quant of the product may be in a different UoM than the current move, so we use `compute_quantity` to convert to the correct UoM, however we use the UoM of the finished product instead of the component
opw-3235225
Forward-Port-Of: odoo/enterprise#38495When a user prints an accounting report, we want to warn him if he has included the draft entries. A draft label is therefore added in the title of the pdf report if the 'draft entries included' has been checked in the report options. task: 3172154 Forward-Port-Of: odoo/enterprise#37832
Original PR description
When a user prints an accounting report, we want to warn him if he has included the draft entries. A draft label is therefore added in the title of the pdf report if the 'draft entries included' has been checked in the report options. task: 3172154 Forward-Port-Of: odoo/enterprise#37832
When checking if the BS is balanced with a script,it seems that a sign was reverse, this pr corrects that task-id: 3041738 Forward-Port-Of: odoo/enterprise#38157
Original PR description
When checking if the BS is balanced with a script,it seems that a sign was reverse, this pr corrects that task-id: 3041738 Forward-Port-Of: odoo/enterprise#38157
Have an overdue invoice for Azure Interior Go to Followup report Click on Follow Up In the wizard, remove Azure Interior and put Deco Addict Send by email Email will be send to Azure Interior because of a typo opw-3203148 Forward-Port-Of: odoo/enterprise#38278
Original PR description
Have an overdue invoice for Azure Interior Go to Followup report Click on Follow Up In the wizard, remove Azure Interior and put Deco Addict Send by email Email will be send to Azure Interior because of a typo opw-3203148 Forward-Port-Of: odoo/enterprise#38278
The issue: Trying to import a bank statement, throws a traceback The fix: applying the findall function on the attachment.raw field opw-3216993 Forward-Port-Of: odoo/enterprise#38438
Original PR description
The issue: Trying to import a bank statement, throws a traceback The fix: applying the findall function on the attachment.raw field opw-3216993 Forward-Port-Of: odoo/enterprise#38438