Friday, February 21, 2025
104 changes · master
Enhancements to existing features
Accounting records now include the customer's or vendor's country as a grouping option. This helps business users analyze invoices and accounting entries by partner country in custom reports and list views.
Original PR description
Adding a new related field to account_move to be used in Custom Group By. task: 4419706 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change makes the author field required in app manifest files so modules are registered under the correct contributor or organization. It helps avoid Odoo apps being incorrectly attributed to Odoo S.A. and adds tooling to update existing manifests in bulk.
Original PR description
External contributors (and namely Odoo PS) forget to set the author field in their manifest file. The result is that the module is wrongly registered with `'author': 'Odoo S.A.'`. This work makes the field mandatory, with a warning when not set. It also offers an upgrade-code script to mass-rewrite all the manifests in order to set the author. task-4485983 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update lets Odoo apply custom styling or behavior markers to date and time input fields. It supports smoother keyboard navigation in custom dropdowns, improving usability for affected interface components.
Original PR description
In order for a DateTimeInput to be focusable in a custom Dropdown component, we need it to have the class `o-navigable`. This commit adds the ability to pass CSS classes to the DateTimeInput component. [task-4284292](https://www.odoo.com/odoo/project.task/4284292) Related to https://github.com/odoo/enterprise/pull/74992
This update ensures database index names are generated at a safe length for the phone validation and project areas. It helps avoid database-level name truncation, reducing the risk of setup or upgrade inconsistencies without changing user-facing workflows.
Original PR description
When creating indexes, we must ensure that the name of the index is not too long, otherwise it is truncated by the database. We have the function `make_identifier` for this. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Stock quantity actions are now defined in a way that works better with direct URL paths and Odoo Studio. This makes inventory-related screens easier to access, customize, and integrate without changing the underlying business flow.
Original PR description
Allow to use the path url + studio
Users can now find and mention discussion channels even if they are not members of those channels. This makes communication smoother by aligning mention suggestions with channels that can already be mentioned.
Original PR description
Before this PR, only the channels the user is a member of were returned by the mention suggestions. This PR removes an unnecessary limitation when mentioning a channel as it's It is already possible to mention a channel you are not a member of.
This update renames Saudi e-invoicing fields to follow Odoo naming conventions and adjusts when those fields appear on company, partner, and invoice screens. This helps reduce confusion by showing Saudi e-invoicing details only in the relevant situations.
Original PR description
This commit will rename some field to fit the convention to have the name of the module as a prefix. Also changing the invisible of the fields since they were displayed in wrong situation. task: 4543406 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes the supported PostgreSQL version clearer and adds a warning when Odoo connects to an unsupported database version. This helps businesses avoid running on database setups that may not be reliable or officially supported.
Original PR description
Indicate which version of PostgreSQL is supported. Warn when connecting to an unsupported version. Mostly for documentation purposes. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The import tool now uses Odoo's standard database checkpoint handling instead of custom manual handling. This makes the import code easier to maintain and helps ensure consistent behavior across the system, with no expected change for end users.
Original PR description
Use the `savepoint()` function instead of managing manually. The goal is to be able to find easily all savepoint usages and have them working in the same way. https://github.com/odoo/enterprise/pull/79848 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update standardizes how bank statement CSV imports manage temporary database changes, making the process easier to maintain and more consistent. It also simplifies salary simulation rollback handling so trial calculations are fully discarded after running, reducing risk of unintended saved data.
Original PR description
### [IMP] account_bank_statement_import_csv: use savepoint() Use the savepoint object to import the data instead of custom SQL. The goal is to be able to find easily all savepoint usages and have them working in the same way. ### [IMP] hr_contract_salary: remove savepoint for simulation When simulating salary data, we want to rollback all that is done during the simulation. Since we commit just before trying to do the simulation, we can just rollback at the end instead of using savepoints. https://github.com/odoo/odoo/pull/198584
Resolved issues and error corrections
This change cleans up leftover asset declaration files that were no longer used after a previous update. It helps keep the CRM and website event sales areas consistent and reduces the chance of confusion from obsolete configuration.
Original PR description
Description of the issue/feature this PR addresses: from commit https://github.com/odoo/odoo/commit/0364161 removed the assets declarations in xml, but there are still some declarations left behind. so this commit to clean that up 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
Miscellaneous changes
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#197484
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 Forward-Port-Of: odoo/odoo#197484
Point of Sale loyalty features now exclude special products correctly, preventing valid products from being filtered out by mistake. This helps keep loyalty-related checkout flows and tests reliable for businesses using POS loyalty programs.
Original PR description
(should be backported to version where we start to load product.templates.)
This update fixes outdated internal type definitions used by several Odoo apps, especially around mail-related features. It improves developer tooling and reduces maintenance errors, with no expected direct change for end users.
Original PR description
\*: hr, hr_holidays, im_livechat, portal, product, project, rating, website_slides. The mail module uses type definition files to provide autocompletion for its records. Each bundle that enrich a modal through patches extends the origin interface. However, doing this manually is error prone and cumbersome. Most of the definitions are outdated: either because the patches moved in other bundles, fields were removed, fields or methods were forgotten, and so on. Moreover, many models override the insert/get methods and the records property to add typing which is often too broad (e.g. Model[]|Model for insert return type while we could rely on the parameter type to be more specific). This PR fixes all those definitions thanks to a script that automatically generates definitions in the correct bundles.
Refreshing the My Tasks page in Project now keeps users in the correct Project menu context. This prevents confusion and makes navigation more consistent for people managing their tasks.
Original PR description
Steps to reproduce ================== - Open project > Tasks > My tasks - Refresh the page => The project menu is missing Cause of the issue ================== The server action…
Steps to reproduce ================== - Open project > Tasks > My tasks - Refresh the page => The project menu is missing Cause of the issue ================== The server action `action_server_view_my_task` calls the window action `action_view_my_task`. The project menu has a a reference to the server action. Currently, a path my-tasks is set on the window action. When we reload the page, we look for actions with this path. In this case, we find the window action. We then look for a menu that contains this action. Since no menu contains the window action, we won't find any. Solution ======== We can move the path from the window action to the server action. One downside is when we access the window action from `project.task.type.delete.wizard`. In that case, we will lose the path, and the url will look like `/odoo/7/action-207` With that said, the most common case is accessing the action from the menu. This fixes the refresh in that case. opw-4554814
Odoo now returns more appropriate error statuses when requests fail, helping integrations and clients better understand what went wrong. This makes error handling clearer without changing core business workflows.
Original PR description
Historically Odoo always returned 400 as the default "4xx" http status code for when the customer screwed up. But 400 is actually reserved for when the http request is malformed, i.e. there was an…
Historically Odoo always returned 400 as the default "4xx" http status code for when the customer screwed up. But 400 is actually reserved for when the http request is malformed, i.e. there was an error while parsing the headers or the body (according strickly to Content-Type). The default go-to error for when the request is syntaxically valid but otherwise garbage is 422 - Unprocessable Entity. Access Denied uses 403 - Forbidden and not 401 - Unauthorized because 401 mandates the use of the `WWW-Authenticate` and `Authorization` headers which don't apply in Odoo. Missing Error uses 404 - Not Found and not 410 - Gone because Missing Error is not only used when trying to write on a deleted record, it also applies when trying to write on a record that never existed. Used the opportunity to visit some other places where we used 400 and to use a http error that is better indicated. See https://httpwg.org/specs/rfc9110.html#status.4xx for the latest specification of HTTP status codes. task-4284096
Follow-up of https://github.com/odoo/odoo/pull/195734 PR above reintroduced composer when livechat is inactive for operators, so that they can still make leads or post a message to visitor as a last resort. However the showing of composer was only made in chat window: the discuss app was still hiding the composer for operator on livechat end. This commit fixes the issue in discuss app, by showing the composer to livechat operators when the livechat has ended. Part of Task-4528331
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/195734 PR above reintroduced composer when livechat is inactive for operators, so that they can still make leads or post a message to visitor as a last resort. However the showing of composer was only made in chat window: the discuss app was still hiding the composer for operator on livechat end. This commit fixes the issue in discuss app, by showing the composer to livechat operators when the livechat has ended. Part of Task-4528331 Before  After  Forward-Port-Of: odoo/odoo#198203
Before this commit, the button to collapse/expand participants in the discuss sidebar was not easy to spot. The button has low impact on UI, which makes sense because the most important elements are the call participants. However, the lack of style change on mouse hovering doesn't help noticing its presence. This commit improves by changing its visibility slightly on mouse-hovering the call participants. A background effect is also added when mouse-hovering precisely this button, so that i
Original PR description
Before this commit, the button to collapse/expand participants in the discuss sidebar was not easy to spot. The button has low impact on UI, which makes sense because the most important elements are the call participants. However, the lack of style change on mouse hovering doesn't help noticing its presence. This commit improves by changing its visibility slightly on mouse-hovering the call participants. A background effect is also added when mouse-hovering precisely this button, so that it's very obvious that this is a clickable button.   Forward-Port-Of: odoo/odoo#198305
Issue: A blank screen appears after canceling an order. Steps to reproduce: - Open a POS restaurant on **Community** - Select a table - Order some food - Reopen the order - Cancel the order runbot Error: 113288 Forward-Port-Of: odoo/odoo#198371
Original PR description
Issue: A blank screen appears after canceling an order. Steps to reproduce: - Open a POS restaurant on **Community** - Select a table - Order some food - Reopen the order - Cancel the order runbot Error: 113288 Forward-Port-Of: odoo/odoo#198371
Description of the issue/feature this PR addresses: The o_rating_label css is not properly configured, which caused an unintended extra border line to appear on the rating image This commit removes the border explicitly in the CSS file to correct the visual issue. opw-4482430 Related Commit: https://github.com/odoo/odoo/commit/9e8a709f80e3e4620bfa92decb383781b04d64c8#diff-b7f943d7f11d281f92f78810d7da31d5ab33d4e5952d66ce973d0bc24278ebcd Current behavior before PR:  Desired behavior after PR is merged: The border will be invisible and everything else still functional without any influence --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196513
**Problem**: Wrapping links with `feff` chars allows placing the cursor at their inner or outer edge. However, if the parent is `contenteditable=false`, this behavior is unnecessary since navigation outside the link is already blocked. **Example**: `<div contenteditable=false>/ZWS/<a contenteditable=true>` `/ZWS/ab[]c</a></div>` Pressing the left arrow key repeatedly places the cursor at the start of `a`, before `feff`: `<div contenteditable=false>/ZWS/<a contenteditable=true>` `[]/
Original PR description
**Problem**: Wrapping links with `feff` chars allows placing the cursor at their inner or outer edge. However, if the parent is `contenteditable=false`, this behavior is unnecessary since navigation…
**Problem**: Wrapping links with `feff` chars allows placing the cursor at their inner or outer edge. However, if the parent is `contenteditable=false`, this behavior is unnecessary since navigation outside the link is already blocked. **Example**: `<div contenteditable=false>/ZWS/<a contenteditable=true>` `/ZWS/ab[]c</a></div>` Pressing the left arrow key repeatedly places the cursor at the start of `a`, before `feff`: `<div contenteditable=false>/ZWS/<a contenteditable=true>` `[]/ZWS/abc</a></div>` This forces an extra left-arrow press to move past `a`, which is redundant since only the link itself is editable. **Solution**: Wrap links with `feff` only if their parent element is `contenteditable=true`. **Steps to Reproduce**: 1. Add a Form snippet. 2. Focus on the "Submit" button. 3. Press the "Home" button to move the cursor to the start. 4. Press the right arrow key twice. - **Expected**: Cursor moves after the first visible char. - **Issue**: Cursor stops prematurely before the character. opw-4505962 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195704
Back port of #196938 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198336
Original PR description
Back port of #196938 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198336
RATIONALE Cleanup addon-specific code about default recipients computation. Since base code is now smarter, most overrides can be removed to keep simple code and ease understanding. SPECIFICATIONS Remove overrides that are now covered by base computation. When necessary use '_mail_defaults_to_email' that prioritizes email over partner (customer) when searching for default recipients. When necessary add missing '_primary_email' definition allowing to find the main email to cont
Original PR description
RATIONALE Cleanup addon-specific code about default recipients computation. Since base code is now smarter, most overrides can be removed to keep simple code and ease understanding. SPECIFICATIONS…
RATIONALE Cleanup addon-specific code about default recipients computation. Since base code is now smarter, most overrides can be removed to keep simple code and ease understanding. SPECIFICATIONS Remove overrides that are now covered by base computation. When necessary use '_mail_defaults_to_email' that prioritizes email over partner (customer) when searching for default recipients. When necessary add missing '_primary_email' definition allowing to find the main email to contact. Provide some fixes in default recipients computation, notably linked to normalized emails usage and comparison instead of raw emails. QUERIES Simple overrides on test models are removed. This implies usage of more complete '_message_get_default_recipients' hence some additional queries. LINKS Followup of odoo/odoo#172714: improve default behavior of templates Followup of odoo/odoo#188642 : main branch for email-like recipients Task-4555506: Cleanup / Mergeup default / suggested recipients Forward-Port-Of: odoo/odoo#198173
Here is description of modifications for each tour: modified: addons/barcodes/static/src/barcode_handlers.js Use hoot event instead of custom event defined in macro.js to uniform code and behaviors. modified: addons/l10n_br_website_sale/static/tests/tours/brazilian_address.js Add a delay to wait the form is loaded to avoid problem with _selectState(id) function. modified: addons/point_of_sale/static/tests/tours/utils/chrome_util.js U
Original PR description
Here is description of modifications for each tour: modified: addons/barcodes/static/src/barcode_handlers.js Use hoot event instead of custom event defined in macro.js to uniform code and behaviors.…
Here is description of modifications for each tour:
modified: addons/barcodes/static/src/barcode_handlers.js
Use hoot event instead of custom event defined in macro.js to
uniform code and behaviors.
modified: addons/l10n_br_website_sale/static/tests/tours/brazilian_address.js
Add a delay to wait the form is loaded to avoid problem with
_selectState(id) function.
modified: addons/point_of_sale/static/tests/tours/utils/chrome_util.js
Use waitFor in run of step because .fa-circle-o-notch should not
appears ... then of course body:not(:has(.fa-circle-o-notch)) also
not and then tour crashes.
modified: addons/pos_self_order/static/tests/tours/self_order_kiosk_tour.js
Because of the background animation, clicking on order now
may not do anything... so we'll click until we get to take out.
modified: addons/pos_self_order/tests/test_self_order_kiosk.py
Let's see comment of previous file ... We could need more time
for the tours.
modified: addons/test_website/static/tests/tours/restricted_editor.js
:contains(text) => Check that textContent.test(regex)
:has(class) => Check the element classList contains the class
modified: addons/website/static/tests/tours/html_editor.js
Additionnal steps to ensure tour take the good way.
modified: addons/website_slides/static/tests/tours/slides_tour_tools.js
Uniformize the behavior for two tours with clickOnAddTagDropdown
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#198325
Forward-Port-Of: odoo/odoo#197871The cogwheel dropdown menu is unwanted and only contains the 'Export All' button, which is disabled with an attribute. This commit extends the existing base tree view for this specific use to avoid interfering with other views that use/extend it. Task ID: [4471980](https://www.odoo.com/odoo/project/966/tasks/4471980) Forward-Port-Of: odoo/odoo#195148 Forward-Port-Of: odoo/odoo#193987
Original PR description
The cogwheel dropdown menu is unwanted and only contains the 'Export All' button, which is disabled with an attribute. This commit extends the existing base tree view for this specific use to avoid interfering with other views that use/extend it. Task ID: [4471980](https://www.odoo.com/odoo/project/966/tasks/4471980) Forward-Port-Of: odoo/odoo#195148 Forward-Port-Of: odoo/odoo#193987
Before this commit, when signature.py is called in python 3.10, the following error is observed. ModuleNotFoundError is catched but an ImportError is raised. In that case, the signature feature is disabled. File "/home/odoo/src/odoo/saas-18.2/odoo/tools/pdf/signature.py", line 11, in <module> from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes ImportError: cannot import name 'PrivateKeyTypes' from 'cryptography.hazmat.primitives.asymmetric.types' (/home/odoo/.loc
Original PR description
Before this commit, when signature.py is called in python 3.10, the following error is observed. ModuleNotFoundError is catched but an ImportError is raised. In that case, the signature feature is disabled.
File "/home/odoo/src/odoo/saas-18.2/odoo/tools/pdf/signature.py", line 11, in <module>
from cryptography.hazmat.primitives.asymmetric.types import PrivateKeyTypes
ImportError: cannot import name 'PrivateKeyTypes' from 'cryptography.hazmat.primitives.asymmetric.types' (/home/odoo/.local/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/types.py) 2025-02-19 13:38:20,377 288857 INFO test_18.1_18.2 odoo.service.server: Initiating shutdown
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#198350…sively The 'no_exchange_difference' is used to prevent exchange diff in the whole reconciliation. However, the reconciliation is recursive when dealing with CABA entries. From the bank reconciliation widget, we want to prevent the exchange diff only for the top reconciliation but not recursively. Otherwise, the CABA entry ends up with a residual amount but considered as fully reconciled. Instead, this commit introduces a new context key: 'no_exchange_difference_no_recursive'. task-id:
Original PR description
…sively The 'no_exchange_difference' is used to prevent exchange diff in the whole reconciliation. However, the reconciliation is recursive when dealing with CABA entries. From the bank reconciliation widget, we want to prevent the exchange diff only for the top reconciliation but not recursively. Otherwise, the CABA entry ends up with a residual amount but considered as fully reconciled. Instead, this commit introduces a new context key: 'no_exchange_difference_no_recursive'. task-id: 4531511 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196466 Forward-Port-Of: odoo/odoo#195814
Before introducing this PR https://github.com/odoo/odoo/pull/191742 creating a new product and updating the `Quantity on Hand` would trigger the creation of a valuation layer for the associated product Steps to produce ================ - Create a new product with quantity tracking enabled. - Set the initial quantity and define the standard price. - Save the product form. - Navigate to the Stock Valuation report, and you will not find a valuation layer for the newly created produc
Original PR description
Before introducing this PR https://github.com/odoo/odoo/pull/191742 creating a new product and updating the `Quantity on Hand` would trigger the creation of a valuation layer for the associated product Steps to produce ================ - Create a new product with quantity tracking enabled. - Set the initial quantity and define the standard price. - Save the product form. - Navigate to the Stock Valuation report, and you will not find a valuation layer for the newly created product. Issue ===== The previous implementation directly created stock quants without generating a move record, which prevented the valuation layer from being updated correctly. Forward-Port-Of: odoo/odoo#197851
The tour requires the commercial_company_name to be 'yourcompany' which is not the case when demo data is not installed. https://runbot.odoo.com/odoo/runbot.build.error/116103 Forward-Port-Of: odoo/odoo#198303
Original PR description
The tour requires the commercial_company_name to be 'yourcompany' which is not the case when demo data is not installed. https://runbot.odoo.com/odoo/runbot.build.error/116103 Forward-Port-Of: odoo/odoo#198303
This commit avoids the stacking mismatch between the statusbar and elements using a ribbon. It also fixes an issue affecting the left marker in a rich editor field being shown over the statusbar. task-4504282 task-4457597 Forward-Port-Of: odoo/odoo#197581
Original PR description
This commit avoids the stacking mismatch between the statusbar and elements using a ribbon. It also fixes an issue affecting the left marker in a rich editor field being shown over the statusbar. task-4504282 task-4457597 Forward-Port-Of: odoo/odoo#197581
In the survey stats, the number of votes for a multiple choice answer displayed the label "Votes" without it being translatable. This commit makes it translatable. [task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/odoo#197157 Forward-Port-Of: odoo/odoo#196704
Original PR description
In the survey stats, the number of votes for a multiple choice answer displayed the label "Votes" without it being translatable. This commit makes it translatable. [task-4421055](https://www.odoo.com/odoo/project.task/4421055) Forward-Port-Of: odoo/odoo#197157 Forward-Port-Of: odoo/odoo#196704
It is possible to have a lead linked to registration from different events by using the merge method on the leads. Currently once they are merged it becomes impossible to update any field that is synced as syncing expects we will only encounter one event. We just default to the first event for the name. Additionally the test revealed that if the lead doesn't have a description and a partner is added, the update mechanism crashes. task-4531433 Forward-Port-Of: odoo/odoo#198380 Forwar
Original PR description
It is possible to have a lead linked to registration from different events by using the merge method on the leads. Currently once they are merged it becomes impossible to update any field that is synced as syncing expects we will only encounter one event. We just default to the first event for the name. Additionally the test revealed that if the lead doesn't have a description and a partner is added, the update mechanism crashes. task-4531433 Forward-Port-Of: odoo/odoo#198380 Forward-Port-Of: odoo/odoo#196848
When the Arabic language was selected, the PoS Restaurant module would error due to date formatting using Arabic numerals. This commit forces Latin digits in the date format to prevent the error. opw-4544010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196368
Original PR description
When the Arabic language was selected, the PoS Restaurant module would error due to date formatting using Arabic numerals. This commit forces Latin digits in the date format to prevent the error. opw-4544010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196368
Before this commit, depositing money for a customer with a zero balance could result in the creation of an empty order upon refreshing the browser. This issue arose because empty orders without payments were being synchronized, leading to unintended empty orders in the system. This commit addresses the problem by ensuring that empty orders without payments are not synchronized and prevents the creation of such empty orders during the deposit process. opw-4483049 --- I confirm I have si
Original PR description
Before this commit, depositing money for a customer with a zero balance could result in the creation of an empty order upon refreshing the browser. This issue arose because empty orders without payments were being synchronized, leading to unintended empty orders in the system. This commit addresses the problem by ensuring that empty orders without payments are not synchronized and prevents the creation of such empty orders during the deposit process. opw-4483049 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196276 Forward-Port-Of: odoo/odoo#195468
Currently, an exception is raised when evaluating multiple records, where some records are complete and correct while others contain errors. error: ```ValueError KeyError(account.move(43,)) while evaluating 'if records:\n action = records.action_l10n_my_edi_send_invoice()' ``` [1]- https://github.com/odoo/odoo/blob/8eacfdcc2b65c62848d7939121c64928b76a80ed/addons/l10n_my_edi_extended/models/account_move.py#L181 [2]- https://github.com/odoo/odoo/blob/8eacfdcc2b65c62848d79391
Original PR description
Currently, an exception is raised when evaluating multiple records, where some records are complete and correct while others contain errors. error: ```ValueError KeyError(account.move(43,)) while evaluating 'if records:\n action = records.action_l10n_my_edi_send_invoice()' ``` [1]- https://github.com/odoo/odoo/blob/8eacfdcc2b65c62848d7939121c64928b76a80ed/addons/l10n_my_edi_extended/models/account_move.py#L181 [2]- https://github.com/odoo/odoo/blob/8eacfdcc2b65c62848d7939121c64928b76a80ed/addons/l10n_my_edi_extended/models/account_move.py#L153 This commit fixes the issue by filtering only those records that have errors during evaluation, and I have added a test for this issue. sentry - 6298401222 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198468 Forward-Port-Of: odoo/odoo#197860
Before this commit: Failing to print for whatever reason would yield some unhelpful error message like: `ghostscript._gsprint.GhostscriptError: Fatal` the error details is hidden within the stderr. Note: in general case, any stderr is logged in the IoT logs due to ExceptionLogger, however it's not the case here (probably due to some ghostscript wrapping). After this commit: A more explicit error message with details regarding the error and some relevant debug information to cross com
Original PR description
Before this commit: Failing to print for whatever reason would yield some unhelpful error message like: `ghostscript._gsprint.GhostscriptError: Fatal` the error details is hidden within the stderr. Note: in general case, any stderr is logged in the IoT logs due to ExceptionLogger, however it's not the case here (probably due to some ghostscript wrapping). After this commit: A more explicit error message with details regarding the error and some relevant debug information to cross compare opw-4481596 Forward-Port-Of: odoo/odoo#198480
Before this commit, inset call participant cards had no background, which would let some elements of the UI from below it to show when the video does not have a 16:9 aspect ratio. Before (inset card mask is transparent) <img width="198" alt="Screenshot 2025-02-19 at 15 58 56" src="https://github.com/user-attachments/assets/358a072d-d949-4e81-9ef7-7b09c2dd5c56" /> After (inset card mask is filled) <img width="189" alt="Screenshot 2025-02-19 at 15 59 34" src="https://github.com/user-attach
Original PR description
Before this commit, inset call participant cards had no background, which would let some elements of the UI from below it to show when the video does not have a 16:9 aspect ratio. Before (inset card mask is transparent) <img width="198" alt="Screenshot 2025-02-19 at 15 58 56" src="https://github.com/user-attachments/assets/358a072d-d949-4e81-9ef7-7b09c2dd5c56" /> After (inset card mask is filled) <img width="189" alt="Screenshot 2025-02-19 at 15 59 34" src="https://github.com/user-attachments/assets/df32dbc8-d042-4802-a9b4-2f3d93e97963" /> Forward-Port-Of: odoo/odoo#198320
Versions: --------- 18.0+ Issue: ------ When uploading a document using the `Upload` button, the document is always assigned to the user's main company, regardless of the selected company. Steps to Reproduce: ------------------- 1. Create a secondary company that the current user can access. 2. Navigate to Sales / Configuration / Sales Orders / Headers/Footers. 3. Switch the user's current company to the secondary company. 4. Click the `Upload` button and select any document.
Original PR description
Versions: --------- 18.0+ Issue: ------ When uploading a document using the `Upload` button, the document is always assigned to the user's main company, regardless of the selected company. Steps to…
Versions:
---------
18.0+
Issue:
------
When uploading a document using the `Upload` button, the document is always assigned to the user's main company, regardless of the selected company.
Steps to Reproduce:
-------------------
1. Create a secondary company that the current user can access.
2. Navigate to Sales / Configuration / Sales Orders / Headers/Footers.
3. Switch the user's current company to the secondary company.
4. Click the `Upload` button and select any document.
- Notice that no document is added to the secondary company's scope.
5. Switch back to the primary company.
- The uploaded document is available under the primary company instead of the secondary one.
Cause:
------
During the upload process, no company-specific information is provided to associate the document with the selected company.
Due to the inheritance of the `ir.attachment` model, it uses `self.env.company` as the default company value for the document[^1]. Because the upload happens via the `HttpDispatcher`, no `allowed_company_ids` context value is provided to the request. Without this context value present, `request.env.company` defaults to the main company of the current user[^2].
Fix:
----
Use the `company_id` associated with the relevant `sale.order.template` (`False` when uploading documents not linked to a template).
opw-4472602
[^1]: https://github.com/odoo/odoo/blob/d99e44f22634ac589a940d85fab84ca2b2e85332/odoo/addons/base/models/ir_attachment.py#L408-L409
[^2]: https://github.com/odoo/odoo/blob/d99e44f22634ac589a940d85fab84ca2b2e85332/odoo/api.py#L680-L681
Forward-Port-Of: odoo/odoo#198410
Forward-Port-Of: odoo/odoo#196842In the context of grouping records on a Many2Many field (e.g. tags of tasks) in the list view, it's possible to select the same record multiple times. In such case, when modifying the selected records, there could be duplicated ids in the arguments of the different RPCs (write, unlink, call). Processing the same record multiple times in backend could cause unexpected issues. So in this PR, we filter out the duplicated records ids before each call, to work with a clean recordset in backend.
Original PR description
In the context of grouping records on a Many2Many field (e.g. tags of tasks) in the list view, it's possible to select the same record multiple times. In such case, when modifying the selected records, there could be duplicated ids in the arguments of the different RPCs (write, unlink, call). Processing the same record multiple times in backend could cause unexpected issues. So in this PR, we filter out the duplicated records ids before each call, to work with a clean recordset in backend. version-17.4 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198137 Forward-Port-Of: odoo/odoo#195224
Before this commit, if an element was out of the screen on the X axis, the pointer was showing as if it was out of the screen in top. Now, it makes the difference between X and Y axis. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198614
Original PR description
Before this commit, if an element was out of the screen on the X axis, the pointer was showing as if it was out of the screen in top. Now, it makes the difference between X and Y axis. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198614
**Issue:** When splitting an expense, all products are available to define the split expense categories.  **Expected:** The wizard should only display products related to `Expense Categories` to keep consistency with base expense creation. **Steps to reproduce:** - Activate Expense app; - Create a new expense; - *(opt) Try changing the expense category and see av
Original PR description
**Issue:** When splitting an expense, all products are available to define the split expense categories.  **Expected:** The wizard should only display products related to `Expense Categories` to keep consistency with base expense creation. **Steps to reproduce:** - Activate Expense app; - Create a new expense; - *(opt) Try changing the expense category and see available categories to compare;*  - Save and click `Split Expense`; - In the `Product` column, select a product not listed in `Expense Categories` (cf. optional step); - Split expense and see the new expenses having the normally unavailable product as category.  **Cause:** All products are retrieved by the wizard, unlike the category field of the base `hr_expense`. **Fix:** Add restrictive domain as for base `hr_expense`. https://github.com/odoo/odoo/blob/573cbe3b19e91a134ee65168b3021437a39b6093/addons/hr_expense/models/hr_expense.py#L57 <img width="1439" alt="Capture d’écran 2024-12-16 à 16 32 57" src="https://github.com/user-attachments/assets/c9fa8b43-bd7b-4ab3-8759-b4d6a0e269d6" /> opw-4357521 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198623 Forward-Port-Of: odoo/odoo#190738
related - https://github.com/odoo/enterprise/pull/79690 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198328
Original PR description
related - https://github.com/odoo/enterprise/pull/79690 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198328
The message "Transferred by <Wave Nb>" was posted on pickings that are detached before the wave is validated. How to reproduce: - Create Product P, storable, with 2 unit on hand - Create 2 delivery transfer for 1 unit of P each - Add both transfer to new wave - Set Picked to True on 1 of the move, and not on the other. - Validate the wave transfer => 1 transfer only is validated (OK), but both have a message saying that the transfer was "Transferred by <Wave Nb>" Removed `skip_immedi
Original PR description
The message "Transferred by <Wave Nb>" was posted on pickings that are detached before the wave is validated. How to reproduce: - Create Product P, storable, with 2 unit on hand - Create 2 delivery transfer for 1 unit of P each - Add both transfer to new wave - Set Picked to True on 1 of the move, and not on the other. - Validate the wave transfer => 1 transfer only is validated (OK), but both have a message saying that the transfer was "Transferred by <Wave Nb>" Removed `skip_immediate` context as it is obsolete, and allow the function to only have 1 return statement, which is needed for the fix. OPW-4503809 Forward-Port-Of: odoo/odoo#198058 Forward-Port-Of: odoo/odoo#195757
Issue Before This Commit: ----------------------------------------------- - Purchase tab and checkbox is visible in the product form without installing Purchase. Steps to Produce: ----------------------------------------------- => Purchase checkbox Problem: Purchase checkbox is always visible in the product form which is incorrect. => Purchase tab 1. Install Sales. 2. On Unit and Measure. Problem: Now Purchase tab is visible in the product form without installing Purchase which is
Original PR description
Issue Before This Commit: ----------------------------------------------- - Purchase tab and checkbox is visible in the product form without installing Purchase. Steps to Produce: ----------------------------------------------- => Purchase checkbox Problem: Purchase checkbox is always visible in the product form which is incorrect. => Purchase tab 1. Install Sales. 2. On Unit and Measure. Problem: Now Purchase tab is visible in the product form without installing Purchase which is incorrect. With this commit: ----------------------------------------------- - Purchase tab and checkbox is visible in the product form only after installing Purchase. Task-id: 4391349 Forward-Port-Of: odoo/odoo#198420 Forward-Port-Of: odoo/odoo#190610
The Debian control file is used when installing Debian packages needed by Odoo by using the `debinstall.sh` script. On the other hand, when the Odoo Debian package is built, the Debian dependencies are also computed by the `dh_python3` script. So finally the real dependencies may differ. The main issue is `python3-gevent` which is missing in the control file. With this commit, the packages are explicitely declared in the control file instead of relying on incidentally installed packages.
Original PR description
The Debian control file is used when installing Debian packages needed by Odoo by using the `debinstall.sh` script. On the other hand, when the Odoo Debian package is built, the Debian dependencies are also computed by the `dh_python3` script. So finally the real dependencies may differ. The main issue is `python3-gevent` which is missing in the control file. With this commit, the packages are explicitely declared in the control file instead of relying on incidentally installed packages. * `python3-cryptography` is installed by `python3-openssl` * `python3-idna` and `python3-urllib3` are installed by `python3-requests` * `python3-markupsafe` is installed by `python3-jinja2` Forward-Port-Of: odoo/odoo#198102 Forward-Port-Of: odoo/odoo#197302
Before this commit we had a schemeID equals to TN every time. But it should be equals to TN only if the partner is from 'JO' otherwise 'PN' task: 4547131 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196619
Original PR description
Before this commit we had a schemeID equals to TN every time. But it should be equals to TN only if the partner is from 'JO' otherwise 'PN' task: 4547131 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196619
Steps to Reproduce: - Open POS restaurant. - Select a table. - Order some food. - Return to the floor plan. - Select the same table again. - Add a kitchen note to a line. - Click Order. - The note update is correctly sent to the preparation display. The "order" button is still displayed and the line with the note is still marked as “changed”. Forward-Port-Of: odoo/odoo#198514 Forward-Port-Of: odoo/odoo#198094
Original PR description
Steps to Reproduce: - Open POS restaurant. - Select a table. - Order some food. - Return to the floor plan. - Select the same table again. - Add a kitchen note to a line. - Click Order. - The note update is correctly sent to the preparation display. The "order" button is still displayed and the line with the note is still marked as “changed”. Forward-Port-Of: odoo/odoo#198514 Forward-Port-Of: odoo/odoo#198094
There is an inconsistency in the product description during 3-step incoming shipments. How to reproduce the issue: - Enable three-step incoming shipments. - Create a product with a description for receipts (e.g., 'receipt') and a different description for internal transfers (e.g., 'transfer'). - Create a receipt with the product, validate it, and open the corresponding picking for the internal transfer. The move_line description_picking is taken from the receipt description instea
Original PR description
There is an inconsistency in the product description during 3-step incoming shipments. How to reproduce the issue: - Enable three-step incoming shipments. - Create a product with a description for receipts (e.g., 'receipt') and a different description for internal transfers (e.g., 'transfer'). - Create a receipt with the product, validate it, and open the corresponding picking for the internal transfer. The move_line description_picking is taken from the receipt description instead of the internal transfer description (it shows 'receipt' instead of 'transfer'). opw-4406582 PR with very similar issue: https://github.com/odoo/enterprise/pull/77283 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198206 Forward-Port-Of: odoo/odoo#193996
This commit fixes two pivot tests failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 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#198402 Forward-Port-Of: odoo/odoo#198098
Original PR description
This commit fixes two pivot tests failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 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#198402 Forward-Port-Of: odoo/odoo#198098
Steps to reproduce: ------------------- - Create an invoice and set the partner to a portal user. - Set the payment term to any payment term with an early discount option and confirm the invoice. - Log in as the portal user and view my invoices, you will get an error message that you aren't allowed to access "Partial Reconcile" records Cause: ----- Since #182656, access to the payment_terms was added to the _is_eligible_for_early_payment_discount method, to allow applying the early disc
Original PR description
Steps to reproduce: ------------------- - Create an invoice and set the partner to a portal user. - Set the payment term to any payment term with an early discount option and confirm the invoice. - Log in as the portal user and view my invoices, you will get an error message that you aren't allowed to access "Partial Reconcile" records Cause: ----- Since #182656, access to the payment_terms was added to the _is_eligible_for_early_payment_discount method, to allow applying the early discount for in_payment invoices. Fix: --- Add sudo qualifier to the payment_terms access to allow this function to be called by portal users. opw-4535621 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198101
Steps to reproduce: =================== - Open the restaurant registry from 2 devices A and B - From device A, open a table, add a product, go back to floor plan - From device B, choose the same table, click split, choose the product added from device A, and click on pay. Reason: ======= We are trying to delete the same record 'pos.order.line' twice, i.e. we're calling `processDeletedRecords` twice with the same record id [1], so it succeds the first time, and it removes the record from
Original PR description
Steps to reproduce: =================== - Open the restaurant registry from 2 devices A and B - From device A, open a table, add a product, go back to floor plan - From device B, choose the same…
Steps to reproduce: =================== - Open the restaurant registry from 2 devices A and B - From device A, open a table, add a product, go back to floor plan - From device B, choose the same table, click split, choose the product added from device A, and click on pay. Reason: ======= We are trying to delete the same record 'pos.order.line' twice, i.e. we're calling `processDeletedRecords` twice with the same record id [1], so it succeds the first time, and it removes the record from the frontend cache, but when trying to process the deletion the second time, it fails since the record doesn't exist in the cache anymore [2], and hence, the `record` object is `undefined` in the second call to `delete_` with the same record id, causing the traceback [3]. The reason we're calling `processDeletedRecords` twice with the same record id is because `sync_from_ui` is issuing 2 sync events at the same time [4], since it's been passed 2 orders when splitting [5]. Fix: ==== Since it's an urgent bug, this fix just skips deleting the record if it doesn't exist, without "fixing" the root cause of syncing event being issued twice. [1]: https://github.com/odoo/odoo/blob/2d0ed96675541a88d9132bd01d33730f72c79d1d/addons/point_of_sale/static/src/app/store/devices_synchronisation.js#L116 [2]: https://github.com/odoo/odoo/blob/eca835a10d027b936890ff6ccc9e02660edfdfd5/addons/point_of_sale/static/src/app/models/related_models.js#L691 [3]: https://github.com/odoo/odoo/blob/eca835a10d027b936890ff6ccc9e02660edfdfd5/addons/point_of_sale/static/src/app/models/related_models.js#L664-L665 [4]: https://github.com/odoo/odoo/blob/eca835a10d027b936890ff6ccc9e02660edfdfd5/addons/point_of_sale/models/pos_order.py#L1043-L1046 [5]: https://github.com/odoo/odoo/blob/0faf168bbcbc66daeb58999a6222cd2c6d41134c/addons/pos_restaurant/static/src/app/split_bill_screen/split_bill_screen.js#L167 opw-4562134 Forward-Port-Of: odoo/odoo#198578 Forward-Port-Of: odoo/odoo#198477
Some tests end with the selection in a link, leading the link popover to open, which blurs the editable element. To prevent that, we would focus the editable by force, then wait a tick. But when the CPU is slow, sometimes the focus into the link popover happens too late to redirect it. This waits for the popover to open before focusing the editable. runbot-112609 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197201
Original PR description
Some tests end with the selection in a link, leading the link popover to open, which blurs the editable element. To prevent that, we would focus the editable by force, then wait a tick. But when the CPU is slow, sometimes the focus into the link popover happens too late to redirect it. This waits for the popover to open before focusing the editable. runbot-112609 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197201
Revert of commit ca1fa38815070325e3b998efcc0ec0d663b2f3b8 The fix introduced the impossibility of manually editing the duration days of attendances due to a depends cycle. The duration days of attendance should be manually editable. Forward-Port-Of: odoo/odoo#198379
Original PR description
Revert of commit ca1fa38815070325e3b998efcc0ec0d663b2f3b8 The fix introduced the impossibility of manually editing the duration days of attendances due to a depends cycle. The duration days of attendance should be manually editable. Forward-Port-Of: odoo/odoo#198379
Follow-up to #190162 Steps to reproduce: - Create a new Manufacturing Order - Set a product that is in stock as component with a quantity of 1 - Confirm the Manufacturing Order Issue: The component will be displayed in yellow (i.e. overconsumption), as the condition checks always on `should_consume_qty`, which is the quantity that should be used for that amount of `qty_producing`. But that quantity will *always* be 0 for confirmed MOs, as the `qty_producing` will be 0 at the time. I
Original PR description
Follow-up to #190162 Steps to reproduce: - Create a new Manufacturing Order - Set a product that is in stock as component with a quantity of 1 - Confirm the Manufacturing Order Issue: The component will be displayed in yellow (i.e. overconsumption), as the condition checks always on `should_consume_qty`, which is the quantity that should be used for that amount of `qty_producing`. But that quantity will *always* be 0 for confirmed MOs, as the `qty_producing` will be 0 at the time. Instead, while the MO isn't started yet, we can simply compare to the demand to see if there's enough reservation. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198593
This commit fixes a few issues introduced in 12f04ee when converting the portal prepayment public widget to Interaction. Forward-Port-Of: odoo/odoo#198607
Original PR description
This commit fixes a few issues introduced in 12f04ee when converting the portal prepayment public widget to Interaction. Forward-Port-Of: odoo/odoo#198607
**Current behavior before PR:** It was possible to save a step with step_type "question selection" without any answers. However, this would cause an error when the bot was executed. **Desired behavior after PR is merged:** A constraint has been added to ensure that a "question selection" step cannot be saved without at least one answer. task-id:[4522835](https://www.odoo.com/odoo/my-tasks/4522835) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/su
Original PR description
**Current behavior before PR:** It was possible to save a step with step_type "question selection" without any answers. However, this would cause an error when the bot was executed. **Desired behavior after PR is merged:** A constraint has been added to ensure that a "question selection" step cannot be saved without at least one answer. task-id:[4522835](https://www.odoo.com/odoo/my-tasks/4522835) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198309 Forward-Port-Of: odoo/odoo#197104
- Adjusting the 'Request Invoice' button UI. - Adjusting the tooltip description text for point_of_sale_use_ticket_qr_code. - Traceback was resolved in https://github.com/odoo/odoo/commit/ca19b340af49fea845275d737124d5fca79d23a3 task: 4276541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190081
Original PR description
- Adjusting the 'Request Invoice' button UI. - Adjusting the tooltip description text for point_of_sale_use_ticket_qr_code. - Traceback was resolved in https://github.com/odoo/odoo/commit/ca19b340af49fea845275d737124d5fca79d23a3 task: 4276541 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190081
Consider a recordset of new records, and a loop like ```py for record in records: for line in record.line_ids: line.value ``` The implementation of `record.line_ids` does not actually prefetch all `records`. It actually fetches the field on the records' origin (their corresponding real records), but only assigns the current new record in cache. As the prefetching relies on the cached values of `line_ids`, the prefetching mechanism is actually broken on `line`. The fix cons
Original PR description
Consider a recordset of new records, and a loop like
```py
for record in records:
for line in record.line_ids:
line.value
```
The implementation of `record.line_ids` does not actually prefetch all `records`. It actually fetches the field on the records' origin (their corresponding real records), but only assigns the current new record in cache. As the prefetching relies on the cached values of `line_ids`, the prefetching mechanism is actually broken on `line`.
The fix consists in assigning all the records to prefetch in this case. This does not add unexpected prefetching, since the origin records are prefetched as one batch anyway.
Forward-Port-Of: odoo/odoo#198542
Forward-Port-Of: odoo/odoo#198124Description of the issue/feature this PR addresses: This PR adds signature of Corporate Contributor License Agreement for PT Layani Solusi Indonesia, including the list of contributors. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198503
Original PR description
Description of the issue/feature this PR addresses: This PR adds signature of Corporate Contributor License Agreement for PT Layani Solusi Indonesia, including the list of contributors. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198503
In this commit: ========== - Updated the test case for test_customer_all_fields_displayed. The test previously found multiple partners with the same phone number because the ID Company's phone was `+62 812-345-678`, while the test phone was `1234567890`. To resolve this, we have updated the test phone number to `9898989899`. Runbot Error- 116844, 116845 Forward-Port-Of: odoo/odoo#198726 Forward-Port-Of: odoo/odoo#198255
Original PR description
In this commit: ========== - Updated the test case for test_customer_all_fields_displayed. The test previously found multiple partners with the same phone number because the ID Company's phone was `+62 812-345-678`, while the test phone was `1234567890`. To resolve this, we have updated the test phone number to `9898989899`. Runbot Error- 116844, 116845 Forward-Port-Of: odoo/odoo#198726 Forward-Port-Of: odoo/odoo#198255
By default, if no date are specified, an invoice is dated at today. The test enforces a name in 2024, which is why it worked before. Now, as we're not in 2024, the test always fails. The generated pdf does not have the same name, as it follows the invoice name. Let's force the date of the invoice, to force the name of the pdf. runbot-111405 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198314
Original PR description
By default, if no date are specified, an invoice is dated at today. The test enforces a name in 2024, which is why it worked before. Now, as we're not in 2024, the test always fails. The generated pdf does not have the same name, as it follows the invoice name. Let's force the date of the invoice, to force the name of the pdf. runbot-111405 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198314
Steps to reproduce: - wrap a pivot function inside a IFERROR e.g. =IFERROR(PIVOT("1", "probability"), 42) - reload the spreadsheet - before the pivot is loaded (throttle the network in the dev tools): right click the cell - click on "See records" menu item => boom Task: 3847477 X-original-commit: odoo/enterprise@31401c75baa4252917fe5d808be0abd5fc23a906 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#162764 Forwa
Original PR description
Steps to reproduce:
- wrap a pivot function inside a IFERROR e.g. =IFERROR(PIVOT("1", "probability"), 42)
- reload the spreadsheet
- before the pivot is loaded (throttle the network in the dev tools): right click the cell
- click on "See records" menu item => boom
Task: 3847477
X-original-commit: odoo/enterprise@31401c75baa4252917fe5d808be0abd5fc23a906
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#162764
Forward-Port-Of: odoo/odoo#162568When creating nested BoMs that share some common component, the cost of the product was being calculated incorrectly Steps to reproduce: ------------------- * Set `All` category to use the costing method `AVCO` in the settings. * Create a product Comp1 and set its cost to 100. * Create Product P1 with a BoM that consumes 1 Comp1. * Create Product P2 with a BoM that consumes 1 Comp1. * Create Product P3 with a BoM that consumes 1 P1. * Create a POS order with 1 P2, and 1 P3. * Close t
Original PR description
When creating nested BoMs that share some common component, the cost of the product was being calculated incorrectly Steps to reproduce: ------------------- * Set `All` category to use the costing…
When creating nested BoMs that share some common component, the cost of the product was being calculated incorrectly Steps to reproduce: ------------------- * Set `All` category to use the costing method `AVCO` in the settings. * Create a product Comp1 and set its cost to 100. * Create Product P1 with a BoM that consumes 1 Comp1. * Create Product P2 with a BoM that consumes 1 Comp1. * Create Product P3 with a BoM that consumes 1 P1. * Create a POS order with 1 P2, and 1 P3. * Close the session and check the cost of the products in the order > Observation: The cost for P3 is incorrect, it should be 100 but it is 200. Why the fix: ------------ When selecting the stock moves line to consider for the cost of the PoS order, we need to select the stock moves that are related to the BoM lines of the original product. In the previous code we were only relying on the product id, and this was causing the issue because some products can have the same product id but used in different BoM lines. opw-4201935 Forward-Port-Of: odoo/odoo#198036 Forward-Port-Of: odoo/odoo#193717
**Current behavior:** Trying to create an MO on mobile which has work orders is not possible. **Expected behavior:** Can create. **Steps to reproduce:** 1. Install `mrp` with demo data 2. Login, in dev tools change viewport size to iPhone SE (a small screen) 3. Open Inventory -> Manufacturings 4. Click `New`, change product to stool (any variant) 5. Try to save -> `ValidationError` **Cause of the issue:** `workcenter_id` and `product_uom_id` have been removed from the k
Original PR description
**Current behavior:** Trying to create an MO on mobile which has work orders is not possible. **Expected behavior:** Can create. **Steps to reproduce:** 1. Install `mrp` with demo data 2. Login, in dev tools change viewport size to iPhone SE (a small screen) 3. Open Inventory -> Manufacturings 4. Click `New`, change product to stool (any variant) 5. Try to save -> `ValidationError` **Cause of the issue:** `workcenter_id` and `product_uom_id` have been removed from the kanban view in commit: b1ceec4c which is used on mobile, meaning that these required fields are not in the save vals returned to the server in the CREATE tuple. **Fix:** Add them back to the kanban view. opw-4440060 Forward-Port-Of: odoo/odoo#198403 Forward-Port-Of: odoo/odoo#197889
**Current behavior before PR:** When a user had an open live chat window and pressed the Tab key, it resulted in an ended chat window being opened. **Desired behavior after PR is merged:** This fix ensures that pressing the Tab key will open active live chats first, then the ended chats. It also keeps the focus on the chat window if the live chat has ended. Task-4507082 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: o
Original PR description
**Current behavior before PR:** When a user had an open live chat window and pressed the Tab key, it resulted in an ended chat window being opened. **Desired behavior after PR is merged:** This fix ensures that pressing the Tab key will open active live chats first, then the ended chats. It also keeps the focus on the chat window if the live chat has ended. Task-4507082 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195045
Before this commit, when the user creates a project in the form and select a stage to directly put it in another stage then the first one given as default value. The stage is changed to set again the project in the default stage instead of keeping the choice made by the user. This commit makes sure the stage chosen by the user is still kept once the project is created. Steps to reproduce: ------------------ 1. Install project 2. Go to Project > Configuration > Settings 3. Enable the Pr
Original PR description
Before this commit, when the user creates a project in the form and select a stage to directly put it in another stage then the first one given as default value. The stage is changed to set again the project in the default stage instead of keeping the choice made by the user. This commit makes sure the stage chosen by the user is still kept once the project is created. Steps to reproduce: ------------------ 1. Install project 2. Go to Project > Configuration > Settings 3. Enable the Project Stage feature 4. Go to Project > Configuration > Projects 5. Click on new button to create a new project 6. Set the project name and click on the second project stage Current Behavior: ---------------- The project goes back to the default stage instead of staying in the stage selected by the user. Expected Behavior: ----------------- The project should be in the stage selected. Forward-Port-Of: odoo/odoo#198452
Steps to reproduce: - Install any industry module; - Uninstall the module; Current behaviour: Some records from the industry module (like a knowledge article) which have a second xmlid from `__cloc_exclude__` remain in the database after the uninstallation. Expected behaviour: After this commit, all records from the industry and their related `__cloc_exclude__` ir_model_data entries are removed. task-4501067 Forward-Port-Of: odoo/odoo#196667
Original PR description
Steps to reproduce: - Install any industry module; - Uninstall the module; Current behaviour: Some records from the industry module (like a knowledge article) which have a second xmlid from `__cloc_exclude__` remain in the database after the uninstallation. Expected behaviour: After this commit, all records from the industry and their related `__cloc_exclude__` ir_model_data entries are removed. task-4501067 Forward-Port-Of: odoo/odoo#196667
The `rollback` decorator does not properly `release` its savepoint, leading to the subtransaction remaining present until the end of the current transaction (or a rollback to the start of the test). This is unlikely to trigger odoo/odoo#71395 but it's still bad form and unnecessary: an explicit `close` will *rollback and release* the savepoint, so `savepoin()` can just be wrapped into a `closing()` which will do that for us. Forward-Port-Of: odoo/odoo#198500
Original PR description
The `rollback` decorator does not properly `release` its savepoint, leading to the subtransaction remaining present until the end of the current transaction (or a rollback to the start of the test). This is unlikely to trigger odoo/odoo#71395 but it's still bad form and unnecessary: an explicit `close` will *rollback and release* the savepoint, so `savepoin()` can just be wrapped into a `closing()` which will do that for us. Forward-Port-Of: odoo/odoo#198500
When we show a wizard to the user it is possible to add some warnings and redirects to views. However currently an error message will raise when accessing a view with more than 1 view mode Steps to reproduce: - Have entries already secured with hash - Create unreconciled bank statement - Open Secure Entries wizard (Accounting / Accounting / Secure Entries) - Enter a future date - Warning will raise "There are still unreconciled bank statement lines before the selected date. The entri
Original PR description
When we show a wizard to the user it is possible to add some warnings and redirects to views. However currently an error message will raise when accessing a view with more than 1 view mode Steps to reproduce: - Have entries already secured with hash - Create unreconciled bank statement - Open Secure Entries wizard (Accounting / Accounting / Secure Entries) - Enter a future date - Warning will raise "There are still unreconciled bank statement lines before the selected date. The entries from journal prefixes containing them will not be secured: BNK1/2025 Review" - Click on the Review Link Traceback ``` Uncaught Promise > View types not defined kanban,list found in act_window action 855 ``` This occurs because multiple view_mode are not correctly handled opw-4571921 Forward-Port-Of: odoo/odoo#198159
Since commit [6f06420e4a9443c52dc0cb427f8f55eb4aecabce](https://github.com/odoo/odoo/commit/6f06420e4a9443c52dc0cb427f8f55eb4aecabce), fields used in expressions in a view are automatically added to the view if not present originally. This allows all fields to be available in the expression editor for modifiers, which this commit is enabling. task-4481934 Forward-Port-Of: odoo/enterprise#79737 Forward-Port-Of: odoo/enterprise#79672
Original PR description
Since commit [6f06420e4a9443c52dc0cb427f8f55eb4aecabce](https://github.com/odoo/odoo/commit/6f06420e4a9443c52dc0cb427f8f55eb4aecabce), fields used in expressions in a view are automatically added to the view if not present originally. This allows all fields to be available in the expression editor for modifiers, which this commit is enabling. task-4481934 Forward-Port-Of: odoo/enterprise#79737 Forward-Port-Of: odoo/enterprise#79672
`test_knowledge_commands_tour` is currently disabled. Currently it is failing because the main paragraph element in the Composer was changed from `<p>` to `<div class="o-paragraph">`. This commit updates the tour to be compatible with the changes in the Composer, in hope to re-enable the test some day. runbot-task-114943 runbot-task-134158 Forward-Port-Of: odoo/enterprise#79669
Original PR description
`test_knowledge_commands_tour` is currently disabled. Currently it is failing because the main paragraph element in the Composer was changed from `<p>` to `<div class="o-paragraph">`. This commit updates the tour to be compatible with the changes in the Composer, in hope to re-enable the test some day. runbot-task-114943 runbot-task-134158 Forward-Port-Of: odoo/enterprise#79669
- Since this PR(https://github.com/odoo/enterprise/pull/77019) we were not able to settle open invoices in PoS anymore. - Now when the customer have an existing due and that due is not linked to any `pos.order` (like an open invoice), we can now settle it in PoS. To do this we redirect the user to the payment screen and pre-fill the amount to settle. - Add default `settle_product` & `deposit_product` for new `pos.config`. Also add these products for config for which session is in **Opening con
Original PR description
- Since this PR(https://github.com/odoo/enterprise/pull/77019) we were not able to settle open invoices in PoS anymore. - Now when the customer have an existing due and that due is not linked to any `pos.order` (like an open invoice), we can now settle it in PoS. To do this we redirect the user to the payment screen and pre-fill the amount to settle. - Add default `settle_product` & `deposit_product` for new `pos.config`. Also add these products for config for which session is in **Opening control** state. task-id: 4587306 Forward-Port-Of: odoo/enterprise#79605
The `rollback` decorator of `account_acountant` does not properly `release` its savepoint, leading to the subtransaction remaining present until the end of the current transaction (or a rollback to the start of the test). This is unlikely to trigger odoo/odoo#71395 (though not impossible as one of the savepoints is in a test) but it's still bad form and unnecessary: an explicit `close` will *rollback and release* the savepoint, so `savepoin()` can just be wrapped into a `closing()` which will
Original PR description
The `rollback` decorator of `account_acountant` does not properly `release` its savepoint, leading to the subtransaction remaining present until the end of the current transaction (or a rollback to the start of the test). This is unlikely to trigger odoo/odoo#71395 (though not impossible as one of the savepoints is in a test) but it's still bad form and unnecessary: an explicit `close` will *rollback and release* the savepoint, so `savepoin()` can just be wrapped into a `closing()` which will do that for us. For `web_gantt` the savepoint is closed but not on all paths (if `ValueError` is raised the savepoint is never rolled back let alone closed), the manual use is also rather unnecessary as we can just rollback around the relevant method call, none of the later mess interacts with the cursor / connection. Forward-Port-Of: odoo/enterprise#79797
We swap them to that we first have the deferred revenue report first, then the deferred expense report so that we have the same logical order as the Customer then Vendors menu items in the navbar. task-none Forward-Port-Of: odoo/enterprise#79917 Forward-Port-Of: odoo/enterprise#79790
Original PR description
We swap them to that we first have the deferred revenue report first, then the deferred expense report so that we have the same logical order as the Customer then Vendors menu items in the navbar. task-none Forward-Port-Of: odoo/enterprise#79917 Forward-Port-Of: odoo/enterprise#79790
See commits :-) Forward-Port-Of: odoo/enterprise#79743 Forward-Port-Of: odoo/enterprise#79264
Original PR description
See commits :-) Forward-Port-Of: odoo/enterprise#79743 Forward-Port-Of: odoo/enterprise#79264
Before this commit, when we clicked on the activity send tax report. It would result by opening the report at the current date instead of the date of the move. After this commit, the expected behaviour was to open the move of the tax closing. task-4583606 Forward-Port-Of: odoo/enterprise#79807 Forward-Port-Of: odoo/enterprise#79511
Original PR description
Before this commit, when we clicked on the activity send tax report. It would result by opening the report at the current date instead of the date of the move. After this commit, the expected behaviour was to open the move of the tax closing. task-4583606 Forward-Port-Of: odoo/enterprise#79807 Forward-Port-Of: odoo/enterprise#79511
Steps to reproduce the bug: - Create two storable products “P1” and “P2”: - Tracked by Serial Number - Create a quality control point: - Operation: Receipt - Control per: Quantity - Create a receipt: - 10 units of P1 - 10 units of P2 - Mark it as "To Do." - Open the detailed operation of P1: - Assign two SNs: - SN1 - SN2 - Save. - The “Quantity” field of the P1 move is updated to 2. - Mark the move of P1 as "Picked." - Validate the receipt. - The backorde
Original PR description
Steps to reproduce the bug:
- Create two storable products “P1” and “P2”:
- Tracked by Serial Number
- Create a quality control point:
- Operation: Receipt
- Control per: Quantity
- Create a receipt:
- 10 units of P1
- 10 units of P2
- Mark it as "To Do."
- Open the detailed operation of P1:
- Assign two SNs: - SN1 - SN2 - Save.
- The “Quantity” field of the P1 move is updated to 2.
- Mark the move of P1 as "Picked."
- Validate the receipt.
- The backorder wizard is triggered → Validate it.
Problem:
A wizard to process the quality check is triggered, but 12 quality checks (2 for P1 and 10 for P2) are loaded instead of only 2 for P1.
Expected Behavior:
Quality checks should only be triggered for picked moves
opw-4442564
Forward-Port-Of: odoo/enterprise#79810
Forward-Port-Of: odoo/enterprise#76478**Steps to reproduce:** - Use the `NL Company`; - Go to `External Identifiers` (via `Settings / Technical / Sequence & Identifiers`): - Remove `l10n_nl.tax_report_rub_3bg_tag` and/or `l10n_nl.tax_report_rub_3bg_tag` identifiers;  - Try to access `EC Sales List` (via `Accounting / Reporting / Statement Reports`). ___ **Issue:** Can't access `EC Sales List` o
Original PR description
**Steps to reproduce:** - Use the `NL Company`; - Go to `External Identifiers` (via `Settings / Technical / Sequence & Identifiers`): - Remove `l10n_nl.tax_report_rub_3bg_tag` and/or…
**Steps to reproduce:**
- Use the `NL Company`;
- Go to `External Identifiers` (via `Settings / Technical / Sequence & Identifiers`):
- Remove `l10n_nl.tax_report_rub_3bg_tag` and/or `l10n_nl.tax_report_rub_3bg_tag` identifiers;

- Try to access `EC Sales List` (via `Accounting / Reporting / Statement Reports`).
___
**Issue:**
Can't access `EC Sales List` of the Dutch company after deleting any or both of the `l10n_nl.tax_report_rub_3bg_tag` and/or `l10n_nl.tax_report_rub_3bg_tag` identifiers.

___
**Expected:**
Users should be able to access `EC Sales List` even when an identifier is deleted as there is a fallback.

___
**Cause:**
The fallback doesn't refer to the good tax options.
https://github.com/odoo/enterprise/blob/b2368558afdf922fdf04bdcfa8a98b4e690ddccd/l10n_nl_intrastat/models/account_sales_report.py#L82-L84

___
**Fix:**
Adapt the fallback references' module for retrieval as done for testing in: https://github.com/odoo/enterprise/blob/b2368558afdf922fdf04bdcfa8a98b4e690ddccd/l10n_nl_intrastat/tests/test_sales_report.py#L22-L24
___
opw-4425376
Forward-Port-Of: odoo/enterprise#78314
Forward-Port-Of: odoo/enterprise#76366clipboard_macros.js : use hoot action instead of action implemented in web/core/macro.js (The goal is to definitly remove this actions from macro.js) tour_shopfloor.js : Ensure body has not visible modal (and not just modal) preparation_display_tour.js : WaitRequest after clickOrderButton. tour_shopfloor.js : additional step to ensure state of DOM. tour_test_mrp_barcode_flows.js : additional step to ensure state of DOM. No need to click on the input when use edit() action.
Original PR description
clipboard_macros.js : use hoot action instead of action implemented in
web/core/macro.js (The goal is to definitly remove this actions
from macro.js)
tour_shopfloor.js : Ensure body has not visible modal (and not just
modal)
preparation_display_tour.js : WaitRequest after clickOrderButton. tour_shopfloor.js : additional step to ensure state of DOM. tour_test_mrp_barcode_flows.js : additional step to ensure state of DOM.
No need to click on the input when use edit() action. edit() already
click in input to focus it.
export_tours.js : additional step to ensure state of DOM. helpdesk_knowledge_template_bloc_tour.js : No need to click when the
step is just a DOM check.
website_sale_change_rental_duration.js : additional step to ensure
state of DOM.
Forward-Port-Of: odoo/enterprise#79755
Forward-Port-Of: odoo/enterprise#79358Currently, if two taxes in Odoo database matche Avatax name, it will apply both of them on the invoice line therefore duplicating this tax amount on this line. Now we only take the first tax found in database. opw-4493544 Forward-Port-Of: odoo/enterprise#79695
Original PR description
Currently, if two taxes in Odoo database matche Avatax name, it will apply both of them on the invoice line therefore duplicating this tax amount on this line. Now we only take the first tax found in database. opw-4493544 Forward-Port-Of: odoo/enterprise#79695
Before this commit, the test was relying in "today's" date for creating the recurring invoices. Since the time period for generating them was too short, the expected deliveries were not being generated. After this commit, we give a fixed date to the start date of the subscriptions and then generate the recurring invoices with a time distance of a month, solving the issue. Issue-from: OPW-4166852 Related PR: odoo/enterprise#73397 Forward-Port-Of: odoo/enterprise#78300 Forward-Port-Of: odo
Original PR description
Before this commit, the test was relying in "today's" date for creating the recurring invoices. Since the time period for generating them was too short, the expected deliveries were not being generated. After this commit, we give a fixed date to the start date of the subscriptions and then generate the recurring invoices with a time distance of a month, solving the issue. Issue-from: OPW-4166852 Related PR: odoo/enterprise#73397 Forward-Port-Of: odoo/enterprise#78300 Forward-Port-Of: odoo/enterprise#76336
The Bookkeeper should be allowed to create modify and remove the asset as requested - I have edited the security file in asset model making it group_account_user task-4567264 Forward-Port-Of: odoo/enterprise#79106
Original PR description
The Bookkeeper should be allowed to create modify and remove the asset as requested - I have edited the security file in asset model making it group_account_user task-4567264 Forward-Port-Of: odoo/enterprise#79106
Previously, in RTL mode, sidebar resizing calculations were incorrect, causing the sidebar to not follow the mouse properly resulted in incorrect resizing. This fix ensures accurate resizing behavior. Task-4571290 Forward-Port-Of: odoo/enterprise#79568 Forward-Port-Of: odoo/enterprise#79379
Original PR description
Previously, in RTL mode, sidebar resizing calculations were incorrect, causing the sidebar to not follow the mouse properly resulted in incorrect resizing. This fix ensures accurate resizing behavior. Task-4571290 Forward-Port-Of: odoo/enterprise#79568 Forward-Port-Of: odoo/enterprise#79379
When an employee takes a leave, the private car reimbursement amount is reduced by a certain amount. However, when they take multiple leaves, the computation doesn't follow. This commit fixes the issue. task-4353922 Forward-Port-Of: odoo/enterprise#79579 Forward-Port-Of: odoo/enterprise#75552
Original PR description
When an employee takes a leave, the private car reimbursement amount is reduced by a certain amount. However, when they take multiple leaves, the computation doesn't follow. This commit fixes the issue. task-4353922 Forward-Port-Of: odoo/enterprise#79579 Forward-Port-Of: odoo/enterprise#75552
During the creation of quality checks a potentially useless `search` was performed. With this commit, we will perform (indirectly) the search only if needed When method `_create_checks` is called, `quality.check` records are created one at the time. This can become slow wh en a lot of checks are created at once (ex: Bill of Material defined with steps "manual consumption" and used in a manufacturing order). Script used for tests: https://gist.github.com/emi-odoo/d4c6271363dfc3f2e4b7c5efa
Original PR description
During the creation of quality checks a potentially useless `search` was performed. With this commit, we will perform (indirectly) the search only if needed When method `_create_checks` is called,…
During the creation of quality checks a potentially useless `search` was performed. With this commit, we will perform (indirectly) the search only if needed When method `_create_checks` is called, `quality.check` records are created one at the time. This can become slow wh en a lot of checks are created at once (ex: Bill of Material defined with steps "manual consumption" and used in a manufacturing order). Script used for tests: https://gist.github.com/emi-odoo/d4c6271363dfc3f2e4b7c5efabfed5c1 Before: 3.51s (`_create_checks`) - 17493 queries (total queries of the script, not for the single operation)  After: 2.08s (`_create_checks`) - 16103 queries (total queries of the script, not for the single operation)  Comparison of the time taken by Confirming the MRP Order (using `time.process_time()`) | n_components | before (s) | after (s) | ratio | | --- | --- | --- | --- | | 1 | 0.074 | 0.073 | 0.988 | | 5 | 0.134 | 0.140 | 1.042 | | 10 | 0.216 | 0.187 | 0.862 | | 20 | 0.334 | 0.304 | 0.908 | | 50 | 0.736 | 0.600 | 0.816 | | 100 | 1.378 | 1.172 | 0.851 | | 200 | 2.739 | 2.374 | 0.867 | Forward-Port-Of: odoo/enterprise#77608 Forward-Port-Of: odoo/enterprise#65725
Forward-Port-Of: odoo/enterprise#79660
Original PR description
Forward-Port-Of: odoo/enterprise#79660
This commit fixes an issue with the X api calls where the oauth_signature was no longer correct in recent Python versions. `url_quote` used to consider the character `,` as unsafe and quoted it when creating the signature. From Python3.11 this method consider it as reserved but not as unsafe thus not quoting it. This change restores the old behavior to quote so as to respect the oauth_signature format given by X's doc. task-4583612 Forward-Port-Of: odoo/enterprise#79834
Original PR description
This commit fixes an issue with the X api calls where the oauth_signature was no longer correct in recent Python versions. `url_quote` used to consider the character `,` as unsafe and quoted it when creating the signature. From Python3.11 this method consider it as reserved but not as unsafe thus not quoting it. This change restores the old behavior to quote so as to respect the oauth_signature format given by X's doc. task-4583612 Forward-Port-Of: odoo/enterprise#79834
This commit fixes a cohort test failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 Forward-Port-Of: odoo/enterprise#79738 Forward-Port-Of: odoo/enterprise#79555
Original PR description
This commit fixes a cohort test failing randomly by ensuring that we wait for the download to be completed before ending the test or asserting the steps. Runbot error-134572 Forward-Port-Of: odoo/enterprise#79738 Forward-Port-Of: odoo/enterprise#79555
Due to dependencies and auto installs, Accounting was auto installed for Belgian companies. `l10n_be_reports` was auto installed if `l10n_be` and `account_reports` are installed but it also depends on `account_loans` which is an accounting feature. report by CHKL Forward-Port-Of: odoo/enterprise#79746
Original PR description
Due to dependencies and auto installs, Accounting was auto installed for Belgian companies. `l10n_be_reports` was auto installed if `l10n_be` and `account_reports` are installed but it also depends on `account_loans` which is an accounting feature. report by CHKL Forward-Port-Of: odoo/enterprise#79746
Test that when creating a receipt or internal transfer using the barcode app, the description_picking field of the move_line is not empty. Steps to reproduce the issue: - Create a product with a description for receipts (e.g., 'receipt'). - In the barcode app, create a new receipt and add the product (leave it in draft). - In the inventory app, check the corresponding receipt. - The move_line has no description_picking, even though the product has one. community: https://github.com/o
Original PR description
Test that when creating a receipt or internal transfer using the barcode app, the description_picking field of the move_line is not empty. Steps to reproduce the issue: - Create a product with a description for receipts (e.g., 'receipt'). - In the barcode app, create a new receipt and add the product (leave it in draft). - In the inventory app, check the corresponding receipt. - The move_line has no description_picking, even though the product has one. community: https://github.com/odoo/odoo/pull/193996/files opw-4406582 Forward-Port-Of: odoo/enterprise#79608 Forward-Port-Of: odoo/enterprise#79349
An error occurs when triggering a cron job for posting all pending posts. ```ValueError: Expected singleton: social.post(14, 13)``` A singleton error occurs when the system tries to get a value of 'post_method' from multiple records at [1]. Link [1]: https://github.com/odoo/enterprise/blob/5e968dfce025102bc27f01ba9b07304477835b47/social_push_notifications/models/social_post.py#L26 To avoid the singleton error, we can use the ```mapped()``` function to retrieve a list of values from a
Original PR description
An error occurs when triggering a cron job for posting all pending posts. ```ValueError: Expected singleton: social.post(14, 13)``` A singleton error occurs when the system tries to get a value of 'post_method' from multiple records at [1]. Link [1]: https://github.com/odoo/enterprise/blob/5e968dfce025102bc27f01ba9b07304477835b47/social_push_notifications/models/social_post.py#L26 To avoid the singleton error, we can use the ```mapped()``` function to retrieve a list of values from all the records and check the condition across them. Sentry-6055370689 Forward-Port-Of: odoo/enterprise#74698
Steps to reproduce ================== 1. Allow edit access to portal user on published article. 2. Try to create a child article from the portal user. When the portal user tries to create sub article it sets 'website_published' to true and inverse the field 'is_published' which force to write on the same article. As 'is_published' is not included in the portal writable field it throws an access error. After this commit ================== This commit allows portal user to create arti
Original PR description
Steps to reproduce ================== 1. Allow edit access to portal user on published article. 2. Try to create a child article from the portal user. When the portal user tries to create sub article it sets 'website_published' to true and inverse the field 'is_published' which force to write on the same article. As 'is_published' is not included in the portal writable field it throws an access error. After this commit ================== This commit allows portal user to create article without any errors. Also prevent unnecessary write on empty recordset. Task-4414401 Forward-Port-Of: odoo/enterprise#76349
related - https://github.com/odoo/odoo/pull/198328 Forward-Port-Of: odoo/enterprise#79690
Original PR description
related - https://github.com/odoo/odoo/pull/198328 Forward-Port-Of: odoo/enterprise#79690
Before this commit: === - Certain UrbanPiper-related products (product_packaging_charges, product_delivery_charges, product_other_charges) could be archived, leading to test case failure in l10n_in. After this commit: === - The corresponding product.template records are explicitly reactivated after calling archive_products(cls.env), ensuring they remain available for use. runbot-115160 Forward-Port-Of: odoo/enterprise#79645
Original PR description
Before this commit: === - Certain UrbanPiper-related products (product_packaging_charges, product_delivery_charges, product_other_charges) could be archived, leading to test case failure in l10n_in. After this commit: === - The corresponding product.template records are explicitly reactivated after calling archive_products(cls.env), ensuring they remain available for use. runbot-115160 Forward-Port-Of: odoo/enterprise#79645
Before this commit: When a user in Odoo uses the dialog box to send a message to a WhatsApp number and inserts a line break with "Shift+Enter," it creates a <br> tag. In the WhatsApp module, these tags are stripped, causing the word before and the word after the <br> tag to be joined together without a space or a line break to separate them. How to reproduce: Send a message via the dialog box to a WhatsApp number and insert a line break using Shift+Enter. On the phone, the line break will
Original PR description
Before this commit: When a user in Odoo uses the dialog box to send a message to a WhatsApp number and inserts a line break with "Shift+Enter," it creates a <br> tag. In the WhatsApp module, these tags are stripped, causing the word before and the word after the <br> tag to be joined together without a space or a line break to separate them. How to reproduce: Send a message via the dialog box to a WhatsApp number and insert a line break using Shift+Enter. On the phone, the line break will not be present anymore because the tag <br> is removed with the other tags. After this commit: the line break is there and the words are not join together anymore. OPW-4079729 Forward-Port-Of: odoo/enterprise#78307 Forward-Port-Of: odoo/enterprise#73727
taskid : 4471762 Forward-Port-Of: odoo/enterprise#79756 Forward-Port-Of: odoo/enterprise#77483
Original PR description
taskid : 4471762 Forward-Port-Of: odoo/enterprise#79756 Forward-Port-Of: odoo/enterprise#77483
Before this commit, depositing money for a customer with a zero balance could result in the creation of an empty order upon refreshing the browser. This issue arose because empty orders without payments were being synchronized, leading to unintended empty orders in the system. This commit addresses the problem by ensuring that empty orders without payments are not synchronized and prevents the creation of such empty orders during the deposit process. opw-4483049 Forward-Port-Of: odoo/ente
Original PR description
Before this commit, depositing money for a customer with a zero balance could result in the creation of an empty order upon refreshing the browser. This issue arose because empty orders without payments were being synchronized, leading to unintended empty orders in the system. This commit addresses the problem by ensuring that empty orders without payments are not synchronized and prevents the creation of such empty orders during the deposit process. opw-4483049 Forward-Port-Of: odoo/enterprise#78421 Forward-Port-Of: odoo/enterprise#78085
before this commit: Shipping methods are missing default vlaue of shipping functionalities, which leads to some methods getting filtered out incorrectly. After this commit: Default value of the shipping functionalities are fetched and checked to select the correct shipping method based on user filters. opw-4167675 Forward-Port-Of: odoo/enterprise#79518
Original PR description
before this commit: Shipping methods are missing default vlaue of shipping functionalities, which leads to some methods getting filtered out incorrectly. After this commit: Default value of the shipping functionalities are fetched and checked to select the correct shipping method based on user filters. opw-4167675 Forward-Port-Of: odoo/enterprise#79518
… rec widget The 'no_exchange_difference' is used to prevent exchange diff in the whole reconciliation. However, the reconciliation is recursive when dealing with CABA entries. From the bank reconciliation widget, we want to prevent the exchange diff only for the top reconciliation but not recursively. Otherwise, the CABA entry ends up with a residual amount but considered as fully reconciled. Instead, let's use 'no_exchange_difference_no_recursive'. See the test in this commit. task
Original PR description
… rec widget The 'no_exchange_difference' is used to prevent exchange diff in the whole reconciliation. However, the reconciliation is recursive when dealing with CABA entries. From the bank reconciliation widget, we want to prevent the exchange diff only for the top reconciliation but not recursively. Otherwise, the CABA entry ends up with a residual amount but considered as fully reconciled. Instead, let's use 'no_exchange_difference_no_recursive'. See the test in this commit. task-id: 4531511 Forward-Port-Of: odoo/enterprise#78538 Forward-Port-Of: odoo/enterprise#78205
- we made some typo here https://github.com/odoo/enterprise/pull/77329/commits/0005513aedee0fce8db174dc25846d17f46f056b#diff-636ce727908264dec04ea3634d7cea514ba8f21344134c239c474d989abcf266R144 and we lost the ```manage versions ``` from the action. Task-4586706 Forward-Port-Of: odoo/enterprise#79571
Original PR description
- we made some typo here https://github.com/odoo/enterprise/pull/77329/commits/0005513aedee0fce8db174dc25846d17f46f056b#diff-636ce727908264dec04ea3634d7cea514ba8f21344134c239c474d989abcf266R144 and we lost the ```manage versions ``` from the action. Task-4586706 Forward-Port-Of: odoo/enterprise#79571
RATIONALE Cleanup addon-specific code about default recipients computation. Since base code is now smarter, most overrides can be removed to keep simple code and ease understanding. SPECIFICATIONS Remove overrides that are now covered by base computation. When necessary use '_mail_defaults_to_email' that prioritizes email over partner (customer) when searching for default recipients. When necessary add missing '_primary_email' definition allowing to find the main email to cont
Original PR description
RATIONALE Cleanup addon-specific code about default recipients computation. Since base code is now smarter, most overrides can be removed to keep simple code and ease understanding. SPECIFICATIONS…
RATIONALE Cleanup addon-specific code about default recipients computation. Since base code is now smarter, most overrides can be removed to keep simple code and ease understanding. SPECIFICATIONS Remove overrides that are now covered by base computation. When necessary use '_mail_defaults_to_email' that prioritizes email over partner (customer) when searching for default recipients. When necessary add missing '_primary_email' definition allowing to find the main email to contact. Provide some fixes in default recipients computation, notably linked to normalized emails usage and comparison instead of raw emails. QUERIES Simple overrides on test models are removed. This implies usage of more complete '_message_get_default_recipients' hence some additional queries. LINKS Followup of odoo/odoo#172714: improve default behavior of templates Followup of odoo/odoo#188642 : main branch for email-like recipients Task-4555506: Cleanup / Mergeup default / suggested recipients Forward-Port-Of: odoo/enterprise#79590
Back port of #78809 Forward-Port-Of: odoo/enterprise#79694
Original PR description
Back port of #78809 Forward-Port-Of: odoo/enterprise#79694
With this commit ================ - Renamed the return value of the getName method to `Inventory Count` for consistency with the Inventory Count button on the main page. - Rephrased toaster message for Inventory Adjustment Validation. - Updated the domain in the product form of Inventory Count to include `storable/inventory tracked` products. Task: [4458119](https://www.odoo.com/odoo/my-tasks/4458119) Forward-Port-Of: odoo/enterprise#79715 Forward-Port-Of: odoo/enterprise#79154
Original PR description
With this commit ================ - Renamed the return value of the getName method to `Inventory Count` for consistency with the Inventory Count button on the main page. - Rephrased toaster message for Inventory Adjustment Validation. - Updated the domain in the product form of Inventory Count to include `storable/inventory tracked` products. Task: [4458119](https://www.odoo.com/odoo/my-tasks/4458119) Forward-Port-Of: odoo/enterprise#79715 Forward-Port-Of: odoo/enterprise#79154
Refactors the button bar component and makes the xlsx button always show on accounting reports. task-4402561 Forward-Port-Of: odoo/enterprise#75884 Forward-Port-Of: odoo/enterprise#73580
Original PR description
Refactors the button bar component and makes the xlsx button always show on accounting reports. task-4402561 Forward-Port-Of: odoo/enterprise#75884 Forward-Port-Of: odoo/enterprise#73580