Thursday, December 4, 2025
19 changes · master
New functionality added to Odoo
This pull request integrates holiday functionality into the core HR Payroll module. It updates various files to align with the existing payroll system, ensuring accurate tracking and reporting of employee time off. This enhancement improves payroll accuracy and reporting capabilities.
Original PR description
TaskID: 4179953
Enhancements to existing features
This update replaces all 'Cancel' buttons with 'Discard' throughout the Odoo interface. This change simplifies the user experience by aligning the terminology with common user expectations and reducing potential confusion. It's a minor improvement focused on usability.
Original PR description
## Description:
Replaced all cancel buttons with discard
Task: [5353199](https://www.odoo.com/odoo/2328/tasks/5353199)
## review checklist
- [ ] feature is organized in plugin, or UI components
- [ ] support of duplicate sheet (deep copy)
- [ ] in model/core: ranges are Range object, and can be adapted (adaptRanges)
- [ ] in model/UI: ranges are strings (to show the user)
- [ ] undo-able commands (uses this.history.update)
- [ ] multiuser-able commands (has inverse commands and transformations where needed)
- [ ] new/updated/removed commands are documented
- [ ] exportable in excel
- [ ] translations (\_t("qmsdf %s", abc))
- [ ] unit tested
- [ ] clean commented code
- [ ] track breaking changes
- [ ] doc is rebuild (npm run doc)
- [ ] status is correct in OdooThis update enhances the visibility of the AI button within the Odoo interface. The contrast and alignment have been adjusted to ensure it's easily noticeable in both light and dark modes, improving the user experience. The button has also been centered on the toolbar for better usability.
Original PR description
This PR optimizes the AI logo's contrast to make it more visible and more consistent with the other WYSIWYG icons in both light and dark mode. It also centres the ai button on the toolbar. | Before | After | |--------|--------| | <img width="246" height="33" alt="wysiwyg-light-before" src="https://github.com/user-attachments/assets/8357ff78-06cc-4bbf-8ed8-ff14cf3e79c9" /> | <img width="261" height="42" alt="Screenshot 2025-11-07 at 15 29 29" src="https://github.com/user-attachments/assets/36cda5b2-7937-4ba0-97d2-4d345cf1a160" /> | | <img width="254" height="43" alt="wysiwyg-dark-before" src="https://github.com/user-attachments/assets/0807c8bd-a18e-4c86-920b-4d83ece31b78" /> | <img width="252" height="39" alt="Screenshot 2025-11-07 at 15 29 12" src="https://github.com/user-attachments/assets/49a67995-bc4a-4a74-9223-b0310e7c25f9" /> | task-5095689 PR-commu: https://github.com/odoo/odoo/pull/232281
This update simplifies receipt printer management within Odoo Enterprise by removing receipt printer logic from the hardware proxy service. This change improves the system's architecture and prepares it for future updates, ensuring smoother operation of point-of-sale systems. It’s part of a broader effort to streamline POS processes.
Original PR description
In order to deprecate the hardware proxy service, we moved the receipt printers logic out of it. see odoo/odoo#238347
This update enhances the ability to access data associated with 'sign' records linked to multiple records (X2Many). Previously, limitations prevented developers from utilizing this data effectively. Now, customization of the `SignerX2Many` class allows for broader access to information from the `sign.send.request.signer` model, streamlining data retrieval.
Original PR description
The class `SignerX2Many` is inheritable, but if we need another value from the o2m, we can't use it because the `signerX2Many` is not exportable. Enable `signerX2Many` customization, allowing more fields to be read from the `sign.send.request.signer` model. Forward-Port-Of: odoo/enterprise#99977
Resolved issues and error corrections
This update prevents the import process from accidentally changing the names of existing journal codes. Previously, importing data would overwrite journal names, causing confusion and potential data discrepancies. The fix ensures that existing journal names are preserved during the import process.
Original PR description
**Steps to reproduce:** * Install the **Accounting** module. * Go to **Accounting > Configuration > Settings**. * Download the **Import Journal Items** template. * Keep the default journal codes in…
**Steps to reproduce:** * Install the **Accounting** module. * Go to **Accounting > Configuration > Settings**. * Download the **Import Journal Items** template. * Keep the default journal codes in the template (e.g. *MISC*, *SAL*, *BNK*). * Import the file containing these existing journal codes into it by **Accounting > Configuration > Settings > Initial Setup > Import > Import Journal Items > Upload data file**. **Observed behavior:** * Existing journals have their names overwritten by the values provided in the import file. * For example, a journal with code **MISC** and name *Miscellaneous Operations* is updated to name **MISC** after import. **Cause:** * Journals are looked up by their `code`, but `_load_records()` passes both `name` and `id` for all rows. * As a result, existing journals are updated instead of preserved. **Fix:** * Pass only `id` for journals already found by code. * Pass `name` only when creating new journals. * This prevents unintended updates to existing journal names. opw-5345876 Forward-Port-Of: odoo/enterprise#100143
This update fixes a minor issue in the Belgian payroll module (l10n_be_hr_payroll_acerta) related to the error message displayed when an Acerta code is entered incorrectly. The message has been clarified to be more user-friendly and unambiguous, ensuring accurate data entry for Belgian companies. This improves the overall user experience and reduces potential errors.
Original PR description
Steps to reproduce: 1. Install l10n_be_hr_payroll_acerta 2. Switch to a Belgian company 3. Go to Payroll → Configuration → Work Entry Types 4. Edit a record and enter an Acerta code with only 2 characters Issue: - The validation message is missing a space between `that` and `is` - The message wording is ambiguous (PO request - fdav) Fix: - Updated the validation message to: `The following work entry types have an Acerta code that is not between 3 and 6 characters` opw-5347488 Forward-Port-Of: odoo/enterprise#100432
This update resolves a test failure that occurred when the demo data was used. The change ensures the test runs correctly without disrupting the demo environment, preventing potential issues during testing and demonstration of the Odoo Enterprise module.
Original PR description
Some tests were failing when the demo data were installed. This commit fixes the test so that it doesn't interfere with demo data. Related build error: https://runbot.odoo.com/odoo/runbot.build.error/234529 task-5386529
This update corrects a reporting issue where payment reports incorrectly included bank accounts with zero allocations. The change ensures that reports only display accounts with positive allocations, providing more accurate and reliable payment information. This improves the clarity and trustworthiness of financial reports.
Original PR description
-In case of creating payment reports for an employee with multiple bank accounts, if one of the accounts has an allocation of 0%, it still appears in the report. -This approach has been changed to include only accounts with positive allocations. Backport for odoo/enterprise#100643 Forward-Port-Of: odoo/enterprise#101080
A bug preventing users from adding salary inputs to payslips has been fixed. This issue arose after a recent update and was caused by an incorrect field reference. The fix utilizes the correct `struct_id` field to link payroll structures, ensuring smooth operation.
Original PR description
Currently, an error occurs when user tries to add a salary input on a payslip. Steps to replicate: - Install `hr_payroll`. - Go to any Employee payslip > Salary Inputs > Add Inputs. Error: `AttributeError: 'hr.payslip' object has no attribute 'structure_id'` Cause: - Error occurs after addition of a new [feature]. - The [code] tries to access `self.structure_id` on a record of `hr.payslip`, but since there’s no field named `structure_id`, it resulted in an error. Solution: - Used the field `struct_id` that keeps the record of linked `hr.payroll.structure()`. [feature]: https://github.com/odoo/enterprise/pull/98151 [code]: https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/hr_payroll/models/hr_payslip.py#L2159 No ID Forward-Port-Of: odoo/enterprise#100966
This update improves the speed of processing overtime on attendance records. The previous system was slow due to a missing database index, which caused delays when removing existing overtime entries. Adding an index has significantly optimized this process.
Original PR description
Updating the overtime on attendance may take huge time. The issue comes from the lack of index on work entries so it takes a lot of time to unlink an existing overtime line. So we add an index on the work entries (which is mainly null) Forward-Port-Of: odoo/enterprise#101223
This update resolves a bug where a previously unlinked call continued to appear in the Odoo softphone. The fix ensures that calls are immediately removed from the softphone interface when they are no longer linked, improving the user experience and data accuracy.
Original PR description
A call that was unlinked previously remained visible in the VOIP softphone. This fix ensures that the call is correctly removed from the softphone view as soon as it is unlinked. Task-5262162 Forward-Port-Of: odoo/enterprise#100803 Forward-Port-Of: odoo/enterprise#100036
This update addresses a potential instability issue in the Odoo payroll system. By adding a 'super call' to the `check_modification_allowed` method, the system now maintains a more complete call stack, helping to diagnose and resolve unexpected errors. This ensures the payroll process runs more reliably.
Original PR description
Add super call in `check_modification_allowed` method to maintain a call stack. task-5379473
This update simplifies the process of attaching expense documents. Users can now upload attachments to expense forms even if they haven't yet filled in the expense name or product details. This removes a previous requirement, making it easier to record expenses in draft form.
Original PR description
Enable the uploading of expense attachment on the form view even if the required fields "name" and "product_id" aren't provided yet. We therefore make these fields not required if the expense is in draft state. task-4684825
This update fixes a performance issue within Odoo's email testing process. The tests now correctly disable all relevant user groups, ensuring accurate results. Additionally, the tests have been optimized to reduce unnecessary database queries, improving overall efficiency.
Original PR description
https://github.com/odoo/odoo/pull/222290
This update fixes a problem where users continued to experience access errors after uninstalling the HR Payroll module. The changes ensure proper access rights are restored for relevant user groups (like HR Managers) during payroll removal and installation, preventing disruptions to work entry access.
Original PR description
Steps to reproduce: - install hr_payroll - unistall hr_payroll (you should still have hr_work_entry) - when you try to access work entries you get access error because it's still linked to payroll access Fix: - made the access rule for `group_hr_payroll_user` not override the access rule for `group_system` when installing payroll - added `uninstall_hook` to give access back for `group_hr_manager` when uninstalling hr_payroll - fixed an issue where `overtime_from_attendance` is not accessible for `group_hr_manager` (when having hr_work_entry installed without hr_payroll) task-id: 5177443
Features or functions removed from Odoo
This update removes the 'Registerer' component from the VoIP module. This change simplifies the VoIP system and aligns with evolving best practices for user experience. The removal addresses potential complexities and improves the overall stability of the system.
This update removes WebRTC support from the IoT modules, streamlining the system and reducing complexity. With the introduction of LNA for local networks, WebRTC is no longer necessary, and HTTP now provides a reliable alternative without requiring SSL certificates.
Original PR description
Community PR: odoo/odoo#238626 Since the introduction of LNA for communication on local networks, there is not much reason to use WebRTC as HTTP now also works without an SSL certificate. For this reason we remove it to reduce the complexity of the code. task-5386539
Code cleanup and technical improvements
This update adjusts WhatsApp channel permissions, specifically regarding the ability to leave or unpin messages. Previously, these actions were tied to individual conversations. Now, they are controlled at the channel level, providing more granular control over channel management. This change enhances security and simplifies channel administration.
Original PR description
PR community: https://github.com/odoo/odoo/pull/237705