Daily updates from Odoo
Tuesday, July 2, 2024
26 changes · master
New functionality added to Odoo
Spreadsheet users can now use area charts, which show line chart trends with the space below the line filled in. Line charts inserted from graph views now appear as area charts in spreadsheets, making reporting visuals more consistent across Odoo.
Original PR description
This commit adds the area charts subtype for odoo charts. Those are line charts with the area filled below the line. From the graph view, line charts are inserted as Area charts to be consitent between the graph view and the spreadsheet. Task: [3981124](https://www.odoo.com/web#id=3981124&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
Enhancements to existing features
The appraisal module now presents appraisal records in a clearer, more actionable way by keeping key dates stable, prioritizing upcoming appraisals, and applying a default To Do view. Date displays and overdue indicators are also clearer, helping HR teams focus on appraisals that need attention without confusion from completed or cancelled items.
Original PR description
This commit introduces several improvements: - The Appraisal Date is no longer automatically rewritten upon changing the state to Cancel or Done. - The order of appraisals in the list view is adjusted to show those with the appraisal date closest to the current date at the top. - A "To Do" filter is now added by default to the list view. - The appraisal date color coding is refined. Dates are only displayed in red if they are before today and if the appraisal's state is neither Cancel nor Done. - Both the final Interview and appraisal date columns in the list view will display dates in absolute terms instead relative dates. Task-3777667
Swiss payroll functionality has been consolidated into the main Swiss payroll module, making related payroll and insurance reporting easier to maintain. Salary attachment handling was also moved into the core payroll area, improving consistency for payroll teams managing deductions and wage-related records.
The working schedules list now includes a Company Full Time column, which can help users compare schedules against the company standard. The column is hidden by default, so existing views remain uncluttered unless users choose to display it.
Original PR description
added company full time column on working schedules list view. hidden by default task-3954222
Website helpdesk forms now avoid adding the same customer-provided details twice when the ticket description already captures them. This keeps the ticket history clearer for support teams while preserving the information submitted by customers.
Original PR description
Before this commit, we got custom code to add custom message and add additional message to the description of the ticket. This commit just log the message if the default field set on the website is the description field of the ticket field since now the description field will already contain the additional information gathered by the formulae filled by a public user. task-3419255
Users handling Mexican electronic invoicing can now select the required payment method while creating or editing bank transactions in the bank reconciliation view. This helps businesses capture mandatory compliance information earlier in the accounting workflow and reduces follow-up corrections.
Original PR description
For Mexico, the payment way has to be declared. This commit adds the ability to choose that value when creating/editing bank transactions in the bank reconciliation view. Task [link](https://www.odoo.com/web#model=project.task&id=3874278) task-3874278
The product configurator is now available on the website storefront for rental and subscription products, using the newer interface already adopted in the backend. It also keeps rental durations and subscription billing periods consistent between the main product and optional add-ons, making checkout choices clearer and less error-prone.
Original PR description
This change adapts the backend product configurator (which has been recently migrated to Owl [1]) to make it usable in the frontend as well, and uses it in the frontend. This change also adds support for rentals and subscriptions in the product configurator, both in the backend and the frontend (e.g. it displays the rental duration/billing period and ensures the main and optional products use the same rental duration/billing period). [1] https://github.com/odoo/odoo/pull/106511 Community PR: https://github.com/odoo/odoo/pull/153779 Upgrade PR: https://github.com/odoo/upgrade/pull/5896 task-3572125
Planning progress messages now more clearly explain whether an employee is unavailable because they are on leave or because their contract has expired. This helps managers understand scheduling issues faster and make better staffing decisions.
Original PR description
This PR enhances the accuracy of progress bar message because in the current flow the message was not clear about employee's status but now after this commit it is been clear either employee is on leave or its contract has been expired. task-3609539
This update adjusts field service report testing and related views to reflect a newer rule that private tasks cannot have parent tasks. It helps keep the module compatible with recent project task validation changes and reduces the risk of test failures during upgrades.
Original PR description
This PR just adapt test to the constraint that has been added in related pr. Namely: "project_task_private_task_has_no_parent". related: https://github.com/odoo/odoo/pull/131015 task-3450270
Odoo Studio now supports showing and editing documented widget options and attributes directly from the sidebar. This makes form customization more consistent and easier for users, while also tidying shared sidebar property components and improving subtitle sizing.
Original PR description
This commit is part of the improvements allowing to edit some widgets directly in the Sidebar, as well as fields were already available. Now, following commit (1), it is possible to add documentation to supportedOptions and attributes on widget components. This is directly used to display the options accordingly in the Sidebar. (1): https://github.com/odoo/odoo/commit/097f6c8709e4cbecf8d08e3683225b76fde97f8f
Spreadsheet pivots are now inserted using dynamic formulas instead of static grid content. This helps users refresh or adjust pivot data more safely and reduces unexpected errors caused by editing fixed pivot outputs.
Original PR description
This revision completely changes the insertion process of pivots inside a spreadsheet. The pivots will now be inserted in the grid with their dynamic formula. This will prevent people from editing static pivots and getting errors out of the blue. task-3947821
Code cleanup and technical improvements
This update simplifies the internal setup used for guided test tours by removing an extra condition field. It helps make future maintenance of these tests easier while keeping expected business behavior unchanged.
Original PR description
In order to simplify the tours API, it was decided to remove the extra_trigger key from the steps. To check that an element is in the DOM, simply create a step with a trigger. task~3974087 https://github.com/odoo/odoo/pull/171555
The spreadsheet documents area has had its automated tests moved to a newer testing framework. This is an internal quality update that helps maintain reliability without changing day-to-day user features.
Original PR description
Task: [4011327](https://www.odoo.com/odoo/2328/tasks/4011327?cids=1)
This update removes an obsolete width setting from several guided tour definitions. It does not change the customer-facing tour behavior, but keeps the codebase simpler and easier to maintain.
Original PR description
In this commit, we remove "width" attribute to step definition because it's no longer used in codebase. task~3974087 https://github.com/odoo/odoo/pull/171386
Miscellaneous changes
When printing an invoice including a fixed tax, we don't want the base amount to be displayed after said tax, since the fixed computation doesn't take into account said amount. Added a check to differentiate fixed taxes from other and adapt display accordingly. see https://github.com/odoo/odoo/pull/168638 task-3964942 Forward-Port-Of: odoo/enterprise#65812 Forward-Port-Of: odoo/enterprise#65385
Original PR description
When printing an invoice including a fixed tax, we don't want the base amount to be displayed after said tax, since the fixed computation doesn't take into account said amount. Added a check to differentiate fixed taxes from other and adapt display accordingly. see https://github.com/odoo/odoo/pull/168638 task-3964942 Forward-Port-Of: odoo/enterprise#65812 Forward-Port-Of: odoo/enterprise#65385
Versions: ------------ saas-17.1 Steps to reproduce: ------------------- 1. Go to the Sign module. 2. Switch to mobile view in the Sign template. 3. Click on a record; it won't open. Issue: ------- Sign template records do not open in mobile view. Cause: ------ During old static declaration refactor PR: https://github.com/odoo/odoo/pull/142276 they forget to adapt Sign kanban renderer part which is why SignKanbanRecord does not call from SignKanbanRenderer. Solution: ---
Original PR description
Versions: ------------ saas-17.1 Steps to reproduce: ------------------- 1. Go to the Sign module. 2. Switch to mobile view in the Sign template. 3. Click on a record; it won't open. Issue: ------- Sign template records do not open in mobile view. Cause: ------ During old static declaration refactor PR: https://github.com/odoo/odoo/pull/142276 they forget to adapt Sign kanban renderer part which is why SignKanbanRecord does not call from SignKanbanRenderer. Solution: --------- Remove SignKanbanRecord which contains logic for not letting open record in mobile view. task-3978310 Forward-Port-Of: odoo/enterprise#64159
Avoid to check calendar for each record. Follows the logic of the community PR: https://github.com/odoo/odoo/pull/167310 Forward-Port-Of: odoo/enterprise#65770 Forward-Port-Of: odoo/enterprise#65417
Original PR description
Avoid to check calendar for each record. Follows the logic of the community PR: https://github.com/odoo/odoo/pull/167310 Forward-Port-Of: odoo/enterprise#65770 Forward-Port-Of: odoo/enterprise#65417
In gantt, if there are no allowed companies none of the resources will have their unavailabilities filled in. Resources not linked to any company should still have their unavailabilities filled in. task-3981513 Forward-Port-Of: odoo/enterprise#65760 Forward-Port-Of: odoo/enterprise#64254
Original PR description
In gantt, if there are no allowed companies none of the resources will have their unavailabilities filled in. Resources not linked to any company should still have their unavailabilities filled in. task-3981513 Forward-Port-Of: odoo/enterprise#65760 Forward-Port-Of: odoo/enterprise#64254
When creating an invoice for a sales containing a recurring product, if the user doesn't have access to PoS you will have an access errorr Steps to reproduce: ------------------- * Remove PoS right from Marc Demo * Create a recurring product * Connect as Marc Demo * Create a sale with the recurring product * Try to invoice the sale > Observation: You get an access error opw-4010753 Forward-Port-Of: odoo/enterprise#65406
Original PR description
When creating an invoice for a sales containing a recurring product, if the user doesn't have access to PoS you will have an access errorr Steps to reproduce: ------------------- * Remove PoS right from Marc Demo * Create a recurring product * Connect as Marc Demo * Create a sale with the recurring product * Try to invoice the sale > Observation: You get an access error opw-4010753 Forward-Port-Of: odoo/enterprise#65406
When a contact is created with an RFC (VAT number) but no country configured, signing an invoice for that contact results in the invoice being signed correctly. However, the PDF shows the partner's RFC, while the XML file shows the generic RFC (XAXX01010101). This discrepancy misleads users into believing their setup is correct, as no error or alert is provided. This commit introduces a non-blocking warning message in the 'Send and Print' wizard for cases where the contact's country is missin
Original PR description
When a contact is created with an RFC (VAT number) but no country configured, signing an invoice for that contact results in the invoice being signed correctly. However, the PDF shows the partner's RFC, while the XML file shows the generic RFC (XAXX01010101). This discrepancy misleads users into believing their setup is correct, as no error or alert is provided. This commit introduces a non-blocking warning message in the 'Send and Print' wizard for cases where the contact's country is missing. opw-3891896 Forward-Port-Of: odoo/enterprise#63255
This commit fixes an issue withthe embedded views inside the columns block in the editor. The embedded views were overlapping the columns on their right meaning that some text could be hidden behind them. To fix this a new rule is added to these blocks so that when they are inside a column block that is not the last one we remove the negative margin-right. This way we preserve their style when inside the right-most column. task-3901864 Forward-Port-Of: odoo/enterprise#63480
Original PR description
This commit fixes an issue withthe embedded views inside the columns block in the editor. The embedded views were overlapping the columns on their right meaning that some text could be hidden behind them. To fix this a new rule is added to these blocks so that when they are inside a column block that is not the last one we remove the negative margin-right. This way we preserve their style when inside the right-most column. task-3901864 Forward-Port-Of: odoo/enterprise#63480
When a document has an attachment, the export done through the general ledger and "Datev + ATCH (zip)" should have a column filled with the guid of the document, which is not the case currently. To solve it, use the helper to get the attachments opw-3984450 Forward-Port-Of: odoo/enterprise#65756
Original PR description
When a document has an attachment, the export done through the general ledger and "Datev + ATCH (zip)" should have a column filled with the guid of the document, which is not the case currently. To solve it, use the helper to get the attachments opw-3984450 Forward-Port-Of: odoo/enterprise#65756
[FIX] sale_subscription: prevent multiple in_progress orders Before this commit, it was possible to obtain several in progress orders sharing the same hierarchy by doing the folllowing steps: 1) create a recurring order, invoice it 2) create a payment link 3) renew the order, confirm the renewal quote 4) pay the payment link and post-process it. The post processing will call set_open which will reopen the renewed order. taskid: 4008453 Forward-Port-Of: odoo/enterprise#656
Original PR description
[FIX] sale_subscription: prevent multiple in_progress orders
Before this commit, it was possible to obtain several in progress orders
sharing the same hierarchy by doing the folllowing steps:
1) create a recurring order, invoice it
2) create a payment link
3) renew the order, confirm the renewal quote
4) pay the payment link and post-process it.
The post processing will call set_open which will reopen the renewed
order.
taskid: 4008453
Forward-Port-Of: odoo/enterprise#65666
Forward-Port-Of: odoo/enterprise#65386## How to reproduce: 1. Go to Documents > Settings > Change the deletion days of docs. (Optional) 2. Go to Documents > Trash #### Issue - The Deletions Days shown 'undefined'. It says: 'Items in trash will be deleted forever after undefined days.' ## After this commit: Deletions Days will be shown there even after you update them. Task-3984627 Forward-Port-Of: odoo/enterprise#64538
Original PR description
## How to reproduce: 1. Go to Documents > Settings > Change the deletion days of docs. (Optional) 2. Go to Documents > Trash #### Issue - The Deletions Days shown 'undefined'. It says: 'Items in trash will be deleted forever after undefined days.' ## After this commit: Deletions Days will be shown there even after you update them. Task-3984627 Forward-Port-Of: odoo/enterprise#64538
During upgrade `_compute_total_due` method calculate for `total_due` and `total_overdue`, with too many move lines, so raises MemoryError queries: ``` jard_1413607=> select partner_id, count(id) total_move_lines from account_move_line where partner_id is not null group by partner_id order by total_move_lines desc limit 5; partner_id | total_move_lines ------------+------------------ 1905 | 547530 1371 | 288578 1396 | 18423
Original PR description
During upgrade `_compute_total_due` method calculate for `total_due` and `total_overdue`, with too many move lines, so raises MemoryError queries: ``` jard_1413607=> select partner_id, count(id)…
During upgrade `_compute_total_due` method calculate for `total_due` and `total_overdue`,
with too many move lines, so raises MemoryError
queries:
```
jard_1413607=> select partner_id, count(id) total_move_lines from account_move_line where partner_id is not null group by partner_id order by total_move_lines desc limit 5;
partner_id | total_move_lines
------------+------------------
1905 | 547530
1371 | 288578
1396 | 18423
3223 | 10945
1244 | 6988
```
traceback:
```py
Traceback (most recent call last):
File "/tmp/tmpj_23hd3k/migrations/testing.py", line 208, in test_check
self.check(value)
File "/tmp/tmpj_23hd3k/migrations/base/tests/test_mock_crawl.py", line 151, in check
self.assertFalse(diff, msg)
AssertionError: [('account.menu_action_move_journal_line_form', 125, 'Accounting > Accounting > Journals > Journal Entries', 205), ('purchase.menu_procurement_management_supplier_name', 247, 'Purchase > Orders > Vendors', 218), ('account.menu_account_customer', 115, 'Accounting > Customers > Customers', 217), ('account.menu_action_move_out_refund_type', 111, 'Accounting > Customers > Credit Notes', 207), ('account.menu_account_supplier', 122, 'Accounting > Vendors > Vendors', 218), ('account.menu_action_move_out_invoice_type', 110, 'Accounting > Customers > Invoices', 206), ('account.menu_action_move_in_refund_type', 118, 'Accounting > Vendors > Refunds', 209), ('account.menu_action_account_moves_all', 126, 'Accounting > Accounting > Journals > Journal Items', 204), ('account.menu_action_move_in_invoice_type', 117, 'Accounting > Vendors > Bills', 208), ('sale.res_partner_menu', 179, 'Sales > Orders > Customers', 217), ('point_of_sale.menu_point_of_sale_customer', 461, 'Point of Sale > Orders > Customers', 217)] is not false : At least one menu or view working before upgrade is not working after upgrade.
('account.menu_action_move_journal_line_form', 125, 'Accounting > Accounting > Journals > Journal Entries', 205):
Traceback (most recent call last):
File "/tmp/tmpj_23hd3k/migrations/base/tests/test_mock_crawl.py", line 252, in crawl_menu
self.mock_action(action_vals)
File "/tmp/tmpj_23hd3k/migrations/base/tests/test_mock_crawl.py", line 409, in mock_action
mock_method(model, view, fields_list, domain, group_by)
File "/tmp/tmpj_23hd3k/migrations/base/tests/test_mock_crawl.py", line 438, in mock_view_form
[data] = record.read(fields_list)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3538, in read
return self._read_format(fnames=fields, load=load)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3749, in _read_format
vals[name] = convert(record[name], record, use_display_name)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6590, in __getitem__
return self._fields[key].__get__(self, self.env.registry[self._name])
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1207, in __get__
self.compute_value(recs)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1389, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/17.0/addons/base_automation/models/base_automation.py", line 745, in _compute_field_value
return _compute_field_value.origin(self, field)
File "/home/odoo/src/odoo/17.0/addons/mail/models/mail_thread.py", line 424, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4867, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 102, in determine
return needle(*args)
File "/home/odoo/src/odoo/17.0/addons/stock_landed_costs/models/account_move.py", line 19, in _compute_landed_costs_visible
account_move.landed_costs_visible = any(line.is_landed_costs_line for line in account_move.line_ids)
File "/home/odoo/src/odoo/17.0/addons/stock_landed_costs/models/account_move.py", line 19, in <genexpr>
account_move.landed_costs_visible = any(line.is_landed_costs_line for line in account_move.line_ids)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1182, in __get__
recs._fetch_field(self)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3775, in _fetch_field
self.fetch(fnames)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3825, in fetch
fetched = self._fetch_query(query, fields_to_fetch)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3930, in _fetch_query
self.env.cache.insert_missing(fetched, field, values)
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 1108, in insert_missing
field_cache.setdefault(id_, val)
MemoryError
```
Failed request: UPG-1403488
Ticket: 3797437
Forward-Port-Of: odoo/enterprise#65633
Forward-Port-Of: odoo/enterprise#60004Before this commit, the test `test_auto_plan_employee_with_break_company_no_breaks` fails because the auto plan feature will plan the open shifts to a resource generated by appointment feature since those resources are always available according to their calendar. This commit adds a role on the open shift and the employee created in that test to be sure we will just fetch the resources with the role of the open shift since the test just makes sure the resource doing night shifts with breaks i
Original PR description
Before this commit, the test `test_auto_plan_employee_with_break_company_no_breaks` fails because the auto plan feature will plan the open shifts to a resource generated by appointment feature since those resources are always available according to their calendar. This commit adds a role on the open shift and the employee created in that test to be sure we will just fetch the resources with the role of the open shift since the test just makes sure the resource doing night shifts with breaks is correctly assigned to that shift. runbot-64874 Forward-Port-Of: odoo/enterprise#65825