Daily updates from Odoo
Navigate
Branch
Tuesday, August 29, 2023
30 changes
Enhancements to existing features
Sign managers now keep read-only access to the fields in signing templates, even after related documents have been signed. This prevents access issues when reviewing or managing templates that already have completed signature requests.
Original PR description
In the current security for sign, a sign manager loses read access to the sign items of a template if the template has any signed requests. This commit adds a record rule to provide readonly access to the sign items for the sign manager task-3474910
Planning search views have been simplified by removing less-used filters and groupings, making it easier for users to find relevant schedules. The update adds clearer start and end date filtering, role-based employee search, and broader sales order searching across orders and order lines.
Original PR description
In this PR we have removed the non essential filters no timesheets, billable non billable, to resend, all of the dates filters - replace date filter with start date and end date - remove the group by 'sales order' - remove the group by on 'start hour' - remove the quick search on 'service' - switch the group by 'project' and 'sol' from place - add a quick search on 'roles' under the 'employees' - quick search on 'sales order' should search both on the SO and the SOL task-3265255
Payroll teams can now register employee payments directly from individual payslips when they are not using SEPA payment files or payroll batches. This makes it easier to track paid payslips, distinguish paid versus completed records, and align payroll payment handling with accounting workflows.
Users can now open the full form view directly by clicking a line in editable lists for accounting reports and planning. This makes it faster to review or update detailed information without extra navigation steps.
Original PR description
This commit uses the new options of the editable list view to open a form view when clicking on a line. Task-id 3063425
Helpdesk SLA policies are easier to set up and monitor, with default team settings, clearer sales line details, and better grouping by SLA or deadline. Agents also get clearer deadline status in ticket views and automatic notes when tickets are closed before or after SLA targets.
Original PR description
In this PR made following changes: - add default team condition while creating sla policy. - 'sla policies' feature enabled by default on teams created on the fly. - use 'with_price_unit' and 'with_remaining_hours' context in sale_line_ids . field of sla policy to indicate unit price and remaining hours in nameget. - display the pill in red if the nb of remaining hours < 0 on sale_line_ids. - add group by SLA, SLA Deadline in helpdesk ticket search view. - center SLA deadline in ticket kanban view. - add log note on helpdesk ticket if SLA ticket reached to close stage -"Reached x hours before/after the deadline" task - 3186578
The Gantt view now highlights the current month when viewing a full year, and the current hour when viewing a day. This makes it easier for users to quickly orient themselves in planning timelines and understand where today fits in the schedule.
Original PR description
Currently, when the scale of the Gantt view is set to 'week' or 'month', the column corresponding to the current day is highlighted. This commit extends this behavior to highlight the current month when the scale of the Gantt view is set to 'year'. task-3458164
The Planning calendar now shows clearer shift-related labels and more informative resource filters, including better visuals for open shifts and resource types. This makes scheduling easier to understand and helps users manage shifts more confidently, including adding shifts to personal or work calendars.
Original PR description
Changed 'undefined' to 'Open Shifts' at the end of the resource filter Added fa-wrench icon + background color in resource filter Changed 'New Event' to 'New shift' in the calendar create view Created a new planningCalendatFilterPanel, and made the PlanningCalendarModel fetch the resource_type and the colorIndex of each resource to put in the filters Also will allow users to add their shifts to their work/personal calendars Task-3251698 See https://github.com/odoo/odoo/pull/126358 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update aligns JavaScript command names for related records with the terminology already used by Odoo's backend. It mainly improves consistency for developers maintaining Documents, spreadsheets, rentals, and planning views, with little direct impact on day-to-day users.
Original PR description
*: documents, documents_spreadsheet,sale_renting,web_gantt Before this commit, the naming convention for x2m commands is not consistent with the python ORM. After this commit, the commands use the same terminology on both side. The JavaScript side has been adapted. See: https://www.odoo.com/documentation/16.0/developer/reference/backend/orm.html?highlight=commands#odoo.fields.Command
Helpdesk teams can now handle refunds, returns, coupons, repairs, and field service task creation with clearer options and better filtering. The updates reduce manual selection errors, improve traceability through chatter messages, and make sharing or sending generated coupons easier.
Original PR description
** = helpdesk_account, helpdesk_fsm, helpdesk_repair, helpdesk_sale_loyalty, helpdesk_stock In this PR we have made following improvements - helpdesk.ticket form view > create a field service task…
** = helpdesk_account, helpdesk_fsm, helpdesk_repair, helpdesk_sale_loyalty, helpdesk_stock In this PR we have made following improvements - helpdesk.ticket form view > create a field service task wizard > sort partners as in the form view - repair.order form view , transform the ticket field into a stat button - remove the product and lot/serial field - add the product and lot/serial number field in return and refund wizard - made lot/serial number field only visible when tracked by lot/sn - filter selectable INVs to refund / DOs to return based on the selected SO, product and lot/sn - filter selectable SOs based on the selected product and lot/sn - filter selectable products and lot/sn based on the selected SOs - helpdesk.ticket > return > log "WH/RET/123 Return created" in the chatter - helpdesk.ticket > coupon > log "This coupon has been created from the ticket: ABC" in the chatter of the generated coupon - Added generate and send button to open send wizard and added generate and share button to open share wizard - change the description of the coupon feature to: "Grant discounts, free products, or free shipping" - In helpdesk.team form view removed the 'repairs' stat button - made move_ids field required for refund wizard task-3186565
Field service users get clearer navigation, better traceability between tasks and generated sales orders, and easier calendar planning. The update renames the itinerary button, adds a clickable task reference on sales orders, and shows project colors in the calendar so teams can identify work more quickly.
Original PR description
- modify the English label of the 'navigate to' button. change it to 'view itinerary' in the FSM project task form view. - log entry will be added to the generated sales order, containing the name of the task. - implemented the functionality to show the color of the project in the left side panel of the calendar. task-3251766
Resolved issues and error corrections
A test was adjusted to stop trying to click a button that is already confirmed as disabled. This keeps automated checks aligned with stricter behavior in the shared click helper and helps avoid misleading test actions.
Original PR description
This commit is the enterprise counterpart of odoo/odoo#133196. The click helper now throws an error if the target is disabled. In the adapted test, we already assert that the button is disabled, there's no point clicking on it.
The Knowledge app now displays property controls more consistently after a recent layout change for separator properties. This keeps article property panels visually aligned and ensures the system has the needed context to remember user preferences correctly.
Original PR description
Helpdesk ======= Hide the "Add A Property" button by default, and instead use the client action. Knowledge ========= The HTML structure of the properties field has been changed for the separators properties, fix the CSS. Task-3188915
The timesheet timer can now be started again from list and kanban views after a recent technical change had broken that action. The grid view was also cleaned up so it no longer shows a redundant empty section when there is only one unnamed section, making the display clearer for users.
Original PR description
Before this commit, since the refactor of the relational model the timer cannot be launched in list and kanban views in timesheet This commit fixes the issue but the timer header in the list and kanban views has to be reviewed to be able to correctly use the reactivity implemnented in the new relational model.
Code cleanup and technical improvements
This update removes several older shared service components and updates affected apps to use the newer approach. It helps keep the platform easier to maintain while preserving behavior across Documents, HR, Knowledge, Barcode, VoIP, and mobile features.
Original PR description
task 3439226
A shared web data component now supports saving and reloading a record immediately after certain updates. This streamlines workflows in areas such as appraisals, payroll, manufacturing work orders, and website knowledge by ensuring changes are persisted right away when needed.
Original PR description
[REF] web: RelationalModel: add option to save after update This commit adds an option to save the record after an update. When the save option is set to true, the record will be saved and reload after the update. Note that, the onChange is not done in this case.
This is much more robust and faster than relying on arbitrary number of animation frames. https://github.com/odoo/odoo/pull/133333
Original PR description
This is much more robust and faster than relying on arbitrary number of animation frames. https://github.com/odoo/odoo/pull/133333
Odoo Enterprise now standardizes date handling by replacing older Moment.js usage with Luxon across several applications. This reduces duplicated technology in the product and helps lighten web assets without changing business workflows.
Original PR description
luxon and moment are both used in the solution, but these two libraries facilitate the manipulation of dates. It was decided to replace all uses of moment with luxon so we can then remove moment.js from the code and lighten the assets. task-3391739 PR Community : https://github.com/odoo/odoo/pull/133144
Account report session handling was simplified by replacing several internal options with a single on/off setting. This reduces unnecessary complexity while preserving the existing behavior users rely on when reports remember or ignore saved options.
Original PR description
Account reports save options into the session so users don't lose them when reloading the page.To prevent some reports to use those session options we used the 'ignore_session' variable. The 'ignore_session' could have 3 values: - 'read' to prevent the reading of session options - 'write' to prevent the writing of session options - 'both' to prevent reading and writing of session options The thing is that there is not real usage for those 3 cases. In practice, the session options are completely ignored (read and write) or never ignored. The distinction between 'read' and 'write' is then useless. This all means that we can simplify that variable by making it a boolean instead.
Miscellaneous changes
Forward-Port-Of: odoo/enterprise#46420 Forward-Port-Of: odoo/enterprise#46387
Original PR description
Forward-Port-Of: odoo/enterprise#46420 Forward-Port-Of: odoo/enterprise#46387
The line break of the message is appropriately handled. Task-3109584 Forward-Port-Of: odoo/enterprise#46397 Forward-Port-Of: odoo/enterprise#40872
Original PR description
The line break of the message is appropriately handled. Task-3109584 Forward-Port-Of: odoo/enterprise#46397 Forward-Port-Of: odoo/enterprise#40872
This PR, replaces previously used warning tip when enable live chat in helpdesk team which is /helpdesk and /helpdesk_search with /ticket and /search_tickets. task-3420151 Forward-Port-Of: odoo/enterprise#44030
Original PR description
This PR, replaces previously used warning tip when enable live chat in helpdesk team which is /helpdesk and /helpdesk_search with /ticket and /search_tickets. task-3420151 Forward-Port-Of: odoo/enterprise#44030
Issue: ------------------- When the hr_payroll tour is started the messages are displaying some xml codes in the help bubble Steps to reproduce: ------------------- 1. Active developer mode 2. Click on debug menu -> start tour 3. Select the hr_payroll tour Cause: ------------------- The issue is happening because inside the javascript file, the message are not using Markup and they are being displayed as simple text. OPW-3451174 Forward-Port-Of: odoo/enterprise#45840
Original PR description
Issue: ------------------- When the hr_payroll tour is started the messages are displaying some xml codes in the help bubble Steps to reproduce: ------------------- 1. Active developer mode 2. Click on debug menu -> start tour 3. Select the hr_payroll tour Cause: ------------------- The issue is happening because inside the javascript file, the message are not using Markup and they are being displayed as simple text. OPW-3451174 Forward-Port-Of: odoo/enterprise#45840
The button "report in next payslip" should be invisible when: - the report is paid by company - OR the report is already reported on the next payslip - OR the report isn't approuved This fixes what 6dec01ade5986d0f2900bc45289a1e12703e48f4 tried to fix task-3482106 Forward-Port-Of: odoo/enterprise#46406
Original PR description
The button "report in next payslip" should be invisible when: - the report is paid by company - OR the report is already reported on the next payslip - OR the report isn't approuved This fixes what 6dec01ade5986d0f2900bc45289a1e12703e48f4 tried to fix task-3482106 Forward-Port-Of: odoo/enterprise#46406
When user gives invalid formula in account report expression and tries to reporting that report this traceback raises. Steps to produce: - Install account_report - Open Accounting/configuration/Accounting Reports - Open any report and add a line and add a line for expression - In expression select 'Computation Engine' as Odoo Domain. - In Formula give any invalid domain and Sub-Formula as 'sum' - Save the expression, line and current record. - Open Reporting - Select the above create
Original PR description
When user gives invalid formula in account report expression and tries to reporting that report this traceback raises. Steps to produce: - Install account_report - Open Accounting/configuration/Accounting Reports - Open any report and add a line and add a line for expression - In expression select 'Computation Engine' as Odoo Domain. - In Formula give any invalid domain and Sub-Formula as 'sum' - Save the expression, line and current record. - Open Reporting - Select the above created report. Error: A traceback appears: "ValueError: malformed node or string on line 1: <ast.Attribute object at 0x7f8bb81a92d0>" See Traceback:- 1) https://pastebin.com/XJA5uEZe 2) https://pastebin.com/Vpnh4eE4 Related community PR:- https://github.com/odoo/odoo/pull/124582 sentry-4223028831,4223016757 Forward-Port-Of: odoo/enterprise#42335
Steps to reproduce: ------------------- - create an employee with a contract (wage=1000) - create two attachment for this employee: - A: attachment salary (monthly=200 | total=600) - B: attachment salary (monthly=100 | total=1000) - create and pay a payslip for this employee Issue: ------ Attachment A is paid with an amount of 300 instead of its monthly amount and attachment B is not paid. Cause: ------ When an attachment has a total amount, we try to pay its total amou
Original PR description
Steps to reproduce: ------------------- - create an employee with a contract (wage=1000) - create two attachment for this employee: - A: attachment salary (monthly=200 | total=600) - B: attachment…
Steps to reproduce:
-------------------
- create an employee with a contract (wage=1000)
- create two attachment for this employee:
- A: attachment salary (monthly=200 | total=600)
- B: attachment salary (monthly=100 | total=1000)
- create and pay a payslip for this employee
Issue:
------
Attachment A is paid with an amount of 300 instead of its monthly amount and attachment B is not paid.
Cause:
------
When an attachment has a total amount, we try to pay its total amount xhixh is equal to its remaining amount for the first payment and we ignore the monthly amount.
```py
monthly_attachments = self.filtered(lambda a: not a.has_total_amount)
fixed_total_attachments = self - monthly_attachments
....
for attachment in fixed_total_attachments:
amount = min(attachment.remaining_amount, remaining)
```
Solution:
---------
The solution is to pay the monthly amount of all attachments first, starting with the monthly payments (child_support).
Then, if there is still an amount to distribute,
we pay the attachments still running and which have a total amount (starting with the earliest estimated end date).
opw-3419605
Forward-Port-Of: odoo/enterprise#46368
Forward-Port-Of: odoo/enterprise#46082**Steps to reproduce** 1. Install `l10n_ec_edi` 2. Create an invoice with the customer "Ecuadorian Institute of Social Security" and any product. 3. Select the Payment Method (SRI) 4. Confirm the invoice & click Process Now (to send using EDI). You should see in the chatter that there's an HTML message that is displayed as plain text. **Cause** Since odoo/odoo@69f911d994a07e73e8d54afc2845be6b63f8b2bc, when using `message_post()`, the body format must be explicitly specified: if HT
Original PR description
**Steps to reproduce** 1. Install `l10n_ec_edi` 2. Create an invoice with the customer "Ecuadorian Institute of Social Security" and any product. 3. Select the Payment Method (SRI) 4. Confirm the invoice & click Process Now (to send using EDI). You should see in the chatter that there's an HTML message that is displayed as plain text. **Cause** Since odoo/odoo@69f911d994a07e73e8d54afc2845be6b63f8b2bc, when using `message_post()`, the body format must be explicitly specified: if HTML is expected, a `Markup` object should be used. opw-3430011 Forward-Port-Of: odoo/enterprise#46260 Forward-Port-Of: odoo/enterprise#45021
This PR has two commits: ### 1. Prevent resetting deferred entries to draft Currently, when resetting an invoice to draft, we unlink/reverse its deferral moves. This is problematic for the "Manually and Grouped" since one move should not reset the aggregated deferral of multiple moves, therefore we will not allow it anymore. Instead, the user can create a Credit Note. When creating the Credit Note, we currently reverse the linked deferral entries. This also a problem for the Manuall
Original PR description
This PR has two commits: ### 1. Prevent resetting deferred entries to draft Currently, when resetting an invoice to draft, we unlink/reverse its deferral moves. This is problematic for the "Manually…
This PR has two commits: ### 1. Prevent resetting deferred entries to draft Currently, when resetting an invoice to draft, we unlink/reverse its deferral moves. This is problematic for the "Manually and Grouped" since one move should not reset the aggregated deferral of multiple moves, therefore we will not allow it anymore. Instead, the user can create a Credit Note. When creating the Credit Note, we currently reverse the linked deferral entries. This also a problem for the Manually & Grouped mode. We should not alter the linked deferral entries. Instead, the created reversal will take care of creating the deferral entries (which will be reversed, therefore cancelling the original ones) task-id 3437135 ### 2. Allow generation of deferral for past periods Steps to reproduce: - Use manual & grouped mode - Create Vendor Bill 1/6 -> 30/9 - Deferred expense report - Select August - Generate -> Deferral created = OK - Select August - Generate -> Nothing to create = OK - Select July - Generate -> Nothing to create = NOT OK The SQL subquery to fetch existing deferral entries has also been improved. Community PR: https://github.com/odoo/odoo/pull/130808 task-id 3437130 Forward-Port-Of: odoo/enterprise#46357 Forward-Port-Of: odoo/enterprise#44982
Before this commit, it was possible to delete all kind of lines on reucurring sale order. This commit prevent only allow the deletion of recurring lines. taskid: 3460413 Forward-Port-Of: odoo/enterprise#46349 Forward-Port-Of: odoo/enterprise#45705
Original PR description
Before this commit, it was possible to delete all kind of lines on reucurring sale order. This commit prevent only allow the deletion of recurring lines. taskid: 3460413 Forward-Port-Of: odoo/enterprise#46349 Forward-Port-Of: odoo/enterprise#45705
If the user manually enters invalid `Consumer Secret Key` and tries to authorize Odoo Social to access their personal account then the user will face error. Steps to produce: - Install `social_twitter`. - Inside Social Marketing > Configuration > Settings check `Use your own Twitter Account` and manually enter any character inside `Consumer Secret Key`. - In Social Marketing > Feed click on `ADD A STREAM` and add twitter. (Now twitter web page would open and will ask for permission to au
Original PR description
If the user manually enters invalid `Consumer Secret Key` and tries to authorize Odoo Social to access their personal account then the user will face error. Steps to produce: - Install…
If the user manually enters invalid `Consumer Secret Key` and tries to authorize Odoo Social
to access their personal account then the user will face error.
Steps to produce:
- Install `social_twitter`.
- Inside Social Marketing > Configuration > Settings check `Use your own Twitter Account` and manually enter any character inside `Consumer Secret Key`.
- In Social Marketing > Feed click on `ADD A STREAM` and add twitter. (Now twitter web page would open and will ask for permission to authorize app.)
- Click on `Authorize app`.
Traceback:
```
KeyError: 'name'
File "odoo/http.py", line 2123, in __call__
response = request._serve_db()
File "odoo/http.py", line 1699, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1726, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1840, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 190, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 716, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "home/odoo/src/enterprise/saas-16.3/social_twitter/controllers/main.py", line 41, in social_twitter_account_callback
self._twitter_create_accounts(oauth_token, oauth_verifier, media)
File "home/odoo/src/enterprise/saas-16.3/social_twitter/controllers/main.py", line 232, in _twitter_create_accounts
'name': twitter_account_information['name'],
```
sentry-4269559865
Forward-Port-Of: odoo/enterprise#46303
Forward-Port-Of: odoo/enterprise#43364task-3422161 Forward-Port-Of: odoo/enterprise#43982
Original PR description
task-3422161 Forward-Port-Of: odoo/enterprise#43982