Daily updates from Odoo
Navigate
Branch
Thursday, September 5, 2024
79 changes
39 changes
Resolved issues and error corrections
Python-based tax formulas now accept product field references written in the familiar dot format, such as product.standard_price. This prevents errors when creating sales orders with custom computed taxes and keeps behavior consistent with other supported versions.
Original PR description
Only in saas-17.2 the JS style of addressing product fields is not accepted. (`product['standard_price']` is accepted, but not `product.standard_price`) ### Steps to reproduce: - Create a tax with…
Only in saas-17.2 the JS style of addressing product fields is not accepted. (`product['standard_price']` is accepted, but not `product.standard_price`) ### Steps to reproduce: - Create a tax with "Tax Computation" at "Python Code" - Enter `result = (price_unit - product.standard_price) * 1` as the formula - In Sales create a SO and add this tax - An error shows saying product dict has no field standard_price ### Cause: The code does not consider the formula can be written in JS format. Before saas-17.2 the information given to `safe_eval` was not a dictionary so it worked. Since saas-17.2 the information is in a dictionary so to access it you must use the format `dict['field']`. In saas-17.4 the code was refactored and the formula is adapted to JS and Python: if the JS format is used, it will change the formula to use Python format. (commit: https://github.com/odoo/odoo/commit/5363189842674b77d03e031896cef2e5e970fdf7) ### Solution: Change the formula to Python format each time it is used. The way to adapt the formula is the same as in saas-17.4 where the JS format is taken into account. opw-4110562
This update brings the spreadsheet component to a newer version with fixes for exporting XLSX files, pasting values in localized sheets, scrolling the bottom bar, and preventing conflicting session updates. Users should see more reliable spreadsheet behavior, especially when sharing, exporting, or working in localized environments.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/e5e2be8d3 [REL] 17.2.23 Task: 0 https://github.com/odoo/o-spreadsheet/commit/ecdc7a5ff [FIX] XLSX: Export values along…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/e5e2be8d3 [REL] 17.2.23 Task: 0 https://github.com/odoo/o-spreadsheet/commit/ecdc7a5ff [FIX] XLSX: Export values along the formula string Task: 4141855 https://github.com/odoo/o-spreadsheet/commit/8943c0aa7 [FIX] sheetview: Avoid useless cleanViewport Task: 4084860 https://github.com/odoo/o-spreadsheet/commit/bcfb09f65 [FIX] selection: avoid useless selection anchor assignation Task: 4084860 https://github.com/odoo/o-spreadsheet/commit/9695b0e9d [FIX] session: avoid concurrent updates Task: 4080148 https://github.com/odoo/o-spreadsheet/commit/6cc683a59 [FIX] bottom bar: handle horizontal scroll Task: 4129625 https://github.com/odoo/o-spreadsheet/commit/95cdcd79e [FIX] clipboard: Fix paste as value for in localized sheet Task: 4104432 Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
Dropdown menus now avoid unnecessary background updates when they are closed. This improves responsiveness on screens with many dropdowns, such as pivot views with many headers.
Original PR description
Have 1000 drodowns to setup. Setup one of them will trigger the event state-changed and the dropdowns already setuped will react to that event. In the end, DropdownNestingState.handleChange will be called (999 * 1000) / 2 = 499500 that means quadraticaly with the number of dropdowns. Here we avoid to trigger that event when setuping a closed dropdown. This problem was originaly observed in a pivot view with many headers.
Miscellaneous changes
This commit improves test coverage for the `website_payment` module by addressing recent updates and scenarios: - **Minimum Amount**: Verifies that donations below the minimum amount are properly handled (PR: [177766](https://github.com/odoo/odoo/pull/177766)). - **Multiple Amounts**: Ensures that multiple donation amounts cannot be selected at once (PR: [176722](https://github.com/odoo/odoo/pull/176722)). - **Last Amount Selection**: Checks that the last selected amount is correct
Original PR description
This commit improves test coverage for the `website_payment` module by addressing recent updates and scenarios: - **Minimum Amount**: Verifies that donations below the minimum amount are properly handled (PR: [177766](https://github.com/odoo/odoo/pull/177766)). - **Multiple Amounts**: Ensures that multiple donation amounts cannot be selected at once (PR: [176722](https://github.com/odoo/odoo/pull/176722)). - **Last Amount Selection**: Checks that the last selected amount is correctly applied (PR: [176722](https://github.com/odoo/odoo/pull/176722)). These enhancements ensure that the module's behavior is thoroughly tested and functioning as expected. During FW to 16.0 we will take in consideration the iframe task-4138385 Forward-Port-Of: odoo/odoo#178835 Forward-Port-Of: odoo/odoo#177908
As we never kill browser instances, IoT Box gets saturated by browser threads if odoo restarts multiple times. We now kill the browser before starting a new. Forward-Port-Of: odoo/odoo#176941
Original PR description
As we never kill browser instances, IoT Box gets saturated by browser threads if odoo restarts multiple times. We now kill the browser before starting a new. Forward-Port-Of: odoo/odoo#176941
When a user creates a new sol, only service-type product should be searched. Before this commit, consumable and other types of product was being searched. task-3972359 Forward-Port-Of: odoo/odoo#178955 Forward-Port-Of: odoo/odoo#178615
Original PR description
When a user creates a new sol, only service-type product should be searched. Before this commit, consumable and other types of product was being searched. task-3972359 Forward-Port-Of: odoo/odoo#178955 Forward-Port-Of: odoo/odoo#178615
Before this commit, when user duplicate pricelist then new pricelist is created with same name. After this commit, add sufix '(copy)' in newly created pricelist when user duplicate pricelist. task-4035473 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178891 Forward-Port-Of: odoo/odoo#173082
Original PR description
Before this commit, when user duplicate pricelist then new pricelist is created with same name. After this commit, add sufix '(copy)' in newly created pricelist when user duplicate pricelist. task-4035473 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178891 Forward-Port-Of: odoo/odoo#173082
When settling a sale order in the PoS the shiplater option was always turned on. Steps to reproduce: ------------------- * Activate ship later option in PoS config * Create a sale order and confirm it * Open the PoS * Settle the order * Click on pay > Observation: The ship later button is already activated Why the fix: ------------ The button activation is based on the presence or not of a delivery date to fix it we just make sure not to import the delivery date from the original
Original PR description
When settling a sale order in the PoS the shiplater option was always turned on. Steps to reproduce: ------------------- * Activate ship later option in PoS config * Create a sale order and confirm it * Open the PoS * Settle the order * Click on pay > Observation: The ship later button is already activated Why the fix: ------------ The button activation is based on the presence or not of a delivery date to fix it we just make sure not to import the delivery date from the original sale order. opw-3987515 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178887 Forward-Port-Of: odoo/odoo#176308
Version: 17.0+ Issue: When the Customer Address column is included in the report pdf, the table format breaks. This column is added when the `partner_id.commercial_partner_id` is different than the `partner_id` of the invoice or invoice refund. Purpose of this PR: To restore the format of the information table when the Customer Address column is included. Similar to #176209 Steps to Reproduce on Runbot: 1) Install l10n_fr and switch to FR Company 2) Configure contacts a French com
Original PR description
Version: 17.0+ Issue: When the Customer Address column is included in the report pdf, the table format breaks. This column is added when the `partner_id.commercial_partner_id` is different than the `partner_id` of the invoice or invoice refund. Purpose of this PR: To restore the format of the information table when the Customer Address column is included. Similar to #176209 Steps to Reproduce on Runbot: 1) Install l10n_fr and switch to FR Company 2) Configure contacts a French company to have a child contact with a different address. 3) Create invoice with the child contact as the customer. 4) Print invoice and the informations table will be formatted incorrectly. opw-4122930 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178258
Currently error is generated when try to edit 'Invoices' or 'Invoices without Payment' reports in studio mode when there is no record. Steps to reproduce: - Install an 'account' and 'web_studio' module (Without demo data). - Navigate to invoicing / Customers / Invoices and open a web studio mode. - Open reports and click on the 'Invoice' or 'Invoices without Payment' reports. - Click on 'EDIT SOURCES'. See Traceback:- ``` TypeError: 'bool' object is not subscriptable File "<
Original PR description
Currently error is generated when try to edit 'Invoices' or 'Invoices without Payment' reports in studio mode when there is no record. Steps to reproduce: - Install an 'account' and 'web_studio'…
Currently error is generated when try to edit 'Invoices' or 'Invoices without Payment' reports in studio mode when there is no record.
Steps to reproduce:
- Install an 'account' and 'web_studio' module (Without demo data).
- Navigate to invoicing / Customers / Invoices and open a web studio mode.
- Open reports and click on the 'Invoice' or 'Invoices without Payment' reports.
- Click on 'EDIT SOURCES'.
See Traceback:-
```
TypeError: 'bool' object is not subscriptable
File "<744>", line 200, in template_744
File "<744>", line 13, in template_744_content
QWebException: Error while render the template
TypeError: 'bool' object is not subscriptable
Template: ir.ui.view(744,)
Path: /t/t
Node: <t t-foreach="tax_totals[\'subtotals\']" t-as="subtotal"/>
File "odoo/http.py", line 2251, in __call__
response = request._serve_db()
File "odoo/http.py", line 1827, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1847, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1825, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1832, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2057, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 739, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "home/odoo/src/enterprise/saas-17.2/web_studio/controllers/report.py", line 652, in save_report
report_html = self._render_report(report, record_id)
File "home/odoo/src/enterprise/saas-17.2/web_studio/controllers/report.py", line 597, in _render_report
return request.env['ir.actions.report'].with_context(studio=True)._render_qweb_html(report, [record_id] if record_id else [], {"studio": True})
File "home/odoo/src/enterprise/saas-17.2/web_studio/models/ir_actions_report.py", line 24, in _render_qweb_html
return super(IrActionsReport, self)._render_qweb_html(report_ref, docids, data)
File "odoo/addons/base/models/ir_actions_report.py", line 927, in _render_qweb_html
return self._render_template(report.report_name, data), 'html'
File "odoo/addons/base/models/ir_actions_report.py", line 654, in _render_template
return view_obj._render_template(template, values).encode()
File "home/odoo/src/enterprise/saas-17.2/web_studio/models/ir_ui_view.py", line 1302, in _render_template
return super(View, self)._render_template(template, values)
File "odoo/addons/base/models/ir_ui_view.py", line 2024, in _render_template
return self.env['ir.qweb']._render(template, values)
File "odoo/tools/profiler.py", line 302, in _tracked_method_render
return method_render(self, template, values, **options)
File "odoo/addons/base/models/ir_qweb.py", line 594, in _render
result = ''.join(rendering)
File "<748>", line 42, in template_748
File "<748>", line 31, in template_748_content
File "<747>", line 90, in template_747
File "<747>", line 72, in template_747_content
File "<747>", line 60, in template_747_t_call_0
File "<742>", line 2412, in template_742
File "<742>", line 2394, in template_742_content
File "<742>", line 1650, in template_742_t_call_0
File "<744>", line 208, in template_744
```
The issue occurs when the system tries to access a boolean value which is stored in 'Tax_totals' in the 'document_tax_totals' template [1] and this a boolean value is passed into 'tax_totals' from this line [2] because record is not available.
link [1]: https://github.com/odoo/odoo/blob/a8daed02c58ab69cdea57a8f97065e229b07f0ab/addons/account/views/report_invoice.xml#L200-L201
link [2]: https://github.com/odoo/odoo/blob/a8daed02c58ab69cdea57a8f97065e229b07f0ab/addons/account/models/account_move.py#L1348
To resolve the issue, Add a condition that checks whether the 'Tax_totals' is available before call the 'document_tax_totals' template.
sentry-4499699758
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#161249We still disconnected from wifi unlinking the old file, despite that we moved this configuration to `odoo.conf`. We replaced that. Forward-Port-Of: odoo/odoo#178920
Original PR description
We still disconnected from wifi unlinking the old file, despite that we moved this configuration to `odoo.conf`. We replaced that. Forward-Port-Of: odoo/odoo#178920
Before this commit, event listeners set on inputs by the datetime picker service would be removed in the callback of the `useEffect` hook, meaning that these listeners could be unregistered before the actual elements would be removed. This is an issue in the specific case where the deletion of the element occurs before the "change" event has been dispatched and after the removal of the listeners. The thing is: the removal of the element also triggers the "change" event (if it hasn't bee
Original PR description
Before this commit, event listeners set on inputs by the datetime picker service would be removed in the callback of the `useEffect` hook, meaning that these listeners could be unregistered before…
Before this commit, event listeners set on inputs by the datetime picker service would be removed in the callback of the `useEffect` hook, meaning that these listeners could be unregistered before the actual elements would be removed. This is an issue in the specific case where the deletion of the element occurs before the "change" event has been dispatched and after the removal of the listeners. The thing is: the removal of the element also triggers the "change" event (if it hasn't been triggered before), and with the listener gone this means that the value is lost. This commit deletes the removal of event listeners attached on inputs by the hook. This has been done since using the datetime picker service implies that the inputs affected by the feature will never be in an interactive state without the datetime picker actively listening on them. Although a test case setup is easy to reproduce, this behavior is unfortunately impossible to reproduce programmatically as the "change" event dispatched by removing an element only works when a trusted "input" event was triggered to change its value (setting the internal browser "changed" value of the input). Task [4104407](https://www.odoo.com/odoo/all-tasks/4104407) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178533
Consider an invoice with a cash rounding method selected. The cash rounding is applied to the total of the invoice but not not the payment terms. Currently unrounded amounts can appear in the following cases - Multiple payment term lines - Discount on payment term lines This is can also cause problems for the reconciliation. The cash rounded payment can not be reconciled with the non-cash-rounded payment term amount (since the amounts do not match exactly). After this commit the cash rou
Original PR description
Consider an invoice with a cash rounding method selected. The cash rounding is applied to the total of the invoice but not not the payment terms. Currently unrounded amounts can appear in the…
Consider an invoice with a cash rounding method selected. The cash rounding is applied to the total of the invoice but not not the payment terms. Currently unrounded amounts can appear in the following cases
- Multiple payment term lines
- Discount on payment term lines
This is can also cause problems for the reconciliation. The cash rounded payment can not be reconciled with the non-cash-rounded payment term amount (since the amounts do not match exactly).
After this commit the cash rounding is applied to the payment terms:
- The amount of each payment term line is cash rounded
- The discounted amount of each payment term line is cash rounded
Reproduce:
1. Install module `account` (or `account_accountant`)
2. Create a payment term with 1 line with 10% discount when paid within 30 days. Ensure "Display terms on invoice" is on. (Invoicing / Accounting -> Configuration (menu) -> Payment Terms)
3. Enable "Cash Rounding" in the settings
4. Create a cash rounding with precision 0.05 and rounding method HALF-UP (Invoicing / Accounting -> Configuration (menu) -> Cash Roundings)
5. Create an invoice
- Payment term from step 2
- Cash rounding from step 3 (set in "Other Info" tab) - A line s.t. the total is 868.35 (This value does not need cash rounding)
6. Confirm the invoice
7. Print the invoice: On the PDF the value 781.52 is shown for the payment terms. But the value should be 781.50 due to the cash rounding.
8. Register payment: The amount 781.52 is suggested. But the value should be 781.50 due to the cash rounding. Changing the amount to 781.50 loses the automatic reconciliation.
task-4095505
opw-3985470
Forward-Port-Of: odoo/odoo#178344
Forward-Port-Of: odoo/odoo#176289When the user tries to unarchive the multiple views, a traceback will appear. Steps to reproduce the error: - Install 'website' - Go to Settings > Technical > Views - Open archived views > unarchive multiple views Traceback: ``` ValueError: Expected singleton: ir.ui.view(534, 535, 537) File "odoo/http.py", line 2248, in __call__ response = request._serve_db() File "odoo/http.py", line 1823, in _serve_db return self._transactioning(_serve_ir_http, readonly=ro) File
Original PR description
When the user tries to unarchive the multiple views, a traceback will appear. Steps to reproduce the error: - Install 'website' - Go to Settings > Technical > Views - Open archived views > unarchive…
When the user tries to unarchive the multiple views,
a traceback will appear.
Steps to reproduce the error:
- Install 'website'
- Go to Settings > Technical > Views
- Open archived views > unarchive multiple views
Traceback:
```
ValueError: Expected singleton: ir.ui.view(534, 535, 537)
File "odoo/http.py", line 2248, in __call__
response = request._serve_db()
File "odoo/http.py", line 1823, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1843, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1821, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1828, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2053, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 756, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 38, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "odoo/models.py", line 5771, in action_unarchive
return self.filtered(lambda record: not record[self._active_name]).toggle_active()
File "odoo/models.py", line 5759, in toggle_active
(self - active_recs)[self._active_name] = True
File "odoo/models.py", line 6619, in __setitem__
return self._fields[key].__set__(self, value)
File "odoo/fields.py", line 1376, in __set__
records.write({self.name: write_value})
File "addons/website/models/theme_models.py", line 366, in write
return super().write(vals)
File "addons/website/models/ir_ui_view.py", line 95, in write
return super(View, self).write(vals)
File "odoo/addons/base/models/ir_ui_view.py", line 529, in write
self._validate_fields(['arch_db'])
File "odoo/models.py", line 1484, in _validate_fields
check(self)
File "odoo/addons/base/models/ir_ui_view.py", line 371, in _check_xml
view=self.key or self.id,
File "odoo/fields.py", line 1202, in __get__
record.ensure_one()
File "odoo/models.py", line 5856, in ensure_one
raise ValueError("Expected singleton: %s" % self)
```
https://github.com/odoo/odoo/blob/9be0c5348bfeb338bcba95b2a9c01e0d7dd14306/odoo/addons/base/models/ir_ui_view.py#L379 Here, self is used in place of view.
So it will lead to the above traceback.
sentry-5604174783
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#173117Adding back the activity text highlight in the systray to make sure users understand the text is actually clickable and they can filter their activities on a specific time frame. Related commit: odoo/odoo@6b72bde3a7d3d3d9a12490431b5192ddb5230d9c Task-4141680 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178322
Original PR description
Adding back the activity text highlight in the systray to make sure users understand the text is actually clickable and they can filter their activities on a specific time frame. Related commit: odoo/odoo@6b72bde3a7d3d3d9a12490431b5192ddb5230d9c Task-4141680 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178322
[ADD] l10n_kw: Add localization package for kuwit Add CoA and account groups with all the default account mappings for kuwait Improve user experience in kuwait task-3927920 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178355
Original PR description
[ADD] l10n_kw: Add localization package for kuwit Add CoA and account groups with all the default account mappings for kuwait Improve user experience in kuwait task-3927920 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178355
### Steps to reproduce: - Enable Multi-Step Routes in the settings - Go to Inventory > Configuration > Warehouse Management > Routes - Unarchive MTO - Create a storable product: - Routes: MTO, manufacture - With a bom - On hand qty: 10 - Create an SO for 15 units and validate - Go back to your product form > forecasted Report #### > Even thought 15 units are made to order 10 units are reported to be taken from stock to fulfill the SO ### Cause of the issue: The lines appe
Original PR description
### Steps to reproduce: - Enable Multi-Step Routes in the settings - Go to Inventory > Configuration > Warehouse Management > Routes - Unarchive MTO - Create a storable product: - Routes: MTO,…
### Steps to reproduce: - Enable Multi-Step Routes in the settings - Go to Inventory > Configuration > Warehouse Management > Routes - Unarchive MTO - Create a storable product: - Routes: MTO, manufacture - With a bom - On hand qty: 10 - Create an SO for 15 units and validate - Go back to your product form > forecasted Report #### > Even thought 15 units are made to order 10 units are reported to be taken from stock to fulfill the SO ### Cause of the issue: The lines appearing on the reported are computed by the `_get_report_lines` method. During this call, the quantity taken from stock is computed by comparing the demand of the out moves with the quantity currently in stock: https://github.com/odoo/odoo/blob/1fdccad664cad37a69dc960444aa0c318d1bf464/addons/stock/report/report_stock_forecasted.py#L218-L223 This is incorrect because the quantity taken from stock is null if the procure_method of the out move is make_to_stock. ### Note: The issue is not reproducible since 17.0 since the _get_report_lines has been refactored during the stockpocalypse. opw-4010785 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#177867 Forward-Port-Of: odoo/odoo#176273
Reproduce: 1) Make a database before this PR: #176489 2) change to current version. 3) start database with `-u all` This will fail _check_carryover_target constrain when api.constrains checks for the data, carryover_target was not nullified because it was not in the group of values to be updated . So nullify carryover_target using eval="False" for exisiting records that were changed in #176489. Description of the issue/feature this PR addresses: Current behavior before PR: Desire
Original PR description
Reproduce: 1) Make a database before this PR: #176489 2) change to current version. 3) start database with `-u all` This will fail _check_carryover_target constrain when api.constrains checks for the data, carryover_target was not nullified because it was not in the group of values to be updated . So nullify carryover_target using eval="False" for exisiting records that were changed in #176489. 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#178165
This Fix addresses an issue where a traceback error occurs if the invoice date is not set when creating a landed cost. To reproduce the issue: 1. Create a service product and set it as a landed cost product. 2. Create and validate a customer invoice for this product. 3. Reset the invoice to draft status. 4. Clear the date on the invoice. 5. Click on the "Create Landed Cost" button. Error: A traceback occurs due to a failed assertion statement: "convert amount from unknown date". Th
Original PR description
This Fix addresses an issue where a traceback error occurs if the invoice date is not set when creating a landed cost. To reproduce the issue: 1. Create a service product and set it as a landed cost product. 2. Create and validate a customer invoice for this product. 3. Reset the invoice to draft status. 4. Clear the date on the invoice. 5. Click on the "Create Landed Cost" button. Error: A traceback occurs due to a failed assertion statement: "convert amount from unknown date". This fix ensures that the date is always populated when creating a new landed cost record. If the invoice date is not set, the current date will be used. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#175788
Before this commit: ------------------- If you want to group by records that inherit from mail.activity.mixin like crm.lead for example, only records with an activity will show up in the result, record without activity won't show up. After this commit: ------------------ Read group is not expected to filter record. Record without activity shows up under the group None since the value for activity state is None --- I confirm I have signed the CLA and read the PR guidelines at w
Original PR description
Before this commit: ------------------- If you want to group by records that inherit from mail.activity.mixin like crm.lead for example, only records with an activity will show up in the result, record without activity won't show up. After this commit: ------------------ Read group is not expected to filter record. Record without activity shows up under the group None since the value for activity state is None --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178845
The base two variants of the generic_tax_report : (generic_tax_report_tax_account, generic_tax_report_account_tax) had the availability_condition set to country with no country_id. The expected result was to have the availability_condition set to always as no country_id is set. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178950
Original PR description
The base two variants of the generic_tax_report : (generic_tax_report_tax_account, generic_tax_report_account_tax) had the availability_condition set to country with no country_id. The expected result was to have the availability_condition set to always as no country_id is set. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178950
A mail activity template in the hr modules has the summary "Compute out Delais" which doesn't mean anything in english. This commit replaces that with something more meaningful. task-4088643 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178867 Forward-Port-Of: odoo/odoo#176011
Original PR description
A mail activity template in the hr modules has the summary "Compute out Delais" which doesn't mean anything in english. This commit replaces that with something more meaningful. task-4088643 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178867 Forward-Port-Of: odoo/odoo#176011
backport of https://github.com/odoo/odoo/pull/176340 enterprise: https://github.com/odoo/enterprise/pull/69045 Forward-Port-Of: odoo/odoo#178437 Forward-Port-Of: odoo/odoo#177705
Original PR description
backport of https://github.com/odoo/odoo/pull/176340 enterprise: https://github.com/odoo/enterprise/pull/69045 Forward-Port-Of: odoo/odoo#178437 Forward-Port-Of: odoo/odoo#177705
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version. Stack Trace: ``` ValueError: Invalid version '17.0.1.0.0'. Modules should have a version in format `x.y`, `x.y.z`, `saas~17.2.x.y` or `saas~17.2.x.y.z`. File "addons/base_import_module/models/ir_module.py", line 253, in _import_zipfile self.sudo()._import_module(mod_name, path, force=force, with_demo=with_demo) File "addons/base_import_module/models/ir_mo
Original PR description
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version. Stack Trace: ``` ValueError: Invalid version '17.0.1.0.0'. Modules should…
Currently, a log error is generated when the user tries to import a module that is not the same as the current Odoo version.
Stack Trace:
```
ValueError: Invalid version '17.0.1.0.0'. Modules should have a version in format `x.y`, `x.y.z`, `saas~17.2.x.y` or `saas~17.2.x.y.z`.
File "addons/base_import_module/models/ir_module.py", line 253, in _import_zipfile
self.sudo()._import_module(mod_name, path, force=force, with_demo=with_demo)
File "addons/base_import_module/models/ir_module.py", line 81, in _import_module
values['latest_version'] = adapt_version(terp['version'])
File "odoo/modules/module.py", line 423, in adapt_version
raise ValueError(f"Invalid version {base_version!r}. Modules should have a version in format `x.y`, `x.y.z`,"
```
The error was caught on log because at [1] `_logger.exception()` was used, and this log error was not
useful because after the printing, the log `UserError` was raised, which shows the user what's wrong with its custom module.
This commit removes the logger exception because the `UserError` shows
what is wrong with the custom modules.
[1]-https://github.com/odoo/odoo/blob/b95edd874ce904ef231c295790a003992db002e3/addons/base_import_module/models/ir_module.py#L255-L258
sentry-4931285432
Forward-Port-Of: odoo/odoo#160274Version: 16 Description of the issue/feature this PR addresses: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is not on hand in menu "Accounting / Customers / Third Party Checks" if journal doesn't has "Existing Third Party Checks" incoming payment method. Steps to reproduce: 1) Log in with admin on runbot odoo enterprise 16 instance and install l10n_latam_check (Third Party and Deferred/Electroni
Original PR description
Version: 16 Description of the issue/feature this PR addresses: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks"…
Version: 16 Description of the issue/feature this PR addresses: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is not on hand in menu "Accounting / Customers / Third Party Checks" if journal doesn't has "Existing Third Party Checks" incoming payment method. Steps to reproduce: 1) Log in with admin on runbot odoo enterprise 16 instance and install l10n_latam_check (Third Party and Deferred/Electronic Checks Management) module. 2) Go to "Accounting / Configuration /Accounting / Journals" and create a new journal of type "Cash" and add incoming payment method "New Third Party Checks".  3) Create a new customer payment with journal created on step 2 and "New Third Party Checks" payment method and confirm.  4) Go to menu Third Party Checks and the check received on step 3 is not on hand.  Current behavior before PR: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is not on hand on tree view in "Accounting / Customers / Third Party Checks" if the journal doesn't has "Existing Third Party Checks" incoming payment method. Desired behavior after PR is merged: A third party check received in a customer payment with journal with type "Cash" and Incoming payment method "New Third Party Checks" is on hand on tree view in "Accounting / Customers / Third Party Checks" if the journal doesn't has "Existing Third Party Checks" incoming payment method. Ticket Adhoc side: 77887 Task Latam side: 1234 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#174283
### Steps to reproduce: - Install Time-off module - Create new allocation - If there is a default employee set remove it - Select Accrual Allocation - Set start date to a year ago - Set an employee ### Current behavior before PR: The allocation days is not getting computed onchange of employees. This is happening because it is computed only when we trigger _onchange_date_from and employee_id is not one of the fields that triggers this onchange method. ### Desired behavior afte
Original PR description
### Steps to reproduce: - Install Time-off module - Create new allocation - If there is a default employee set remove it - Select Accrual Allocation - Set start date to a year ago - Set an employee ### Current behavior before PR: The allocation days is not getting computed onchange of employees. This is happening because it is computed only when we trigger _onchange_date_from and employee_id is not one of the fields that triggers this onchange method. ### Desired behavior after PR is merged: Since we are checking if we have an employee_id or not in _onchange_date_from we added the employee_id to be one of the fields that triggers the onchange then to recompute the allocation days opw-4100075 Forward-Port-Of: odoo/odoo#176649
[FIX] website_sale: Avoid collect sale orders confirmed in backend This happens when, during a payment process, when the order is confirmed from the backend and in Website the cart icon is clicked. What causes the error is that the request is still pinned in the session, so it identifies that certain values should not be loaded and deletes them. The cart() method identifies if it's not a draft order, and in that case it clears the session order to continue with a new one. That causes u
Original PR description
[FIX] website_sale: Avoid collect sale orders confirmed in backend This happens when, during a payment process, when the order is confirmed from the backend and in Website the cart icon is clicked.…
[FIX] website_sale: Avoid collect sale orders confirmed in backend This happens when, during a payment process, when the order is confirmed from the backend and in Website the cart icon is clicked. What causes the error is that the request is still pinned in the session, so it identifies that certain values should not be loaded and deletes them. The cart() method identifies if it's not a draft order, and in that case it clears the session order to continue with a new one. That causes undesired modifications in modules that inherit cart() and execute before calling super(), such as website_sale_delivery, that removes carrier from order. With this motification the method sale_get_order() will now discriminate the orders that are completed and clear ir from the session, avoiding losses of information. Description of the issue/feature this PR addresses: This error was detected because the carrier_id was eliminated when following the aforementioned flow. The problem is that clicking on the cart retrieves the order that is in the session, but if it has been confirmed from the backend it should not collect it since at that moment it is not a "cart". A way to see this clearly is with the 'delivery_auto_refresh' module. This module shows the carrier_id field in sale order view (that exists but is not visible), which is collected at website. The flow that exists nowadays remove this value when we follow this steps: [Grabación de pantalla desde 16-08-24 10:41:50.webm](https://github.com/user-attachments/assets/9ec82b67-3e73-4083-b65b-be8d59db6a5a) In this video: 1. Customer starts an order 2. An user confirms the order at backend 3. Customer acceses to /shop/cart 4. Some fields of the sale order can be deleted, such as the delivery carrier If we confirm the order at backend and then follow the flow shown, the value of this field will dissapear. This happens because, as I said before, clicking the cart icon recovers the confirmed sale order (which is no longer a 'cart') and deletes many values of it. Current behavior before PR: If you confirm an order in process from website at backend and then click on the cart icon, certain fields are eliminated. Desired behavior after PR is merged: The cart button identifies whether the order is in confirmed status (or quote sent), and if so removes it from the session before the fields are cleared, thus starting a new order. FL-650-982 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178953 Forward-Port-Of: odoo/odoo#176718
Steps to reproduce: 1. Login with a user with invoicing manager permission, but not settings one. 2. Go to Settings > Add a Bank account. 3. Fill the data, and click on "Create". Current behavior: Access Error, due to the lack of the Administration/Settings permission Expected behavior: No error The solution is to put sudo on the operation. @Tecnativa TT50693 Forward-Port-Of: odoo/odoo#178997
Original PR description
Steps to reproduce: 1. Login with a user with invoicing manager permission, but not settings one. 2. Go to Settings > Add a Bank account. 3. Fill the data, and click on "Create". Current behavior: Access Error, due to the lack of the Administration/Settings permission Expected behavior: No error The solution is to put sudo on the operation. @Tecnativa TT50693 Forward-Port-Of: odoo/odoo#178997
Send reminder also to the event organizer **Example use case**: - Create an event, set an organizer (Mitchell Admin), and add as attendees Mitchell Admin and another. - Set an email reminder on the event - The event reminder will be received by all attendees (including the organizer) Current behavior before PR - Event organizer does not receive the reminder email @Tecnativa TT48356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-
Original PR description
Send reminder also to the event organizer **Example use case**: - Create an event, set an organizer (Mitchell Admin), and add as attendees Mitchell Admin and another. - Set an email reminder on the event - The event reminder will be received by all attendees (including the organizer) Current behavior before PR - Event organizer does not receive the reminder email @Tecnativa TT48356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#165284 Forward-Port-Of: odoo/odoo#160202
When the product has the "continue selling" box when "out-of-stock" checked, and you add the product to the wishlist from ecommerce, "Temporarily out of stock" message/warning will appear in the wishlist. To Reproduce on Runbot: 1. Make sure ecommerce module is installed 2. Go to storable product (for example: Cable Management Box) 3. In the sales tab, make sure the option "Continue Selling" for Out-of-Stock field is checked 4. Go to ecommerce, search for the product (here, let's search f
Original PR description
When the product has the "continue selling" box when "out-of-stock" checked, and you add the product to the wishlist from ecommerce, "Temporarily out of stock" message/warning will appear in the…
When the product has the "continue selling" box when "out-of-stock" checked, and you add the product to the wishlist from ecommerce, "Temporarily out of stock" message/warning will appear in the wishlist. To Reproduce on Runbot: 1. Make sure ecommerce module is installed 2. Go to storable product (for example: Cable Management Box) 3. In the sales tab, make sure the option "Continue Selling" for Out-of-Stock field is checked 4. Go to ecommerce, search for the product (here, let's search for Cable Management Box), click on it 5. Click on add to wishlist 6. Go to wishlist. 7. We'll see "Temporarily out of stock" message. But, we don't want this because we want to continue selling even if it's out of stock, and don't want to customer to get confused with the message. So, since the message/warning doesn't align with the concept of continue selling when out of stock, we want to get rid of the message/warning if the product has "continue selling" box checked. opw-4121929 Forward-Port-Of: odoo/odoo#177993
Steps to reproduce: - Install `payment_stripe` and `website_sale` - Configure express checkout for stripe - Add public/secret keys and - Enable "Apple Pay" in settings (to do this comment out this block) https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/models/payment_provider.py#L234-L237 - Enable "Link" in Stripe and add payment domain to ngrok domain - Go to website in incognito page and open a product - Add it to cart and click on the expres
Original PR description
Steps to reproduce: - Install `payment_stripe` and `website_sale` - Configure express checkout for stripe - Add public/secret keys and - Enable "Apple Pay" in settings (to do this comment out this block) https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/models/payment_provider.py#L234-L237 - Enable "Link" in Stripe and add payment domain to ngrok domain - Go to website in incognito page and open a product - Add it to cart and click on the express checkout button - Complete process to pay - Go to contact linked to sale Issues: Phone is missing, this is because during the creation of the shipping address `res_partner` record we don't have the phone. https://github.com/odoo/odoo/blob/0527b4b2ffe7d42222334b06a22739cf4963c617/addons/payment_stripe/static/src/js/express_checkout_form.js#L171-L181 opw-4055084 Forward-Port-Of: odoo/odoo#176213
Version : 17 Steps to Reproduce: Install the Stripe or Adyen Payment Provider. Activate the CashApp payment method. Attempt to make a payment using CashApp at checkout. Issue: Users encounter an error when selecting the CashApp payment method during payment. The error is caused by the use incorrect code of Cash App Pay payment method, resulting in a traceback. Cause: The error occurs because Cash App Pay payment method not mapped with correct code. Fix: Add the correct co
Original PR description
Version : 17 Steps to Reproduce: Install the Stripe or Adyen Payment Provider. Activate the CashApp payment method. Attempt to make a payment using CashApp at checkout. Issue: Users encounter an error when selecting the CashApp payment method during payment. The error is caused by the use incorrect code of Cash App Pay payment method, resulting in a traceback. Cause: The error occurs because Cash App Pay payment method not mapped with correct code. Fix: Add the correct code 'cashapp' to the 'PAYMENT_METHODS_MAPPING' variable of stripe and ayden. opw-4132745 Forward-Port-Of: odoo/odoo#178496
Steps to reproduce the bug: - Turn on the Cookies from setting for the website. - Go to front end, click on editor, go to theme tab. - Click on any Font Family, and select add a google font. - After adding, save. - Add a "Title" block, go to "mobile view", and add a text highlight. - Save the page. - Bug: If you switch between mobile and desktop views, the highlights are not updated (because the SVGs are fixed and get added to the view of the page). The bug occurred because some opti
Original PR description
Steps to reproduce the bug: - Turn on the Cookies from setting for the website. - Go to front end, click on editor, go to theme tab. - Click on any Font Family, and select add a google font. - After adding, save. - Add a "Title" block, go to "mobile view", and add a text highlight. - Save the page. - Bug: If you switch between mobile and desktop views, the highlights are not updated (because the SVGs are fixed and get added to the view of the page). The bug occurred because some options, like the popup, trigger a resize after a delay before the page is saved. This causes the highlights to be added back to the DOM after the "TextHighlight" widget has been destroyed. To fix this, we prevent adding highlights if the "TextHighlight" widget has been destroyed. opw-4081390 Forward-Port-Of: odoo/odoo#178022
This commit's purpose is to prevent the creation of a task with quick create with the 'withTaskHour' widget if the project is an fsm one. This is done to prevent the creation of fsm task without a partner set (the field is required). Forward-Port-Of: odoo/odoo#178667 Forward-Port-Of: odoo/odoo#178342
Original PR description
This commit's purpose is to prevent the creation of a task with quick create with the 'withTaskHour' widget if the project is an fsm one. This is done to prevent the creation of fsm task without a partner set (the field is required). Forward-Port-Of: odoo/odoo#178667 Forward-Port-Of: odoo/odoo#178342
enterprise: https://github.com/odoo/enterprise/pull/68361 Forward-Port-Of: odoo/odoo#178012 Forward-Port-Of: odoo/odoo#176580
Original PR description
enterprise: https://github.com/odoo/enterprise/pull/68361 Forward-Port-Of: odoo/odoo#178012 Forward-Port-Of: odoo/odoo#176580
This PR contains several fixes involving the "select all" feature in list view. Task~4150362 Forward-Port-Of: odoo/odoo#179194 Forward-Port-Of: odoo/odoo#178772
Original PR description
This PR contains several fixes involving the "select all" feature in list view. Task~4150362 Forward-Port-Of: odoo/odoo#179194 Forward-Port-Of: odoo/odoo#178772
Steps to reproduce the bug: 1. Install the Sales and Loyalty apps. 2. Create a sales order for 'client x' and assign a loyalty reward to it. 3. Invoice the sales order with a down payment. 4. Navigate to the Helpdesk app and create a ticket for 'client x'. 5. Create a task for the ticket and check the Sales order item list. Issue: The sales order item list incorrectly includes down payments and loyalty rewards due to an imprecise domain. Solution: Adding a domain function that we ca
Original PR description
Steps to reproduce the bug: 1. Install the Sales and Loyalty apps. 2. Create a sales order for 'client x' and assign a loyalty reward to it. 3. Invoice the sales order with a down payment. 4. Navigate to the Helpdesk app and create a ticket for 'client x'. 5. Create a task for the ticket and check the Sales order item list. Issue: The sales order item list incorrectly includes down payments and loyalty rewards due to an imprecise domain. Solution: Adding a domain function that we can override computed field where it's necessary, to filter the sale_order_line records accurately. opw-4001226 enterprise pr : https://github.com/odoo/enterprise/pull/66388 Forward-Port-Of: odoo/odoo#179161 Forward-Port-Of: odoo/odoo#173667
Currently, an error occurs when creating foreign taxes for 'Austria'. Steps to produce: - Installing the 'account' module. - Go to Invoicing / Configuration / Accounting / Fiscal Positions. - Create a Fiscal Position, Set the Country as 'Austria', and enter an 'FR23334175221'(For example) as 'Foreign Tax ID'. - And Create the taxes for this country. Stack Trace: ``` KeyError: 'children_tax_ids' File "odoo/http.py", line 2374, in __call__ response = request._serve_db()
Original PR description
Currently, an error occurs when creating foreign taxes for 'Austria'. Steps to produce: - Installing the 'account' module. - Go to Invoicing / Configuration / Accounting / Fiscal Positions. - Create…
Currently, an error occurs when creating foreign taxes for 'Austria'.
Steps to produce:
- Installing the 'account' module.
- Go to Invoicing / Configuration / Accounting / Fiscal Positions.
- Create a Fiscal Position, Set the Country as 'Austria', and enter an 'FR23334175221'(For example) as 'Foreign Tax ID'.
- And Create the taxes for this country.
Stack Trace:
```
KeyError: 'children_tax_ids'
File "odoo/http.py", line 2374, in __call__
response = request._serve_db()
File "odoo/http.py", line 1904, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1967, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1934, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2178, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 223, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 755, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 40, in call_button
action = call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 459, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/account/models/partner.py", line 289, in action_create_foreign_taxes
self.env["account.chart.template"]._instantiate_foreign_taxes(self.country_id, self.company_id)
File "addons/account/models/chart_template.py", line 929, in _instantiate_foreign_taxes
children_taxes = tax_data['children_tax_ids'].split(',')
```
An error occurs when the system tries to get a 'children_tax_ids' key from tax data at [1] while foreign tax creation, But it is not available.
link [1]: https://github.com/odoo/odoo/blob/4c79aceb3a6c08453f9ec66131e1bc525eae140c/addons/account/models/chart_template.py#L936
To resolve the issue, make small changes into tax data where 'amount_type' = 'percent' instead of 'amount_type' ='group'.
Sentry-5730875398
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#178939
Forward-Port-Of: odoo/odoo#178058Before: In chrome, you can see the message "[DOM] Input elements should have autocomplete attributes (suggested: "username"): (More info: https://goo.gl/9p2vKq)". After: The message does not appear. Also, This maintains consistency with the password input which has the attribute autocomplete.  --- I confirm I have signed the CLA and read the PR guid
Original PR description
Before: In chrome, you can see the message "[DOM] Input elements should have autocomplete attributes (suggested: "username"): (More info: https://goo.gl/9p2vKq)". After: The message does not appear. Also, This maintains consistency with the password input which has the attribute autocomplete.  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#146934 Forward-Port-Of: odoo/odoo#146037
29 changes
Enhancements to existing features
This update replaces an older internal way of accessing Odoo's registry with the recommended approach. It helps simplify the core platform and keeps affected business features aligned with future Odoo maintenance, with no expected day-to-day user impact.
Original PR description
You can use directly odoo.modules.registry.Registry when needed and cases where you need to do it are rare. At the same time, this allows to remove a function from the odoo package. Related PRs: Community: odoo/odoo#178784 Upgrade: odoo/upgrade-util#132 task-4069446
The appointments website snippet now sends visitors to the main appointments page when they click “See all.” This makes navigation clearer and helps customers find available appointments more reliably.
Original PR description
The goal of this PR is to adapt the "See all" link that should redirect to `/appointment` in the appointments snippet. PR (COM): https://github.com/odoo/odoo/pull/135509 Design themes: https://github.com/odoo/design-themes/pull/897 task-3922762
Appointment type records now include a discussion area where users can leave comments and follow changes. This helps teams coordinate around appointment setup, request updates even without edit rights, and makes troubleshooting easier by tracking key field changes.
Original PR description
Add chatter on the appointment type model form to:
- make debugging easier (track some fields)
- allow big teams to cooperate
- allow users that cannot edit the type to leave comments ("can you add me?", ...)
Task-4160199Knowledge invitation emails have been slightly updated to include who created the shared item and when it was created. This gives recipients more context before opening the invitation, with only a minor technical impact from retrieving the creator name.
Original PR description
After this PR: Invite email layout is slightly modified, which now shows the creator's name and date it got created on. This PR also modifies a performance test, by increasing the query count, because of the addition of new `create_uid` field in email layout for accessing `display_name`. Related Community PR: https://github.com/odoo/odoo/pull/168211 Task-3911767
Resolved issues and error corrections
The delivery map view now shows only transfers that belong to the selected batch. This prevents unrelated deliveries from appearing, making route planning and batch handling clearer for users.
This update corrects several automated tests so they check the right empty values and do not overlook expected information. It helps reduce the risk of undetected issues across accounting, stock, localization, quality, and field service workflows without changing day-to-day user behavior.
Miscellaneous changes
* With an IN company setup * Open the bank Reconciliation widget * Make a manual reconciliation with tax 18% IGST RC * Go to tax report GSTR-3B * Issue: there is no impact on the report (3.1 d) This occurs because in the report we take into account move of type `out_invoice` while move registered in the bank journal are of type `entry` Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4058256) opw-4058256 Forward-Port-Of: odoo/enterprise#67520
Original PR description
* With an IN company setup * Open the bank Reconciliation widget * Make a manual reconciliation with tax 18% IGST RC * Go to tax report GSTR-3B * Issue: there is no impact on the report (3.1 d) This occurs because in the report we take into account move of type `out_invoice` while move registered in the bank journal are of type `entry` Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4058256) opw-4058256 Forward-Port-Of: odoo/enterprise#67520
Issue: An issue can arises when attempting to drop the constraint "account_move_line_check_amount_currency_balance_sign" if it does not exist. This problem was triggered since the following fix: https://github.com/odoo/enterprise/pull/67953. Fix: Ensure that the constraint exists before attempting to drop it. opw-4107760 opw-4133787 opw-4122219 Forward-Port-Of: odoo/enterprise#69191
Original PR description
Issue: An issue can arises when attempting to drop the constraint "account_move_line_check_amount_currency_balance_sign" if it does not exist. This problem was triggered since the following fix: https://github.com/odoo/enterprise/pull/67953. Fix: Ensure that the constraint exists before attempting to drop it. opw-4107760 opw-4133787 opw-4122219 Forward-Port-Of: odoo/enterprise#69191
Steps to reproduce: [l10n_* nl/be/etc - Europe] - create a customer form Monaco with a valid TVA number `FR53000004605` - create an invoice with this customer with an intra-eu tax - Open the EC Sales List Report Issue: The invoice will not be displayed Cause: Monaco is not part of the list Solution: We add it if the company.country_id is not France. Because for any other european country we want Monaco's invoices to be displayed opw-4075452 Forward-Port-Of: odoo/enterprise#68
Original PR description
Steps to reproduce: [l10n_* nl/be/etc - Europe] - create a customer form Monaco with a valid TVA number `FR53000004605` - create an invoice with this customer with an intra-eu tax - Open the EC Sales List Report Issue: The invoice will not be displayed Cause: Monaco is not part of the list Solution: We add it if the company.country_id is not France. Because for any other european country we want Monaco's invoices to be displayed opw-4075452 Forward-Port-Of: odoo/enterprise#68560
Current behaviour: --- When you open a document, and you want to add a tag, the preview closes. Steps to reproduce: --- 1. Go to Documents 2. Open a document 3. Add a tag 4. The preview closes Cause of the issue: --- In updateRecordTagId from documents_search_model.js Update trigger > load > documents-close-preview trigger opw-3879288 Forward-Port-Of: odoo/enterprise#66684
Original PR description
Current behaviour: --- When you open a document, and you want to add a tag, the preview closes. Steps to reproduce: --- 1. Go to Documents 2. Open a document 3. Add a tag 4. The preview closes Cause of the issue: --- In updateRecordTagId from documents_search_model.js Update trigger > load > documents-close-preview trigger opw-3879288 Forward-Port-Of: odoo/enterprise#66684
Steps to reproduce: - Settings > Enable 'Consolidate subscriptions billing' - Contact > Create a company - Contacts & Addresses tab > Add - Add an invoice address on the company - Add an individual then duplicate it - Create a subscription with the indiviual as customer - Duplicate the subscription then set the duplicate contact as customer - Debug mode > Scheduled actions - Sale subscription: Generate recurring invoices and payments > Run manually The subsciptions are invoiced separ
Original PR description
Steps to reproduce: - Settings > Enable 'Consolidate subscriptions billing' - Contact > Create a company - Contacts & Addresses tab > Add - Add an invoice address on the company - Add an individual…
Steps to reproduce: - Settings > Enable 'Consolidate subscriptions billing' - Contact > Create a company - Contacts & Addresses tab > Add - Add an invoice address on the company - Add an individual then duplicate it - Create a subscription with the indiviual as customer - Duplicate the subscription then set the duplicate contact as customer - Debug mode > Scheduled actions - Sale subscription: Generate recurring invoices and payments > Run manually The subsciptions are invoiced separately instead of having one invoice for both. The consolidated billing should produce only one invoice since the invoicing address is the same. This behavior works as intended if using the create invoices action on both subscriptions at once. Here, the recurring invoice creation for subscriptions uses its own grouping function using partner_id as a key instead of partner_invoice_id which is 'parent invoice address id if any, else partner_id'. Because this grouping is performed before creating the invoices, we end up processing sale orders that should have belonged to the same group separarately and thus create the invoices one by one. This means we don't let _create_invoices do the grouping since we only pass it one SO at a time, this fix will make it so _create_invoices is called on the grouped SOs instead. opw-4114035 Forward-Port-Of: odoo/enterprise#69277
…ew ro Version: 17.0 Steps: Click on the schedule feature in the rental module. Click on the 'New' to create the rental order. Issue : When a user clicks on the "Schedule" feature in the rental module and then clicks on "New" to create a rental order, the rental period feature is disabled, and the payment period appears instead. Cause : The issue is caused by the condition invisible="not is_rental_order" on the rental_start_date field. fix: To fix this issue, we remove the invis
Original PR description
…ew ro Version: 17.0 Steps: Click on the schedule feature in the rental module. Click on the 'New' to create the rental order. Issue : When a user clicks on the "Schedule" feature in the rental module and then clicks on "New" to create a rental order, the rental period feature is disabled, and the payment period appears instead. Cause : The issue is caused by the condition invisible="not is_rental_order" on the rental_start_date field. fix: To fix this issue, we remove the invisible="not is_rental_order" condition from the rental_start_date field definition. This ensures that the rental period feature is always visible when creating a new rental order. opw-4016866 Forward-Port-Of: odoo/enterprise#69306 Forward-Port-Of: odoo/enterprise#66904
When a user with 'user' access rigths on the project module that is also assigned to a task of an internal project, it will prevent the user from creating a new timesheet from the timesheet grid. This bug is due to the fact that when a user clicks on the line of the task, some rpc's call are made on the 'project' model. Since the user does not have access rigth to the internal project on which the call are made, an access rigth error is raised. Step to reproduce: - create a db with hr_tim
Original PR description
When a user with 'user' access rigths on the project module that is also assigned to a task of an internal project, it will prevent the user from creating a new timesheet from the timesheet grid.…
When a user with 'user' access rigths on the project module that is also assigned to a task of an internal project, it will prevent the user from creating a new timesheet from the timesheet grid. This bug is due to the fact that when a user clicks on the line of the task, some rpc's call are made on the 'project' model. Since the user does not have access rigth to the internal project on which the call are made, an access rigth error is raised. Step to reproduce: - create a db with hr_timesheet installed - have a user with 'user' access rights on project and 'own timesheet' on timesheet - create an internal project - create a task inside that internal project and assigned the user on it - connect with the other user - open timesheet app - select the task from the internal project to start a new timesheet timer - an error access right on 'project' is triggered Solution: Add a sudo inside the python method 'check can start timer'. Give the project name to the timerHeaderM2O, to prevent the call to the name_get on the project. task - 3922511 affected version 16.0 - master Forward-Port-Of: odoo/enterprise#69226 Forward-Port-Of: odoo/enterprise#63159
- create a new spreadsheet - fill all cell with content (add rows and content until it crashes) - click on the Share button => boom We have a monkey-patched version of `literal_eval` which only accepts an input size of maximum 100KiB. But spreadsheet files can be larger than that. Bug introduced by https://github.com/odoo-dev/enterprise/commit/e55597dde848ae349248e4381f812e516b839985 opw-4139087 opw-4082093 Forward-Port-Of: odoo/enterprise#69433
Original PR description
- create a new spreadsheet - fill all cell with content (add rows and content until it crashes) - click on the Share button => boom We have a monkey-patched version of `literal_eval` which only accepts an input size of maximum 100KiB. But spreadsheet files can be larger than that. Bug introduced by https://github.com/odoo-dev/enterprise/commit/e55597dde848ae349248e4381f812e516b839985 opw-4139087 opw-4082093 Forward-Port-Of: odoo/enterprise#69433
We removed the `reload_page` method [here](https://github.com/odoo/enterprise/pull/68394/files#diff-ccc5eed84ca6b725960d95f2ab8b48188d5a078ab60a0a7c6c8ff7aeb29eddd9). Since, clients non-updated views still call it, but get a traceback as it doesn't exist anymore. We then add it again to fix the issue. Support task: 4152608 Forward-Port-Of: odoo/enterprise#69429
Original PR description
We removed the `reload_page` method [here](https://github.com/odoo/enterprise/pull/68394/files#diff-ccc5eed84ca6b725960d95f2ab8b48188d5a078ab60a0a7c6c8ff7aeb29eddd9). Since, clients non-updated views still call it, but get a traceback as it doesn't exist anymore. We then add it again to fix the issue. Support task: 4152608 Forward-Port-Of: odoo/enterprise#69429
When we tried to open the dialog, we would get an error telling us that the function close from the props is missing. The fix is to use a custom close function that will trigger the action of type `act_window_close` task-4154392 Forward-Port-Of: odoo/enterprise#69263
Original PR description
When we tried to open the dialog, we would get an error telling us that the function close from the props is missing. The fix is to use a custom close function that will trigger the action of type `act_window_close` task-4154392 Forward-Port-Of: odoo/enterprise#69263
Before this commit, Using the "request signature" option allowed users to create templates on the fly, which could lead to errors. In this commit, the Creation of templates on the fly from the wizard is no longer allowed. task-4069128 Forward-Port-Of: odoo/enterprise#69486 Forward-Port-Of: odoo/enterprise#67232
Original PR description
Before this commit, Using the "request signature" option allowed users to create templates on the fly, which could lead to errors. In this commit, the Creation of templates on the fly from the wizard is no longer allowed. task-4069128 Forward-Port-Of: odoo/enterprise#69486 Forward-Port-Of: odoo/enterprise#67232
With this commit, some rules category are fixed : deduction, allowance are set only on employee rule. One file's name changed to be coherent with others payrolls. task-4069829 Forward-Port-Of: odoo/enterprise#69170 Forward-Port-Of: odoo/enterprise#68889
Original PR description
With this commit, some rules category are fixed : deduction, allowance are set only on employee rule. One file's name changed to be coherent with others payrolls. task-4069829 Forward-Port-Of: odoo/enterprise#69170 Forward-Port-Of: odoo/enterprise#68889
### Steps to reproduce: - Install Sale and Field Service modules - Create a Quotation with a normal product and another Field service product - Confirm the quotation and invoice it - Change the delivered quantity of the field service product to meet the order quantity - Check the invoice status (will be 'Fully Invoiced') - Set the field service product in the SO to a unit price 0 ### Current behavior before PR: After creating an invoice for a SO that has field service product and
Original PR description
### Steps to reproduce: - Install Sale and Field Service modules - Create a Quotation with a normal product and another Field service product - Confirm the quotation and invoice it - Change the…
### Steps to reproduce: - Install Sale and Field Service modules - Create a Quotation with a normal product and another Field service product - Confirm the quotation and invoice it - Change the delivered quantity of the field service product to meet the order quantity - Check the invoice status (will be 'Fully Invoiced') - Set the field service product in the SO to a unit price 0 ### Current behavior before PR: After creating an invoice for a SO that has field service product and then set the product's unit price to 0 the SO invoice_status will change from 'Fully invoiced' to 'Nothing to invoice'. This is happening because in FSM we don't invoice SOL that has price_unit equals 0 which will lead that the SO inovice status will change too to 'Nothing to invoice'. https://github.com/odoo/enterprise/blob/17.0/industry_fsm_sale/models/sale_order.py#L84:L91 ### Desired behavior after PR is merged: We are now checking before computing the invoice status of any FSM product if the SO is not yet invoiced because if it is we won't modify the invoice status of the SOL. opw-4017282 Forward-Port-Of: odoo/enterprise#68893
The case: - I want to organise all my shop in order to be able to serve all the rental orders I planed for a week. And resupply the shop with different interwarehouse transfers The issue, rental orders create a retun picking directly and their forecast could easily reach zero. (even more on small renting period) An existing solution: Correctly set a small lead time on reordering rule in order to have a fix day in order to have the forecast. However it only works if people check the reple
Original PR description
The case: - I want to organise all my shop in order to be able to serve all the rental orders I planed for a week. And resupply the shop with different interwarehouse transfers The issue, rental…
The case: - I want to organise all my shop in order to be able to serve all the rental orders I planed for a week. And resupply the shop with different interwarehouse transfers The issue, rental orders create a retun picking directly and their forecast could easily reach zero. (even more on small renting period) An existing solution: Correctly set a small lead time on reordering rule in order to have a fix day in order to have the forecast. However it only works if people check the replenishment report everyday and don't have weekend. And if they use automatic RR they lose the control over the warehouse that should resupply the product. Also they can't use the visibility days feature and plan for a week. In order to allow a better planning and flexibility we add a small parameter to ignore the returns of rental order. That way the forecast ignore returns and allow visibilty. BUT it's DANGEROUS. Because it means that outgoing after return won't be correctly forecasted. So the user have to use a small lead time. E.g. Global lead days = 70 days, do a rental order in 10 days (for a day) and another in 20 days. With the parameter enable, it will suggest 2 units. However it should be one since one is returned. Forward-Port-Of: odoo/enterprise#69236 Forward-Port-Of: odoo/enterprise#69015
Change the conditions of the account_3way_match filter on accounting dashboard for the bills journal. Before this commit: Show Bills with release_to_pay = 'yes' or invoice date < today. After this commit: Show Bills with release_to_pay = 'yes' or 'exception', the invoice date is no more used. task:3877069 Forward-Port-Of: odoo/enterprise#69068 Forward-Port-Of: odoo/enterprise#67357
Original PR description
Change the conditions of the account_3way_match filter on accounting dashboard for the bills journal. Before this commit: Show Bills with release_to_pay = 'yes' or invoice date < today. After this commit: Show Bills with release_to_pay = 'yes' or 'exception', the invoice date is no more used. task:3877069 Forward-Port-Of: odoo/enterprise#69068 Forward-Port-Of: odoo/enterprise#67357
This commit adds the field `l10n_mx_edi_payment_method_id` to the website checkout, so that the customer can choose the correct option to be saved into the sale order and to fill the attribute in the XML. Purpose: In Mexican electronic invoicing, some fields are mandatory for signing an invoice. Now, on e-commerce, one field is missing to avoid requests to cancel invoices due to lack of information. This missing field is "Payment way" (l10n_mx_edi_payment_method_id). This commit also rest
Original PR description
This commit adds the field `l10n_mx_edi_payment_method_id` to the website checkout, so that the customer can choose the correct option to be saved into the sale order and to fill the attribute in the XML. Purpose: In Mexican electronic invoicing, some fields are mandatory for signing an invoice. Now, on e-commerce, one field is missing to avoid requests to cancel invoices due to lack of information. This missing field is "Payment way" (l10n_mx_edi_payment_method_id). This commit also restructures the placement of `t-if`/`div`s so that they appear in the right places and not generate empty divs. task-id: 4064069 Forward-Port-Of: odoo/enterprise#69234 Forward-Port-Of: odoo/enterprise#68902
When an internal user with planning access performs the Add to Calendar action, the planning backend view opens instead of downloading the ICS file.This commit fixed this behavior. task-3978534 Forward-Port-Of: odoo/enterprise#66141
Original PR description
When an internal user with planning access performs the Add to Calendar action, the planning backend view opens instead of downloading the ICS file.This commit fixed this behavior. task-3978534 Forward-Port-Of: odoo/enterprise#66141
commit 073163f1ae3fd2c659653b773d3ed66836eb2cb2 replaced the new barcode files with the correct code but an intermediate version with incorrect barcode has been forgot in the root of the repository Forward-Port-Of: odoo/enterprise#69416
Original PR description
commit 073163f1ae3fd2c659653b773d3ed66836eb2cb2 replaced the new barcode files with the correct code but an intermediate version with incorrect barcode has been forgot in the root of the repository Forward-Port-Of: odoo/enterprise#69416
**Steps to reproduce:** - Install Accounting, Sales and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Create a SO for a Peruvian customer (e.g. Comercial Constructora) - Confirm the SO - Create a down payment - Confirm the down payment - Send it to Peru UBL 2.1 **Issue:** The Electronic Service Operator (OSE) responds with an error because an item is declared without unit of measure. **Cause:** From saas-17.1, there is no product associated to a down payment line
Original PR description
**Steps to reproduce:** - Install Accounting, Sales and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Create a SO for a Peruvian customer (e.g. Comercial Constructora) - Confirm the SO - Create a down payment - Confirm the down payment - Send it to Peru UBL 2.1 **Issue:** The Electronic Service Operator (OSE) responds with an error because an item is declared without unit of measure. **Cause:** From saas-17.1, there is no product associated to a down payment line anymore. **Solution:** For down payment line, use the code (i.e. NIU) of the default unit of measure (i.e. Units), which was the default UoM of the down payment product before saas-17.1. opw-4057252 Forward-Port-Of: odoo/enterprise#69308 Forward-Port-Of: odoo/enterprise#69124
### Before this PR: ->If we create a product that isn't a service > open the helpdesk ticket form view -> type the name of the product you created from the SOL field and click create -> a new SOL is generated for this product and is successfully set on the ticket ### After this PR: A new SOL is generated only for service products, it should only be allowed for services products, it will throw validation error that isn't service task-3972359 Forward-Port-Of: odoo/enterprise#69380
Original PR description
### Before this PR: ->If we create a product that isn't a service > open the helpdesk ticket form view -> type the name of the product you created from the SOL field and click create -> a new SOL is generated for this product and is successfully set on the ticket ### After this PR: A new SOL is generated only for service products, it should only be allowed for services products, it will throw validation error that isn't service task-3972359 Forward-Port-Of: odoo/enterprise#69380 Forward-Port-Of: odoo/enterprise#66463
Forward-Port-Of: odoo/enterprise#69399
Original PR description
Forward-Port-Of: odoo/enterprise#69399
Problem: Upon installing helpdesk_fsm in a multi-company setup, the default fsm project when enabling "use_fsm" on helpdesk teams is incorrectly retrieving the fsm project from the wrong company. This leads to a multi-company access error when trying to navigate to the fsm project linked to the helpdesk teams. Purpose: Instead of incorrectly defaulting the fsm project from the wrong company upon installation using a default method, compute the default of fsm project based on the team's compan
Original PR description
Problem: Upon installing helpdesk_fsm in a multi-company setup, the default fsm project when enabling "use_fsm" on helpdesk teams is incorrectly retrieving the fsm project from the wrong company. This leads to a multi-company access error when trying to navigate to the fsm project linked to the helpdesk teams. Purpose: Instead of incorrectly defaulting the fsm project from the wrong company upon installation using a default method, compute the default of fsm project based on the team's company. Steps to Reproduce on Runbot: 1. Install Project, Field Service, and any l10n module 2. Switch to the localized company 3. Create a helpdesk team 4. Install the helpdesk_fsm module 5. Navigate to the helpdesk team settings 6. Enable "use_fsm" on the team 7. Try to access the default fsm project 8. multi-company AccessError is thrown opw-3989799 Forward-Port-Of: odoo/enterprise#69115 Forward-Port-Of: odoo/enterprise#65701
Before this commit, when the payment provider updated the tx state with a webhook, the order was updated in a separate SQL transaction than the invoicing corn of subscription. Both transactions would update the same sale.order, resulting in concurrent update errors. Forward-Port-Of: odoo/enterprise#69142
Original PR description
Before this commit, when the payment provider updated the tx state with a webhook, the order was updated in a separate SQL transaction than the invoicing corn of subscription. Both transactions would update the same sale.order, resulting in concurrent update errors. Forward-Port-Of: odoo/enterprise#69142
11 changes
Enhancements to existing features
The accounting dashboard's bill filter has been updated to show bills marked for payment release or those with exceptions, removing the previous date-based filter. This change simplifies the bill review process by focusing on payment status rather than invoice age, helping accounting teams prioritize bills that need attention.
Original PR description
Change the conditions of the account_3way_match filter on accounting dashboard for the bills journal. Before this commit: Show Bills with release_to_pay = 'yes' or invoice date < today. After this commit: Show Bills with release_to_pay = 'yes' or 'exception', the invoice date is no more used. task:3877069 Forward-Port-Of: odoo/enterprise#69068 Forward-Port-Of: odoo/enterprise#67357
Resolved issues and error corrections
This fix resolves an issue where exporting and re-importing automation rules in Web Studio would fail due to missing required fields. Users can now successfully export automation rules from their projects and import them back without errors.
Original PR description
Steps to reproduce ================== - Install project,web_studio - Go to project - Open studio > Automations - Create a new rule - Click on the top left icon to go back to the home menu - Customizations > Export - Go back to project and delete the newly create automation - Click on the top left icon to go back to the home menu - Import > Upload the generated zip => It fails because a few required fields are missing opw-4073631
This update resolves an issue where the system would fail when trying to remove a database constraint that no longer exists. The fix adds a safety check to verify the constraint is present before attempting to remove it, preventing errors during system updates and maintenance operations.
Original PR description
Issue: An issue can arises when attempting to drop the constraint "account_move_line_check_amount_currency_balance_sign" if it does not exist. This problem was triggered since the following fix: https://github.com/odoo/enterprise/pull/67953. Fix: Ensure that the constraint exists before attempting to drop it. opw-4107760 opw-4133787 opw-4122219 Forward-Port-Of: odoo/enterprise#69191
This fix corrects a bug in the approval workflow system where higher-level approvers were being notified prematurely before all lower-level approvals were completed. Now, notifications for higher approval levels are only sent once all approvals at the previous level have been fully approved, ensuring a proper sequential approval process.
Original PR description
… entries Have a studio approvals with minimum 3 rules: - 2 on level 1 - 1 on level 2 Before this commit, if one of level 1 was refused, when approving the other one, the level 2 rule created an activity for the responsible. As we don't want a level to be notified if the lower level is not fully approved, there was a bug. After this commit, we only trigger activity notification on higher level rules if the below level has been fully approved.
This fix adds a warning message when users try to reserve a serial number that is already out of stock in a rental order. Previously, the system would allow users to select unavailable serial numbers without any notification, which could lead to fulfillment issues. Now the system alerts users when a selected lot is unavailable.
Original PR description
Steps to reproduce: ------------------- - create a storable product tracked by serial number; - create a serial number for this product; - add 1 quantity on hand for it; - create a rental order with the product; - add the created serial number in "Reserved lot"; - confirm and pickup; - create an other rental order; - add the product and the same "Reserved lot"; Issue: ------ There is no warning even if the serial number of the product is already out of stock. Solution: --------- Add a check when the `reserved_lot_ids` field is modified using an onchange method. opw-3839116
This update fixes an issue where subscription invoices were being skipped due to a pending transaction flag that wasn't being cleared after renewal. The system now properly removes this flag when an invoice is posted, ensuring subscriptions continue to be billed correctly even after renewal cycles.
Original PR description
…nvoice Before this commit, subscriptions automatic invoices are skipped when the flag pending transactions is set. it is correct to avoid double payment for the same period but there is a problem if the flag stays while the subscription has been renewed since. This commit aimes to remove that flag when an invoice is posted for this subscruption. taskid: 4107185
Fixed a crash that occurred when users tried to add conditional visibility rules to columns in grouped reports (like the Inventory Valuation report). The issue was that Studio was incorrectly trying to access fields that only exist within grouped sections, not in the main data model. This fix ensures Studio properly filters out these grouped fields when editing conditional rules.
Original PR description
Steps to reproduce
==================
- Open inventory > Reporting > Valuation
- Open studio
- Select a column
- Click on "Conditionnal" next to "Invisible", "Required" or "Readonly"
=> crash
Cause of the issue
==================
Fields declared inside a groupby node are not part of the main model
```xml
<groupby name="product_id">
<field name="cost_method" invisible="1" />
<field name="quantity_svl" invisible="1" />
<button name="action_revaluation" icon="fa-plus" title="Add Manual Valuation" type="object" invisible="cost_method == 'standard' or quantity_svl <= 0" />
</groupby>
```
opw-4147138This fix resolves an application crash that occurred when users cancelled a report discard action in Studio. Previously, the system would throw an error when clicking cancel after initiating a discard. Now the cancellation is handled properly, allowing users to safely abandon their discard action without the application crashing.
Original PR description
Steps to reproduce ================== - Open studio - Edit any report - Make some changes - Click on discard - Click on cancel => UncaughtPromiseError Cause of the issue ================== When clicking on cancel, the promise is rejected https://github.com/odoo/odoo/blob/1ffcea337ba463c383483ca53ff57aa6b725b5a2/addons/web_editor/static/src/js/wysiwyg/wysiwyg.js#L1112 Solution ======== Instead of rejecting the promise, resolve it with the confirmation status opw-4141192
Fixed an issue where invoices from customers in Monaco were not appearing in the EC Sales List Report. Monaco is now properly recognized as part of the European Community list for companies outside of France, allowing these invoices to be correctly displayed in the report.
Original PR description
Steps to reproduce: [l10n_* nl/be/etc - Europe] - create a customer form Monaco with a valid TVA number `FR53000004605` - create an invoice with this customer with an intra-eu tax - Open the EC Sales List Report Issue: The invoice will not be displayed Cause: Monaco is not part of the list Solution: We add it if the company.country_id is not France. Because for any other european country we want Monaco's invoices to be displayed opw-4075452 Forward-Port-Of: odoo/enterprise#68560
This fix corrects a security issue where the 'New Quotation' button was visible to users without sales permissions. The button now properly checks user access rights before displaying, ensuring only authorized users can create quotations from field service tasks.
Original PR description
Versions: ----------- 15.0 Steps to Reproduce -------------- - Install industry_fsm_sale - Create a new user with these access rights. Project -> user Field Service -> user Timesheets -> User: own timesheets only - Create a new task, and assign it to the created user. - Login as user - Open the task Issue ---------- - The 'New quotation' button is visible even user has no sales access rights. Cause --------- - The user is getting access to the button from the field service group. Fix --------- - We remove the group from the button. - We only show 'New Quotation' button if user have sales access rights. task-3827319 Forward-Port-Of: odoo/enterprise#60536
This fix corrects how rental equipment returns are processed in the inventory system. Previously, a recent change to prevent double-counting returned items inadvertently affected rental returns, which are handled differently. This update ensures rental returns are properly tracked without affecting the delivered quantity calculations on sales orders.
Original PR description
In sale_stock, when making returns, we fix a bug where the delivered quantity on an SO is affected twice by returns in the case of 2-step routes, by not linking moves generated by push rules to the SO. (https://github.com/odoo/odoo/pull/178392) But in the case of `sale_stock_renting`, it is a push rule that generates the return at the end of the renting period, so we have to make an exception. opw-4129497