Daily updates from Odoo
Navigate
Branch
Wednesday, January 15, 2025
48 changes
21 changes
Resolved issues and error corrections
This update refreshes the spreadsheet component and fixes several user-facing issues. It improves spreadsheet reliability when deleting rows or columns, importing Excel files with empty charts, navigating sheets, and viewing translated chart titles.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/306dbf74b [REL] 17.2.31 Task: 0 https://github.com/odoo/o-spreadsheet/commit/5a43cc452 [FIX] borders: fix border on…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/306dbf74b [REL] 17.2.31 Task: 0 https://github.com/odoo/o-spreadsheet/commit/5a43cc452 [FIX] borders: fix border on column/row deletion Task: 4089281 https://github.com/odoo/o-spreadsheet/commit/f1319ba01 [FIX] Package: update owl to 2.5.1 Task: 0 https://github.com/odoo/o-spreadsheet/commit/61c7ac5da [FIX] xlsx: ignore charts without data set Task: 4460515 https://github.com/odoo/o-spreadsheet/commit/30e1e3758 [FIX] spreadsheet: avoid parasitic renders Task: 4373054 https://github.com/odoo/o-spreadsheet/commit/d8f81f1e6 [FIX] index: export isNumber/isDateTime helper Task: 0 https://github.com/odoo/o-spreadsheet/commit/a036569e6 [FIX] bottom_bar: ensure active sheet is scrolled into view Task: 4377840 https://github.com/odoo/o-spreadsheet/commit/eb99bab02 [FIX] charts: translate gauge chart titles Task: 4421055 Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
This update refreshes the spreadsheet engine with several fixes that make spreadsheets more reliable and smoother to use. It improves handling of deleted rows or columns, avoids display slowdowns, keeps the active sheet visible, and prevents errors from spreadsheet files containing empty charts.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/e12286d42 [REL] 17.2.32 Task: 0 https://github.com/odoo/o-spreadsheet/commit/5c945f62c [REV] collaborative: always…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/e12286d42 [REL] 17.2.32 Task: 0 https://github.com/odoo/o-spreadsheet/commit/5c945f62c [REV] collaborative: always trigger collaborative event received Task: 0 https://github.com/odoo/o-spreadsheet/commit/306dbf74b [REL] 17.2.31 Task: 0 https://github.com/odoo/o-spreadsheet/commit/5a43cc452 [FIX] borders: fix border on column/row deletion Task: 4089281 https://github.com/odoo/o-spreadsheet/commit/f1319ba01 [FIX] Package: update owl to 2.5.1 Task: 0 https://github.com/odoo/o-spreadsheet/commit/61c7ac5da [FIX] xlsx: ignore charts without data set Task: 4460515 https://github.com/odoo/o-spreadsheet/commit/30e1e3758 [FIX] spreadsheet: avoid parasitic renders Task: 4373054 https://github.com/odoo/o-spreadsheet/commit/d8f81f1e6 [FIX] index: export isNumber/isDateTime helper Task: 0 https://github.com/odoo/o-spreadsheet/commit/a036569e6 [FIX] bottom_bar: ensure active sheet is scrolled into view Task: 4377840 https://github.com/odoo/o-spreadsheet/commit/eb99bab02 [FIX] charts: translate gauge chart titles Task: 4421055 Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
This change corrects a problem in web navigation tests caused by a previous update. It helps keep automated checks reliable so future changes to the web interface can be validated with confidence.
Original PR description
Fixes test broken by: be23ed0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Due to an error in the condition, `ProprietaryID` was always used, even if IBANID should be used instead. That lead to customers missing information (`ProprietaryID` is not always picked up by other software, while IBANID is). Ticket link: https://odoo.com/odoo/69/tasks/4414985 opw-4414985 Forward-Port-Of: odoo/odoo#192519
Original PR description
Due to an error in the condition, `ProprietaryID` was always used, even if IBANID should be used instead. That lead to customers missing information (`ProprietaryID` is not always picked up by other software, while IBANID is). Ticket link: https://odoo.com/odoo/69/tasks/4414985 opw-4414985 Forward-Port-Of: odoo/odoo#192519
Currently, when buying a product in pos and using a new lot id, the quantities do not reflect this lot id. Steps to reproduce: ------------------- * Create a product: * Storable * Available in POS * Tracked by lots * Open shop session * Select the product just created * Enter anything as the lot number * Finalize order * Close session * In the back-end, navigate to the product page * Select the smart button **On hand** > Observation: The lot is not reflected Why the fix:
Original PR description
Currently, when buying a product in pos and using a new lot id, the quantities do not reflect this lot id. Steps to reproduce: ------------------- * Create a product: * Storable * Available in POS * Tracked by lots * Open shop session * Select the product just created * Enter anything as the lot number * Finalize order * Close session * In the back-end, navigate to the product page * Select the smart button **On hand** > Observation: The lot is not reflected Why the fix: ------------ When the session in closed, `stock.lot` are created but not reflected on the inventory quantity updates. We can add the `lot_id` when creating move lines as where we mention it, it will always have a related existing lot as per: https://github.com/odoo/odoo/blob/ba21b59d1234d13b5d4460facd60c586648048b8/addons/point_of_sale/models/stock_picking.py#L290 opw-4359435 Forward-Port-Of: odoo/odoo#193450
CLA change. Added new resource to corporate CLA file --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193539
Original PR description
CLA change. Added new resource to corporate CLA file --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193539
* = stock * PROPBLEM: when viewing purchase or vendor dashboard (under logistic section) , viewing the scoreboard for purchased or order it calculate all record from purchase.report but when clicking on it, redirect to view of 'purchase order' only which is wrong compare to the number display on the scoreboard * SOLUTION: This commit fix by edit the domain of related pivot which the scoreboard use to display data to the domain having state in either Purchase or Done Description of the iss
Original PR description
* = stock * PROPBLEM: when viewing purchase or vendor dashboard (under logistic section) , viewing the scoreboard for purchased or order it calculate all record from purchase.report but when clicking on it, redirect to view of 'purchase order' only which is wrong compare to the number display on the scoreboard * SOLUTION: This commit fix by edit the domain of related pivot which the scoreboard use to display data to the domain having state in either Purchase or Done 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#191985
Two lines that were missing from the "REAGYP - Agricultura" Fiscal Position Tax Mapping have been added. task-4342206 Forward-Port-Of: odoo/odoo#192930 Forward-Port-Of: odoo/odoo#192359
Original PR description
Two lines that were missing from the "REAGYP - Agricultura" Fiscal Position Tax Mapping have been added. task-4342206 Forward-Port-Of: odoo/odoo#192930 Forward-Port-Of: odoo/odoo#192359
Use fully qualified names as columns in related table can have a same name and this query could raise an error. Like the one below error below was shown in 18.0 ``` psycopg2.errors.AmbiguousColumn: column reference "state" is ambiguous LINE 3: AND state = 'validate' ``` Note: error occured in 18.0 will be fixed in forward port, using fully qualified names was the purpose so made sense to start from 16.0 and fix for all versions after Description of the issue/
Original PR description
Use fully qualified names as columns in related table can have a same name and this query could raise an error. Like the one below error below was shown in 18.0 ``` psycopg2.errors.AmbiguousColumn: column reference "state" is ambiguous LINE 3: AND state = 'validate' ``` Note: error occured in 18.0 will be fixed in forward port, using fully qualified names was the purpose so made sense to start from 16.0 and fix for all versions after 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#193568
**Description of the issue/feature this PR addresses:** When odoo is deployed with Reverse Proxy , like cloudflare, and cache rule is enabled. The login page is cached by cloudflare, "Cf-Cache-Status" is set to "HIT" in the reponse header  But in the html content, csrf_token is unavailable.  Error when try to
Original PR description
**Description of the issue/feature this PR addresses:** When odoo is deployed with Reverse Proxy , like cloudflare, and cache rule is enabled. The login page is cached by cloudflare, "Cf-Cache-Status" is set to "HIT" in the reponse header  But in the html content, csrf_token is unavailable.  Error when try to login.  **Current behavior before PR:** User can not login. **Desired behavior after PR is merged:** User can login. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191453
The get_text_content is not powerful enough to extract translated attributes. As a result, get_text_content will return empty string '' for terms whose translated contents are only in attributes. When the result is used to build the mapping text2terms, users will get strange result after write. opw-4147913 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 g
Original PR description
The get_text_content is not powerful enough to extract translated attributes. As a result, get_text_content will return empty string '' for terms whose translated contents are only in attributes. When the result is used to build the mapping text2terms, users will get strange result after write. opw-4147913 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#193574
Steps to reproduce ================== - Open any project - Create many project stages (80+) - Switch to the list view - Group by stage - Switch to to next page => The pager keeps increasing Cause of the issue ================== `stage_id` has a group_expand: `_read_group_stage_ids` This method is used to include empty stages in the result for the kanban view, so that we can drag tasks to an empty stage. Solution ======== Add a context key `project_kanban` and only add em
Original PR description
Steps to reproduce ================== - Open any project - Create many project stages (80+) - Switch to the list view - Group by stage - Switch to to next page => The pager keeps increasing Cause of the issue ================== `stage_id` has a group_expand: `_read_group_stage_ids` This method is used to include empty stages in the result for the kanban view, so that we can drag tasks to an empty stage. Solution ======== Add a context key `project_kanban` and only add empty stages in that case. opw-4408061 Forward-Port-Of: odoo/odoo#192955 Forward-Port-Of: odoo/odoo#192492
When a product has a fixed tax, there should be a separate downpayment line for the fixed tax amount. Steps to reproduce: ------------------- * Create a fixed tax of 1€ * Assign this tax to any product * Create a sale order with this product * Open PoS and make a downpayment of 10% > Observation: There is only one downpayment line with the total amount of the product and the fixed tax combined. opw-4252104 Forward-Port-Of: odoo/odoo#192208
Original PR description
When a product has a fixed tax, there should be a separate downpayment line for the fixed tax amount. Steps to reproduce: ------------------- * Create a fixed tax of 1€ * Assign this tax to any product * Create a sale order with this product * Open PoS and make a downpayment of 10% > Observation: There is only one downpayment line with the total amount of the product and the fixed tax combined. opw-4252104 Forward-Port-Of: odoo/odoo#192208
Renaming session to __session leverages Python's name mangling and ensures the attribute is treated as a private to the class. Forward-Port-Of: odoo/odoo#193501
Original PR description
Renaming session to __session leverages Python's name mangling and ensures the attribute is treated as a private to the class. Forward-Port-Of: odoo/odoo#193501
The tax tags are translatable but never translated automatically because they are generated dynamically from the tax report. This commit aims at improving this by translating automatically the tags that match exactly the name of the tax report line, for instance in Israel. Forward-Port-Of: odoo/odoo#192233
Original PR description
The tax tags are translatable but never translated automatically because they are generated dynamically from the tax report. This commit aims at improving this by translating automatically the tags that match exactly the name of the tax report line, for instance in Israel. Forward-Port-Of: odoo/odoo#192233
Update the OWL lib. Release notes: https://github.com/odoo/owl/releases/tag/v2.6.0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193722
Original PR description
Update the OWL lib. Release notes: https://github.com/odoo/owl/releases/tag/v2.6.0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193722
Steps to reproduce: - Go to the "/blog/astronomy-2/what-if-they-let-you-run-the-hubble-5" page. - Click on the "Mobile Preview" button. - Bug: The breadcrumb is broken. In stable versions, we fixed this in the least intrusive way possible to avoid making significant layout changes to existing databases. **BEFORE:** <kbd></kbd> **AFTER:** <kbd></kbd> **AFTER:** <kbd></kbd> In master version, in mobile view, we replaced the breadcrumb with a "< All Blogs" button to return to the blogs list, similar to what is done in "website_sale" and "website_event". opw-4457408 Forward-Port-Of: odoo/odoo#193508
Steps: - Install project_todo - Create a second company - Create a project - Link the project to a company - Setup a default value for task.project_id with your new project (1) - Try to open project_todo Actual result: - Error due to company id - can't adapt type 'res.company' Expected result: - No error - Welcome task is created and project is opened opw-4465277 Caused by https://github.com/odoo/odoo/pull/173625 Forward-Port-Of: odoo/odoo#193359
Original PR description
Steps: - Install project_todo - Create a second company - Create a project - Link the project to a company - Setup a default value for task.project_id with your new project (1) - Try to open project_todo Actual result: - Error due to company id - can't adapt type 'res.company' Expected result: - No error - Welcome task is created and project is opened opw-4465277 Caused by https://github.com/odoo/odoo/pull/173625 Forward-Port-Of: odoo/odoo#193359
Versions -------- - 16.0 (fix issue) - 17.0+ (skip useless constraint) Commit 3871ae2c6c45 enabled automated m2m CRUD in 17.0+ Steps ----- 1. Create an automated action on a Model with tags (e.g. Contact); 2. set trigger to On Creation; 3. in data to write, have evaluation type to Value; 4. fill in the value (e.g. 1); 5. create a record that would trigger the automation. Issue ----- > ValueError: Wrong value for res.partner.category_id: 1 Cause ----- In the `eval_value`
Original PR description
Versions -------- - 16.0 (fix issue) - 17.0+ (skip useless constraint) Commit 3871ae2c6c45 enabled automated m2m CRUD in 17.0+ Steps ----- 1. Create an automated action on a Model with tags (e.g.…
Versions -------- - 16.0 (fix issue) - 17.0+ (skip useless constraint) Commit 3871ae2c6c45 enabled automated m2m CRUD in 17.0+ Steps ----- 1. Create an automated action on a Model with tags (e.g. Contact); 2. set trigger to On Creation; 3. in data to write, have evaluation type to Value; 4. fill in the value (e.g. 1); 5. create a record that would trigger the automation. Issue ----- > ValueError: Wrong value for res.partner.category_id: 1 Cause ----- In the `eval_value` method, the `many2many` type doesn't get covered. Solution -------- 1. Have `eval_value` handle `many2many` values (linking them to relevant record, and existing as a single expression per column). 2. Undo 09a6df204f2a which disallowed writing by reference for many2many fields. This change makes writing by reference possible as well, and allows you to select the desired record, instead of having to manually fill in its ID. opw-4054461 Forward-Port-Of: odoo/odoo#193469 Forward-Port-Of: odoo/odoo#190047
Interfaces/Drivers inherit from an `Interface`/`Driver` class. These parent classes should not be registered as an actual interface/driver. This is now filterered at instanciation in order to avoid looping over useless elements later. Forward-Port-Of: odoo/odoo#193510
Original PR description
Interfaces/Drivers inherit from an `Interface`/`Driver` class. These parent classes should not be registered as an actual interface/driver. This is now filterered at instanciation in order to avoid looping over useless elements later. Forward-Port-Of: odoo/odoo#193510
To run tours or unit tests, we instrument Chrome and run it headlessly. One of the arguments passed while doing so is the "window size" it needs to use to emulate desktop-like or mobile-like screen sizes. Newer versions of Chrome sometimes introduce slight variation between the Chrome's window size and its viewport size (due to changes in the interface layout...). While often not a deal-breaker, Chrome 128 forces a min-width for the window greater than the breakpoint we use for smaller/
Original PR description
To run tours or unit tests, we instrument Chrome and run it headlessly. One of the arguments passed while doing so is the "window size" it needs to use to emulate desktop-like or mobile-like screen…
To run tours or unit tests, we instrument Chrome and run it headlessly. One of the arguments passed while doing so is the "window size" it needs to use to emulate desktop-like or mobile-like screen sizes. Newer versions of Chrome sometimes introduce slight variation between the Chrome's window size and its viewport size (due to changes in the interface layout...). While often not a deal-breaker, Chrome 128 forces a min-width for the window greater than the breakpoint we use for smaller/mobile-like testing (e.g. 375px, which matches a small smartphone). This commit changes the way we instrument Chrome to use a specific size by using the DevTools' Emulated Device (aka. "responsive mode"). It allows to apply a very specific viewport's size independently of the actual Chrome's window size, which makes it way more predictable than before. Note: this change is part of the preparation to support the "new" headless mode, which becomes the default starting with Chrome 128. Reference: - https://chromedevtools.github.io/devtools-protocol/tot/Emulation/#method-setDeviceMetricsOverride Forward-Port-Of: odoo/odoo#193779 Forward-Port-Of: odoo/odoo#193696
15 changes
Enhancements to existing features
Odoo now makes external recipients, such as customers and portal users, more visible in email-based discussions. This helps employees see who will receive replies and makes Reply All behave more like standard email, reducing confusion and the risk of accidental miscommunication.
Original PR description
Rationale When having external recipients (customers, portal users), discussions they receive from Odoo is not always clear. Indeed email is sent directly to them, and they reply to a generic…
Rationale When having external recipients (customers, portal users), discussions they receive from Odoo is not always clear. Indeed email is sent directly to them, and they reply to a generic catchall without really knowing who is behind that catchall except 'Odoo'. Same issue arises for internal users working by email: when replying in a discussion, it is unclear which external people are going to receive the email: is the customer correctly included, is it going to leak internal information to external people, ... We decided to move towards a flow more looking like email providers. External customers are put in recipients of emails. It means that when replying to all, people reply to Odoo and external people. This makes the recipients more explicit. Odoo Chatter also proposed more suggested recipients, notably based on current discussion. See community PR for more details. Task-4422660: [mail] Use external suggested recipients Prepares Task-4273479: [mail] Email-like recipients
Barcode operation type cards now show their color as a left-side accent instead of filling the whole card background, making the view easier to scan. Users can also choose the operation type color directly from the form, giving teams more control over visual organization.
Original PR description
The cards in the barcode kanban view for picking operation types should have their standard colour streak on the left border instead of the entire card background. A colour picker for the `color` field was also added to the operation type form view to allow the user to adjust it as needed. Task ID: [4385345](https://www.odoo.com/odoo/project/966/tasks/4385345)
Resolved issues and error corrections
This fix lets businesses running multiple companies keep Ecuadorian delivery document emission and entity points separate by company. It also ensures electronic and PDF delivery documents use the correct commercial partner information, reducing document errors in multi-company setups.
Original PR description
For a multicompany environment it is useful to be able to restrict the unique emission point and entity point per company. The support of the commercial partner is needed for electronic and pdf documents.
This fixes an issue in the manufacturing planning forecast details where purchase order quantities could be handled incorrectly. The change uses the quantity value that is already in the right unit, helping ensure planning figures are accurate without unnecessary conversion.
Original PR description
There was an error due to this PR: https://github.com/odoo/odoo/pull/186250 The field in the wizard should have been renamed, but since `product_uom_qty` is already in the correct unit, we can simply do the sum without converting.
Features or functions removed from Odoo
The option to complete shop floor operations by long-pressing them from the All MO menu has been removed. This avoids a little-used and hard-to-discover shortcut that could skip important steps such as timer tracking and employee assignment, making work order completion more consistent.
Original PR description
With this commit: ==================== - The long-press functionality to mark operations as complete from the 'All MO' menu on the shop floor has been removed. This feature was rarely used, difficult to discover, and had several issues (e.g., no timer and no employee assignment when marked as done). Since it does not add a lot of value in retrospect, we decided to remove it. It's also easier to handle only a single way to process work orders. This change ensures a consistent and simplified process for completing work orders. Task - [4439070](https://www.odoo.com/odoo/my-tasks/4439070)
Code cleanup and technical improvements
Company-related information in the web client is now managed through the existing user profile object instead of a separate company service. This reduces duplicated data handling and makes future maintenance easier across many Odoo apps, with little expected impact on day-to-day users.
Original PR description
This commit aims to simplify the way developers can access company related information in the web client. Before this commit, in components, they had to import the `userService` hook and do something…
This commit aims to simplify the way developers can access company related information in the web client. Before this commit, in components, they had to import the `userService` hook and do something like `this.company = userService("company")` in the setup. In services, they had to explicitly declare the dependency on the company service. In other functions (like helpers), it was a bit painful: the function had to take an env in arguments, which wasn't ideal.
This commit makes it easier to access the company information. The company service has been removed. Instead, we use the existing `user` object which can be imported directly from anywhere. The `user` object was chosen because the company information is all related to the currently logged-in user.
For clarity, the company information has been renamed:
user.allowedCompanies: The list of companies that the user is allowed to log in to. Note that any of the other companies in the following keys will always be in this list.
user.defaultCompany: The default company to log in to, if the cookies are empty.
user.activeCompanies: The list of the companies that the user is currently logged in to
user.activeCompany: The main company that the user is currently logged in to. This is the company displayed in the main navigation bar in the web client.
Note that, something similar has already been done for the `user` service, the `cookie` service, the `router` service, and the `rpc` service.
This commit also allows the `user` object to take ownership of the company related information in the session. The problem before this commit was that there were 2 sources of truth for company related information : the company service and the `session_info`. The information is sent from the server to the client within the page (in `session_info`). Then the company service was built using this information. This means that the developer could access the information in 2 different ways. Now, the `user` object takes the full ownership of these company related keys by removing them from the session after reading them. Note that, something similar is already done for the user related information and for the currencies (see currency.js).
Part-of task-id 3621046
Part-of task-id 4250356
Part-of task-id 2224776The follow-up reminder automation was renamed internally to better match its purpose, making the system easier to maintain. Related tests were updated to reflect how SMS follow-up processing is now triggered, with no expected change for day-to-day users.
Original PR description
- account_followup: rename the cron xmlid ir_cron_follow_up - ~~sale_amazon: lower rate for pickings and orders~~ odoo/odoo#191863 task-2774819
Miscellaneous changes
**Steps to reproduce:** Switch to mobile view Reload the page Select any record Traceback occurs **Technical:** After commit https://github.com/odoo/odoo/commit/ef3656e3468ba6dab207c8df65d12fbb75ae4c77, the 'isPageSelected' condition was removed for the ALL button in the "web.list.selection" template. As a result, the first two conditions will be true, and the system will then check for model.root.isRecordCountTrustable. However, at that point, the model is not available. Previously, the
Original PR description
**Steps to reproduce:** Switch to mobile view Reload the page Select any record Traceback occurs **Technical:** After commit https://github.com/odoo/odoo/commit/ef3656e3468ba6dab207c8df65d12fbb75ae4c77, the 'isPageSelected' condition was removed for the ALL button in the "web.list.selection" template. As a result, the first two conditions will be true, and the system will then check for model.root.isRecordCountTrustable. However, at that point, the model is not available. Previously, the false value of isPageSelected would prevent the check for the model from occurring. **After this commit:** The user will not encounter any traceback when selecting a record in mobile view. Task-4402442 Forward-Port-Of: odoo/enterprise#76174
Since https://github.com/odoo/odoo/commit/d0e7be7832672d476f1b289af52d3a425990d719 we're trying to access some keys in `account.document_tax_totals_template` that are not present in the subtotals dict from the withhold tax summary. Steps: - Create and confirm a bill - Add a withhold and open it - Try to print it -> TB: 'KeyError' opw-4433279 Forward-Port-Of: odoo/enterprise#76330
Original PR description
Since https://github.com/odoo/odoo/commit/d0e7be7832672d476f1b289af52d3a425990d719 we're trying to access some keys in `account.document_tax_totals_template` that are not present in the subtotals dict from the withhold tax summary. Steps: - Create and confirm a bill - Add a withhold and open it - Try to print it -> TB: 'KeyError' opw-4433279 Forward-Port-Of: odoo/enterprise#76330
Since [1], this flow is broken: 1. Install website_helpdesk => You have a "Help" menu with an helpdesk team as url (/helpdesk/customer-care-1) which is created 2. Check: if you publish or unpublish your team, that menu is visible or invisible as a public user. 3. Create a new menu for your website, with that same URL (/helpdesk/customer-care-1) 4. Check: that menu is always invisible as a public user. Even if you remove the first menu. Multiple mistakes were made with [1]: - Th
Original PR description
Since [1], this flow is broken: 1. Install website_helpdesk => You have a "Help" menu with an helpdesk team as url (/helpdesk/customer-care-1) which is created 2. Check: if you publish or unpublish…
Since [1], this flow is broken: 1. Install website_helpdesk => You have a "Help" menu with an helpdesk team as url (/helpdesk/customer-care-1) which is created 2. Check: if you publish or unpublish your team, that menu is visible or invisible as a public user. 3. Create a new menu for your website, with that same URL (/helpdesk/customer-care-1) 4. Check: that menu is always invisible as a public user. Even if you remove the first menu. Multiple mistakes were made with [1]: - The website menu visibility override code was added twice in two different files. - The override advertises that this is for "always showing the helpdesk team menus even if they are unpublished" but it is actually meant to be the exact opposite of that. - The implementation is based on the menu that are linked to the helpdesk teams, not on their URL **. - The implementation actually bypass the normal visibility computation for all menu URL that start with "/helpdesk", meaning a custom page "/helpdesk-hello" from the user is just broken, so as existing controllers not linked to an helpdesk team (such as /helpdesk/rating). **: actually this could mean that this feature is just not meant to be given the current state of the codebase: creating a menu with a team URL should just make it so it is forcefully linked to that team or should be prevented if it cannot (?). [1]: https://github.com/odoo/enterprise/commit/a888fb57ebd2458bc8479e187088cb2e96b811fa opw-3931376 Forward-Port-Of: odoo/enterprise#76797 Forward-Port-Of: odoo/enterprise#63105
… Jan 2025 task-4409214 Forward-Port-Of: odoo/enterprise#76274
Original PR description
… Jan 2025 task-4409214 Forward-Port-Of: odoo/enterprise#76274
An error occurs when the system tries to access single values from multiple records at [1]. Link [1]: https://github.com/odoo/enterprise/blob/2e1af04e36fcbdcd11e3a7e2994673b2c4a5cf85/social_youtube/models/res_config_settings.py#L19 Traceback On Sentry: ``` ValueError: Expected singleton: res.config.settings(105, 106) File "odoo/http.py", line 2366, in __call__ response = request._serve_db() File "odoo/http.py", line 1894, in _serve_db return self._transactioning( Fil
Original PR description
An error occurs when the system tries to access single values from multiple records at [1]. Link [1]:…
An error occurs when the system tries to access single values from multiple records at [1].
Link [1]: https://github.com/odoo/enterprise/blob/2e1af04e36fcbdcd11e3a7e2994673b2c4a5cf85/social_youtube/models/res_config_settings.py#L19
Traceback On Sentry:
```
ValueError: Expected singleton: res.config.settings(105, 106)
File "odoo/http.py", line 2366, in __call__
response = request._serve_db()
File "odoo/http.py", line 1894, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1957, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1924, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2171, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 329, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 35, in call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 517, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "odoo/models.py", line 6090, in search_read
return records._read_format(fnames=fields, **read_kwargs)
File "odoo/models.py", line 4032, in _read_format
vals[name] = convert(record[name], record, use_display_name)
File "odoo/models.py", line 6999, in __getitem__
return self._fields[key].__get__(self)
File "odoo/fields.py", line 1291, in __get__
self.compute_value(recs)
File "odoo/fields.py", line 1473, in compute_value
records._compute_field_value(self)
File "odoo/models.py", line 5238, in _compute_field_value
fields.determine(field.compute, self)
File "odoo/fields.py", line 110, in determine
return needle(*args)
File "home/odoo/src/enterprise/18.0/social_youtube/models/res_config_settings.py", line 19, in _compute_youtube_oauth_client_id
if self.env.user.has_group('social.group_social_manager') and self.youtube_use_own_account:
File "odoo/fields.py", line 1232, in __get__
record.ensure_one()
File "odoo/models.py", line 6212, in ensure_one
raise ValueError("Expected singleton: %s" % self)
```
To resolve this issue, Use an iteration(for loop) to iterate records one by one.
Sentry-6200420369
Forward-Port-Of: odoo/enterprise#76588Before Commit: ----------------------------- - When a user makes a sign request for himself he can refuse the request by clicking on the refusal button. - Currently a user can edit the extension in the template name. It does not affect the original file but still does not provide a good user experience. - Rpc calls were made when you insert a sign item, move a sign item, delete the sign item. After Commit: ----------------------- - The user will not be able to refuse a sign request h
Original PR description
Before Commit: ----------------------------- - When a user makes a sign request for himself he can refuse the request by clicking on the refusal button. - Currently a user can edit the extension in…
Before Commit: ----------------------------- - When a user makes a sign request for himself he can refuse the request by clicking on the refusal button. - Currently a user can edit the extension in the template name. It does not affect the original file but still does not provide a good user experience. - Rpc calls were made when you insert a sign item, move a sign item, delete the sign item. After Commit: ----------------------- - The user will not be able to refuse a sign request he made for himself - Removed . form Setting labels - Changed the Sign Items pop-up button on from Validated to Save - Improved the Kanban View - Improved the Selection sign item pop-up by adding a custom Many2Many field - Now the extension of a file is read only and a user cannot edit it. - A new sign status indicator is added to reduce the number of rpc calls. - Now only the rpc call is made when a user manually saves it, changes the view or clicks on a sign item. task-3911221 Forward-Port-Of: odoo/enterprise#64194
This commit change the account_move field we use to compute mod349 report. Before, we used amount_total. Now we use amount_untaxed, as the mod349 only need to show taxable bases. opw-4320487 Forward-Port-Of: odoo/enterprise#76516
Original PR description
This commit change the account_move field we use to compute mod349 report. Before, we used amount_total. Now we use amount_untaxed, as the mod349 only need to show taxable bases. opw-4320487 Forward-Port-Of: odoo/enterprise#76516
The aim of this commit is changing 36000 banks for the real number (~26000 banks). no task id Proof:  Forward-Port-Of: odoo/enterprise#77047
Original PR description
The aim of this commit is changing 36000 banks for the real number (~26000 banks). no task id Proof:  Forward-Port-Of: odoo/enterprise#77047
11 changes
Resolved issues and error corrections
This fixes an error that could appear when users clicked "Process now" during Ecuadorian electronic invoice cancellation if the tax authority connection failed. Instead of showing a technical traceback, the system now handles the failed response more safely, improving reliability for accounting users.
Original PR description
When the user clicks on the ``Process now`` button,
a traceback will appear.
Steps to reproduce the error:
- Install ``l10n_ec_edi`` module > Switch to EC Company
- Create a new invoice > Add Payment Method (SRI) > Confirm
- Go to Configuration > Settings > SRI Connection > enable ``Use production servers`` > Save
- Go back to the invoice > Request EDI Cancellation > Process now
Traceback:
```
File "home/odoo/src/enterprise/18.0/l10n_ec_edi/models/account_edi_format.py", line 525, in _l10n_ec_get_authorization_status_new
response_auth_list = response['autorizaciones'] and response['autorizaciones']['autorizacion'] or []
TypeError: 'NoneType' object is not subscriptable
```
https://github.com/odoo/enterprise/blob/2e1af04e36fcbdcd11e3a7e2994673b2c4a5cf85/l10n_ec_edi/models/account_edi_format.py#L525
When there is any kind of connection error, the ``response`` will be ``None``,
which will result in the above traceback.
sentry-6199991614This fixes an error that prevented users from printing Ecuadorian withholding documents after creating them from a vendor bill. The report now uses the right tax summary data, avoiding a crash and allowing normal document printing.
Original PR description
Since https://github.com/odoo/odoo/commit/d0e7be7832672d476f1b289af52d3a425990d719 we're trying to access some keys in `account.document_tax_totals_template` that are not present in the subtotals dict from the withhold tax summary. Steps: - Create and confirm a bill - Add a withhold and open it - Try to print it -> TB: 'KeyError' opw-4433279
Mobile users can now reliably open and close search in Documents, with the search button hidden when documents are selected to avoid confusion. The sharing panel also displays access details and action buttons more cleanly, making collaboration from a phone easier.
Original PR description
Steps to reproduce: 1. Switch to mobile view. 2. The magnifier button is not working. 3. when adding a member through the share panel, 'people with access' section shows weirdly. 4. Send and discard button display issue on the share panel. Technical Reason: SearchBar is being handled in the control panel and was not passed the searchBarToggler in the toggler attribute, and add a condition on the 'searchBarToggler.component' only shows if documents are not selected. After this Commit: 1. The magnifier button will hide/display the search bar and the magnifier button will be hidden if we select a document. 2. In the share panel, the 'people with access' section, will show properly. 3. Buttons will be in a proper width. Task-4419375
The Benchmark dashboard now keeps internal account type labels unchanged instead of translating them. This ensures balances are calculated and displayed correctly for users working in languages other than English.
Original PR description
… technical In Odoo 18 > Benchmark dashboard does not show the correct balance per account type when the language is not English. The problem is we have a =_t(value) function that translate the technical name (C30:C47) opw-4484934 Task: 4484934
This fixes an incorrect field reference used when accessing a private key for Belgian payroll certificates. It helps prevent failures in certificate handling caused by the system looking for the wrong key name.
Original PR description
The code currently tries to access `private_key_id_id` which is actually `private_key_id`. opw-4466293
This fixes an issue in Documents where keyboard selection actions could stop working because focus unexpectedly moved to the search bar. Users can now reliably select or deselect documents with Ctrl+A and extend selections with Shift+Arrow without needing to click back into the list.
Original PR description
Steps to reproduce: 1. press 'Cntrl+a' will select and deselect. 2. after one operation of selecting/deselecting it loses focus. 3. focus moved to the search bar. 4. due to this the 'Cntrl+a' is not working until you click somewhere. 5. select/deselect not working properly. It also fixes issues related to the 'shift+arrow' selection flow 1. Go to the documents list view 2. Select any not-the-last record 3. Hold Shift and hit down arrow 4. The record below is not selected as it should Technical Reason: In the Search bar, the attribute autofocus was evaluating 'true' every time because of sending 'undefined' due to this default props set it to 'true'. After this Commit: 1. focus will not be lost. 2. select/deselect will work properly. Task-4413608
Creating an automation rule from Documents now correctly carries over the predefined trigger settings into the new rule form. This prevents users from having to manually reselect expected options and makes the Documents-to-Automations workflow more reliable.
Original PR description
The purpose of this commit is to ensure that when a user comes from Documents to Automations Rules, the pre-filled creation form takes into account the 'default_trigger_ids' defined in the window action. see odoo/odoo#193206 see odoo/enterprise#75179 task-4481308
Code cleanup and technical improvements
Demo records for IoT and self-ordering IoT have been moved from regular data files into dedicated demo files. This keeps sample content separate from operational data, reducing the chance of demo examples being loaded where they are not needed.
Original PR description
Demo data in those modules were in `data/` folder, they are now in the `demo/` one. Tasks: 4399091, 4464497
Miscellaneous changes
Description of the issue this commit addresses: The Italian annual tax report lacks an integer rounding feature. --- Desired behavior after this commit is merged: The Italian annual tax report uses the HALF-UP rounding method. --- Community PR: https://github.com/odoo/odoo/pull/164064 Task-3479785 Forward-Port-Of: odoo/enterprise#76756 Forward-Port-Of: odoo/enterprise#62405
Original PR description
Description of the issue this commit addresses: The Italian annual tax report lacks an integer rounding feature. --- Desired behavior after this commit is merged: The Italian annual tax report uses the HALF-UP rounding method. --- Community PR: https://github.com/odoo/odoo/pull/164064 Task-3479785 Forward-Port-Of: odoo/enterprise#76756 Forward-Port-Of: odoo/enterprise#62405
This commit change the account_move field we use to compute mod349 report. Before, we used amount_total. Now we use amount_untaxed, as the mod349 only need to show taxable bases. opw-4320487 Forward-Port-Of: odoo/enterprise#76516
Original PR description
This commit change the account_move field we use to compute mod349 report. Before, we used amount_total. Now we use amount_untaxed, as the mod349 only need to show taxable bases. opw-4320487 Forward-Port-Of: odoo/enterprise#76516
The aim of this commit is changing 36000 banks for the real number (~26000 banks). no task id Proof:  Forward-Port-Of: odoo/enterprise#77047
Original PR description
The aim of this commit is changing 36000 banks for the real number (~26000 banks). no task id Proof:  Forward-Port-Of: odoo/enterprise#77047
1 change
Resolved issues and error corrections
This update resolves an issue where the generation of VAT documents for Uruguay (l10n_uy_edi) was incomplete. The changes ensure that all necessary codes are correctly included in the document domain, accurately reflecting Uruguay's VAT regulations. This improves the reliability of financial reporting for businesses operating in Uruguay.
Original PR description
…omain