Friday, May 16, 2025
17 changes · master
Enhancements to existing features
Planning and project views now use a standard date range display instead of separate start and end date fields with a manual arrow. This simplifies the interface setup and helps keep date ranges more consistent for users.
Original PR description
This commit replaces manually constructed daterange fields (using two datetime fields and an arrow) in some XML views with actual daterange fields to simplify view definitions and take advantage of changes made in https://github.com/odoo/odoo/pull/209493. task-4788200
Resolved issues and error corrections
The planning interface now keeps the planned date range with allocated hours field at a consistent width. This prevents visual inconsistencies and makes scheduling information easier to read for users.
Original PR description
This commit takes advantage of changes made in https://github.com/odoo/odoo/pull/209075 to fix the same issue for the PlannedDateRangeWithAllocatedHours field as well. task-4751837
Features or functions removed from Odoo
Unused backend methods were removed from the Sign and Sales Subscription areas. This cleanup reduces maintenance overhead without changing expected user-facing behavior.
Original PR description
This commit removes the following unused methods: **Sign module** : - `open_log`: no longer used after this PR : https://github.com/odoo/enterprise/pull/38571/files - `open_template`: no longer used after this PR : https://github.com/odoo/enterprise/pull/75291/files - Removed `_get_font`, `_get_normal_font_size`, `_get_page_size`, and `_get_preview_values` from the sign.template model because they are already defined and used in the sign.document model after this PR :https://github.com/odoo/enterprise/pull/81766/files **Sale_subscription module**: - `_get_subscription_qty_to_invoice`: no longer used after this PR : https://github.com/odoo/enterprise/pull/75150/files task:4783798
Miscellaneous changes
Forgotten in c632b843 / task 4491333. Task-4703626 Forward-Port-Of: odoo/enterprise#82907
Original PR description
Forgotten in c632b843 / task 4491333. Task-4703626 Forward-Port-Of: odoo/enterprise#82907
Issue : Given a pivot grouped by date with anything else than year as aggregate (I tried with week, quarter and month), Given the pivot is exploded When I autofill the date cells and the date passes from one year to another, it crashes hard New behaviour: For bounded date fields, the autofill loop around when reaching the upper bound. Task: 4700703 Forward-Port-Of: odoo/enterprise#84071 Forward-Port-Of: odoo/enterprise#82980
Original PR description
Issue : Given a pivot grouped by date with anything else than year as aggregate (I tried with week, quarter and month), Given the pivot is exploded When I autofill the date cells and the date passes from one year to another, it crashes hard New behaviour: For bounded date fields, the autofill loop around when reaching the upper bound. Task: 4700703 Forward-Port-Of: odoo/enterprise#84071 Forward-Port-Of: odoo/enterprise#82980
With the removal of custom tax components in the corresponding community commit, views need to be updated to use the standard display_name and markdown formats now available. No Task Forward-Port-Of: odoo/enterprise#85172
Original PR description
With the removal of custom tax components in the corresponding community commit, views need to be updated to use the standard display_name and markdown formats now available. No Task Forward-Port-Of: odoo/enterprise#85172
Adding the right context key to change the order like it was in the old bank rec widget of 18.2. Also correcting a css issues where the ref where too big no task id Forward-Port-Of: odoo/enterprise#85441
Original PR description
Adding the right context key to change the order like it was in the old bank rec widget of 18.2. Also correcting a css issues where the ref where too big no task id Forward-Port-Of: odoo/enterprise#85441
### Steps to reproduce: - Create a recurring service (product) with invoicing policy set as 'Based on Timesheets' - Create a subscription using the created product - Create a task and link it to this subscription order - Timesheet 3 line in the task one in the past one on the same date of creation and one in the future. - Create an invoice for this order - Notice the quantity has been invoiced is the present timesheet line only - Notice that the 3 timesheet lines have all been
Original PR description
### Steps to reproduce: - Create a recurring service (product) with invoicing policy set as 'Based on Timesheets' - Create a subscription using the created product - Create a task and link it to this…
### Steps to reproduce: - Create a recurring service (product) with invoicing policy set as 'Based on Timesheets' - Create a subscription using the created product - Create a task and link it to this subscription order - Timesheet 3 line in the task one in the past one on the same date of creation and one in the future. - Create an invoice for this order - Notice the quantity has been invoiced is the present timesheet line only - Notice that the 3 timesheet lines have all been validated ### Cause: This is happening because when trying to link the lines to the invoice we consider the timesheets within the date range that the user might have set in the create invoice wizard. https://github.com/odoo/odoo/blob/9a4ec08b9a6b07470747923d09adcf51f7e4cd6a/addons/sale_timesheet/wizard/sale_make_invoice_advance.py#L33-L51 https://github.com/odoo/odoo/blob/9a4ec08b9a6b07470747923d09adcf51f7e4cd6a/addons/sale_timesheet/models/sale_order.py#L153 ### Fix: In subscription we can use the last and next invoice dates if the user hasn't set a period for the invoice. opw-4523727 Forward-Port-Of: odoo/enterprise#83333 Forward-Port-Of: odoo/enterprise#80582
Before this commit, when pos_blackbox_be was installed, the pos tests were failing because most pos test called `_run_test` which is calling `_satrt_pos_session` which is calling `open_new_session` which is calling `set_opening_control`. This makes that when calling `set_opening_control`, the request is not bound and we cannot do `request.geoip.ip`. We now check that the request is bound in `_log_ip`: if it is not, we return, if it is, we resolve the ip on the fly. We also add a check to t
Original PR description
Before this commit, when pos_blackbox_be was installed, the pos tests were failing because most pos test called `_run_test` which is calling `_satrt_pos_session` which is calling `open_new_session` which is calling `set_opening_control`. This makes that when calling `set_opening_control`, the request is not bound and we cannot do `request.geoip.ip`. We now check that the request is bound in `_log_ip`: if it is not, we return, if it is, we resolve the ip on the fly. We also add a check to the sale details data computation method `get_sale_details` override in pos_blackbox_be to check if the config is a blackbox one. original commit: df796f3770ff2fdaf553cdfb4206f65c7b371189 Community PR: https://github.com/odoo/odoo/pull/209584 Forward-Port-Of: odoo/enterprise#85356
In the community PR, we have used the timesheet_view_form_portal_user form view for the portal user. To ensure that the status bar is not visible to the portal user, we added a group restriction. An alternative approach would be to hide the status bar based on context, but I did not find it suitable. Therefore, we opted to use the group restriction. task-3969988 Forward-Port-Of: odoo/enterprise#85089 Forward-Port-Of: odoo/enterprise#74760
Original PR description
In the community PR, we have used the timesheet_view_form_portal_user form view for the portal user. To ensure that the status bar is not visible to the portal user, we added a group restriction. An alternative approach would be to hide the status bar based on context, but I did not find it suitable. Therefore, we opted to use the group restriction. task-3969988 Forward-Port-Of: odoo/enterprise#85089 Forward-Port-Of: odoo/enterprise#74760
The error was caused by the ability to `quick-create` digital certificates from the settings screen without providing the actual certificate file. This results in False being stored in the certificate content fields, ultimately triggering a `TypeError` during PDF signing. Steps to reproduce: - Go to Settings > Search for `Cryptographic signature` > Quick create a Certificate with random name and save. - Now sign and validate any file, you will encounter the error. Error: `TypeError: exp
Original PR description
The error was caused by the ability to `quick-create` digital certificates from the settings screen without providing the actual certificate file. This results in False being stored in the certificate content fields, ultimately triggering a `TypeError` during PDF signing. Steps to reproduce: - Go to Settings > Search for `Cryptographic signature` > Quick create a Certificate with random name and save. - Now sign and validate any file, you will encounter the error. Error: `TypeError: expected bytes-like object, not bool` Solution: - Removed being able to quick create certificates. sentry-6545302218 Forward-Port-Of: odoo/enterprise#85276
Step to reproduce : - Create a folder with a sub folder and a request or two requests. - Share the parent folder with edit permission to anyone. - Go to the public folder view. - Upload a file for the last request document. - The file will be uploaded to the first editable folder/request found. This was due to a hidden form tag to upload file to sub folders which was using the same class as the one used by the request documents (o_request_upload). Using class instead of id also
Original PR description
Step to reproduce : - Create a folder with a sub folder and a request or two requests. - Share the parent folder with edit permission to anyone. - Go to the public folder view. - Upload a file for the last request document. - The file will be uploaded to the first editable folder/request found. This was due to a hidden form tag to upload file to sub folders which was using the same class as the one used by the request documents (o_request_upload). Using class instead of id also means that it wasn't possible to share more than one request document. Task-4718126 Forward-Port-Of: odoo/enterprise#83222
Steps to reproduce - Install Accounting - Go to settings and activate Analytic Accounting - Go to Configuration and create two analytic plans without any analytic accounts - Go to the Profit and Loss report - Activate the two new analytic plans -> the report is messed up in its columns Cause of the issue: When two analytic plans without any analytic account are present, they have the exact same forced_options, leading to the same column_group_key. task-4675686 Forward-Po
Original PR description
Steps to reproduce - Install Accounting - Go to settings and activate Analytic Accounting - Go to Configuration and create two analytic plans without any analytic accounts - Go to the Profit and Loss report - Activate the two new analytic plans -> the report is messed up in its columns Cause of the issue: When two analytic plans without any analytic account are present, they have the exact same forced_options, leading to the same column_group_key. task-4675686 Forward-Port-Of: odoo/enterprise#82231
Description of the issue this commit addresses: When multiple lines that are in budget on their own are above budget when summed together, neither the lines nor the budget button show that the budget will be exceeded. This leads to making purchase orders that shouldn't be made. --- Desired behavior after this commit is merged: This commit makes it so that when the lines together will exceed the budget, the budget smart button and all the lines become red as a single line would.
Original PR description
Description of the issue this commit addresses: When multiple lines that are in budget on their own are above budget when summed together, neither the lines nor the budget button show that the budget will be exceeded. This leads to making purchase orders that shouldn't be made. --- Desired behavior after this commit is merged: This commit makes it so that when the lines together will exceed the budget, the budget smart button and all the lines become red as a single line would. --- task-4710838 Forward-Port-Of: odoo/enterprise#84653
Currently the "resend" mechanism relies on `_send`; marking messages to resend as "outgoing". However when used in batch mode `_send` only sends template messages. We enable `_send_cron` to send discuss messages too and to process these in priority. As these have a fixed time limit to be sent. We also do some filtering on resend to avoid marking messages that we know will fail as outgoing. Including "unrecoverable" errors and messages on outdated channel. Methods that use crons are a
Original PR description
Currently the "resend" mechanism relies on `_send`; marking messages to resend as "outgoing". However when used in batch mode `_send` only sends template messages. We enable `_send_cron` to send discuss messages too and to process these in priority. As these have a fixed time limit to be sent. We also do some filtering on resend to avoid marking messages that we know will fail as outgoing. Including "unrecoverable" errors and messages on outdated channel. Methods that use crons are also updated to use direct method trigger and prevent commits during tests to avoid having to patch them every time. task-3547088 Forward-Port-Of: odoo/enterprise#85014 Forward-Port-Of: odoo/enterprise#79050
Before this commit, whatsapp conversations could not send voice message. This is a regression made from this PR: https://github.com/odoo/odoo/pull/186084 This commit re-adds the feature to voice a message in whatsapp. Note that whatsapp conversations allow only 1 attachments per message. Since a voice message is an attachment, this commit makes sure allow voice message only when no attachment, and similarly allow uploading a file only when there's no ongoing voice recording. opw-4750
Original PR description
Before this commit, whatsapp conversations could not send voice message. This is a regression made from this PR: https://github.com/odoo/odoo/pull/186084 This commit re-adds the feature to voice a message in whatsapp. Note that whatsapp conversations allow only 1 attachments per message. Since a voice message is an attachment, this commit makes sure allow voice message only when no attachment, and similarly allow uploading a file only when there's no ongoing voice recording. opw-4750594 Forward-Port-Of: odoo/enterprise#85326 Forward-Port-Of: odoo/enterprise#85303
**Steps to reproduce:** - Install Accounting - Activate "Analytic Accounting" in Accounting settings - Go to "Accounting / Accounting / Journal Entries" - Create an entry with some analytic distribution - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Activate "Analytic Group By" in the settings of the report - Add the plan used in the analytic distribution in "Analytic" group option **Issue:** In the "End Balance" column, all the amounts are summed in the total colu
Original PR description
**Steps to reproduce:** - Install Accounting - Activate "Analytic Accounting" in Accounting settings - Go to "Accounting / Accounting / Journal Entries" - Create an entry with some analytic distribution - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Activate "Analytic Group By" in the settings of the report - Add the plan used in the analytic distribution in "Analytic" group option **Issue:** In the "End Balance" column, all the amounts are summed in the total column instead of being grouped by analytic plan. It results on a total amount being twice what it should be as the total column of each period is also included in the sum. This is a complement to previous fix for the grouping by analytic account where the analytic plan groupby case was forgotten: https://github.com/odoo/enterprise/commit/05bbab713c749b7d7450d5dbaf2eda1ba4f68712 opw-4648009 Forward-Port-Of: odoo/enterprise#85372 Forward-Port-Of: odoo/enterprise#85344