Daily updates from Odoo
Tuesday, December 10, 2024
20 changes · master
Enhancements to existing features
The chart configuration panel now uses clearer wording for stacked line, bar, and area chart options. This small usability improvement helps users better understand chart settings and also tightens spacing between related line chart options.
Original PR description
Change the checkbox label of stacked charts from `stacked linechart` to `stacked line chart` in the chart configuration panel. Same for bar charts. Also removed padding between `stacked` and `cumulative` checkboxes in the line chart panel. Task: [4290275](https://www.odoo.com/web#id=4290275&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
This update modernizes and improves automated checks for project planning views and timesheet leaderboard behavior. It helps ensure these business workflows remain stable and reduces the risk of regressions in future releases.
Original PR description
task-4354290
Code cleanup and technical improvements
The Studio export area was reorganized internally so future export features, including generated Python code, can be added more safely. Test coverage was also cleaned up and expanded for key export scenarios, reducing risk without changing day-to-day user behavior.
Original PR description
This refactoring is a step towards the feature to export modules that includes some generated Python code. For the record, this redesign was originally part of the task that enabled the export of master data: opw-3446301. The main change is to move the export functions inside a Python class. Task: opw-3748236
This change updates how spreadsheet filter side panels retrieve and show related record names, using a shared naming service instead of local handling. It keeps the user experience consistent while reducing duplicated maintenance work for future spreadsheet improvements.
Original PR description
Task: 4384807
This update reorganizes internal messaging data handling across several enterprise apps, making shared communication features easier to maintain and more consistent. It should reduce future development complexity without changing day-to-day user workflows.
Original PR description
\* = voip, whatsapp Enterprise counter-part. https://github.com/odoo/odoo/pull/184344
Miscellaneous changes
**Issue:** Some terms don't appear in Spanish in DIAN invoice PDF files.  **Expected:** These terms should be translated in Spanish. **Steps to reproduce:** - Activate Accounting app in a Colombian database; - Configure the DIAN credentials, client, journal and product (https://www.odoo.com/documentation/18.0/applications/finance/fiscal_localizations/colombia.html?highlight=dian); - Create a cust
Original PR description
**Issue:** Some terms don't appear in Spanish in DIAN invoice PDF files.  **Expected:** These terms should be…
**Issue:** Some terms don't appear in Spanish in DIAN invoice PDF files.  **Expected:** These terms should be translated in Spanish. **Steps to reproduce:** - Activate Accounting app in a Colombian database; - Configure the DIAN credentials, client, journal and product (https://www.odoo.com/documentation/18.0/applications/finance/fiscal_localizations/colombia.html?highlight=dian); - Create a customer invoice; - Send and print with (only) DIAN checkbox checked; - Open the PDF for the invoice. **Cause:** No translations (or erroneous ones) have been found for these keys. **Fix:** Add Spanish translations for these terms. <img width="642" alt="Capture d’écran 2024-12-09 à 11 52 44" src="https://github.com/user-attachments/assets/77f548f4-f87e-4823-9fdc-5b54d0db2a1f"> **Testing:** Testing needs actual credentials and complete configuration (including setting the client's language to LATAM Spanish)  opw-4343184 Forward-Port-Of: odoo/enterprise#75361
this fix adds skip_is_manually_modified context to the moves in spanish localization create method, so that is_manually_modified field is not unnecessarily changed to true when changing the invoice type. [link to runbot build errors](https://runbot.odoo.com/web#id=99362&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) Forward-Port-Of: odoo/enterprise#75080
Original PR description
this fix adds skip_is_manually_modified context to the moves in spanish localization create method, so that is_manually_modified field is not unnecessarily changed to true when changing the invoice type. [link to runbot build errors](https://runbot.odoo.com/web#id=99362&menu_id=424&cids=1&action=573&model=runbot.build.error&view_type=form) Forward-Port-Of: odoo/enterprise#75080
In the `get_specific_barcode_data_batch` method, we convert the search domain if we use GS1 nomenclature. In some point, we have this code: ```python converted_barcodes_domain = expression.OR([ converted_barcodes_domain, [(barcode_field, 'ilike', barcode)] ]) ``` The issue with that is `converted_barcodes_domain` is first an empty list, so the call to `expression.OR` results into `[(1, '=', 1)]]` domain. That means when we will search products with this domain, we will get every
Original PR description
In the `get_specific_barcode_data_batch` method, we convert the search domain if we use GS1 nomenclature.
In some point, we have this code:
```python
converted_barcodes_domain = expression.OR([
converted_barcodes_domain,
[(barcode_field, 'ilike', barcode)]
])
```
The issue with that is `converted_barcodes_domain` is first an empty list, so the call to `expression.OR` results into `[(1, '=', 1)]]` domain. That means when we will search products with this domain, we will get every products.
This fix ensures `converted_barcodes_domain` is not empty before to call `OR`, otherwise we simply assign the converted domain to the variable without the use of `OR`.
Forward-Port-Of: odoo/enterprise#75348Current behaviour: --- When setting mail templates in the communication tab of an event, you initially only see event templates, unless you click on "Search more ..." which allows you to set non-event templates. Expected behaviour: --- Only seeing/and being able to set event templates Steps to reproduce: --- 1. Install event_sale 2. Go to Events, pick an event 3. In the communication tab, remove all templates 4. By clicking on "Search more ..." add a sale template 5. Set as Imm
Original PR description
Current behaviour: --- When setting mail templates in the communication tab of an event, you initially only see event templates, unless you click on "Search more ..." which allows you to set…
Current behaviour: --- When setting mail templates in the communication tab of an event, you initially only see event templates, unless you click on "Search more ..." which allows you to set non-event templates. Expected behaviour: --- Only seeing/and being able to set event templates Steps to reproduce: --- 1. Install event_sale 2. Go to Events, pick an event 3. In the communication tab, remove all templates 4. By clicking on "Search more ..." add a sale template 5. Set as Immediately and After each registration 6. Click on the smart button "Attendees" 7. Create a new attendee with an email then save 8. You may need to create multiple attendees 9. Failed to render inline_template template Cause of the issue: --- When selecting a sale template, the render model is `sale.order` So when passing the registration id to get rendered, it tries to read this id on a `sale.order`, causing an error if a `sale.order` with this id doesn't exist. Caused by: https://github.com/odoo/odoo/commit/6abd149259e9caf815fe1804f1322f623f8fcb50 `_name_search` was overriden, but the "Search more ..." option doesn't used `_name_search` but `web_search_read` Fix: --- Overrode `_search` instead opw-4106237 Forward-Port-Of: odoo/enterprise#75318 Forward-Port-Of: odoo/enterprise#73947
**Issue:** - When creating an approval request with the type "Automated Sequence", the Approval Subject field is empty and readonly, making it impossible to save the record. **Steps To Reproduce:** - Create a new Approval Type, check the "Automated Sequence" box, and set a "code". - In dashboard Click on "New Request" - Set the category to the one you just created, and save. - Notice the Invalid Field error. **Solution:** - Set 'required' to 'not automated_sequence'. opw-4326974
Original PR description
**Issue:** - When creating an approval request with the type "Automated Sequence", the Approval Subject field is empty and readonly, making it impossible to save the record. **Steps To Reproduce:** - Create a new Approval Type, check the "Automated Sequence" box, and set a "code". - In dashboard Click on "New Request" - Set the category to the one you just created, and save. - Notice the Invalid Field error. **Solution:** - Set 'required' to 'not automated_sequence'. opw-4326974 Forward-Port-Of: odoo/enterprise#74793
- 18.0 ### Steps to reproduce: - Install document and project. - Create a portal user. - Create the project and the task. - Upload the document in the task. - Share the document with the portal user. - Share the project with read access to the portal user. - Login with the portal user. - Open the shared project and created task. ### Issue: 'Document' is missing from the left sidebar, even after sharing with portal user ### Cause: 'Document' is in the link section of the sideba
Original PR description
- 18.0 ### Steps to reproduce: - Install document and project. - Create a portal user. - Create the project and the task. - Upload the document in the task. - Share the document with the portal user. - Share the project with read access to the portal user. - Login with the portal user. - Open the shared project and created task. ### Issue: 'Document' is missing from the left sidebar, even after sharing with portal user ### Cause: 'Document' is in the link section of the sidebar. It will be visible when any task link is shared, eg, invoice, sale order, and helpdesk ticket. So, when there is only a document shared it doesn't display. ### Solution: Display the 'Document' when the document is shared with the portal user. task-4194318 Forward-Port-Of: odoo/enterprise#70656
When the tour is running in single app locally, it is failing Forward-Port-Of: odoo/enterprise#75352 Forward-Port-Of: odoo/enterprise#74773
Original PR description
When the tour is running in single app locally, it is failing Forward-Port-Of: odoo/enterprise#75352 Forward-Port-Of: odoo/enterprise#74773
The goal of this commit is to avoid getting an error message when using the /documents/touch/ route for an access_token that no longer exists. This bug was detected in the document_delete_tour where this route is used when the document has already been deleted. This caused a "missing record" message to appear. This commit fixes this behavior. Forward-Port-Of: odoo/enterprise#75295
Original PR description
The goal of this commit is to avoid getting an error message when using the /documents/touch/ route for an access_token that no longer exists. This bug was detected in the document_delete_tour where this route is used when the document has already been deleted. This caused a "missing record" message to appear. This commit fixes this behavior. Forward-Port-Of: odoo/enterprise#75295
Objective --------- Libro Diario is just a big name for "Journal" in Spanish, but it's also a precise report that is expected to reflect a chronological report of all Accounting Entries in a Database. It's expected to be published and available to show all the transactions recorded by a Company. It's basically an export of the General Ledger with all the accounting entries, not grouped by Account but by Accounting Entries, sorted by date, and to show a full sequence. The Libro Diario sho
Original PR description
Objective --------- Libro Diario is just a big name for "Journal" in Spanish, but it's also a precise report that is expected to reflect a chronological report of all Accounting Entries in a…
Objective --------- Libro Diario is just a big name for "Journal" in Spanish, but it's also a precise report that is expected to reflect a chronological report of all Accounting Entries in a Database. It's expected to be published and available to show all the transactions recorded by a Company. It's basically an export of the General Ledger with all the accounting entries, not grouped by Account but by Accounting Entries, sorted by date, and to show a full sequence. The Libro Diario should posess the following columns and each row should contain an account move line: - "Entry": ascending numbering for each move, starting at 1. - "Line": numbering of the move line inside the move, starting at 1. - "Date": accounting date of the move; as mentionned, moves should be sorted by dates - "Account code" - "Account name" - "Description": label of the move line - "Document": account move name - "Debit" - "Credit" Solution --------- 1. Add a custom General Ledge Handler that adds the option to export the Libro Diarios 2. Since `_get_line` returns the AMLs grouped by accounts, it is easier to fetch the query that gets all the AMLs data (`_get_query_amls`) and then postprocess the amls data to generate the matrix of data passed to the XLSX builder. Doing so forces us to manually initialize the currency table. task-4294391 Forward-Port-Of: odoo/enterprise#75067
Some code used in accounting report lines are also used in other reports outside of the KR localization. As of now, unlike what the constrains hint, codes are not expected to be unique per report but instead unique entirely which was not the case. The Unallocated Earnings lines had the same code as the standard ones which ended up causing some tests to fail. To fix this, we are adding a prefix to all codes. The constrains was also temporarily changed to ensure that the new codes are a
Original PR description
Some code used in accounting report lines are also used in other reports outside of the KR localization. As of now, unlike what the constrains hint, codes are not expected to be unique per report but instead unique entirely which was not the case. The Unallocated Earnings lines had the same code as the standard ones which ended up causing some tests to fail. To fix this, we are adding a prefix to all codes. The constrains was also temporarily changed to ensure that the new codes are at least unique in the KR module and do not clash with account_reports. Forward-Port-Of: odoo/enterprise#75394
Because of a missing field, the budget symbol to indicate the progress of the budget of a project was not displaying on its kanban card. This commit adds the missing field. Task-4353196 Forward-Port-Of: odoo/enterprise#74404
Original PR description
Because of a missing field, the budget symbol to indicate the progress of the budget of a project was not displaying on its kanban card. This commit adds the missing field. Task-4353196 Forward-Port-Of: odoo/enterprise#74404
A traceback occurs when the user opens an invoice from the tickets in the portal. Error:- ``` AttributeError: 'list' object has no attribute 'ids' ``` This error is occurring from the below line https://github.com/odoo/enterprise/blob/a2cfc7c223dfe915a1965d08c2e1f91cfeabe2f6/helpdesk_account/controllers/portal.py#L40-L47 Initially, we get the recordsets of invoices in `values['invoices']`. But because of the recent changes from the below commit, we get the list of recordset v
Original PR description
A traceback occurs when the user opens an invoice from the tickets in the portal. Error:- ``` AttributeError: 'list' object has no attribute 'ids' ``` This error is occurring from the below line https://github.com/odoo/enterprise/blob/a2cfc7c223dfe915a1965d08c2e1f91cfeabe2f6/helpdesk_account/controllers/portal.py#L40-L47 Initially, we get the recordsets of invoices in `values['invoices']`. But because of the recent changes from the below commit, we get the list of recordset values, from which we can access the value of invoice ID. https://github.com/odoo/odoo/pull/174812/files#diff-3b907221102acd53c211a3a6b50b00543dcbbc865d50ef4451bea465f7300cbaR107-R112 Community PR:- https://github.com/odoo/odoo/pull/190062 sentry-6117277208 Forward-Port-Of: odoo/enterprise#75396
There are several issues with the company of the folders and the field `documents_spreadsheet_folder_id` of a company. To reproduce the issue 01: 1. Create a second company 2. Documents > Configuration > Workspaces, edit "Spreadsheet": - Set a company Step 01, `documents_spreadsheet_folder_id` of the second company is set to "Spreadsheet" folder thanks to a default value on the field. But, looking at the DB after the second step, there is an error: both companies still have the f
Original PR description
There are several issues with the company of the folders and the field `documents_spreadsheet_folder_id` of a company. To reproduce the issue 01: 1. Create a second company 2. Documents >…
There are several issues with the company of the folders and the field `documents_spreadsheet_folder_id` of a company. To reproduce the issue 01: 1. Create a second company 2. Documents > Configuration > Workspaces, edit "Spreadsheet": - Set a company Step 01, `documents_spreadsheet_folder_id` of the second company is set to "Spreadsheet" folder thanks to a default value on the field. But, looking at the DB after the second step, there is an error: both companies still have the folder "Spreadsheet" defined on `documents_spreadsheet_folder_id`, but this folder is now specific to one company. Step 2 should not be possible, a constraint is missing. To reproduce the issue 02: 1. Repeat above steps 1-2 2. Create a third company Looking at the DB, there is also an error with the third company: the default value has been used for it, even though the folder is now company-specific and can't be used anymore. The default value should be improved to handle this situation. Also, it should not be possible to use such record on the field. Since there is already the attribute `check_company=True` on `documents_spreadsheet_folder_id`, we could therefore add the attribute `_check_company_auto` on the model and take advantage of the ORM: https://github.com/odoo/odoo/blob/f323896028114acb36848b605732797b67fd7da4/odoo/models.py#L614-L618 However, this change would be too invasive on stable, hence the ORM constraint as alternative. OPW-4281530 Forward-Port-Of: odoo/enterprise#74900 Forward-Port-Of: odoo/enterprise#74189
Purpose ======= When deleting a project, its documents are archived but not the documents folder. Fixing that by archiving the folder if every projects it is related to has been deleted. Specification ============= As a folder is created for every new project, it seems logical to archive the folder if the project is deleted. This prevents having "flying" folders, i.e. empty project folders not being linked to any project. Technical: - As the same folder can be linked to multiple pr
Original PR description
Purpose ======= When deleting a project, its documents are archived but not the documents folder. Fixing that by archiving the folder if every projects it is related to has been deleted. Specification ============= As a folder is created for every new project, it seems logical to archive the folder if the project is deleted. This prevents having "flying" folders, i.e. empty project folders not being linked to any project. Technical: - As the same folder can be linked to multiple projects, only archiving the folder if every projects it is related to has been deleted. - Using sudo(False) because documents access rules can be slow. Task-4262380 Forward-Port-Of: odoo/enterprise#72082
**Current behavior:** Having some embedded action for `documents.document` which has no `groups_ids` set will result in that action not ever appearing in the actions bar/menu in the documents app. **Expected behavior:** In the absence of any records in the `groups_ids` relation, the actions should be exposed globally. **Steps to reproduce:** *`-i documents_account` for example* 1. In technical settings, open the embedded actions list view 2. Edit the `Create Vendor Bill` action so t
Original PR description
**Current behavior:** Having some embedded action for `documents.document` which has no `groups_ids` set will result in that action not ever appearing in the actions bar/menu in the documents app.…
**Current behavior:**
Having some embedded action for `documents.document` which has no `groups_ids` set will result in that action not ever appearing in the actions bar/menu in the documents app.
**Expected behavior:**
In the absence of any records in the `groups_ids` relation, the actions should be exposed globally.
**Steps to reproduce:**
*`-i documents_account` for example*
1. In technical settings, open the embedded actions list view
2. Edit the `Create Vendor Bill` action so that it has an empty `groups_ids` field
3. Open the documents app, click on the finance tab on the left sidebar
4. Click on one of the demo documents, observe in the actions menu for the record that the create vendor bill action is no longer present
**Cause of the issue:**
The domain was constructed incorrectly, as the
`('field', 'in', [False] + X.ids)`
pattern does not work when `'field'` is itself a m2m recordset.
**Fix:**
Split this domain leaf into 2 so we can check for membership as well as falsy-ness.
opw-4342841
Forward-Port-Of: odoo/enterprise#74491