Daily updates from Odoo
Navigate
Branch
Tuesday, July 16, 2024
47 changes
24 changes
Enhancements to existing features
The accounting accountant module's internal tests were updated to use Odoo's newer testing approach. This improves maintainability and helps future changes be validated more reliably without changing user-facing accounting features.
Original PR description
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666 Enterprise PR: https://github.com/odoo/enterprise/pull/62606
Resolved issues and error corrections
This fix prevents an unwanted horizontal scrollbar from appearing when editing or viewing mass mailing snippets. It keeps the desktop layout from being overly compressed while making the email design area cleaner and easier to use.
Original PR description
Due to the changes made in [3916601](https://github.com/odoo/odoo/pull/170126/commits/5ee56608c0c397d03a82a8472dfdab46213f6a27) task, the flex-shrink property is causing a horizontal scrollbar to appear because the iframe is now much wider to avoid unnecessary compression in desktop mode. This fix ensures that the horizontal scrollbar is not displayed while maintaining the appropriate layout for the snippet in desktop mode. Task-4050207
Fixes an error that prevented users from printing invoices for Saudi companies. This ensures confirmed invoices can be printed normally, avoiding disruption in billing and compliance workflows.
Original PR description
When the user tries to print the invoice for the Saudi company, a traceback will appear. Steps to reproduce the error: - Install "l10n_sa" - Switch to "SA Company" - Create a new invoice > Confirm > Print the invoice ``` Error: A traceback appears: "AttributeError: 'res.lang' object has no attribute '_lang_get_direction'" ``` https://github.com/odoo/odoo/blob/382e79857535cc0a404a8f70fbef071b79afea86/addons/l10n_gcc_invoice/views/report_invoice.xml#L285 Here, "_lang_get_direction" method is still used, this method is replaced by "_get_data" method in commit odoo@9f5470f. sentry-5596797662 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Sharing a public project in read-only mode with a portal user now also grants access to the project's tasks. This aligns portal user access with public share-link behavior and prevents invited users from seeing an incomplete project page.
Original PR description
To reproduce the bug: - Have a project with no customer on it - In the project setting switch the 'Visibility' to 'Invited portal users and all internal users (public)' - Share the project with readonly access mode with a portal user (Joel) - Sign in as Joel and check the project page We can see that contrary to the page a public client get with using the share link with access token, we can't see the project tasks. More specifcly we need to be followers of these tasks to see them. This fonctionnement is already implimented in the case of adding follower from the chat section instead of the Share button, furthermore it means that the public user. This commit aim to change that behavior and make the share with readonly mode imply following all the project task. opw-4038154
This change makes Odoo's web test setup wait correctly for dialogs to appear before continuing. It helps reduce intermittent test failures in the development pipeline, improving confidence in release validation without changing user-facing behavior.
Original PR description
This commit should fix the following error which is thrown from time to time on runbot. ``` [HOOT] HootDomError: Could not find elements matching ".o_content" within 200 milliseconds at http://127.0.0.1:8069/web/assets/6bdc9d0/web.assets_unit_tests_setup.min.js:3227:8 ```
This change restores the previous email editor layout behavior to prevent unwanted horizontal scrolling. It matters because users creating mass mailings should have a smoother editing experience without layout overflow in the editor preview.
Original PR description
This PR reverts the changes from commit [170126](https://github.com/odoo/odoo/pull/170126/commits/5ee56608c0c397d03a82a8472dfdab46213f6a27) Because the flex-shrink: 0 is making the iframe overflow and introduces a horizontal scrollbar Task-4050207
Miscellaneous changes
In a call to search_panel_select_multi_range for a many2many with a limit set and expand=False (default), 2 filterings of comodel records (more precisely records in comodel_domain) are done. First only up to L=limit records are fetched, then only those that are in the domain image are used to create values in field_range. The limit check is done after the 2 filterings. Let us write - C for the set of comodel records - F for the set of comodel records obtained by the first filtering -
Original PR description
In a call to search_panel_select_multi_range for a many2many with a limit set and expand=False (default), 2 filterings of comodel records (more precisely records in comodel_domain) are done. First…
In a call to search_panel_select_multi_range for a many2many with a
limit set and expand=False (default), 2 filterings of comodel records
(more precisely records in comodel_domain) are done. First only up to
L=limit records are fetched, then only those that are in the domain
image are used to create values in field_range. The limit check is done
after the 2 filterings.
Let us write
- C for the set of comodel records
- F for the set of comodel records obtained by the first filtering
- I fot the set of comodel records in the domain image
The code to be valid should do the check on C ⋂ I while it
does it on F ⋂ I so that 2 bad things can happen:
- #(F ⋂ I) < L but #(C ⋂ I) = #(F ⋂ I) + #((C ∖ F) ⋂ I) >= L
so that the error_msg is not returned while it should
- #(C ⋂ I) < L and #((C ∖ F) ⋂ I) >= 1
so that some records that should be shown are not
We use the fact that it is possible in 15.0 and after to use many2many
fields in read_group to make a single correct filtering, that is get C ⋂ I
and do the limit check on it.
opw-3827751
Forward-Port-Of: odoo/odoo#172963### [FIX] product: add domain on ptav filter Steps: - Install sale. - If user using odoo for 3-4 for years then user probably have more then 200 ptavs in db.. Issue: - It'll display limit warning instead of filter in most of cases. Cause: - Have larger number of ptavs. Fix: - Add domain to only search active ptav and has related active product. opw-3827751 Forward-Port-Of: odoo/odoo#168705
Original PR description
### [FIX] product: add domain on ptav filter Steps: - Install sale. - If user using odoo for 3-4 for years then user probably have more then 200 ptavs in db.. Issue: - It'll display limit warning instead of filter in most of cases. Cause: - Have larger number of ptavs. Fix: - Add domain to only search active ptav and has related active product. opw-3827751 Forward-Port-Of: odoo/odoo#168705
With this commit we allow to change/add analytic distribution on a posted line in quick edit mode. opw-3561831 Forward-Port-Of: odoo/odoo#144562
Original PR description
With this commit we allow to change/add analytic distribution on a posted line in quick edit mode. opw-3561831 Forward-Port-Of: odoo/odoo#144562
Description of the issue/feature this PR addresses: Unimplemented delivery_types for delivery carriers lead to 500 Current behavior before PR: During an odoo version update or by replacing one delivery app by another, it can happen that the shipping method is not implemented (see delivery_carrier.py#rate_shipment method). This will lead to a 500 Internal Server Error when opening the checkout page that contains the delivery method select. Desired behavior after PR is merged: Instead of a 5
Original PR description
Description of the issue/feature this PR addresses: Unimplemented delivery_types for delivery carriers lead to 500 Current behavior before PR: During an odoo version update or by replacing one delivery app by another, it can happen that the shipping method is not implemented (see delivery_carrier.py#rate_shipment method). This will lead to a 500 Internal Server Error when opening the checkout page that contains the delivery method select. Desired behavior after PR is merged: Instead of a 500 Internal Server Error (full show stopper), the error message "Shipment rate not found" is returned. The interface displays the error messages like other errors and it is ensured, that the user cannot proceed when selecting an erroneous delivery carrier. -- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/odoo#169008
To reproduce the bug: 1. Add a video to a product media. 2. In the eCommerce app, go to the product page and switch to the added video. 3. Decrease the browser page width and try to click the play/pause button. The play/pause button is located under the arrow HTML element, making it unclickable. This is because the page is not responsive, and the size of the container element is fixed at 400px. To fix this, I propose making the element responsive and decreasing the height of the arrow e
Original PR description
To reproduce the bug: 1. Add a video to a product media. 2. In the eCommerce app, go to the product page and switch to the added video. 3. Decrease the browser page width and try to click the play/pause button. The play/pause button is located under the arrow HTML element, making it unclickable. This is because the page is not responsive, and the size of the container element is fixed at 400px. To fix this, I propose making the element responsive and decreasing the height of the arrow elements. opw-3986105 Forward-Port-Of: odoo/odoo#172229
Since 8777973edd25314df6ed0327d3f27edcf62f274b, the list data are retrieved with `web_search_read`. However, the payload was not minimal as it contains all attributes of the fields (name, store, sortable, etc.). This commit reduces the payload by only requesting what is needed. Task: 4052706 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
Original PR description
Since 8777973edd25314df6ed0327d3f27edcf62f274b, the list data are retrieved with `web_search_read`. However, the payload was not minimal as it contains all attributes of the fields (name, store, sortable, etc.). This commit reduces the payload by only requesting what is needed. Task: 4052706 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#173123
Steps to reproduce ================== - Install hr_skills,web_studio - Go to Employees - Open any record - Add a new resume entry without description - Save - Click on the actions gear - Print > Print Resume => `Odoo India pvt. Ltd` is displayed in the report in place of the missing description Solution ======== Use the new data-oe-demo attribute made for demo data inside studio opw-4033434 Forward-Port-Of: odoo/odoo#173167
Original PR description
Steps to reproduce ================== - Install hr_skills,web_studio - Go to Employees - Open any record - Add a new resume entry without description - Save - Click on the actions gear - Print > Print Resume => `Odoo India pvt. Ltd` is displayed in the report in place of the missing description Solution ======== Use the new data-oe-demo attribute made for demo data inside studio opw-4033434 Forward-Port-Of: odoo/odoo#173167
Problem: When registering for an Event, an `event.registration record` is created. Odoo will send a reminder email to these registered customers using the `Event: Reminder` email template. This template uses the `get_date_range_str` method inside `event.registration` to calculate what the start date (`event_begin_date`) is and then decides which dynamic string to use (today, tomorrow, etc). However, this field is stored in UTC and uses a separate `date_tz` field to calculate what timezone shoul
Original PR description
Problem: When registering for an Event, an `event.registration record` is created. Odoo will send a reminder email to these registered customers using the `Event: Reminder` email template. This…
Problem: When registering for an Event, an `event.registration record` is created. Odoo will send a reminder email to these registered customers using the `Event: Reminder` email template. This template uses the `get_date_range_str` method inside `event.registration` to calculate what the start date (`event_begin_date`) is and then decides which dynamic string to use (today, tomorrow, etc). However, this field is stored in UTC and uses a separate `date_tz` field to calculate what timezone should be used. This `date_tz` context is missing, leading to emails with the wrong subject and body content. Purpose: Pass in the event's timezone to ensure that calculations involving the date_begin field display correctly. Steps to Reproduce: 1) Create an Event 2) Set the timezone to America/Los Angeles 3) Set the times to 6:00 pm - 10:00pm (leading to different day in UTC compared to PST) 4) Register customers to create `event.registration` records 5) Trigger `get_date_range_str` function, either via Email Template or SA 6) Check which string is returned based on time delta opw-3993058 Forward-Port-Of: odoo/odoo#172599 Forward-Port-Of: odoo/odoo#169682
Turns out there's a test that checks that the return value from the super() call in write is returned in the override. See `TestOverrides.test_write()`. So we need to return the value from the super().write(). Forward-Port-Of: odoo/odoo#172524
Original PR description
Turns out there's a test that checks that the return value from the super() call in write is returned in the override. See `TestOverrides.test_write()`. So we need to return the value from the super().write(). Forward-Port-Of: odoo/odoo#172524
similar to https://github.com/odoo/odoo/pull/129310 Currently, users cannot edit the bottom part of `payment_terms` and `fiscal_position`, as these are conditional blocks. This commit adds empty divs that will be interpreted by odoo-editor as editable. opw-3558001 Forward-Port-Of: odoo/odoo#172777
Original PR description
similar to https://github.com/odoo/odoo/pull/129310 Currently, users cannot edit the bottom part of `payment_terms` and `fiscal_position`, as these are conditional blocks. This commit adds empty divs that will be interpreted by odoo-editor as editable. opw-3558001 Forward-Port-Of: odoo/odoo#172777
In this commit: =============== Added config settings for the shiprocket. Task- 3657635 Forward-Port-Of: odoo/odoo#170477 Forward-Port-Of: odoo/odoo#154119
Original PR description
In this commit: =============== Added config settings for the shiprocket. Task- 3657635 Forward-Port-Of: odoo/odoo#170477 Forward-Port-Of: odoo/odoo#154119
The restrictions on `button_draft` method on account move were moved to a new method to allow inherit and mute the restrictions in necessary cases for some customizations. A user case is the next: Allow the deletion of cash basis or Exchange Differential entries to facilitate the accounting audit process. As the number of lines in the accounting entries generated by these transactions can grow significantly, this occurs each time a payment that has generated CABA or Exchange Differen
Original PR description
The restrictions on `button_draft` method on account move were moved to a new method to allow inherit and mute the restrictions in necessary cases for some customizations. A user case is the next:…
The restrictions on `button_draft` method on account move were moved to a new method to allow inherit and mute the restrictions in necessary cases for some customizations. A user case is the next: Allow the deletion of cash basis or Exchange Differential entries to facilitate the accounting audit process. As the number of lines in the accounting entries generated by these transactions can grow significantly, this occurs each time a payment that has generated CABA or Exchange Differential entries is canceled or unreconciled, reverse lines are generated for these entries. Setting the posted journal entries to "draft" when canceling by using the `button_cancel` method was introduced in [1], this does not allow deleting the CABA or Exchange Differential entries generated in the unreconciled and reconcile process. [1] 1de5c98 Related: #96134 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170067
Clear the EDI document errors and the blocking_level when the action to abandon cancel posted moves is called. Fixed the following case: 1. Stamp a customer invoice (Could you test with a Mexican record) 2. Request EDI cancellation (In this case must be generated a cancel error from the PAC, maybe the customer does not accept the cancellation) 3. Ensure that in step 2, the EDI document has an error message 4. Call the action to abandon the EDI cancellation Without this commit, the EDI
Original PR description
Clear the EDI document errors and the blocking_level when the action to abandon cancel posted moves is called. Fixed the following case: 1. Stamp a customer invoice (Could you test with a Mexican record) 2. Request EDI cancellation (In this case must be generated a cancel error from the PAC, maybe the customer does not accept the cancellation) 3. Ensure that in step 2, the EDI document has an error message 4. Call the action to abandon the EDI cancellation Without this commit, the EDI document returns to `send`, but the record presents the error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172169
When a user scans an attendee's QR code with a barcode reader, the system opens a registration confirmation dialog. If multiple QR codes are scanned in succession, the dialogs stack on top of each other. This requires the user to manually close each one, which is time-consuming. To streamline this process, the system will now automatically close the previous registration confirmation dialog when a new QR code is scanned. This change should expedite the ticket scanning process. task-4047455
Original PR description
When a user scans an attendee's QR code with a barcode reader, the system opens a registration confirmation dialog. If multiple QR codes are scanned in succession, the dialogs stack on top of each other. This requires the user to manually close each one, which is time-consuming. To streamline this process, the system will now automatically close the previous registration confirmation dialog when a new QR code is scanned. This change should expedite the ticket scanning process. task-4047455 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172783
When importing a module through `base_import_module`, it does not have a path on the file system. Because of this the SVG shapes could not be located from the file system for imported modules. This commit falls back to `ir_attachment` record that contains the imported module file in case the module was an imported one. Steps to reproduce: - Have a module within a zip that contains a block with an image shape. (e.g. zip `website_coconuts` from [1]) - Install `base_import_module`. - G
Original PR description
When importing a module through `base_import_module`, it does not have a path on the file system. Because of this the SVG shapes could not be located from the file system for imported modules. This commit falls back to `ir_attachment` record that contains the imported module file in case the module was an imported one. Steps to reproduce: - Have a module within a zip that contains a block with an image shape. (e.g. zip `website_coconuts` from [1]) - Install `base_import_module`. - Go to 'Apps' in debug mode. - Import the zipped module with `Import Module`. => The image obtained through the `/web_editor/image_shape` route was not retrieved and a "module not found" warning appeared in the logs. [1]: https://github.com/odoo/odoo/commit/43f18e0863c779493f7b0ed82c37acb8344d9ae3 task-2888647 Forward-Port-Of: odoo/odoo#172917 Forward-Port-Of: odoo/odoo#94161
Steps to reproduce: - Create a lot tracked product. - Update the "On Hands" quantity of the product and assign it a lot name. - Create a delivery order with this product with a quantity that is available in the stock. - Mark it as to do. - Click on "Detailed Operations" smart button. - Decrease the quantity of the move line. - Select it and click on "Put in Pack". Expected behavior: The new quantity is put in pack and the quantity of the move line remains the same. Actual behavior:
Original PR description
Steps to reproduce: - Create a lot tracked product. - Update the "On Hands" quantity of the product and assign it a lot name. - Create a delivery order with this product with a quantity that is available in the stock. - Mark it as to do. - Click on "Detailed Operations" smart button. - Decrease the quantity of the move line. - Select it and click on "Put in Pack". Expected behavior: The new quantity is put in pack and the quantity of the move line remains the same. Actual behavior: The whole quantity is reserved again. The original move line is split into two move lines: one with the packed quantity and another one with the remaining quantity. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172732
Before this commit, the test `test_change_reward_value_with_language` was using a partner only available in demo data. This commit removes the use of demo data in the test by using a partner created in the test itself. Runbot error: 70611, 70477, 70419, 70480 Forward-Port-Of: odoo/odoo#173170
Original PR description
Before this commit, the test `test_change_reward_value_with_language` was using a partner only available in demo data. This commit removes the use of demo data in the test by using a partner created in the test itself. Runbot error: 70611, 70477, 70419, 70480 Forward-Port-Of: odoo/odoo#173170
Enhanced the `_compute_l10n_in_state_id` method in the `AccountMove` model by adding a dependency on the `l10n_in_pos_session_ids` field. This ensures that the state computation is triggered when POS sessions are updated, improving the accuracy of state determination for moves related to POS sessions. Forward-Port-Of: odoo/odoo#173270
Original PR description
Enhanced the `_compute_l10n_in_state_id` method in the `AccountMove` model by adding a dependency on the `l10n_in_pos_session_ids` field. This ensures that the state computation is triggered when POS sessions are updated, improving the accuracy of state determination for moves related to POS sessions. Forward-Port-Of: odoo/odoo#173270
3 changes
Miscellaneous changes
Enhanced the `_compute_l10n_in_state_id` method in the `AccountMove` model by adding a dependency on the `l10n_in_pos_session_ids` field. This ensures that the state computation is triggered when POS sessions are updated, improving the accuracy of state determination for moves related to POS sessions. Forward-Port-Of: odoo/odoo#173270
Original PR description
Enhanced the `_compute_l10n_in_state_id` method in the `AccountMove` model by adding a dependency on the `l10n_in_pos_session_ids` field. This ensures that the state computation is triggered when POS sessions are updated, improving the accuracy of state determination for moves related to POS sessions. Forward-Port-Of: odoo/odoo#173270
Clear the EDI document errors and the blocking_level when the action to abandon cancel posted moves is called. Fixed the following case: 1. Stamp a customer invoice (Could you test with a Mexican record) 2. Request EDI cancellation (In this case must be generated a cancel error from the PAC, maybe the customer does not accept the cancellation) 3. Ensure that in step 2, the EDI document has an error message 4. Call the action to abandon the EDI cancellation Without this commit, the EDI
Original PR description
Clear the EDI document errors and the blocking_level when the action to abandon cancel posted moves is called. Fixed the following case: 1. Stamp a customer invoice (Could you test with a Mexican record) 2. Request EDI cancellation (In this case must be generated a cancel error from the PAC, maybe the customer does not accept the cancellation) 3. Ensure that in step 2, the EDI document has an error message 4. Call the action to abandon the EDI cancellation Without this commit, the EDI document returns to `send`, but the record presents the error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172169
before this commit, a traceback was showing on creating product variant steps to reproduce: * click create button in product, traceback will be showing after this commit, without any traceback product is created traceback is introduced in: https://github.com/odoo/odoo/commit/758ced91f8cb220a003a49b01e047b507f8509d7 traceback details:  super()._compute_display_name() File "/da
Original PR description
before this commit, a traceback was showing on creating product variant steps to reproduce: * click create button in product, traceback will be showing after this commit, without any traceback…
before this commit, a traceback was showing on creating product variant steps to reproduce: * click create button in product, traceback will be showing after this commit, without any traceback product is created traceback is introduced in: https://github.com/odoo/odoo/commit/758ced91f8cb220a003a49b01e047b507f8509d7 traceback details:  super()._compute_display_name() File "/data/build/enterprise/sale_renting/models/product_product.py", line 14, in _compute_display_name super()._compute_display_name() File "/data/build/odoo/addons/l10n_gcc_invoice/models/product.py", line 23, in _compute_display_name product.display_name = re.sub(r'(\d)(\s)([\u0600-\u06FF])', repl, product.display_name) File "/usr/lib/python3.10/re.py", line 209, in sub return _compile(pattern, flags).sub(repl, string, count) TypeError: expected string or bytes-like object --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172240
6 changes
Enhancements to existing features
Gantt scheduling views are now loaded only when needed instead of during initial app startup. This should improve loading performance for users who do not immediately open scheduling screens, while keeping gantt functionality available across affected business apps.
Original PR description
We make the gantt view and its extensions to be lazy loaded. locs (js,xml,scss) added in "web.assets_backend_lazy" ~ 8500. Task ID: `3546321`
Report documents across payroll, accounting follow-up, field service, sales, point of sale, and multiple localization areas have been adjusted to align with the new standard document layouts. This improves visual consistency while preserving special payroll and local statutory report formats where required.
Original PR description
This PR follows the changes made in community to introduce and review the report documents layouts. - Adapting tables to community changes - Fixing xpaths - Disabling layout design on payroll report Community PR: https://github.com/odoo/odoo/pull/169512 task-3628644
The report editor now lets users add or remove columns in complex report tables that previously could not be edited this way. This makes customizing business reports in Studio easier while preserving current limitations around row editing.
Original PR description
The report editor edits raw qweb. In this setting, tables can contain illegal nodes with regard to html spec. So we need to convert those tables into something else, that is, as simple div-like elements displayed as flex. Before this commit, it was not possible to add/remove columns. This commit proposes a solution to this. Note that, given the use cases, removing/adding rows is still impossible because we assume tables of that type are doing a `t-foreach` in the row dimension. task-3940106
Features or functions removed from Odoo
This change rolls back a previous attempt to share common sales and purchase order logic because it added complexity and limited how each process can evolve. It also restores related naming changes to avoid conflicts, keeping sales and purchasing behavior separate and more stable.
Original PR description
In the end the feature as implemented in the original PR is not desired/correct and the mixin is also not wanted due to it adding more complexity than removing. Additionally, we want to keep the SO and PO functionality/evolution separate so moving their apparently common fields/methods into a mixin was a mistake. Therefore we revert the mixin and all of the renaming refactorings that also came out of the PR since they depend on the mixin and we do not want to handle the complexity of fixing the conflicts.
Code cleanup and technical improvements
Phone number validation and formatting utilities are being moved into a shared toolkit so more parts of Odoo can use them without installing the full phone validation app. This helps website features reuse existing phone formatting logic while keeping dependencies lighter and more focused.
Original PR description
This commit has for main purpose to make available the phone_validation tools for every module without needed to depends on phone_validation odoo module. We do that so website can implement phone formatting based on already known dependencies we have in backend without depending on the whole phone_validation module which would be out of scope for the website feature. task-3700790
Miscellaneous changes
Before this commit, when you drag and drop a resizeable sign item from one page to another, it was not possible to resize the item: it was buggy because the updated sign item changed the page and the resize function had the old object binded to it. After this commit, it is possible resizing the sign items when clicking the border without any problems, from any page. This was obtained by re-binding the updated sign item to the resize function. task-4032512 Forward-Port-Of: odoo/enterprise#
Original PR description
Before this commit, when you drag and drop a resizeable sign item from one page to another, it was not possible to resize the item: it was buggy because the updated sign item changed the page and the resize function had the old object binded to it. After this commit, it is possible resizing the sign items when clicking the border without any problems, from any page. This was obtained by re-binding the updated sign item to the resize function. task-4032512 Forward-Port-Of: odoo/enterprise#65990
14 changes
New functionality added to Odoo
This update adds a pyproject.toml file to the Odoo Enterprise repository. This configuration file standardizes Python project settings and dependencies, making the codebase easier to manage and deploy. This is a foundational improvement that supports better development practices and tooling compatibility.
Enhancements to existing features
This update improves the performance of the Spanish Model 347 tax report, especially when dealing with large numbers of partners. Instead of processing a potentially massive list of partner IDs, the system now uses a more efficient database query approach that significantly speeds up report generation and prevents slowdowns.
Original PR description
The model 347 report is adding a partner exclusion domain in the search call. It is done by firstly retrieving those partner IDs to then add that list of IDs into a `not in` domain leaf. The issue is…
The model 347 report is adding a partner exclusion domain in the search call. It is done by firstly retrieving those partner IDs to then add that list of IDs into a `not in` domain leaf. The issue is that the list of IDs can be gigantic, leading to performance issues. Before odoo/enterprise#61452, it was a blocking issue as if the list was too long (100,000 IDs raise the issue), it would simply make the code crash when loading the report. That PR then simply bypassed the issue by passing the domain as `forced_domain` so it would not go through the `literal_eval()` call (which is the one crashing when the list is too long). But even after that fix, we still provide the list of IDs into the domain and so ultimately in the SQL request, which can still be an issue if there are too many. This commit improves that by passing the SQL subquery (the one fetching the partners to exclude) directly into the domain, so the SQL query won't contain any list of IDs but just a sub-select. It does have better performance within PostgreSQL for big lists. Note that the `SQL()` query is surrounded by parentheses on purpose, as it doesn't work otherwise. This might be improved at the ORM level in the future with odoo/odoo#163560. Task [link](https://www.odoo.com/web#model=project.task&id=3895983) task-3895983
The shop floor app now includes a pager that allows users to navigate through all available work orders, not just the first 40. The pager only appears when needed and lets users adjust how many records they view at once, making it clearer when they're viewing a subset of available data.
Original PR description
In [1], a limit was introduced to the amount of records that can be displayed at the same time in the shop floor app. However, it was not always very clear to the user that they may only be viewing a subset of the available records. It was also impossible to show any records beyond the first 40 that conform to the filter criteria. In this commit, we introduce a pager to resolve these issues. The pager will only be displayed when relevant (ie when not all available records are displayed). Using this new pager it is also possible for the user to dynamically increase or decrease the default limit of 40, which was not possible before. [1] https://github.com/odoo/enterprise/pull/64551 (and forward ports)
Resolved issues and error corrections
Fixed an issue in the followup report where the Total Due and Total Overdue amounts were not updating when a user excluded a line item from the followup. The system was recalculating these totals from the database before the exclusion was saved, causing the display to remain unchanged. This fix ensures the totals reflect the current state of excluded entries.
Original PR description
Open followup report for a partner Exclude a line from followup Issue: Total Due will not change This occurs because the system recompute Total Due and Total Overdue from the db while the value has not been saved yet opw-4037830
This fix corrects how the system determines whether to enable rental transfers in sales orders. A previous change inadvertently broke existing rental workflows by checking user permissions incorrectly. The fix ensures the system properly verifies permissions at the sales order level rather than individual line items, preventing issues when orders are created by system users.
Original PR description
Fixes a commit e3d7b06 Should look at the `self.order_id` creator instead of `self`. opw-3933511
This fix resolves a technical error that occurred when users tried to view the accounting dashboard while working with multiple companies in French localization. The issue prevented the dashboard from loading properly in multi-company environments, and this update ensures the dashboard works correctly regardless of how many companies are selected.
Original PR description
We get a singleton error in multicompany setup when opening the accounting dashboard Steps: - Have at least two companies, one with l10n_fr_reports installed - Select the two companies in the caompany selector - Go to accounting dashboard -> singleton error opw-4053554
This fix resolves an issue where intrastat report lines were appearing twice when archived units of measure were present in the system. The problem occurred because a recent code refactor accidentally removed a filter condition that excluded inactive units of measure. By restoring this filter, the report now correctly displays each line only once.
Original PR description
To reproduce: - install l10n_be_intrastat and sale_management, switch to the company BE company CoA - Settings > Sales > Product Catalog, activate the "Unit of Measure" setting - Go to…
To reproduce: - install l10n_be_intrastat and sale_management, switch to the company BE company CoA - Settings > Sales > Product Catalog, activate the "Unit of Measure" setting - Go to Sales/Configuration/Units of Measure/Units of Measure menu - Create a new units of measure; set the category to "Weight" as Reference Unit of Measure, uncheck the Active checkbox to archive it - Create an invoice for the contact having country Germany and with a product having commodity code, weight, etc set for the intrastate report - Validate the invoice and check the intrastate report for "This Fiscal Year" Result - The report lines appear twice Expected - The report shouldn't consider archived UoM, lines should appear only once OPW - 3915784 Additional info: This behavior happened because in the following refactor PR, https://github.com/odoo/enterprise/pull/31893/files#diff-7b1b123893744b02df76c7fa971ebb68b9f59e26f619e3a7d8f290c0f45ed037L368 We forgot to re-add the following line as a condition in the where clause: `ref_weight_uom.active` Forward-Port-Of: odoo/enterprise#64500
This update fixes an issue where job positions were not sorting alphabetically when clicking the sort header in the Contracts view. The referral module was interfering with the standard sorting behavior. Now employees can properly sort job positions in alphabetical order when managing contracts.
Original PR description
Necessary modules: hr_contract, hr_referral Steps to reproduce: - Employees > Employees > Contracts - Click header to sort by job position What happens: Job positions are not sorted by alphabetical order What was done: Make sure referral does not override the ordering rules of hr_job, so the alphabetical sorting is kept. opw-4037409
This update fixes an issue with how stock movements are ordered when reporting to Kenya's eTIMS tax system. By making the ordering consistent and predictable, the system now works reliably without random test failures, ensuring accurate and stable tax compliance reporting.
Original PR description
When we search for the stock moves to report to eTIMS, we need to ensure that the ordering is deterministic so that tests don't randomly fail. runbot-71136
A previous fix for WhatsApp message templates is being reverted because it was causing the system to ignore user-entered values and always use automatic values instead. The team is working on a better solution to address the original issue.
Original PR description
…dated on template change" This causes issues as composer computed value is now always forced and user value is ignored. A better fix will come soon. This reverts commit 8b7829469907b39d048a328dd3a939f1c3e1d21c. Task-3996935
This fix ensures that when documents are automatically filled with OCR-extracted data, the system uses the correct company context. This prevents inconsistent values from being selected, particularly for company-dependent fields like supplier payment terms. The change ensures invoices are processed with the appropriate company settings.
Original PR description
When the document is filled in with the OCR values, we need to use the document's company context, otherwise it can lead to inconsistent values being selected. For example, the payment terms of a supplier are company dependent, so we need the right company context to select the one from the company of the invoice. Related task: [#3902741](https://www.odoo.com/odoo/project.task/3902741?cids=1)
This update resolves a technical error that occurred when subscription payments failed or expired. When customers attempted to pay for their subscription invoices and the payment was declined, the system would crash instead of properly recording the failed transaction. This fix ensures failed payments are handled gracefully without errors.
Original PR description
Currently, an error occurs when the payment status is failed, expired, or failed. Steps to produce an error: - Install `sale_subscription` and `payment_mollie` - setup `mollie` payment provider in…
Currently, an error occurs when the payment status is failed, expired, or failed. Steps to produce an error: - Install `sale_subscription` and `payment_mollie` - setup `mollie` payment provider in testing - Create an invoice for the subscription and confirm it - Click preview of the invoice and click Pay Now. - fill card details, and on the on the next page, select failed or expired in payment status - Confirm error: `PaymentTransaction._set_canceled() takes 1 positional argument but 2 were given` This is because at code [1], we have passed `**kwargs` as arguments in super call, and as a result, it sets all arguments of kwargs in agruments, e.g., 2 of super call, but method call requires one positional argument. This commit will fix the above issue by passing a positional argument with kwargs in the super call. [1]-https://github.com/odoo/enterprise/blob/43621084d0cf95970eb6e45cf67bcb20ec14b8b3/sale_subscription/models/payment_transaction.py#L186 sentry-5606090812
This fix corrects the Belgian profit and loss financial report to properly include accounts 7632/9, which were previously missing from the calculations. This ensures that companies and associations using Odoo's Belgian accounting module now have accurate and complete profit and loss reporting that complies with local requirements.
Original PR description
Currently, accounts `7632/9` are not taken into account in the Belgian profit and loss report. opw-4037481 Forward-Port-Of: odoo/enterprise#66343
This fix corrects the account codes used for deferred expenses and revenues in the French accounting chart template. The deferred expense account is now properly set to 486000 and the deferred revenue account to 487000, ensuring accurate financial reporting for French companies using Odoo's accounting module.
Original PR description
- Deferred expense account: 486000 - Deferred revenue account: 487000 task-3839851 **Community PR:** odoo/odoo#171416