Daily updates from Odoo
Tuesday, June 9, 2026
53 changes · master
New functionality added to Odoo
This update improves the Timesheets Assistant by adding a new rule that suggests entries like "Working on <drawing>" based on Excalidraw drawings. This allows users to more easily and quickly record their time spent on projects using this popular drawing tool, streamlining timesheet creation.
Original PR description
This commit adds an `aw.rule` covering Excalidraw. Timesheets Assistant can suggest "Working on <drawing>" entries. task-6267748
This update enhances Odoo's email functionality by adding support for GIFs. Users can now include animated GIFs in their email communications, improving engagement and visual appeal. This change allows for richer and more dynamic email marketing and communication within the Odoo platform.
Original PR description
Task-5491965
This update adds a 'Job Position' field to the resource search view within the Planning module. This allows users to more easily filter and group resources by their job role, improving search efficiency and organization. This change does not affect material resources.
Original PR description
In this commit, we add the job position (`job_id`) field to the resource views in Planning. The search more popup on resources will display it by default, and users will be able to filter and group by it. Importantly, this is not added to the Configurations -> Materials menu because this does not apply to material resources. task-6164222
Enhancements to existing features
This update simplifies the softphone's contact search by prioritizing recent contacts and providing a dedicated history view for each contact. The previous 'contacts' tab has been removed, streamlining the process to focus on searching and reviewing recent interactions, making it easier to find relevant contact information.
Original PR description
Before: - Search in "recent" tab searches recent calls. - A "contacts" tab allows to browse contacts (and search them). Now: - Search in "recent" tab searches *contacts*. This looks better as if you…
Before: - Search in "recent" tab searches recent calls. - A "contacts" tab allows to browse contacts (and search them). Now: - Search in "recent" tab searches *contacts*. This looks better as if you search "john", it is often more useful to find your multiple "john" contacts rather that a chaos list of all the calls you had with all the "john"s. - The "contacts" tab is gone (search them via keypad or recent tabs): indeed, browsing contacts is rarely useful, you'd rather search for them, which you can now do both in keypad and recent tabs. - From a "contact" entry (found with a search), a new "history" button allows to list recent calls records linked to that contact. This is mostly what you wanted while searching in the "recent" tab before: if you searched "john", you found all your "john" calls... but maybe of multiple "john"s. Now you find your multiple "john" contacts, click on the correct one, click the "history" button and find the calls you wanted to find. And more, see commits for details. task-5475573
This update improves the DEP7 export process by switching from PDF to JSON files, aligning with regulatory requirements for German tax reporting (BMF/RKSV). The new JSON format is machine-readable and uses a standardized filename structure, ensuring compatibility with official tax tools and simplifying data processing.
Original PR description
In this commit: ------------------- - Updated the DEP7 export to generate a zip with JSON files instead of PDF, in compliance with BMF (RKSV) requirements. - The export now produces a valid JSON document containing the machine-readable data expected by the official BMF tools. - The filename format has also been adjusted to follow common conventions (e.g. `Name_Duration_DEP_KassenID.json`). Task: 6071034 Forward-Port-Of: odoo/enterprise#112276
This update enhances the partner VAT listing report by grouping results first by VAT number. This change provides a clearer and more accurate view of partner VAT information, especially when multiple partners share the same VAT number, improving data visibility.
Original PR description
Add another level of grouping to the partner vat listing report to group first by vat number as there might be different partners sharing the same vat so it is more appropriate and better for visibility to have them grouped by vat. task-6133010
This update adds a worker code helper specifically for employer categories within the Odoo Enterprise system. This enhancement simplifies the process of assigning and managing worker codes, ensuring accurate reporting and compliance with Belgian tax regulations. It improves the functionality related to payroll and HR data for businesses operating in Belgium.
Original PR description
Added a worker code helper for employer categories task - 6139841
This update enables the ability to adjust past salaries through a new wizard, facilitating accurate payroll records. When a salary increase is applied, the system automatically triggers a correction process to update related payslips, ensuring data integrity. This change improves payroll accuracy and compliance.
Original PR description
[IMP] hr_payroll: allow past salary increases with correction flow Reworks the salary increase wizard to support past-dated increases. When validated payslips are affected, the wizard transitions to the payslip correction wizard. Also refactors hr.payslip.correction.wizard to support being pre-populated with payslips from the salary increase flow. Adds tests for the salary increase wizard. Task-6123622
This update aligns the subtotal fields within subscription sales orders with the existing margin layout, creating a more visually consistent and professional appearance. This change improves the overall presentation of sales order totals, enhancing the user experience for sales teams and customers. It’s a minor improvement focused on aesthetics and clarity.
Original PR description
Adapt subscription subtotal fields layout to match the margin section style and improve consistency in the sales order totals area. Community PR:https://github.com/odoo/odoo/pull/264260 Upgrade PR:https://github.com/odoo/upgrade/pull/10384 task-5887493
This update adjusts the minimum training time off threshold in the HR payroll system, effective September 1st, 2025. This change ensures compliance with updated Belgian regulations regarding training time off allowances. It also includes minor updates to time type definitions.
Original PR description
Adding a new parameter value for `rule_parameter_training_time_off_threshold` starting from September 1st, 2025. task-6230171
This update allows receptionists to quickly check out multiple visitors at once, streamlining the end-of-day process. Previously, each visitor needed to be checked out individually. The changes include a new mass checkout action and optimizations to improve performance and reduce database load.
Original PR description
Context ------- <img width="1914" height="373" alt="image" src="https://github.com/user-attachments/assets/22cb504a-8cc5-4d62-9218-d24e1bdd1f99" /> Receptionists may need to check out multiple visitors at the end of the day when some visitors are still marked as checked in. Previously, each visitor had to be checked out individually. Specification ------------- - Added a **Check Out** server action to the **Actions** dropdown in the Visitors list view. - Allows users to select multiple visitors and check them out in a single operation. Task-6236884
This update improves how commission losses are calculated for employees working on public holidays. The system now correctly determines the loss based on whether the employee joined during the current year (using daily average commissions) or during the current month (using monthly commissions divided by worked days).
Original PR description
Loss on commissions for public holiday must be handled differently when the employee arrived during the current year. If he arrived during the current year, the loss on commission must be the daily average commissions on the current year. If he arrived during the current month, the loss on commission must be this month commissions / number of worked days. task-6246944
This update simplifies the process of creating and reusing sign requests. Users can now save requests as templates, making them easily accessible and reusable. The sign request flow has also been improved with clearer navigation and added details about completion dates, enhancing efficiency and document management.
Original PR description
Before: - No direct way to convert a sign request into a reusable template from the documents list view or the open document view. - Navigator arrow disappeared when all fields were filled instead of…
Before: - No direct way to convert a sign request into a reusable template from the documents list view or the open document view. - Navigator arrow disappeared when all fields were filled instead of pointing to the "Validate & Send Completed Document" button, which was also positioned too low. - No way to see the signing completion date in the documents list view. After: - Added "Save as template" and "Send to" actions in the list view and open document view. - "Save as template" unarchives the linked template, marks it as reusable, adds it to favorites, opens the template list view and shows a confirmation toast. - Navigator arrow now points to the validate button once all required fields are completed; moved the validate button up for better visibility. - Added an optional "Completed on" column (hidden by default) showing the datetime when the signing session was completed; blank if not applicable. - Improved SignActionHelper in Templates and Documents views to better explain what each upload area is used for. Task: 6235676
Resolved issues and error corrections
This update removes unnecessary code from the timesheet grid component. Previously, unused data passed to the grid rows has been removed, streamlining the component and improving performance. This change ensures the timesheet grid is more efficient and maintainable.
Original PR description
Currently, we are not passing the relation props to the Many2OneGridRow component. Therefore, it is unused and has been removed. task: 4461272
This update fixes an issue preventing users from accessing the payroll tab when creating a new employee in the Belgium localization. The fix involved adjusting how a related field is calculated, ensuring the payroll tab opens correctly without errors. This improves the employee onboarding process for Belgian companies.
Original PR description
[FIX] l10n_be: payroll tab opening
Bug reproduction:
1 - Master -> Belgium company -> Employee app.
2 - Create new employee, before saving it press to payroll tab, traceback is there.
Bug cause:
1 - available_l10n_be_worker_status has a compute
2 - l10n_be_worker_status uses filterable_selection widget that uses available_l10n_be_worker_status as whitelist_fname.
3 - Before available_l10n_be_worker_status compute works, the JS of widget executes and this.props.record.data[this.props.whitelist_fname].includes raises the error, since False has not includes
Bug solution:
1 - I have used the filterable_selection in the Belgium Localization before and it was not causing this issue.
2 - I noticed that inherited=True is used in field available_l10n_be_worker_status for the employee, but there is no upper model that uses this field so inherited=True is meaningless.
3 - When we deleted it, it works.
task - 6275543This update simplifies the process of creating invoices for subscriptions by removing redundant logic previously handled by the Sales module. The change ensures Sales remains responsible for its button conditions, making the system more stable and easier to maintain. This improves the overall reliability of subscription billing.
Original PR description
Subscription used to override the Sales "Create Invoice" button to inject its own rules. That forced us to re-implement Sales visibility logic and keep it in sync, which is fragile and easy to miss when Sales evolves. Keep Sales in charge of its own button conditions and add a dedicated Subscription button only when needed. This preserves upstream behavior while still enabling subscription-specific flows. task-6208702 See also: - https://github.com/odoo/odoo/pull/263868
This update corrects a previous issue where the 'Add reaction' button was incorrectly displayed on all messages in the Odoo Chatter interface. The fix ensures the button's visibility is properly controlled, preventing a confusing user experience. This was a regression caused by a previous code change.
Original PR description
Before this commit, message action "Add a reaction" was always visible on all messages in chatter. This is a regression made by [1], in which the `Message.isActive` getter was overridden and mistakenly passed `undefined` as props to the `QuickReactionMenu`, which made it display the button. This commit fixes the issue by enforcing `Boolean()` on `Message.isActive`, so that this is properly provided to `QuickReactionMenu` to enforce its visibility state. https://github.com/odoo/odoo/pull/268832 [1]: https://github.com/odoo/enterprise/pull/110501 Before / After <img width="543" height="332" alt="Screenshot 2026-06-08 at 12 20 40" src="https://github.com/user-attachments/assets/92db46fd-f3d8-4d26-847e-c972e8103c83" /> <img width="527" height="313" alt="Screenshot 2026-06-08 at 12 20 53" src="https://github.com/user-attachments/assets/b49d18c2-b601-4567-872b-ceeb02ca1996" />
This update resolves an issue where PDF documents received via email were incorrectly displayed with a duplicate iframe preview. The fix ensures that the document preview accurately shows the PDF content, addressing a visual inconsistency. This improvement enhances the user experience when viewing documents attached to emails.
Original PR description
**Steps to reproduce:** - Install documents_account - Set up alias to catch incoming mails - Receive a mail with xml attachement which can be previewed as pdf - Go to Documents app - Click on the…
**Steps to reproduce:** - Install documents_account - Set up alias to catch incoming mails - Receive a mail with xml attachement which can be previewed as pdf - Go to Documents app - Click on the document preview - Preview is split in two iframes, both with the same content (pdf) **Issue:** Due to the `isPdf` patch the attachment can match multiple types for the preview (pdf and text) as both getter return `true`. ``` <iframe t-if="state.file.isPdf" ... <iframe t-if="state.file.isText" ... ``` It also seems that xml received by mail are imported as text, which is why the issue doesn't happen when manually uploading the same xml file. **Fix:** Ensure that if the document is matching `isPdf`, it doesn't trigger the second iframe with `isText`. Also it seems fixed in 19.0 as the text iframe is replaced by this xpath: `<xpath expr="//iframe[@t-if='state.file.isText']" position="replace">` which was added for https://github.com/odoo/enterprise/commit/de614ee5e9a087d49939c65c0118ae6164c7b31b related patch: https://github.com/odoo/enterprise/commit/ffcdd2275c8bf564e15151ccbcaf3965ed968450 opw-6018536 Forward-Port-Of: odoo/enterprise#118863 Forward-Port-Of: odoo/enterprise#112041
This update fixes a bug that prevented recent ratings from appearing in the Helpdesk rating dashboard. The change now uses the current date and time for searches, ensuring that ratings created within the last seven days are accurately reflected. This improves the accuracy of reporting and provides a more complete view of customer feedback.
Original PR description
Before this commit, the ratings created the current date at 23h will not been taken into account in helpdesk rating dashboard. This commit uses datetime.now() instead of date.today() to search the ratings in the last 7 seven days. runbot-error-230905 Forward-Port-Of: odoo/enterprise#119035
This update corrects an issue in the l10n_lu_reports module that caused incorrect balance sheet reports. Specifically, fields 2955 and 2956 must always be set to zero, as required by Luxembourg's eCDF reporting standards. Fixing this ensures reports are accepted by the eCDF, preventing data rejection and maintaining accurate financial reporting.
Original PR description
Before this commit, fields 2955 and 2956 in the balance sheet could be incorrect. 2955 must always be blank (not exist) and 2956 must always be 0 per: https://ecdf-developer.b2g.etat.lu/ecdf/forms/popup/CA_PLANCOMPTA/2020/en/2/rules page 116 + 117 If they are not these values specifically, submitting the XML to eCDF results in the report being rejected. Steps to reproduce: - Install l10n_lu_reports - Create a journal entry for a closed year (2025) that debits account 142000 and credits another account that starts with a 1 - Go to the balance sheet for 2025 - Download the XML for the report - 2955 is present and 2956 is either not present or is not 0 (behavior varies between versions) Ticket [link](https://www.odoo.com/odoo/project.task/6246564) opw-6246564 Forward-Port-Of: odoo/enterprise#119193
This update fixes a technical error that was preventing warning messages from being logged correctly within the IoT module. The issue stemmed from how data was being passed to the logging function, and this change ensures all warning messages are now properly recorded.
Original PR description
Error: ``` TypeError: Logger._log() got an unexpected keyword argument 'ip' ``` Cause: - The `**new_iot_record` unpacks the dictionary into keyword arguments for `Logger._log()` instead of supplying it as the value for the third `%s` placeholder in the warning message, causing the error because `_log()` doesn't accept keywords such as `version` or `ip`. sentry-7522168864 Forward-Port-Of: odoo/enterprise#119494
This update resolves a bug where the 'Reset Selected Work Entries' function in payroll was unexpectedly deleting work entries. The issue stemmed from incorrect time zone handling, which caused the system to incorrectly identify and remove entries. The fix ensures accurate work entry management regardless of employee time zones.
Original PR description
Setup: Set the work entry source to attendance for an employee with active contract and change his timezone so that it differs from the working schedule one. Reset previous/next day delete Work Entry (payroll) - Step to reproduce: after an attendance was created, go to "Work Entries" in payroll, select the previous/next day and hit "Reset Selected Work Entries". The Work Entry will disappear. - Cause: domain to nullify using wrong tz - Solution: adjust domain to use calendar tz - Test: testing positive ans negative tz in hr_work_entry_attendance (enterprise) Task: 6072325 Forward-Port-Of: odoo/enterprise#118940 Forward-Port-Of: odoo/enterprise#114148
A technical issue preventing users from configuring billing targets within the Timesheets module has been resolved. This change ensures that users can correctly set billing rates for employee time entries, improving the accuracy of billing data. The fix addresses a problem related to a required field within the Timesheets configuration.
Original PR description
… of employees Prerequisites to reproduce: - Enable `Billing Rate Indicators` in timesheets. - Change timesheet access of user to `User: all timesheets` - Remove Employee access Steps to Reproduce: - In Timesheets app, from configuration go to `Billing Time Targets` - Click on view button on any row Issue: - A traceback breaking the flow. Reason: - We use `hr_presence_status` widget which requires `work_location_type` field, change made from https://github.com/odoo/odoo/commit/0496ed10636c7b2dfde7038a43494d4edbd9f95b. - Thus unavailability of field causing the traceback. Fix: - Add a related field for work_location_type from which we get the value. Forward-Port-Of: odoo/enterprise#97502
This update adds a warning banner to key Philippine tax reports (SAWT/QAP, BIR 2306/2307, SLSP) to alert users when contacts within the report lack a defined entity type. This ensures accurate reporting and helps users quickly correct missing information, preventing potential issues with tax compliance.
Original PR description
Add a warning banner on SAWT/QAP, BIR 2306/2307, and SLSP reports when one or more contacts appearing in the report do not have an entity type set. The banner includes a link to view and update the affected contacts. Community PR: https://github.com/odoo/odoo/pull/268460 task-6278053
This update corrects a previous issue in the overtime tour by changing the tracking method field from a dropdown to a checkbox. This simplifies the process for employees and administrators, ensuring consistent and accurate overtime tracking. The change also includes improvements to the tour's execution flow.
Original PR description
The tour previously matched the tracking method field with his previous implementation, where it was a dropdown selection, while now is a checkbox. task-6197878 Forward-Port-Of: odoo/enterprise#116733
This update corrects an issue where combo products incorrectly appeared in the 'Invoiced Not Delivered' report even after full delivery of their items. The fix ensures the report accurately reflects only genuinely undelivered items by excluding the combo parent line, which doesn't track actual stock movements.
Original PR description
**Problem:** A combo product's parent line appears in the "Invoiced Not Delivered" report (Accounting > Review) and stays there permanently, even after all of its combo items are delivered. **Steps…
**Problem:** A combo product's parent line appears in the "Invoiced Not Delivered" report (Accounting > Review) and stays there permanently, even after all of its combo items are delivered. **Steps to reproduce:** 1. Create a combo product bundling two storable items. 2. Sell the combo on a sale order, confirm and invoice it. 3. Deliver every combo item. 4. Open Accounting > Review > Invoiced Not Delivered. **Current behavior:** The combo parent line is listed. While items are partially delivered, both the parent and the items are listed, duplicating the same information. **Expected behavior:** The combo parent is not listed; only the combo item lines, which carry the real delivery state, appear when they are genuinely not delivered. **Cause of the issue:** A combo parent is a virtual sale order line with no stock move of its own, so its delivered quantity is never advanced and always reads 0. The accrual report selects lines where `qty_invoiced_at_date > qty_delivered_at_date`, so the parent (which does receive an invoiced quantity from the combo logic) matches forever. **Fix:** Combo parents carry no delivery information of their own, so excluding them from the accrual search domain is more accurate than inventing a delivered quantity for them. Their combo item lines already represent the real delivery state, so the report stays correct. opw-6215110 Forward-Port-Of: odoo/enterprise#119243 Forward-Port-Of: odoo/enterprise#118942
This update resolves a bug that prevented users from creating new social media posts when no social account was configured. The fix prevents a crash caused by attempting to measure the width of a read-only text area, ensuring a smoother post creation experience.
Original PR description
Steps to reproduce: 1. Install social module 2. Keep no social account set 3. Create a new post by social media > posts menu > new Issue: We got a traceback saying: `OwlError: An error occured in the owl lifecycle (see this Error's "cause" property) TypeError: Cannot read properties of null (reading 'getBoundingClientRect')` Cause: When no social account is set, the message field renders in read-only mode, so the <textarea> is never mounted, and textareaRef.el is null. The useEffect tracking the textarea's width fires and crashes. https://github.com/odoo/enterprise/blob/77be4285785f9d8a462b99b23185a9aefeae4482/social/views/social_post_template_views.xml#L37-L41 Solution: Add a null guard on textareaEl inside the useEffect callback so that the width computation is skipped when the textarea is not present in the DOM. opw-6218431 Forward-Port-Of: odoo/enterprise#117599
This update corrects a bug in the Belgian payroll calculation that prevented the correct handling of the 'forced variable salary' for the 13th month pay structure. The fix ensures the system accurately incorporates this salary value during payslip computation, resolving a previous type error.
Original PR description
Steps to reproduce: * Create a new payslip in belgian localization * Set pay structure type to 13th month * Set the input value for the forced variable salary * Compute the payslip sheet Issue: * Despite the change of benefits to properties, the avg_variable_revenues was still being set as one of the benefit lines instead of ref_property value which was causing an type_error traceback Solution: A simple approach is to be followed to retrieve the value fo the forced variable salary from the actual property being set by the user at the payslip form view and will be accounted for in the payslip computation. Task: 6241608 Forward-Port-Of: odoo/enterprise#118862 Forward-Port-Of: odoo/enterprise#118644
This update fixes an issue preventing standard users from accessing timesheet configuration options and sharing rules with higher-level users. The change ensures all users with appropriate access, including those with 'All Timesheets' permissions, can correctly configure and share timesheet rules.
Original PR description
Issue 1: Assistant Rules inaccessible to standard users Steps to Reproduce: - Install sale_timesheet. - Disable the "Billing Rate Indicators" setting. - Log in as a user with only "Own Timesheets"…
Issue 1: Assistant Rules inaccessible to standard users Steps to Reproduce: - Install sale_timesheet. - Disable the "Billing Rate Indicators" setting. - Log in as a user with only "Own Timesheets" access. - Open the Timesheets app. Current Behavior: - The Configuration menu is completely hidden, making Assistant Rules inaccessible to the user. Cause: - When sale_timesheet is installed, the "All Timesheets" access restriction is inaccurately applied to the main Configuration parent menu rather than specifically targeting the Billing Rate child menus. - The Configuration menu is blacklisted using a strict AND condition, requiring the user to have the Use Assistant group and hold a Timesheets Admin / Administrator / Technical Features role. This prevents standard timesheet users from configuring their own rules. Fix: - Remove the "All Timesheets" access restriction from the parent Configuration menu and apply it directly to the Billing Rate menus instead. - Update the blacklisting logic to use an OR condition, ensuring the configuration menu is visible if a user has Admin access to timesheets or belongs to the Use Assistant group. --- Issue 2: Unable to share rules with higher-level users Steps to Reproduce: - Create a user with "All Timesheets" access. - Open the Timesheets app and navigate to Assistant Rules. - Attempt to share any rule with the newly created user. Current Behavior: - The new user is missing from the dropdown selection list. Cause: - The domain on the user selection field filters based on explicitly assigned groups (using group_ids for "Own Timesheets" access). Users with higher-level access, such as "All Timesheets" or "Timesheets Admin", have this access implied rather than explicitly assigned, meaning it only registers in `all_group_ids`. Fix: - Update the field domain to evaluate `all_group_ids` instead of `group_ids`. This ensures users with implied group access are correctly populated in the dropdown list. task-6236300 Forward-Port-Of: odoo/enterprise#117984
This update optimizes the timesheet grid by preventing unnecessary reloading of the entire form when you switch focus between the timer and other fields. This results in a smoother, faster experience for users entering and editing their timesheets. It’s a small but important improvement for efficiency.
Original PR description
This PR prevents re-rendering the whole systray form view when focusing in and out of the timer field. We instead handle the focus in the widget, ensuring only the field itself re-renders. Task-6251180 Forward-Port-Of: odoo/enterprise#118820 Forward-Port-Of: odoo/enterprise#118524
This update fixes an issue where the ICP export generated inconsistent XML reports by using values from multiple company contexts. The change ensures a single, reliable company context is used, improving the accuracy and clarity of the exported data. This resolves potential confusion and ensures data integrity for reporting.
Original PR description
Description of the issue this commit addresses: The ICP export could mix values from different company contexts. In some cases, the main identifier and the fiscal entity division value did not come from the same source, which could create confusing or inconsistent XML output. --- Desired behavior after this commit is merged: This commit makes the ICP export use one consistent company context for identifier values, reuses precomputed values when available, and avoids overwriting them with unrelated defaults. --- task-6065382 Forward-Port-Of: odoo/enterprise#119549 Forward-Port-Of: odoo/enterprise#112995
This update fixes an issue where online orders with tax included were incorrectly calculating prices. The fix ensures that the unit price and total price accurately reflect the tax amount, providing correct order totals for UrbanPiper integrations. This improves the accuracy of online sales transactions.
Original PR description
Steps to reproduce: --- - Configure Point of Sale with UrbanPiper credentials. - Sync a product priced at 100 with a 5% GST (tax type = Tax Included). - Place a test order. Issue: --- - Wrong calculation in order line: - unit_price: 95.24 - Tax Excl. price: 90.70 - Tax Incl. price: 95.24 - Expected: - unit_price: 100 - Tax Excl. price: 95.24 - Tax Incl. price: 100 Cause: --- - While computing the unit_price with Tax Included, the tax amount was not added back. Fix: --- - Ensure unit_price includes the tax amount when tax type is Tax Included. task-5031196 Forward-Port-Of: odoo/enterprise#119587 Forward-Port-Of: odoo/enterprise#92854
This update ensures that plugins used within the Odoo Sign service are correctly set up as services. This improves the stability and reliability of the sign request process, preventing potential errors and ensuring a smoother user experience for customers.
This update resolves minor issues impacting payroll calculations for Philippine employees. Specifically, it corrects data group assignments and ensures accurate display of payroll information, improving the reliability of payroll processing. The changes also align with testing requirements for data updates.
Original PR description
- Fixes a small issue with the computation of the amounts, by updating the compute dependencies and following the parent view example of using force_save on the fields. - Correct the invisible condition on the rate fields to properly hide the column itself and not its content. - Correct the group set on the daily wage field of the employee model, which should be the payroll user group and not the hr user group - As required by test_hr_payroll_data_updatable, update the salary structure to not be no-update.
The Documents app's search feature was temporarily broken after a recent update to improve memory usage. This fix re-introduced a necessary step to ensure uploaded files are correctly indexed for searching. While the memory optimization remains in place, this change restores the core search functionality.
Original PR description
**Steps to reproduce:** - Install Documents app - Upload a new pdf file - Try to search the file with the 'Indexed Content' filter - Search won't find the file even if the uploaded document contains…
**Steps to reproduce:** - Install Documents app - Upload a new pdf file - Try to search the file with the 'Indexed Content' filter - Search won't find the file even if the uploaded document contains the searched keyword/content **Issue:** After [1] (19.3+) the file upload process was reworked to avoid loading entire files into memory during attachment creation (removed `'raw': file.read()`). But this breaks the index content creation as it was using the `raw` field value during the create to trigger the `_index` function in `_get_datas_related_values`. Also, restoring the previous behavior for the indexation would undo the memory usage improvements that were made. **Fix:** Added the `_index` call in `_upload_file` after the attachment creation. Also optimize the default text index to avoid reducing too much the memory improvements (but for now the other mimetypes can still be impacted by the type-specific `_index_*` and the external libraries performances). [1] https://github.com/odoo/odoo/commit/6222dedaf89a595b6f499679c3f553aa081c46bd opw-6232999 Forward-Port-Of: odoo/enterprise#119635
This update corrects a technical issue in the Swiss Balance Sheet reporting, specifically within the Equity section. It now accurately separates legal reserve and retained earnings, providing a clearer and more compliant financial report. The 'Annual profit or loss' field is now used solely for informational purposes.
Original PR description
Fix the Equity section in the Swiss Balance Sheet. Adding a new line 'Profit / Loss brought forward' for the result brought forward, that allows to separate the legal reserve and the results. The new structure for the equity section is: - Share, corporate or foundation capital - Legal reserve - Retained earnings - Profit / Loss brought forward - Previous years' unallocated profit or loss - Treasury shares The 'Annual profit or annual loss' is now purely indicative and is not taken into account in the equity computation, as the amounts in this section are considered in the new Retained Earnings section. task-6220525 Forward-Port-Of: odoo/enterprise#119625 Forward-Port-Of: odoo/enterprise#117601
This update corrects a bug that prevented signature requirement features from working correctly for US deliveries using UPS. The change adjusts the API request to match UPS's requirements for package-level deliveries, ensuring accurate rate calculations and delivery confirmation. This resolves an error message related to unavailable options.
Original PR description
Issue ----- Enabling signature requirement blocks US -> US deliveries. Steps to reproduce ----- - Setup UPS - enable signature requirement - Set current company to US - Create a US Customer - Create…
Issue ----- Enabling signature requirement blocks US -> US deliveries. Steps to reproduce ----- - Setup UPS - enable signature requirement - Set current company to US - Create a US Customer - Create a product with some weight - Create a SO for the product - Add UPS delivery and try to get a rate > Error: "The requested accessory option is unavailable between the selected locations." Cause ----- Depending on the type of transfer, signature is requested at shipment or package level (see the "Delivery Confirmation Origin-Destination Pairs" category of the following link) https://developer.ups.com/api/reference/shipping/appendix1?loc=en_US US50 -> US50 & Canada -> Canada is package level Everything else is shipment level By default we use 'ShipmentServiceOptions_DeliveryConfirmation' for which 'DCISType' = 1 is the correct value. https://github.com/UPS-API/api-documentation/blob/b4064887ebcd9cd98085bc4cce088677c664473f/Shipping.yaml#L8902-L8911 For package level, we should use 'PackageServiceOptions_DeliveryConfirmation' for which 'DCISType' = 2 would be the expected value https://github.com/UPS-API/api-documentation/blob/b4064887ebcd9cd98085bc4cce088677c664473f/Shipping.yaml#L10410-L10421 ----- Ticket: opw-6173624 Forward-Port-Of: odoo/enterprise#117564
This update resolves an issue where clicking on social media posts (Facebook, Instagram, YouTube) without comments would cause a system crash. The fix ensures that the comments dialog opens correctly for these posts, improving the user experience. It also aligns the appearance of comments counters for different social media types.
Original PR description
*=social_youtube,social_instagram,social_facebook,social_twitter, social_linkedin **How to reproduce:** - Open the Social Marketing feed. - Click a Facebook, Instagram, or YouTube stream post with no…
*=social_youtube,social_instagram,social_facebook,social_twitter, social_linkedin **How to reproduce:** - Open the Social Marketing feed. - Click a Facebook, Instagram, or YouTube stream post with no comments. **Issue:** - A traceback is raised because the click handler tries to call `click()` on a missing comments element. - The comments dialog does not open. **Cause:** - The kanban record click handler forwards clicks to `.o_social_comments`. - For some media, the comments counter is not rendered when the post has zero comments. - See: https://github.com/odoo/enterprise/commit/0293d3e839825a4333882e831960050070b02ba6 **Fix:** - Make the shared handler detect when the comments element is missing. - Delegate that case to media-specific handlers so Facebook, Instagram, and YouTube can open their comments dialog directly. - This commit also hides the X and LinkedIn comments counters when there are no comments, aligning them with the other social media cards. Task-6113089 Forward-Port-Of: odoo/enterprise#118006
This update fixes a potential error that could cause the system to crash when calculating rental availability for products with start and return dates. Specifically, it prevents issues arising from conflicting date ranges between the cart and the product page, ensuring accurate availability displays.
Original PR description
Preventing traceback on incompatible dates between the cart and the product page. How to reproduce: 1. Add to cart a product with periodicity Hours/Days with a start date = return date (e.g.: Projector). 2. Go to the product page of a product configured with Pickup > Return (e.g.: Premium Bike, Luxury Room) 3. Traceback, as we try to get the availabilities on a negative period. start date > end date, as both dates are equals and the time is set from the Pickup and Return fields. Forward-Port-Of: odoo/enterprise#119570 Forward-Port-Of: odoo/enterprise#119480
This update resolves a failed test within the Odoo payroll system. The change involved making payroll warning data updatable, ensuring the system's accuracy and stability. This fix prevents potential issues with payroll calculations and reporting.
Original PR description
In this commit, we fixed a failed test by setting some payroll warnings updatable. task-6247204
This update fixes an error in the calculation of a specific employee contribution (cotisation_812) related to end-of-collaboration payslips for Belgian employees. The previous calculation was incorrect, leading to inaccurate contribution amounts. This change ensures accurate reporting of these contributions, aligning with Belgian tax regulations.
Original PR description
* = l10n_be_hr_payroll, test_l10n_be_hr_payroll_account
STEP TO REPRODUCE:
------------------
1- Log into a belgium company
2- click on "End of collaboration" for an employee with a ANNUAL_SALARY_REVALUED equal to 52248.52
3- Generate the termination payslip
4- Check the cotisation_812 value:
this value will be equal at 1/2 * 1/100 * TERM_BASIC and not 1/100 * TERM_BASICThis update introduces support for calculating and reporting voluntary overtime hours in Belgium, aligning with local regulations. It includes new work entry types, salary rules, and reporting mechanisms for DMFA and 281.10 tax forms, ensuring accurate payroll and tax compliance.
Original PR description
Add support for Belgian voluntary overtime in payroll, DMFA, and 281.10 reporting. * Introduce dedicated work entry types for: * Voluntary overtime exempt from ONSS/precompte (DMFA service code 81) *…
Add support for Belgian voluntary overtime in payroll, DMFA, and 281.10 reporting. * Introduce dedicated work entry types for: * Voluntary overtime exempt from ONSS/precompte (DMFA service code 81) * Voluntary overtime subject to ONSS/precompte at 150% and 200% rates (DMFA service code 1, remuneration code 1) * Add salary rules and categories for voluntary overtime remuneration. * Enforce yearly thresholds through payroll parameters: * 240h for voluntary overtime exempt from ONSS * 120h for voluntary overtime subject to ONSS * Exclude voluntary overtime from employment bonus calculations and paid amount computation where required. * Include voluntary overtime remuneration in payroll calculations and DMFA declarations. * Add dedicated 281.10 reporting support for voluntary overtime exempt from ONSS using the reserved tax form fields. * Fix DMFA service hour computation and add payroll/DMFA test coverage. TaskID: 6275791 Forward-Port-Of: odoo/enterprise#119355
This update resolves an issue where partner names with '&' characters were being incorrectly formatted for SEPA bank file exports, leading to rejections. The fix ensures '&' is preserved in human-readable fields like partner names and addresses, aligning with banking standards and preventing errors.
Original PR description
Problem: The previous fix (replacing '&' with '+' in _replace_characters_SEPA) was applied globally, affecting both reference/identifier fields and human-readable fields such as <Nm> (partner name)…
Problem:
The previous fix (replacing '&' with '+' in _replace_characters_SEPA) was applied globally, affecting both reference/identifier fields and human-readable fields such as <Nm> (partner name) and address lines.
As a result, a partner named "test & test GMBH" was exported as:
<Nm>test + test GMBH</Nm>
instead of the expected:
<Nm>test & test GMBH</Nm>
This caused bank file rejections because '&' is the correct XML encoding of '&' and is accepted by banks in human-readable fields.
Root cause:
ISO 20022 / EPC217-08 distinguishes two categories of data elements:
- Reference/identifier fields (InstrId, Ustrd, etc.): must use the restricted basic Latin character set — '&' is not allowed and must be replaced with '+'.
- Human-readable fields (Nm, AdrLine, etc.): may contain the extended Latin character set — '&' is valid and must be preserved so lxml can XML-escape it to '&' in the output.
Fix:
Revert the global '&' → '+' replacement in _replace_characters_SEPA so that '&' is preserved for name/address fields. The replacement of '&' with '+' for reference/identifier fields is already handled explicitly at the call sites in _get_CdtTrfTxInf (InstrId, Ustrd) via .replace('&', '+') before sanitize_communication is called.
ref commit : https://github.com/odoo/enterprise/pull/110809/changes/9e698e4ac9fdf66189ff6712f90a144560a1b484
documentation https://www.europeanpaymentscouncil.eu/sites/default/files/KB/files/EPC217-08%20Draft%20Best%20Practices%20SEPA%20Requirements%20for%20Character%20Set%20v1.1.pdf:
Forward-Port-Of: odoo/enterprise#119640
Forward-Port-Of: odoo/enterprise#115409This update resolves an issue where the 'Sign Now' button wasn't appearing for internal users who were eligible to sign documents. The fix ensures the button is displayed correctly based on whether a signing order is in place, improving the user experience for internal signers.
Original PR description
Version: - saas-19.4 Steps to reproduce: - Create a sign request for an internal user. - Open the sign document from the Sign app. Issue: - The Sign Now button is not visible even when the current user is one of the signers. Cause: - The button visibility logic does not correctly check whether the current user is allowed to sign the document. Solution: - Show the Sign Now button when the current user is one of the pending signers and no signing order is configured. - If signing order is configured, show the button only when it is the current user's turn to sign. task-6267257
This update resolves a visual issue where the 'attendance-based' checkbox on employee payroll forms was missing its label and help text. The fix correctly positioned the field within the schedule group, ensuring it appears as intended for employees. This improves the usability of the payroll process.
Original PR description
[FIX] hr_work_entry_attendance: fix attendance_based checkbox Reproduction: Install hr_work_entry_attendance, employee form view, payroll tab, there is no label and help in the checkbox of attendance_based Bug cause: The field is added to the just after schedule group but indeed it should be added inside of the schedule group. Since it has not above group in view, it was not appearing properly. Solution: I put the field inside to the schedule group. task - 6284137
This update resolves a visual issue with the Frontdesk welcome screen, ensuring the privacy notice design adapts correctly to different content. This improves the user experience and maintains consistent branding within the Frontdesk module.
Original PR description
This PR fixes several visual issues caused the privacy notice design to be not tailored to any type of possible content. task-6022341
Features or functions removed from Odoo
This update simplifies the user experience by removing the 'Request Document' button from the activity overview. Previously, this button was confusingly placed, as it was used for scheduling activities rather than viewing them. This change ensures a cleaner and more intuitive activity overview for all users.
Original PR description
Purpose ======= - The request document should not be in the activity overview, as it is more like scheduling an activity rather than viewing the activity. Specification =============== - Remove the `Request Document` button from the activity overview to maintain consistency. Task-5424205
Code cleanup and technical improvements
This update simplifies the configuration of UOM views across various Odoo modules by renaming XML IDs. This change eliminates potential confusion between UOM and product UOM views, ensuring a cleaner and more consistent system. It’s a routine maintenance update to improve internal development processes.
Original PR description
This PR renames `uom.uom` xml ids to remove existing confusion with `product.uom` views and to match naming conventions. Community PR: https://github.com/odoo/odoo/pull/262588 Upgrade PR: https://github.com/odoo/upgrade/pull/10183 Task-6148914
This update simplifies automated tour steps within Odoo by removing unnecessary code and configurations. Specifically, it eliminates redundant wrappers and keys that weren't relevant in the test environment, resulting in a cleaner and more efficient codebase. This improves the overall performance and maintainability of the automated tour system.
Original PR description
In automatic tour steps, remove: - `_t()` and `markup()` wrappers (not needed in test context) - `tooltipPosition` keys (not relevant in automatic mode) - empty `run` functions
This update resolves an issue related to the rendering of account reports by replacing an outdated JavaScript technique. The change ensures the reports load and function correctly, addressing a potential performance bottleneck. This update aligns with best practices and avoids deprecated code.
Original PR description
Replaces useLayoutEffect with onPatched (useEffect was tried but fires before onPatched; setTimeout and Promise.resolve() chaining were also attempted to defer the call, but all microtask tricks still run before onPatched, where child field inputs are not yet focusable) WHY: useLayoutEffect is deprecated in OWL3[REF] : Replace useLayoutEffect Community PR: https://github.com/odoo/odoo/pull/268040
This update adjusts the helpdesk view to accommodate a change in how 'rotting field' widgets are organized. This improves the user interface and ensures the helpdesk functionality continues to operate smoothly. The change was driven by a task to streamline the helpdesk experience.
Original PR description
This commit adapts the helpdesk view to the split of rotting field widgets. Spotted in task~5262907
This update simplifies the codebase by removing the `useState` dependency, a component previously used for compatibility. The team has provided migration tooling and addressed the remaining instances of `useState`. This change improves code maintainability and efficiency.
Original PR description
In Owl3, uses of `useState` or replace with `proxy`. This commit removes `useState` from the compatibility layer, provides tooling for the migration in `owl3-migration` and removes the last uses of `useState`. *: ai, knowledge, obox, web_gantt
This update enhances the stability and reliability of Odoo's Web Studio module by utilizing 'contextvars'. These contextvars allow for more robust data handling within the editor, preventing potential issues and improving the overall user experience. This change focuses on internal improvements within Web Studio.
Original PR description
https://github.com/odoo/odoo/pull/256613