Daily updates from Odoo
Navigate
Branch
Thursday, July 20, 2023
28 changes
Security fixes and vulnerability patches
SEPA Direct Debit mandates now require a real payment to be matched before the mandate is validated. This reduces the risk of customers registering bank account details they do not control and makes mandate approval more trustworthy.
Original PR description
The current way to accept mandates (confirm transactions immediately) is not considered secure enough since the customer could input any account number (iban) without confirming that it's their account number. We introduce a new logic to confirm mandates, an effective payment must be made before the validation. When a bank statement matching the transaction data is encoded in the database, the transaction is confirmed (and the mandate as well, generating the corresponding token). task-3347338 See also: - odoo/odoo#126929 - odoo/upgrade#4944
New functionality added to Odoo
Paid orders placed through the self-order flow are now automatically sent to the kitchen display. This helps kitchen staff see and prepare eligible paid orders without manual intervention, while avoiding duplicate sends for items already displayed.
Original PR description
*: pos_online_payment_self_order_preparation_display Makes the orders paid with the self-order flow automatically sent to the kitchen display, considering what is already sent. task-id: 3171698 related: https://github.com/odoo/odoo/pull/127869
Enhancements to existing features
Odoo Studio’s report editor has been rebuilt to allow direct visual editing of reports and to keep the selected report in the browser URL. This makes editing more straightforward and lets users reload or share the page without losing the report they were working on, while advanced layout changes can still be handled in the XML editor.
Planning services can now be assigned to only one role, reducing setup conflicts and confusion. Role tags are easier to distinguish with colors, and the project planning option has moved into Planning settings under the clearer name “Project Planning.”
Original PR description
before this commit, in planning role > services can be assign to multiple roles, roles_id tags in material is of same color and planning option is set in project setting. This commit add domain so that service is assign to only one role, color is add to roles_id tags and planning option is replace from project to planning setting with named 'Project Planning' task-3251687
Accounting reporting was adjusted to work with a newer underlying system interface, helping keep report generation compatible and reliable. A related Studio update improves how custom record identifiers are inserted, supporting smoother configuration management.
Original PR description
Linked to odoo/odoo#129029
Field service tasks can now use the full range of project-related features even when managed outside a standard project setup. This helps teams apply reporting, sales, and task management capabilities more consistently across field service work.
Original PR description
...w/o project Completes the implementation of changes explained in Community PR. Related:https://github.com/odoo/odoo/pull/128281 task-3367246
Helpdesk users can now create sales order lines directly from a ticket, reducing extra navigation and making it easier to bill service work. Field service project screens are also adjusted so sales shortcuts only appear where they are relevant.
Original PR description
This PR ensures that the features added in its community counterpart are properly handled for fsm project and helpdesk tickets. For more details, see the community PR. Community: https://github.com/odoo/odoo/pull/121263 Task-3278895
Manufacturing gains a new MES view that makes it easier to process manufacturing orders and work orders, replacing the older tablet work order view. The change also consolidates employee tracking into the main work order app and adds controls for where production can be registered when quality checks require it.
Original PR description
Adds a new view, MES (Manufacturing Execution System), to be able to process Manufacturing Orders and Work Orders easier. MES will replace the WO's tablet view. By default, MES will display the MO,…
Adds a new view, MES (Manufacturing Execution System), to be able to process Manufacturing Orders and Work Orders easier. MES will replace the WO's tablet view. By default, MES will display the MO, but the user can filter the records by Work Center. In that case, it's the WC's WO who will be displayed. Beside the adding of MES, there is some notable changes: == `mrp_workorder` will be automatically installed with `mrp` == == Merge `mrp_workorder_hr` into `mrp_workorder`== In order to track employees' login into MES and to simplify things, we moves all the `mrp_workorder_hr` stuff into `mrp_workorder`. == Remove the WO tablet view == One of the purpose of MES is to replace the WO tablet view. So, all files and tests related to this view have been removed. == Add a new `quality.point.test_type`: `register_production` == In MES, the production can be registered from the MO itself or from any of its WO. But if one of its WO has a `register_production` Quality Check type, the production can be registered only from this WO. task-3231200 Co-authored-by: R1D1CUL0US <clpi@odoo.com> Co-authored-by: svs-odoo <svs@odoo.com>
Odoo now offers a share option from the user menu when used as an installed web app, where the browser address bar is not visible. On smaller screens, the share action is placed prominently at the top of the menu, making it easier for users to share the current page.
Original PR description
This commits adds a new share entry from the user menu. This allows the share of any web page from the PWA (standalone mode -> URL is not visible). On smaller screens, the share is present directly at the top of the Burger Menu instead of being an item of the list. Tests have been added to verify the presence of the button when Odoo is running in standalone mode, as well as the visibility depending the screen size. task-3341052
The Sign app’s document signing screens and dialogs have been modernized to improve reliability, maintainability, and consistency with the rest of Odoo. This work also reduces older technology usage while keeping compatibility where needed for signature capture and PDF handling.
Original PR description
Following the previous efforts to convert the sign module to OWL (https://github.com/odoo/enterprise/pull/36168/), this PR now converts the common and backend parts of the signature process into OWL…
Following the previous efforts to convert the sign module to OWL (https://github.com/odoo/enterprise/pull/36168/), this PR now converts the common and backend parts of the signature process into OWL and removes jQuery usage in the sign module (note that jQuery is still being used under the hood as jSignature is based on it, therefore we still have to add it in the manifest file). Also, some parts of the code that interact with the PDF.js iframe are not using OWL, but only vanilla JS. This is due to the way we interact with the PDF.js library. Essentially, we add the sign items to each page div rendered by the library. If we were to use OWL, we'd have to mount multiple OWL apps in the iframe and that would be cumbersome to manage. In order to have the benefits of the webclient and OWL, the solution was to pass services and the env object to the classes that implement the iframe logic. In order to keep the iframe logic closer to the experience of writing OWL code, it was chosen to have all iframe logic be implemented with JS classes. This also allows us to monkey patch our classes using the patch function. task-3286974
Subsidiary companies can now read accounting information from their parent company, including accounts, taxes, and fiscal positions. This reduces duplicate setup work and helps keep accounting rules consistent across company groups.
Original PR description
Accounts, taxes and fiscal positions of parent companies can now be read by children companies. [task-3371677](https://www.odoo.com/web#id=3371677&model=project.task)
Employee appraisals are now created automatically on each employee's scheduled appraisal date, making the process more timely and predictable. Completing an appraisal updates the next scheduled date, while safeguards prevent dates from being set in the past and new filters/grouping options improve follow-up.
Original PR description
appraisal plan's cron now creates the appraisals on the day of next_appraisal_date of the hr.employee. when an appraisal is done it sets that value on the employee. New filters and groupby's task 3356662
The live chat helpdesk mail shortcut setup has been moved to the mail area so it can be managed in the more appropriate shared location. This is an internal organization improvement that should make future maintenance easier without changing day-to-day user workflows.
Original PR description
community: https://github.com/odoo/odoo/pull/128120
Appointments is now presented as a dedicated Odoo app with its own menu, icon, onboarding, and service category placement. This makes appointment scheduling easier to find and manage, while adding clearer user permissions for creating, viewing, and managing relevant appointment links and invitations.
Original PR description
*- appointment_(crm,hr,hr_recruitment,sms),website_appointment(_crm),website_enterprise Purpose ======= This commit aims to turn the appointment module into a real app. To increase its visibility and…
*- appointment_(crm,hr,hr_recruitment,sms),website_appointment(_crm),website_enterprise
Purpose
=======
This commit aims to turn the appointment module into a real app. To increase its visibility and usage.
Specifications
==============
1. Menu item for the app with its icon.
2. Added to the service category.
3. Following menus moved from the calendar to this app: - Appointments - Reporting - Configuration: 'Reminders' also exist in calendar.
4. Onboarding panel is scoped to this app only.
5. Renamed the module category from 'Online Appointments' to 'Appointment'
6. Security:The new group 'User' introduced:
```
- create appointments.
- edit only the following kinds of appointments
=> no user set.
=> user itself mentioned in appointments.
=> resources are set.
- share links & invitations of config menu are visible to the 'User'
=> They can only see the ones that are related to them.
=> They cannot edit but they can read and should be able to
delete (old link, ...).
```
Task-3280730Helpdesk users now get clearer search options, filters, and grouping across teams, tickets, customer ratings, and SLA policies. This makes it easier for support teams to find the right records, review performance, and manage service commitments more efficiently.
Original PR description
Improve the UX for search view: - Improve the search view of the helpdesk team - Improve the filters, groupby and search view of the helpdesk ticket - improve the filters and groupby of customer ratings - Improve the filters, groupby and search view of the sla policies task-3265256
Resolved issues and error corrections
The salary configurator now correctly requires document-type personal information when it has been marked as mandatory or is needed for an employee benefit. This helps ensure employee salary package submissions include all required documents, reducing incomplete requests and follow-up work.
Original PR description
Issue: 'document' type of personal informations were not required on the salary configurator, even when they were set as required on the personal info. Moreover, we set personal information as required, if it is set as 'Requested Document' for an advantage. This changes also implied populating 'document' type personal informations for the tours. task - 3266175
This update fixes an issue in Appointments where the leave management wizard referred to an outdated date field, which could prevent the date selector from working correctly. It also reorganizes and renames Appointment menus so users see clearer, more consistent navigation.
Original PR description
The leave wizard was using an older field name for its date widget. The menus for appointment were not ordered properly. And the name of the menus did not match the name of the actions. task-3434098
Financial reports now preserve the lines users manually expanded on screen when exported to PDF or Excel. This ensures printed files match what users reviewed in the interface, reducing confusion and rework.
Original PR description
When printing a report, the lines that were manually unfolded in the UI should stay unfolded in the generated file. This wasn't working anymore.
Removing a tax during bank reconciliation now correctly removes the leftover empty journal entry line. This prevents confusing or inaccurate accounting entries from remaining after users adjust manual operations.
Original PR description
To replicate: - Open the bank reconciliation widget - Choose a statement line (preferably a line with no partner) - Mount the suspense line, to open the Manual Operations tab - Add a tax - Remove the tax You will notice the original base line has no debit/credit/balance but it stays in the journal entry (line_ids). No bug report (found by myself when adding the vehicle to the bank rec widget)
Features or functions removed from Odoo
VoIP now relies on the existing phone validation process for phone and mobile numbers instead of keeping duplicate sanitized fields. This reduces redundant data handling and helps keep contact and call information consistent with less maintenance overhead.
Original PR description
Since phone numbers in `phone` and `mobile` fields are already sanitized by the phone_validation module, there is no need to have the `sanitized_phone` and `sanitized_mobile` fields. Part of task-2832241 Upgrade: odoo/upgrade#3530
Code cleanup and technical improvements
Mexican electronic invoicing is being reorganized so invoice, payment, and delivery documents can be tracked more directly without relying on the older accounting EDI component. This improves visibility into CFDI status and payment reporting, while preparing the system for future point-of-sale global invoicing needs.
Original PR description
task: 3069324
The helpdesk repair integration has been updated to match broader changes in Odoo's repair process. Businesses can now manage repair work more cleanly apart from sales and invoicing, including linking one sales order to multiple repairs and using a dedicated repairs warehouse operation type.
Original PR description
Adaptation of helpdesk_repair to important changes made in repair. Main changes include : - Separate Repair and Sales/Invoicing functionalities - Possible binding between a Sale Order and many Repair Orders - Specific 'repair.line' model is now replaced by a 'stock.move' inheritance - Added a new 'Repairs' Operation Type to warehouse(s) Task : 3046560 Community : odoo/odoo#106911 Upgrade : https://github.com/odoo/upgrade/pull/4391
Miscellaneous changes
The `_compute_car_id` method would search for any vehicle linked to the employee, but without taking care of the vehicle type. Forward-Port-Of: odoo/enterprise#44200
Original PR description
The `_compute_car_id` method would search for any vehicle linked to the employee, but without taking care of the vehicle type. Forward-Port-Of: odoo/enterprise#44200
To avoid having articles with long names, we will remove the prefixes 'Kanban of' and 'List of' from the names and the first H1 headings of the articles created via the wysiwyg helper of Knowledge. This modification will make the articles appear lighter and less redundant. task-3384707 Forward-Port-Of: odoo/enterprise#43285
Original PR description
To avoid having articles with long names, we will remove the prefixes 'Kanban of' and 'List of' from the names and the first H1 headings of the articles created via the wysiwyg helper of Knowledge. This modification will make the articles appear lighter and less redundant. task-3384707 Forward-Port-Of: odoo/enterprise#43285
A small oversight in https://github.com/odoo/enterprise/pull/37891 introduced faulty translations with a different amount of "%s" items compared to the strings in the source code. This leads to TypeErrors: File "...l10n_cl_edi/models/account_move.py", line 480, in _l10n_cl_action_response msg = _('Document %s failed with the following response:') % (action_response[status_type].description) + \ TypeError: not all arguments converted during string formatting This commit fixes those
Original PR description
A small oversight in https://github.com/odoo/enterprise/pull/37891 introduced faulty translations with a different amount of "%s" items compared to the strings in the source code. This leads to…
A small oversight in https://github.com/odoo/enterprise/pull/37891 introduced faulty translations with a different amount of "%s" items compared to the strings in the source code. This leads to TypeErrors:
File "...l10n_cl_edi/models/account_move.py", line 480, in _l10n_cl_action_response
msg = _('Document %s failed with the following response:') % (action_response[status_type].description) + \
TypeError: not all arguments converted during string formatting
This commit fixes those faulty translations. Strings prepended with #| were not updated because those refer to "Previously untranslated" strings [1].
To fix the problem in affected databases the l10n_cl_edi module needs to be updated or the Spanish translations must be updated via the technical settings.
Spanish translations provided by VBE.
opw-3415429
Co-authored-by: Valentino Bedetta <vbe@odoo.com>
[1] https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html
Forward-Port-Of: odoo/enterprise#44091Set up currency rates of day A and day B Set Solucion Factible PAC Create an invoice in USD with date A Create a payment complement with date B -> CFDI validate correctly Set Quadrum PAC Create another invoice in USD with date A Create a payment complement with date B -> CFDI error Código: CRP20274 Mensaje: El campo ImporteP que corresponde a Traslado, no es igual a la suma de los importes de los impuestos registrados en el documento relacionado donde el impuesto del documento relaciona
Original PR description
Set up currency rates of day A and day B Set Solucion Factible PAC Create an invoice in USD with date A Create a payment complement with date B -> CFDI validate correctly Set Quadrum PAC Create another invoice in USD with date A Create a payment complement with date B -> CFDI error Código: CRP20274 Mensaje: El campo ImporteP que corresponde a Traslado, no es igual a la suma de los importes de los impuestos registrados en el documento relacionado donde el impuesto del documento relacionado sea igual al campo ImpuestoP de este elemento y la TasaOCuotaP del documento relacionado sea igual al campo TasaOCuotaP de este elemento. Due to a recent change within, Quadrum, the rounding method has been modified https://support.finkok.com/support/solutions/articles/31000170307-ajustes-validaciones-complemento-pagos-2-0 By changing the rounding method to “HALF-UP”, the payment complements are all signed properly opw-3416955 Forward-Port-Of: odoo/enterprise#44222
When expanding the last level of a groupby in any report, it crashed if the related model did not correspond to any caret option key either in the result of the custom handler's _caret_options_initializer() or in _caret_options_initializer_default(). This was due to the fact the controller's caretOptions() getter returned undefined, and LineName's hasCaretOptions() tried to access the 'length' field of its result. Forward-Port-Of: odoo/enterprise#43869
Original PR description
When expanding the last level of a groupby in any report, it crashed if the related model did not correspond to any caret option key either in the result of the custom handler's _caret_options_initializer() or in _caret_options_initializer_default(). This was due to the fact the controller's caretOptions() getter returned undefined, and LineName's hasCaretOptions() tried to access the 'length' field of its result. Forward-Port-Of: odoo/enterprise#43869
Ticket: 63066 Task latam: 1051 **Steps to reproduce**: 1) Go to runbot Odoo 16 enterprise and install "l10n_ar_edi" module (Argentinean Electronic Invoicing) and then "l10n_ar_reports" (Argentinean Accounting Reports). 2) Take position on Argentinian company (AR) (Responsable Inscripto) . 3) Go to Accounting / Reporting / Statement Reports / Tax Report and click on button "XLSX". 4) Select moves from current month. **Current behavior**: Date format on XLSX report is incorre
Original PR description
Ticket: 63066 Task latam: 1051 **Steps to reproduce**: 1) Go to runbot Odoo 16 enterprise and install "l10n_ar_edi" module (Argentinean Electronic Invoicing) and then "l10n_ar_reports" (Argentinean Accounting Reports). 2) Take position on Argentinian company (AR) (Responsable Inscripto) . 3) Go to Accounting / Reporting / Statement Reports / Tax Report and click on button "XLSX". 4) Select moves from current month. **Current behavior**: Date format on XLSX report is incorrect (date column).  **Expected behavior**: Date format on XLSX report is correct (date column).  **Video**: https://drive.google.com/file/d/1ECNCET76PPpSVyxtBKrUZrsZhnSgZ66k/view Forward-Port-Of: odoo/enterprise#43690