Daily updates from Odoo
Navigate
Branch
Tuesday, September 17, 2024
77 changes
19 changes
Resolved issues and error corrections
This fixes an error that could block users from saving a confirmed manufacturing order after removing a line. It helps manufacturing teams avoid interruptions when adjusting orders during normal workflow.
Original PR description
This error occurs when attempting to save a manufacturing order that is in a confirmed state. Steps to reproduce: - Install the ``mrp_workorder_hr_account`` module - Create a new MO, add a line, and ``Confirm`` - Now remove a line and click on the ``Save`` button Traceback: ``ValueError: not enough values to unpack (expected 3, got 2)`` The error at [1] occurred because we were not receiving the expected value of ``field_values`` in ``move_vals``. We expected 3 values but only received 2. [1]- https://github.com/odoo/odoo/blob/c48d62098b2809cd046742435afd4f7ba3a4cbe1/addons/mrp/models/mrp_production.py#L843-L844 sentry-5819387893 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures sales orders calculate only the remaining quantity to deliver after deliveries and returns have been processed. It prevents creating delivery orders for the full updated order quantity when only the difference should still be shipped, reducing over-delivery and warehouse confusion.
Original PR description
### Steps to reproduce: - Create and confirm an SO for 5 units of a consumable product. - Validate the associated delivery. - Return and validate the return. - Return and validate the return of the…
### Steps to reproduce: - Create and confirm an SO for 5 units of a consumable product. - Validate the associated delivery. - Return and validate the return. - Return and validate the return of the return. - Change the demand of the SO from 5 to 8 units. #### > A delivery order for 8 units is created instead of 3. ### Cause of the issue: Changing the demand on the SO will trigger the ` _action_launch_stock_rule` to determine which procurement to trigger in order to fulfill the delivery. During this call the qty to deliver will be computed by comparing the quantity handled by incoming and outgoing moves linked to the sol. However, the return of the return of an outgoing move will not be flagged as an outgoing move since it does not have a `location_final_id` since it was created as a return: https://github.com/odoo/odoo/blob/4a050ec0efb929f7605856f490025f7921d39672/addons/sale_stock/models/sale_order_line.py#L266-L267 https://github.com/odoo/odoo/blob/4a050ec0efb929f7605856f490025f7921d39672/addons/sale_stock/models/sale_order_line.py#L288-L292 opw-4105394 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Long canned response shortcut text now stays within the message composer suggestion list instead of spilling outside it. This keeps the mail interface cleaner and easier to read when users work with longer shortcuts.
Original PR description
Purpose of this PR: When a canned response have a long shortcut text, the text overflow the navigablelist. Before:  After: 
Miscellaneous changes
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180316
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180316
Steps to reproduce =================== 1. Create a new lead in CRM with only an email address. 2. Send a message to the email through the chatter. -> The contact is created but it has no name. Issue ================= The issue was in _get_customer_information() for CRM. The function uses parse_contact_from_email which returns an empty name for a simple email. After this commit ================= Email will serve as a name for the contact created through the chatter in CRM. Task
Original PR description
Steps to reproduce =================== 1. Create a new lead in CRM with only an email address. 2. Send a message to the email through the chatter. -> The contact is created but it has no name. Issue ================= The issue was in _get_customer_information() for CRM. The function uses parse_contact_from_email which returns an empty name for a simple email. After this commit ================= Email will serve as a name for the contact created through the chatter in CRM. Task-4129454 Forward-Port-Of: odoo/odoo#178797
It appears that `chromium-browser` sometimes asks for user to sign in, displaying an unwanted popup instead of the IoT Box display homepage. We fix this by adding `--bwsi` argument to the command line. Forward-Port-Of: odoo/odoo#180190
Original PR description
It appears that `chromium-browser` sometimes asks for user to sign in, displaying an unwanted popup instead of the IoT Box display homepage. We fix this by adding `--bwsi` argument to the command line. Forward-Port-Of: odoo/odoo#180190
the search logic for productions by component availability is currently incorrect: it matches productions for which at least one bom line has the requested availability. We align it with the compute method's logic Note: at the current time we have to perform a search within the search method, which will hurt performance if we have many MO, but it is not possible to compute the domain without accessing the records because the relevant product fields are compute and non-searchable opw-405
Original PR description
the search logic for productions by component availability is currently incorrect: it matches productions for which at least one bom line has the requested availability. We align it with the compute method's logic Note: at the current time we have to perform a search within the search method, which will hurt performance if we have many MO, but it is not possible to compute the domain without accessing the records because the relevant product fields are compute and non-searchable opw-4055859 Forward-Port-Of: odoo/odoo#174178
If the IoT Box is in access point mode, it should mean that it has no internet connection. Thus, we avoid returning the linked db url to avoid fetching it. We used to check the access point mode with a `subprocess` call to `hostapd` service. We now check the IP, as it is set to `10.11.12.1` when in AP mode. Task: 4182947 Forward-Port-Of: odoo/odoo#180159
Original PR description
If the IoT Box is in access point mode, it should mean that it has no internet connection. Thus, we avoid returning the linked db url to avoid fetching it. We used to check the access point mode with a `subprocess` call to `hostapd` service. We now check the IP, as it is set to `10.11.12.1` when in AP mode. Task: 4182947 Forward-Port-Of: odoo/odoo#180159
In this Pr: https://github.com/odoo/odoo/pull/176313, we did a fix for the order of the lines in the report but included only the invoices in the t-set. task: 4179612 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180274 Forward-Port-Of: odoo/odoo#179935
Original PR description
In this Pr: https://github.com/odoo/odoo/pull/176313, we did a fix for the order of the lines in the report but included only the invoices in the t-set. task: 4179612 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180274 Forward-Port-Of: odoo/odoo#179935
The "Closed On" filter in project and project_todo relies on using a date filter in conjunction with a domain, which is not possible before https://github.com/odoo/odoo/pull/156746. This PR removes those filters, as they don't work before the above PR. Task-3973609 Forward-Port-Of: odoo/odoo#175030
Original PR description
The "Closed On" filter in project and project_todo relies on using a date filter in conjunction with a domain, which is not possible before https://github.com/odoo/odoo/pull/156746. This PR removes those filters, as they don't work before the above PR. Task-3973609 Forward-Port-Of: odoo/odoo#175030
-Probably miss by script since https://github.com/odoo/odoo/commit/332c117f60a36f723c450f61ce2e0e7181d66c21 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#177707
Original PR description
-Probably miss by script since https://github.com/odoo/odoo/commit/332c117f60a36f723c450f61ce2e0e7181d66c21 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#177707
Currently a traceback may arises when there is no `filter_domain`, while the user tries to group projects. Error:- ``` AttributeError: 'bool' object has no attribute '_name' File "odoo/models.py", line 6643, in __and__ if self._name != other._name: TypeError: unsupported operand types in: project.project(2,) & False File "odoo/http.py", line 2383, in __call__ response = request._serve_db() File "odoo/http.py", line 1913, in _serve_db return self._transactioning
Original PR description
Currently a traceback may arises when there is no `filter_domain`, while the user tries to group projects. Error:- ``` AttributeError: 'bool' object has no attribute '_name' File "odoo/models.py",…
Currently a traceback may arises when there is no `filter_domain`,
while the user tries to group projects.
Error:-
```
AttributeError: 'bool' object has no attribute '_name'
File "odoo/models.py", line 6643, in __and__
if self._name != other._name:
TypeError: unsupported operand types in: project.project(2,) & False
File "odoo/http.py", line 2383, in __call__
response = request._serve_db()
File "odoo/http.py", line 1913, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1976, 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 1943, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2187, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 227, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 35, in call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 459, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "addons/web/models/models.py", line 242, in web_read_group
groups = self._web_read_group(domain, fields, groupby, limit, offset, orderby, lazy)
File "addons/web/models/models.py", line 268, in _web_read_group
groups = self.read_group(domain, fields, groupby, offset=offset, limit=limit,
File "addons/project/models/project_task.py", line 1982, in read_group
return super().read_group(domain, fields, groupby, offset, limit, orderby, lazy)
File "odoo/models.py", line 2800, in read_group
rows_dict = self._read_group_fill_results(
File "odoo/models.py", line 2247, in _read_group_fill_results
values = group_expand(self, groups, domain).sudo()
File "home/odoo/src/enterprise/saas-17.4/industry_fsm/models/project_task.py", line 194, in _group_expand_project_ids
res &= search_on_comodel
File "odoo/models.py", line 6648, in __and__
raise TypeError(f"unsupported operand types in: {self} & {other!r}")
```
This is because of the recent changes from the below commit
Commit:- https://github.com/odoo/odoo/pull/172973/commits/600b379c91059bfce5ebf6c53a9d282a07e5c640
When the `_search_on_comodel` method returns `False` if there is no `filter_domain`,
it leads to a traceback because `&` is used between an empty recordset and a False.
https://github.com/odoo/enterprise/blob/ce508a604bf70af06347e43000f25426473fb867/industry_fsm/models/project_task.py#L149-L151
We can resolve this issue by returning an empty record, Instead of returning False.
sentry-5836960027
Forward-Port-Of: odoo/odoo#180265Steps to reproduce: Create 2 products with a product tag (ex. '3+1') Create Buy X Get Y reward. In the conditional rules choose: - in the 'among' section the product tag '3+1', - in the 'grant' 1 point per unit paid In the rewards choose: - reward type as 'Free product' - in exchage of 3 points - in the 'among' section the product tag '3+1' Go to /shop page and add 3 products with the tag '3+1' Try to click on the button 'Free product'
Original PR description
Steps to reproduce:
Create 2 products with a product tag (ex. '3+1')
Create Buy X Get Y reward.
In the conditional rules choose:
- in the 'among' section the product tag '3+1',
- in the 'grant' 1 point per unit paid
In the rewards choose:
- reward type as 'Free product'
- in exchage of 3 points
- in the 'among' section the product tag '3+1'
Go to /shop page and add 3 products with the tag '3+1'
Try to click on the button 'Free product'
The reward is not applied
Reason:
In the claim_reward function a reward is not applied if it is a multi_product one.
Fix:
added a dropdown on template that will allow user to select product. the selected product will be sent to backend and processed in claim_reward function
Task : 3774033
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#179400
Forward-Port-Of: odoo/odoo#164868For the US, it is mandatory to have the accrual gains, usage and balance on the payslip. This adds a new table with the information for the current period. Task: 3993175 Forward-Port-Of: odoo/odoo#180288
Original PR description
For the US, it is mandatory to have the accrual gains, usage and balance on the payslip. This adds a new table with the information for the current period. Task: 3993175 Forward-Port-Of: odoo/odoo#180288
Add `account_edi_ubl_cii_tax_extension` module to transifex. Pot file already added in original PR that adds in new module into stable. Orig PR: https://github.com/odoo/odoo/pull/176221 opw-4061329 Forward-Port-Of: odoo/odoo#180325 Forward-Port-Of: odoo/odoo#180277
Original PR description
Add `account_edi_ubl_cii_tax_extension` module to transifex. Pot file already added in original PR that adds in new module into stable. Orig PR: https://github.com/odoo/odoo/pull/176221 opw-4061329 Forward-Port-Of: odoo/odoo#180325 Forward-Port-Of: odoo/odoo#180277
With an AR setup Create a branch company with: - Tax ID: same as in the parent company - Address: same as in the parent company - Certificate/Private key: same as parent company Create an invoice in Journal "Factura electrónica (FE)" Set customer "ADHOC SA" Confirm When the system attempt to send the e-invoice raceback pops up "ValueError: External ID not found in the system: account.5_tax_group_percepcion_ganancias" This occurs because the sytem looks for an xmlid which is only prese
Original PR description
With an AR setup Create a branch company with: - Tax ID: same as in the parent company - Address: same as in the parent company - Certificate/Private key: same as parent company Create an invoice in Journal "Factura electrónica (FE)" Set customer "ADHOC SA" Confirm When the system attempt to send the e-invoice raceback pops up "ValueError: External ID not found in the system: account.5_tax_group_percepcion_ganancias" This occurs because the sytem looks for an xmlid which is only present in the parent company opw-4151003 Forward-Port-Of: odoo/odoo#178992
[ADD] l10n_qa: Add localization package for qatar Add CoA and account groups with all the default account mappings for qatar Improve user experience in qatar task-id#3927918 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178370
Original PR description
[ADD] l10n_qa: Add localization package for qatar Add CoA and account groups with all the default account mappings for qatar Improve user experience in qatar task-id#3927918 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178370
This commit simplifies the labels on invoices in the Indian accounting localization package. task-4035245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172469
Original PR description
This commit simplifies the labels on invoices in the Indian accounting localization package. task-4035245 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#172469
Before this commit: While generating E-waybill from a SO/PO with different currency the price unit in E-waybill is displayed incorrect in INR, the currency conversion rate is not applied and the price unit is displayed as it is in INR which is incorrect After this commit: We resolve the above issue. Now the currency conversation rate is applied correctly on the price unit while generating E-waybill from SO/PO Description of the issue/feature this PR addresses: Current behavior before
Original PR description
Before this commit: While generating E-waybill from a SO/PO with different currency the price unit in E-waybill is displayed incorrect in INR, the currency conversion rate is not applied and the price unit is displayed as it is in INR which is incorrect After this commit: We resolve the above issue. Now the currency conversation rate is applied correctly on the price unit while generating E-waybill from SO/PO 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#180289
52 changes
New functionality added to Odoo
Adds a new loan management app to track company loans, generate amortization schedules, and automate related accounting entries. Also introduces asset groups so assets can be organized and reported by shared business properties.
Original PR description
Seem commits
Adds Wage Protection System reporting for Saudi Arabia payroll so companies can prepare required salary payment files and related payroll data more easily. This helps Saudi employers comply with local payroll reporting expectations and reduces manual work during payroll runs.
Original PR description
Adding WPS report to KSA payroll. Task ID 3326587
Enhancements to existing features
The webshop checkout and related sales tests were updated so upselling flows work correctly with Click & Collect orders. This helps ensure customers can choose store pickup while still seeing relevant product options, reducing friction during checkout.
Original PR description
See the community commit for more details. task-3626274 See also: - https://github.com/odoo/odoo/pull/174073 - https://github.com/odoo/upgrade/pull/6492
Mexican electronic invoices can now include state-specific local taxes in the correct dedicated section of the XML. This helps businesses in sectors such as construction, tourism, and services stay compliant when local tax rules vary by state.
Original PR description
[IMP] l10n_mx_edi: Add new cfdi line for local tax Local taxes are created by states in MX. Each state can have a different % of each tax. Some of the industries that need those taxes are: Construction, Tourism, and certain services industries. Those taxes are distributed in a different node with new attributes in the XML. We are adding new line for local taxes grouped by tax_group task-id#4033949 odoo-pr#https://github.com/odoo/odoo/pull/174336
US payslips now include a dedicated table showing leave accrual earned, used, and remaining for the current pay period. This helps employers meet US payroll disclosure requirements and gives employees clearer visibility into their time-off balances.
Original PR description
For the US, it is mandatory to have the accrual gains, usage and balance on the payslip. This adds a new table with the information for the current period. Task: 3993175
Appointment pricing now adjusts based on the number of expected attendees, so customers see booking fees and service prices that match the actual group size. Sales orders and invoices also use the attendee quantity, improving billing accuracy for capacity-based appointments.
Original PR description
*={_account_payment,_sale}
Purpose
=======
Increase the price based on how many guests are expected.
So that both the service and the booking fee is updated based on it.
Specifications
==============
1. Product price will be displayed with a dynamic label change based on 'resource_manage_capacity' field value.
2. Invoice and Order lines qty will be updated based on booking qty.
3. appointment_account_payment and website_appointment_sale flow have been adapted for price calculation
based on quantity.
Note:
```_verify_updated_quantity``` method from website_appointment_sale
is removed to achieve the purpose before it was written for handling the
one quantity of the product.
Task-3890987Manufacturing teams can now add components from the shop floor using the product catalog and see work instructions automatically when starting relevant work orders. Production planners can also set a batch size in the master production schedule so large manufacturing quantities are automatically split into manageable orders.
Original PR description
This PR adds several improvements to MRP workflows: #### Shop Floor: 1. When adding a component to an MO from the shop floor, the product catalog is opened instead of the existing wizard, similar to adding a component from the MO form. 2. When starting a work order that has steps, the instructions wizard is shown automatically, instead of having to click on it manually after starting the workorder. #### MPS: A new field is added to `mrp.production.schedule` model: `batch_size`. The field is shown and used only if the selected route is a manufacturing route. If this value is specified, the quantity of the generated manfacturing orders by MPS will be capped by this value, hence, the MOs will be automatically split in this case. Community PR: odoo/odoo#169258 Upgrade PR: odoo/upgrade#6186 Task-3962134
The Employee dashboard has been enhanced with additional graphs and related dashboard content. This gives HR teams a clearer visual overview of employee contract information, making it easier to spot trends and monitor key workforce data.
Original PR description
Add some graphs and other stuff in the Employee dashboard Task: 4074424
Payroll teams can now choose NACHA when creating payment reports from a payslip batch. This makes it easier to generate bank-ready payroll payment files directly from the payroll workflow, reducing manual steps for US payroll processing.
Original PR description
Add the option to pay through NACHA in the "Create Payment Report" wizard task-4123133
The HR and Employee apps receive usability improvements across forms, views, onboarding, and payroll-related information. Employees can now have a separate legal name for contracts and payroll documents, skills work better across languages, and onboarding/offboarding activities are routed more reliably through the management chain.
Original PR description
A rework of the UX/UI for parts of the HR/Employee app which includes: - Skills are now translatable, enabling the detection of skills on resumes written in languages other than English. - Improved…
A rework of the UX/UI for parts of the HR/Employee app which includes: - Skills are now translatable, enabling the detection of skills on resumes written in languages other than English. - Improved order on fields in employee form view. - Adding/improving placeholders for multiple fields. - Adding/improving/removing tooltips for multiple fields. - Adding/improving No Content helpers for multiple views to make the intention of the view clearer. - Adding and removing measurement fields for graph and pivot views to improve usability. - Spelling improvements. - Improved wording for multiple field strings. - Hiding buttons on employee form when employee is archived. - Creating activities on departments is now possible. - On/Off-boarding: If the employee/manager/coach is not linked to a user we now go up the chain of management until we find a manager linked to a user. This should allow a more seamless user experience. - Adding filter for employees in Contact app. - A new tab "Payroll" has been added in the Employee form view to gather all the payroll information. - A new field "Legal Name" has been added to accommodate employees whose legal names diverge from their preferred name. - Replacing the "Name" field with the "Legal Name" field in various payroll and contract situations. task-3930677
Field Service users can now preview, send, sign, and view task report details without installing Studio when they only need timesheets or time and materials. This makes core reporting workflows available to more service teams while keeping Studio-based worksheet customization separate.
Original PR description
* This commit aims at allowing the use the following features (in the task form view) of Field Service without needing Studio installed: - Sign & Send report buttons (in backend and in portal) - The…
* This commit aims at allowing the use the following features (in the task form view) of Field Service without needing Studio installed:
- Sign & Send report buttons (in backend and in portal)
- The Field Service Report without the worksheet section (in backend and in portal)
- The 'Customer Preview' stat button (in backend only)
- The 'View details' button of a task (in portal only)
* Beforehand, those features were all handled in industry_fsm_report, which requires Studio. We decided to separate those features in industry_fsm, industry_fsm_sale, industry_fsm_report and industry_fsm_sale_report modules.
- The rationale is that some users just need to send/sign FSM reports without needing the worksheet customization section requiring Studio (they might just need the 'Timesheets' and 'Time & Material sections in their reports').
We thus allow them to do so by not requiring the industry_fsm_report module to be able to use those features.
* The Field Service Report is composed of the following sections, each one is now handled by a different module:
- Time & Material: related to the products linked to the task, handled in industry_fsm_sale
- Timesheets: related to the timesheets linked to the task: handled in industry_fsm
- Worksheet: related to the custom worksheets created by the user (with Studio) and linked to the task, handled in industry_fsm_report
* Note that we have the following module dependencies:
```
industry_fsm
/ \
industry_fsm_sale industry_fsm_report
\ /
Industry_fsm_sale_report
```
* The Sign/Send buttons are now visible in the task form under the following conditions:
- In industry_fsm: invisible
- In industry_fsm_sale:
- Sign: Visible if the project allows 'Products on Tasks' AND (there are timesheets linked to the task OR there are products linked to the task) AND the report was not signed yet
- Visible in secondary if there are timesheets linked to the task OR there are products linked to the task
- Visible in primary if both are present
- Send: Visible if the project allows 'Products on Tasks' AND (there are timesheets linked to the task OR there are products linked to the task) AND the report was not sent yet
- Visible in secondary if there are timesheets linked to the task OR there are products linked to the task
- Visible in primary if both are present
- In industry_fsm_report:
- Sign: Visible if the project allows 'Worksheet' AND (there are timesheets linked to the task OR there are worksheets linked to the task) AND the report was not signed yet
- Visible in secondary if there are timesheets linked to the task OR there are worksheets linked to the task
- Visible in primary if both are present
- Send: Visible if the project allows 'Worksheet' AND (there are timesheets linked to the task OR there are worksheets linked to the task) AND the report was not sent yet
- Visible in secondary if there are timesheets linked to the task OR there are worksheets linked to the task
- Visible in primary if both present
- In industry_fsm_sale_report:
- Sign: Visible if (the project allows 'Worksheet' OR the project allows 'Products on Tasks') AND (there are timesheets linked to the task OR there are worksheets linked to the task OR there are products linked to the task) AND the report was not signed yet
- Visible in secondary if there are timesheets linked to the task OR there are worksheets linked to the task OR there are products linked to the task
- Visible in primary if all three are present
- Send: Visible if the (the project allows 'Worksheet' OR the project allows 'Products on Tasks') AND (there are timesheets linked to the task OR there are worksheets linked to the task OR there are products linked to the task) AND the report was not sent yet
- Visible in secondary if there are timesheets linked to the task OR there are worksheets linked to the task OR there are products linked to the task
- Visible in primary if all three are present
* The 'Customer Preview' stat button is visible if the report was signed or sent.
* In portal view of an FSM task, the button 'View details' is visible under those conditions:
- In industry_fsm: visible if there is at least one timesheet linked to the task
- In industry_fsm_sale: visible if there is at least one product linked to the task
- In industry_fsm_report: visible if there is at least one worksheet linked to the task
- In industry_fsm_sale_report: visible if there is at least one of them
* The onboarding tours have been updated accordingly.
Task link: https://www.odoo.com/web#model=project.task&id=3856383
related-https://github.com/odoo/enterprise/pull/44632
task-3856383Luxembourg payroll has been corrected and expanded to better support real payroll operations. The update adds missing payroll rules, fields, reports, and supporting data so companies can calculate Luxembourg payroll more reliably.
Original PR description
The current localisation has some errors in it and also need a lot of improvements to be considered functional. This aims to fix the previous issues and add the necessary fields, rules and reports needed for a functional localisation. Task: 4063107
The timesheet timer start and stop buttons now regain focus when appropriate, making keyboard actions more reliable. This helps users and guided onboarding flows start or stop timers consistently without disrupting typing in input fields.
Original PR description
Before this commit when we try to get the focus off the start button and stop button and tried pressing ENTER key to start or stop the timer. It works fine as it is handled by onClick.But all key press are not taken into consideration(key strokes recorded in input or text-area fields). During the step in onboarding tour of using Stop Button we are out of focus of stop_timer button as we have clicked on input field before this step. In tour every button has events both click and Enter but the target must the source of the element(given in tour trigger). After this commit the start and stop button will be in focus when no modal is displayed or the element focused is not an input and textarea. task-3997245
The rental ecommerce product editing screen now uses the updated “tags” wording instead of the older “shop” label. This keeps the rental workflow aligned with the broader website sales interface, reducing confusion for staff managing online rental products.
Original PR description
task-4011651
Rental dates and subscription plans are now carried through product combo setup so prices, availability, and displayed durations are accurate. This improves the buying and sales experience for offers that bundle rentable or subscription products.
Original PR description
- Rental start and end dates are passed to the combo configurator and to all RPCs that need them (e.g. to compute prices and available quantities), - The rental duration is displayed in the combo configurator. - The subscription plan id is passed to the combo configurator and to all RPCs that need them (e.g. to compute prices), - The billing period is displayed in the combo configurator. Community PR: https://github.com/odoo/odoo/pull/176904 task-4114589
The timesheet Kanban view no longer shows the status field on each card. This simplifies the display so users can scan timesheet entries more easily without extra visual clutter.
Original PR description
After this commit: - remove the status from kanban view of timesheets task-3996705 COM PR: odoo/odoo#170251
The rental replenishment view now uses a time horizon setting to decide how many days are considered when calculating lead times. This helps business users get more accurate replenishment timing while keeping related automated checks aligned with the new behavior.
Original PR description
In the replenishments list view, the search panel was modified to include the horizon section which controls the visibility days used to calculate correct lead times. This commit adapts test that use the old config parameter replaced by this new horizon value. task-3924995
Barcode batch transfer cards now show the description field, giving warehouse teams more context directly in the kanban view. This helps users identify and prioritize batch or wave transfers without opening each record.
Original PR description
The description field added in odoo/odoo#157869 is added to the barcode batch transfers kanban view. Task-3724421
Users can now include address details when using quick search for contacts on the map. This makes it easier to find the right contact or location when only address information is known.
Original PR description
Allow users to search contacts based on their address. Task-4187833
US payslips now include a dedicated section showing time off accrual earned, used, and remaining for the current pay period. This helps employers meet US payroll disclosure requirements and gives employees clearer visibility into their leave balances.
Original PR description
For the US, it is mandatory to have the accrual gains, usage and balance on the payslip. This adds a new table with the information for the current period. Task: 3993175
The accounting lock date wizard now shows the effective exception dates that apply to a user or to everyone, making it easier to understand which lock date is active. Exceptions are handled one lock date at a time, so they can be reviewed and revoked more precisely.
Original PR description
### commit messages #### [IMP] account: single lock date per exception We want to create 1 exception per lock date change (and not bundle multiple lock date changes in a single exception). This i.e.…
### commit messages #### [IMP] account: single lock date per exception We want to create 1 exception per lock date change (and not bundle multiple lock date changes in a single exception). This i.e. allows for more granularity when revoking exceptions. In the related community PR we changed the lock date exception model. The change to the model also allows us to (easily) remove a lock date with an exception (and not just decrease it). This commit adapts the Lock Dates Wizard to the changes #### [IMP] account: improve exception auditing A function was moved from the lock dates wizard in enterprise to the lock exception model in community. See the commit with the same title on the related community PR. #### [IMP] account_accountant: display exceptions on lock date wizard Previously we only showed the company lock date on the wizard (and a button to remove the most permissive exception in case one exists). This has some usability issues: 1) The user does not know the effective lock date (after exceptions) that applies to him 2) It can happen that nothing visibly changes when the user clicks on the "Revoke" button (in case there is another exception) After this commit we display the most permissive exception date for me and everyone (due to exceptions) if they exist (respectively) after the company lock date. For each exception there is a dedicated "Revoke" button. This fixes the aforementioned issues 1) The most permissive exception date(s) are visible directly on the wizard 2) After revoking the date will change (except if there are 2 exceptions for the same date) ### task info task-3891414 (related; lock dates rework) community PR: https://github.com/odoo/odoo/pull/180064
OSS tax reports can now use their own reporting period instead of relying on the general tax report settings, making cross-border VAT reporting more accurate. Tax closing behavior is also improved so locked company dates do not block needed entries and existing closing entries are not overwritten.
Original PR description
OSS reports may need a different periodicity than the one configured in the tax report. Another periodicity specifically for the OSS report must be present when the module is installed so that the closing can get the periodicity related to the report. This also includes a way to compute the tax closing for the OSS report as there were no tax closing for these upgrade: https://github.com/odoo/upgrade/pull/6390 task-4110459
The social app and related social channel integrations now use simpler, more consistent kanban card layouts. This makes the underlying screens easier to maintain while preserving the same day-to-day user experience.
Original PR description
\* = [social_facebook, social_crm, social_instagram, social_sale, social_twitter, social_youtube] In this commit we have simplified the kanban arch for the social and its related modules. The goal is to simplify them, make them easier to read, and use bootstrap utility classnames. - Previously, we used `kanban-box`, but now we are using `kanban-card` instead. - Deprecated `oe_kanban_global_click` and `oe_kanban_global_click_edit`. - More use of `<field/>` tags - Removed the `oe_kanban_colorpicker` class and replaced it with the `kanban_color_picker` widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - `kanban_image` from rendering context, is deprecated so we use `<field name=... widget=image/>` instead Task-3992107
The manufacturing maintenance kanban views were cleaned up to use newer layout standards and simpler building blocks. This makes the screens easier to maintain while preserving the existing user experience for maintenance teams.
Original PR description
In this commit we have simplified the kanban arch for the mrp_maintenance module. The goal is to simplify them, make them easier to read, and use bootstrap utility classnames. - Previously, we used `kanban-box`, but now we are using `kanban-card` instead. - Deprecated `oe_kanban_global_click` and `oe_kanban_global_click_edit`. - More use of `<field/>` tags - Removed the `oe_kanban_colorpicker` class and replaced it with the `kanban_color_picker` widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - `kanban_image` from rendering context, is deprecated so we use `<field name=... widget=image/>` instead Task-3992107
Quality teams can now access all quality spreadsheet templates from a dedicated menu in the Quality app configuration. This makes it easier to review existing templates and create new ones in one place, while related internal spreadsheet handling was streamlined.
Original PR description
This commit adds a menu in the Quality app configuration with all quality spreadsheet templates. It also allows to create new templates from there.
The push notification visitor views were simplified to use newer, standard kanban layout patterns. This makes the screens easier to maintain and helps keep the user interface consistent with current Odoo behavior.
Original PR description
In this commit we have simplified the kanban arch for the website and their related modules.the goal is to simplify them, make them easier to read and use bootstrap utility classnames. - Previously, we used kanban-box, but now we are using kanban-card instead. - Deprecated oe_kanban_global_click and oe_kanban_global_click_edit. - More use of `<field/>` tags - Removed the oe_kanban_colorpicker class and replaced it with the kanban_color_picker widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - kanban_image from rendering context, is deprecated so we use <field name="..." widget="image"/> instead - kanban_color, kanban_getcolor and kanban_getcolorname are deprecated use new attribute highlight_color="color_field_name" on root node Task-3992107
The German point-of-sale certification dashboard has been cleaned up to use newer interface building blocks. This makes the screen easier to maintain and helps keep the dashboard aligned with current Odoo design standards, with little expected change for day-to-day users.
Original PR description
In this commit we have simplified the kanban arch for the point_of_sale module dashboard. the goal is to simplify them, make them easier to read and use bootstrap utility classnames. - Previously, we used kanban-box, but now we are using kanban-card instead. - Deprecated oe_kanban_global_click and oe_kanban_global_click_edit. - More use of `<field/>` tags - Removed the oe_kanban_colorpicker class and replaced it with the kanban_color_picker widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - kanban_image from rendering context, is deprecated so we use `<field name=... widget=image/>` instead - kanban_color, kanban_getcolor and kanban_getcolorname are deprecated use new attribute highlight_color=color_field_name on root node Task-3992107
The Frontdesk dashboard layout was simplified to use newer, standard interface building blocks. This should make the dashboard easier to maintain while keeping the user experience consistent with modern Odoo behavior.
Original PR description
In this commit we have simplified the kanban arch for the frontedsk module dashboard. The goal is to simplify them, make them easier to read and use bootstrap utility classnames. - Previously, we used kanban-box, but now we are using kanban-card instead. - Deprecated oe_kanban_global_click and oe_kanban_global_click_edit. - More use of <field/> tags - Removed the oe_kanban_colorpicker class and replaced it with the kanban_color_picker widget. - Changed type='edit' to type='open' to open records. since version 16, records always open in edit mode by default. - kanban_image from rendering context, is deprecated so we use <field name=... widget=image/> instead - kanban_color, kanban_getcolor and kanban_getcolorname are deprecated use new attribute highlight_color=color_field_name on root node Task-3992107
Asset records now use one shared company fiscal country field instead of separate versions for Indian and Romanian reporting. This reduces duplication and makes the information available consistently for other local reporting needs.
Resolved issues and error corrections
Mexican electronic payment cancellation now lets users choose the cancellation reason directly from the payment or invoice flow. This fixes cases where a payment must be cancelled and replaced, helping businesses comply with CFDI rules while recording the replacement payment reference.
Original PR description
Add a wizard to choose the cancellation reason on the payment view and add a new cancellation reason. As before only the "02" was supported, now the "01" is supported too, with the possibility to add the new payment which replace the one you cancel. linked:https://github.com/odoo/odoo/pull/175015 task-3894308
The accounting dashboard no longer shows separate expense-related warnings that duplicate information already covered by vendor bill alerts. Bill payment counts are also corrected so items ready or excepted for payment appear as bills to pay, while overdue items appear as late bills.
Original PR description
This commit remove the warnings we have on the accounting dashboard, as the journals entries are already included in the vendor bills warnings. task:3877069 odoo : https://github.com/odoo/odoo/pull/169820 upgrade : https://github.com/odoo/upgrade/pull/6283
The rental eCommerce pages were updated to stay aligned with recent website shop layout changes. This helps prevent display or configuration issues when rental products appear in the online shop.
Original PR description
Follow the changes made in community which introduced the `shop_grid_header` template. task-3986938 part of task-3986921 Community PR: https://github.com/odoo/odoo/pull/177034
This fixes cases where the editor could save an incorrect text selection while background page changes were still being processed. It helps prevent future undo or editing issues when opening overlays, using the table picker, or pressing Enter/space in edited content.
Original PR description
Before this commit, stageSelection could update the currentStep selection with mutations (‘add’, ‘remove’ and ‘characterData’) in progress. We should not have this type of mutations in the currentStep before staging the selection or the selection could be wrong when reverting that step in the future. When staging the selection, we shouldn't have any ‘attributes’ mutations either. Unfortunately, this is too common at the moment, so we've chosen to ignore them in this commit as they should not generate bugs. Before this commit, 3 related bugs have been found: 1) When an overlay was opened 2) When the table picker was opened (a temporary node was added for technical reasons). 3) When you press ‘enter’ or ‘ ’, the code call `normalise` without `ADD_STEP`. Our solution is to move this code so that it takes place at beforeInput and the mutations are added in the ‘enter’ or ‘ ’ step.
This fix prevents payment details from being edited after a point-of-sale order has been printed. It helps keep printed receipts and registered sales records consistent for Belgian blackbox and Swedish POS localization workflows.
Original PR description
Before this commit, it was possible to edit the payment lines of a printed order. This commit disables the editing of payment lines for printed orders. taskId: 4178904
This change prevents an error that appeared when activating test asset debugging with the Colombian electronic invoicing website sales module installed. It removes an unsupported setting so the debugging mode can be enabled normally, improving reliability for testing and development workflows.
Original PR description
version: ----------- - master Steps to reproduce: --------------------------- - Install module l10n_co_edi_website_sale - Enable debug mode. - Click on Activate tests assets debugging. Issue: --------- - A traceback occurs when activating test assets debugging. Cause: --------- - The error occurs because the system does not recognize the stepDelay key. Solution: ------------ - the fix is to remove the stepDelay key from the tour setup to prevent the error. task-3628329
This fix restores intended customizations on the point of sale login screen and receipt header by correcting where the system applies them. It helps ensure employees and customers see the right branded and operational information in affected point of sale flows.
Original PR description
The login screen overrides were not working as expected. This commit fixes the issue by updating the file paths. Also, override target wasn't set correctly. This commit fixes the override target for the receipt_header.xml file.
Restaurant point-of-sale orders created while offline are now sent to the server when the connection returns. The update also prevents an error when staff access appointment bookings from the point of sale, improving reliability during daily operations.
Original PR description
Before orders created when offline were not synced to the server when the POS was back online. Also creating a fix for pos_restaurant_appointment. Traceback was raised when trying to access booking from PoS
Miscellaneous changes
Open a partner contact Go to Accounting tab Try to set 'DateV Vendor' field Issue: Traceback will raise ''' psycopg2.errors.UndefinedColumn: column "l10n_de_datev_identifier" does not exist LINE 3: WHERE l10n_de_datev_identifier != 0 ''' This occurs because l10n_de_datev_identifier is set as comapny_dependant, so its value isn't stored on the model table, but it is registered as `ir.property`. opw-4163804 Forward-Port-Of: odoo/enterprise#69900
Original PR description
Open a partner contact Go to Accounting tab Try to set 'DateV Vendor' field Issue: Traceback will raise ''' psycopg2.errors.UndefinedColumn: column "l10n_de_datev_identifier" does not exist LINE 3: WHERE l10n_de_datev_identifier != 0 ''' This occurs because l10n_de_datev_identifier is set as comapny_dependant, so its value isn't stored on the model table, but it is registered as `ir.property`. opw-4163804 Forward-Port-Of: odoo/enterprise#69900
[This commit] added in a new Carta Porte 3.0 PDF for Mexico in version saas-17.3 that inherits from the standard delivery slip, by removing all the tables related to the products etc. (for security reasons: the driver doesn't need to know what's in the cargo) and adding in some new required fields. This commit backports the report from saas-17.3 with the following changes: - We improved the layout a bit to make the report even clearer. - We corrected the "Num Reg ID Trib" and "Residencia Fi
Original PR description
[This commit] added in a new Carta Porte 3.0 PDF for Mexico in version saas-17.3 that inherits from the standard delivery slip, by removing all the tables related to the products etc. (for security reasons: the driver doesn't need to know what's in the cargo) and adding in some new required fields. This commit backports the report from saas-17.3 with the following changes: - We improved the layout a bit to make the report even clearer. - We corrected the "Num Reg ID Trib" and "Residencia Fiscal" of the "Figura"'s to use the right value and show them per figura. - We corrected the departure and arrival date (they were swapped). These changes will be forward-ported again to the upper versions. [This commit]: https://github.com/odoo/enterprise/commit/af14612ec5942acdc06584ec8ff9d8bf26998ae7 task-3990042 Forward-Port-Of: odoo/enterprise#69853 Forward-Port-Of: odoo/enterprise#65337
With a CO Company setup with missing VAT (NIT) number Have a partner with missing Country Create an invoice to the partner Confirm, Send&Print with option 'DIAN' checked Issue: The system will raise a traceback for each one of the missing info. We need to safely provide a fallback and then generate the corresponding error message so that user may take action opw-4148661 Forward-Port-Of: odoo/enterprise#69937
Original PR description
With a CO Company setup with missing VAT (NIT) number Have a partner with missing Country Create an invoice to the partner Confirm, Send&Print with option 'DIAN' checked Issue: The system will raise a traceback for each one of the missing info. We need to safely provide a fallback and then generate the corresponding error message so that user may take action opw-4148661 Forward-Port-Of: odoo/enterprise#69937
When making an order paid with customer account, the total due of the customer where not updated correctly until the session is closed. Steps to reproduce: ------------------- * Make sure pos_settle_due module is installed * Open PoS make an order and pay with customer account and Customer A * Open Customer list > Observation: Check the total due of Customer A, it's still 0 Why the fix: ------------ When computing the total due we take into account the pos orders that are still in a
Original PR description
When making an order paid with customer account, the total due of the customer where not updated correctly until the session is closed. Steps to reproduce: ------------------- * Make sure pos_settle_due module is installed * Open PoS make an order and pay with customer account and Customer A * Open Customer list > Observation: Check the total due of Customer A, it's still 0 Why the fix: ------------ When computing the total due we take into account the pos orders that are still in an open session opw-4094546 Forward-Port-Of: odoo/enterprise#69754 Forward-Port-Of: odoo/enterprise#69080
Steps ----- On runbot: 1. Enable Time Billing for a Helpdesk team. 2. Create a ticket for Deco Addict. 3. Remove the "Sales Order Item". 4. Try to search a "Sales Order Item". ** No results appear ** Change ----- Correct domain, `commercial_partner_id` needs to be unquoted or it will be interpreted as a string. opw-4177705 Forward-Port-Of: odoo/enterprise#69950
Original PR description
Steps ----- On runbot: 1. Enable Time Billing for a Helpdesk team. 2. Create a ticket for Deco Addict. 3. Remove the "Sales Order Item". 4. Try to search a "Sales Order Item". ** No results appear ** Change ----- Correct domain, `commercial_partner_id` needs to be unquoted or it will be interpreted as a string. opw-4177705 Forward-Port-Of: odoo/enterprise#69950
Before this commit: - In the project update, budgets in the 'Confirmed', 'Revised' and 'Done' state are visible in the project update panel. After this commit: - In the project update, only budgets in the 'Confirmed' or 'Done' state are visible in the project update panel. Task-4180079 Forward-Port-Of: odoo/enterprise#70020
Original PR description
Before this commit: - In the project update, budgets in the 'Confirmed', 'Revised' and 'Done' state are visible in the project update panel. After this commit: - In the project update, only budgets in the 'Confirmed' or 'Done' state are visible in the project update panel. Task-4180079 Forward-Port-Of: odoo/enterprise#70020
This commit is checking that we have a value before checking it with the today's date. no task id Forward-Port-Of: odoo/enterprise#70103
Original PR description
This commit is checking that we have a value before checking it with the today's date. no task id Forward-Port-Of: odoo/enterprise#70103
Problem: Auto-vacuum is incorrectly archiving reformatted spreadsheet documents that were generated from unsupported file uploads. Specifically, when an .xlsx file is uploaded, Odoo creates a new, compatible spreadsheet document. However, this newly generated document is mistakenly deleted during the auto-vacuum process if it is older than 24 hours. Purpose: Add a domain to prevent Odoo created spreadsheets from uploads being caught by autocron vacuum from improvement to 17.0 last year S
Original PR description
Problem: Auto-vacuum is incorrectly archiving reformatted spreadsheet documents that were generated from unsupported file uploads. Specifically, when an .xlsx file is uploaded, Odoo creates a new, compatible spreadsheet document. However, this newly generated document is mistakenly deleted during the auto-vacuum process if it is older than 24 hours. Purpose: Add a domain to prevent Odoo created spreadsheets from uploads being caught by autocron vacuum from improvement to 17.0 last year Steps to reproduce bug: 1.) Upload an xlsx file 2.) Click on the xlsx file 3.) It will generate an Odoo file of the same type 4.) Set the date of the new file to older than 24 hours 5.) The formatted file will be deleted when the autocron hits opw-4087851 Forward-Port-Of: odoo/enterprise#68581
## Description: Previously, attempting to reinsert a pivot with an invalid range resulted in a traceback error. This commit resolves the issue by hiding the menu item when the specified pivot range is invalid. Task: [4137926](https://www.odoo.com/odoo/project/2328/tasks/4137926) Forward-Port-Of: odoo/enterprise#69838
Original PR description
## Description: Previously, attempting to reinsert a pivot with an invalid range resulted in a traceback error. This commit resolves the issue by hiding the menu item when the specified pivot range is invalid. Task: [4137926](https://www.odoo.com/odoo/project/2328/tasks/4137926) Forward-Port-Of: odoo/enterprise#69838
Before this commit, the is_zero attribute was not recomputed correctly when updating the columns. task: 4188758 Forward-Port-Of: odoo/enterprise#70097
Original PR description
Before this commit, the is_zero attribute was not recomputed correctly when updating the columns. task: 4188758 Forward-Port-Of: odoo/enterprise#70097
Currently, an error occurs when enabling 'Email Alias' in the helpdesk team and helpdesk team name is not available. Step to produce: - Install the 'helpdesk' module. - Navigate to Helpdesk / Configuration / Helpdesk Teams. - Open any record remove a name and disable 'Email Alias'. - Then enable 'Email Alias'. ```AttributeError: 'bool' object has no attribute 'replace'``` An error occurs when the system tries to replace a helpdesk team name at [1] but it is not available. Link
Original PR description
Currently, an error occurs when enabling 'Email Alias' in the helpdesk team and helpdesk team name is not available. Step to produce: - Install the 'helpdesk' module. - Navigate to Helpdesk / Configuration / Helpdesk Teams. - Open any record remove a name and disable 'Email Alias'. - Then enable 'Email Alias'. ```AttributeError: 'bool' object has no attribute 'replace'``` An error occurs when the system tries to replace a helpdesk team name at [1] but it is not available. Link [1]: https://github.com/odoo/enterprise/blob/f9b1be600825651c9a893920d7532b9b95e3dc02/helpdesk/models/helpdesk_team.py#L574 To resolve the issue, add a condition that calls the '_alias_get_creation_values' method if the helpdesk team name is available. Sentry-5831429098 Forward-Port-Of: odoo/enterprise#69921
When the customer creates a helpdesk ticket and the user of helpdesk team is deleted, a traceback will appear. Steps to reproduce the error: - Go to Settings > Users & Companies > Users > Create a user - Go to Helpdesk > Configuration > Helpdesk Teams > Open Team A Select Assignment Method: Random > Select that user in the members > Save - Delete that user - Go to Helpdesk > All Tickets > Create a ticket > Select Team A Traceback: ``` IndexError: list index out of range File "
Original PR description
When the customer creates a helpdesk ticket and the user of helpdesk team is deleted, a traceback will appear. Steps to reproduce the error: - Go to Settings > Users & Companies > Users > Create a…
When the customer creates a helpdesk ticket and
the user of helpdesk team is deleted, a traceback will appear.
Steps to reproduce the error:
- Go to Settings > Users & Companies > Users > Create a user
- Go to Helpdesk > Configuration > Helpdesk Teams > Open Team A
Select Assignment Method: Random > Select that user in the members > Save
- Delete that user
- Go to Helpdesk > All Tickets > Create a ticket > Select Team A
Traceback:
```
IndexError: list index out of range
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 "addons/web/models/models.py", line 866, in onchange
defaults = self.default_get(missing_names)
File "home/odoo/src/enterprise/saas-17.2/helpdesk/models/helpdesk_ticket.py", line 40, in default_get
result['user_id'] = team._determine_user_to_assign()[team.id].id
File "home/odoo/src/enterprise/saas-17.2/helpdesk/models/helpdesk_team.py", line 959, in _determine_user_to_assign
result[team.id] = self.env['res.users'].browse(member_ids[index])
```
https://github.com/odoo/enterprise/blob/947b6ab9447aa069fd5edd150c932d9a0884a3cb/helpdesk/models/helpdesk.py#L502 When the related user is deleted, "member_ids" will be an empty list.
so when it tries to access the index of "member_ids",
it will lead to the above traceback.
behavior after the commit:
It will ensure that at least one user is selected in "member_ids".
sentry-5630888721
Forward-Port-Of: odoo/enterprise#70085
Forward-Port-Of: odoo/enterprise#67240Purpose ======= Fix the inactive records fetching in the gantt view. Specification ============= When fetching the records to display in the gantt view from their ids, we don't specify if the inactive records need to be included in the search. This is an issue as further down the execution flow, the '_where_calc' method by default excludes inactive records except if they are explicitly asked for. => This means that filtering on inactive records doesn't display any records. Fixing that
Original PR description
Purpose ======= Fix the inactive records fetching in the gantt view. Specification ============= When fetching the records to display in the gantt view from their ids, we don't specify if the inactive records need to be included in the search. This is an issue as further down the execution flow, the '_where_calc' method by default excludes inactive records except if they are explicitly asked for. => This means that filtering on inactive records doesn't display any records. Fixing that by setting the 'active_test' key in the context to 'False' to be sure we search records with these ids both in active and inactive records. Related commit: 836909419893b522890776d3ec2f16476ae21108 Forward-Port-Of: odoo/enterprise#70100 Forward-Port-Of: odoo/enterprise#70032
Before this commit: - When the achieved amount exceeds the budgeted amount, it is displayed in red. This indicates an over-budget status, which is misleading for `revenue` and `both` budget types where exceeding the budget is actually a positive sign. After this commit: - When the achieved amount exceeds the budgeted amount, the red color will be applied only to the expense budget. Task-4167662 Forward-Port-Of: odoo/enterprise#69699
Original PR description
Before this commit: - When the achieved amount exceeds the budgeted amount, it is displayed in red. This indicates an over-budget status, which is misleading for `revenue` and `both` budget types where exceeding the budget is actually a positive sign. After this commit: - When the achieved amount exceeds the budgeted amount, the red color will be applied only to the expense budget. Task-4167662 Forward-Port-Of: odoo/enterprise#69699
As we replaced the individual config files by a single `odoo.conf`, we need to adapt the code to keep compatibility between updated and non-updated IoT Boxes. As we did not update this one in the migration method from [this PR](https://github.com/odoo/odoo/pull/173866), we have to try both old and new methods to get the config value. opw-4183138 Forward-Port-Of: odoo/enterprise#70033
Original PR description
As we replaced the individual config files by a single `odoo.conf`, we need to adapt the code to keep compatibility between updated and non-updated IoT Boxes. As we did not update this one in the migration method from [this PR](https://github.com/odoo/odoo/pull/173866), we have to try both old and new methods to get the config value. opw-4183138 Forward-Port-Of: odoo/enterprise#70033
6 changes
Enhancements to existing features
This update adds a new table to US payslips that displays accrual hours information including gains, usage, and current balance for each pay period. This change ensures compliance with US payroll regulations that require accrual details to be visible on employee payslips.
Original PR description
For the US, it is mandatory to have the accrual gains, usage and balance on the payslip. This adds a new table with the information for the current period. Task: 3993175
Resolved issues and error corrections
Fixed an issue where the Safari browser URL bar and navigation buttons were visible when accessing the Meeting Room booking page as an installed home screen app on iOS devices. The fix adds proper mobile web app configuration to provide a cleaner, full-screen experience for users who add the room booking to their iPhone home screen.
Original PR description
Steps to reproduce (on IOS): ------------------- With Safari browser: - Install `Meeting Rooms` app - Go to Meeting Rooms -> Rooms and open any room - Copy the `Room Booking URL` and open it in a new tab - Click on the menu, then on `Add to Home Screen` - Open the room booking from the home screen Issue: ------ The URL and browser buttons are visible at the top of the screen. Solution: --------- Add the meta tags `mobile-web-app-capable` and `apple-mobile-web-app-capable` to the room template. opw-3639196
This fix ensures that when the AvaTax module is installed or when a new US company is created, the required fiscal position is automatically set up across all US companies. Previously, the fiscal position was only available in the company where the module was initially installed, causing issues for multi-company setups.
Original PR description
Since the fiscal position is added in data with the xml, the others companies than the current ones don't have it. So this commit will allow: - When installing the Avatax modules, create the fiscal position in all US companies at the same time - When creating a new US company with the Avatax module installed, setup the fiscal position in the new company at the same time task: 4100725
This update resolves an issue where timer tests were failing during single app installation builds because they incorrectly required the timesheet_grid module to be installed. The fix reorganizes tests by moving timesheet-related timer tests to the timesheet_grid module while keeping core timer tests in the timer module, ensuring each module can be tested independently.
Original PR description
Backport of parts of https://github.com/odoo/enterprise/pull/60147/commits/976158bca652bc21765306ff5366a73e8982853b commit. When running Timer tests for single app install nightly builds, we were getting error, as timer tests needed timesheet_greed to be installed.  This pr is solving this issue by moving the test in timesheet_grid, and creating additional tests in timer module.
Fixed an issue in the Planning module where clicking on shift option labels (like "This and Following Shifts") did not properly select the corresponding radio button. This improves the user experience when managing recurring shifts by ensuring labels are properly linked to their radio buttons.
Original PR description
Reproduce Steps: ---------- 1. Install the Planning module. 2. Navigate to My Planning. 3. Open the Repeat Shift section. 4. Click the Delete button. 5. Click on a radio button label, such as 'This and Following Shifts'. Fixed an issue where clicking the shift option labels did not select the corresponding value. The problem was addressed by setting the `id` attribute on the input element and properly associating it with the label. task-3978567
This fix removes an unintended module dependency that was added to the US Payroll module. While the dependency made functional sense, it violated Odoo's stable release policy and needed to be reverted. Users can still optionally install the related address extension module if they need that functionality.
Original PR description
A new dependency has been introduced by mistake. Even if it still makes sense from a functional point of view, this modification wasn't respecting our stable policy and thus should be reverted. Error introduced at https://github.com/odoo/enterprise/pull/63481