Daily updates from Odoo
Friday, April 24, 2026
58 changes · master
Enhancements to existing features
This update enhances the Chilean eCommerce checkout process by requiring RUT (tax ID) information and streamlining invoicing. It now uses the customer's actual business record for invoices, simplifying data and ensuring accurate tax settings for Chilean sales. This improves compliance and the overall customer experience.
Original PR description
Improve the Chilean eCommerce checkout flow: - Make RUT mandatory at checkout for Chile and remove RUT(VAT) from invoicing step. - Use the buyer's real partner record for `Invoice Address` instead of an anonymous partner on the sale order. - Automatically set Taxpayer Type to `End Consumer` and Identification Type to `RUT` for tickets. Related PR : https://github.com/odoo/odoo/pull/249398 task-5098418
This update automatically sends WhatsApp messages when a WhatsApp channel is created. This streamlines the process of sending messages within the system, improving efficiency. It's part of a larger effort to enhance WhatsApp functionality within Odoo Enterprise.
Original PR description
`Store` automatically calls bus send when a bus channel is given. part of task-5242369 community: https://github.com/odoo/odoo/pull/259865 Forward-Port-Of: odoo/enterprise#114187
This update adds a convenient button to the DMFA form in Odoo, allowing users to instantly preview the generated PDF document in a new tab. This improves usability by eliminating the need to manually download and open the PDF, streamlining the process for payroll reporting.
Original PR description
In this commit, we added a preview button in hr.dmfa form view that will open the generated PDF in preview mode in a new tab. task-6067446
This update enhances the signing process by allowing users to directly update the original Odoo records with information entered during the signing workflow. The system now intelligently handles different data types and formatting, ensuring accuracy and preventing data loss. This improves the reliability and usability of the signing feature.
Original PR description
Add an "Update values in Odoo" option that allows values entered during the signing process to update the original Odoo records. The sync process handles different data types and potential input issues. It parses localized date formats, formats text for HTML fields, and prevents data loss by ignoring blank fields or conflicting inputs if the document has duplicate fields. task-5951903
This update modifies the sample employee data within the l10n_hk_hr_payroll module. These changes ensure the demo data accurately reflects the Hong Kong payroll regulations and provides a more realistic demonstration of the module's functionality for testing and training.
Original PR description
this commit updates the demo data of employees in l10n_hk_hr_payroll module. task-5964285
This update streamlines the process of identifying and merging duplicate records within Odoo Enterprise. By reusing existing merge groups and automatically deleting stale records, the system now manages duplicates more efficiently, reducing manual effort and improving data accuracy.
Original PR description
Before: - When new duplicate records were found, a new merge group was always created. - This could create multiple groups for the same set of duplicates. - Records that no longer matched any rule were not automatically deleted. After: - When new duplicates belong to an existing merge group, they are added to that group. - A new merge group is created only when needed. - Records that no longer match any rule are automatically deleted. task-6037256
This update refines the wording of a key user interface element within the Knowledge module. Removing the article 'the' improves clarity and the overall user experience. This change ensures consistent and intuitive navigation for users.
Original PR description
"Open the Trash" sounds off. This commit removes the article.
This update streamlines the payment setup process for online connections. Previously, users had to reconnect connections to enable payment functionality. Now, a new automated update ensures payment-related fields are immediately available, simplifying the initial setup and improving the user experience.
Original PR description
Previously, if the user created connections before this module was installed, the connections wouldn't have their payment related fields updated until the user reconnected them. This meant an awkward flow for users who didn't install account_online_payment right away. Now the post init hook will update the account.online.link records allowing users to immediately make payments if their connections are qualified. No task ID
This update enhances the way users search for audit return types, allowing them to find returns by name. It also updates the standard audit reports (generic, French, and Belgian) to use fiscal year periods instead of annual periods, streamlining reporting processes.
Original PR description
This change enables the user to search for the return types using the name of the return. In addition, it switches the generic audit, french audit and belgian audit to use the fiscal year periodicity instead of the annual periodicity. task: 5948404 Forward-Port-Of: odoo/enterprise#114739 Forward-Port-Of: odoo/enterprise#112280
This update enhances the visibility of tax return export files for users. Instead of attaching them to records, the system now posts them to the chatter thread upon return validation, making them easily accessible for review and discussion. This simplifies the process of accessing and sharing important tax documentation.
Original PR description
The xml and pdf of export of the tax return are not so visible for the user, thus the change creates the files on the validation of the returns and exports them to the chatter where they would be pinned task: 5871091 Forward-Port-Of: odoo/enterprise#114746 Forward-Port-Of: odoo/enterprise#111769
Resolved issues and error corrections
The 'Add a line' button has been added back to the 'My Timesheets' view, aligning it with the 'All Timesheets' view. This change ensures a more consistent and intuitive user experience for managing timesheets, simplifying the process for users.
Original PR description
Issue: When navigating to the 'My Timesheets' view, the 'Add a line' button is missing from the top header. This creates an inconsistency, as the button is readily available in the 'All Timesheets' view. Cause: The system is specifically set up to hide the header button in 'My Timesheets' as soon as a user has existing timesheet entries and can add new lines directly at the bottom of the list. Fix: Removed the strict hiding conditions so it matches the standard behavior of the 'All Timesheets' view. The header button now remains consistently visible, increasing readability and providing a smoother user experience. task-5968297
This update removes automatic tracking of Sales Order status changes within Helpdesk Tickets' chatter. By explicitly disabling tracking, we've simplified the chatter experience and reduced unnecessary notifications. This change improves clarity and focuses users on the most relevant information.
Original PR description
Before this commit: - The chatter on Helpdesk Tickets tracked and logged changes to the linked Sales Order's status. After this commit: - Explicitly set `tracking=False` on the related `sale_order_state` field in `helpdesk.ticket`. - Status updates to linked SOs will no longer automatically post tracking messages in chatter. task-6079809 Forward-Port-Of: odoo/enterprise#114762 Forward-Port-Of: odoo/enterprise#114078
This update resolves an issue where configurable benefits weren't being displayed properly in the system. Previously, benefits were only shown if a salary summary existed for the same type, causing errors when adding new benefits. Now, all configurable benefits are consistently displayed, ensuring accurate benefit information is shown to users.
Original PR description
Cause: After this task https://www.odoo.com/odoo/project/1251/tasks/5419466, the showing of benefits was restricted by mistake to only when there was a salary summary for the same structure type. This meant that adding a configurable benefit would result in a traceback, since the template was then used to get more info later on. Fix: Always show configurable benefits, even if there is no salary summary for the same structure type. task-6126621 Forward-Port-Of: odoo/enterprise#114576
This update prevents email notifications from being sent when generating test payslips. This change improves the testing process by reducing unnecessary email traffic and ensuring consistent test results. It addresses a potential issue where test emails could be generated during development.
Original PR description
In this commit, we prevented email sending during test print payslips. task-6147651 Forward-Port-Of: odoo/enterprise#114593
This update fixes an issue where the timesheet and grid layouts were cramped, causing overlapping elements and inconsistent formatting. Specifically, the column widths have been increased to ensure the timesheet icon and overtime data display correctly, providing a cleaner and more accurate view of timesheet information within the grid.
Original PR description
# [FIX] web_grid: column width with new time widget in month This commit increases the default width of the grid columns. Prior to this, the magnifying glass in Timesheets overlapped with the times in month scale, because the columns were too small. # [FIX] timesheet_grid: column overtime layout Without this commit, the overtimes were spanning two lines because the columns were too small. This commit changes the layout so that it spans one line to be consistent with the grid values. task-6121017 Forward-Port-Of: odoo/enterprise#114656 Forward-Port-Of: odoo/enterprise#114356
This update prevents customers without a portal account from seeing the 'Pay Now' button in follow-up emails. This change avoids confusion and ensures customers aren't directed to a potentially confusing process that won't resolve their invoice access issues. It simplifies the customer experience.
Original PR description
If a customer has no portal account, the pay now button added to follow-up emails won't allow them to access any invoices on the portal. Even if they register afterwards, a separate account will be created and they won't have access to those invoices. To avoid confusion, this commit hides the pay now button when the customer has no portal account. task-6075621 Forward-Port-Of: odoo/enterprise#114698 Forward-Port-Of: odoo/enterprise#112891
This update resolves an issue where the 'cancel' button within a confirmation dialog wasn't functioning as expected. The fix ensures that clicking the cancel button now properly dismisses the confirmation, improving the user experience and preventing data inconsistencies. This was a minor bug fix.
Original PR description
The `cancel` callback of the `env.askConfirmation` method was not called when the user clicked on the cancel button. task-6074948 Forward-Port-Of: odoo/enterprise#112987 Forward-Port-Of: odoo/enterprise#112304
This update fixes a bug that occurred when rescheduling work orders in the Gantt view if a dependent operation lacked start or end dates. The fix ensures that dates are defined before comparisons are made, preventing a 'TypeError' and allowing rescheduling to continue smoothly. This improves the reliability of the Gantt visualization.
Original PR description
Currently, an error occurs when rescheduling work orders in the Gantt view if a dependent operation has no start or end date. **Steps to Reproduce:** - Install the MRP module (with demo data). -…
Currently, an error occurs when rescheduling work orders in the Gantt view if a dependent operation has no start or end date. **Steps to Reproduce:** - Install the MRP module (with demo data). - Activate "**Custom Work Order Dependencies**". - Create a new MO for the _Drawer_ product with _SEC-ASSEM_ BoM. - Confirm and plan the MO. - Remove both start and end dates of any dependent operation. - Manufacturing > Planning > Work Orders > Gantt - Enable **Auto-Reschedule (Keep Buffer)** and reschedule the first operation (in 'Drill 1'). **Error:** `TypeError - '>' not supported between instances of 'bool' and 'datetime.datetime'` **Cause:** At [1], `date_start` and `date_finished` can both be set to False because a condition that bypasses the UserError when both dates are empty (unlike earlier versions). As a result, during rescheduling, a False value is compared with a datetime, leading to a TypeError at [2]. Fix: This commit adds a condition before date comparisons to ensure the dates are defined. [1]: https://github.com/odoo/odoo/blob/3f256437a7e6c124affca8d5304476a67375753f/addons/mrp/models/mrp_workorder.py#L281-L284 [2]: https://github.com/odoo/enterprise/blob/ef2efe113684104032d798b5aa237c67a3bc240a/web_gantt/models/models.py#L484-L491 sentry-7377739830 Forward-Port-Of: odoo/enterprise#112729
This update resolves a visual issue where the 'to_review' badge on employee forms wasn't highlighting correctly. This was caused by a change in how tracking messages were stored, and a small adjustment was made to ensure the correct messages are displayed.
Original PR description
After master-field-tracking-poc-ppr removed the mail.tracking.value model, tracking messages are now stored with message_type='tracking' instead of 'notification'. The thread_patch.js highlight filter was still matching on 'notification', causing no messages to be found when hovering the to_review badge on the employee form. task-6128747 Forward-Port-Of: odoo/enterprise#114766
This update resolves a bug in the mobile Documents app where clicking on folder categories didn't expand them. The issue stemmed from a conflicting template and has been corrected to ensure the search panel functions correctly on mobile devices, restoring the expected category expansion and icons.
Original PR description
Steps to reproduce: 1. Open Documents in mobile view. 2. Open search panel to switch folder. 3. Click on caret on folder with childrens. 4. Nothing happens. This was due to using the 'web.SearchPanel.Category' template in mobile view. Since the 'toggleCategory' method has been overridden it was no longer expanding the category. To fix this, we use the 'documents.SearchPanel.Category' template as we did before. Plus, we get the nice icons back in front of the main categories. Task-6132283
This update resolves an issue where the version number on payslips could be incorrectly edited, leading to potential payroll inaccuracies. The change makes the version field read-only and automatically calculates it from the payslip period, ensuring data integrity. Additionally, a fix was implemented to handle multiple worked days records for meal voucher quantities, preventing errors during payroll calculations.
Original PR description
Before: version field was visible and editable, and could be incorrectly overridden After: version field is readonly, hidden (debug only), and always computed from payslip period without being overridden task-6112109
This update fixes a confusing issue for Mexican employees receiving payslips. Previously, an unstamped payslip was emailed immediately after batch confirmation, followed by a second email with the stamped version. Now, emails are only sent for Mexican payslips after the CFDI (tax document) has been generated, ensuring a cleaner and more accurate experience.
Original PR description
Currently, when a user confirms a payslip batch (hr.payslip.run), the base payroll module queues the PDF generation and sends an email to the employee with their payslip immediately. For Mexican payslips, this means the employee receives the email with an unstamped payslip (without CFDI UUID). Later, when the CFDI is generated, a second email is sent with the stamped version, confusing the employee. This commit prevents the email from being sent for Mexican payslips if the CFDI has not been generated yet, ensuring only the stamped payslip is emailed. Forward-Port-Of: odoo/enterprise#114731
This update fixes an issue where tax reports for international customers incorrectly used the company's VAT number instead of the customer's foreign VAT ID. The change ensures that VAT reports accurately reflect the customer's tax identification, improving financial reporting accuracy and compliance. This resolves a discrepancy impacting VAT calculations for businesses operating across borders.
Original PR description
### Issue: When a fiscal position defines a `foreign_vat`, tax reports generated for that country still use the company's VAT number instead For example, with a Belgian fiscal position using…
### Issue: When a fiscal position defines a `foreign_vat`, tax reports generated for that country still use the company's VAT number instead For example, with a Belgian fiscal position using `BE010203040`, the generated BE VAT report uses the company VAT instead of `010203040` ### Cause: The report generation did not check whether there is a fiscal position with a `foreign_vat` matching the country of the report ### Note: The example above uses a Belgian fiscal position to reproduce the issue Starting from 19.0, this specific flow is blocked because Intervat is enabled in production mode by default A related fix makes the Intervat settings available in that case Until then, the issue can be reproduced by temporarily commenting out: https://github.com/odoo/enterprise/blob/5fb58a9b7b3ae89f87e84d4ba1fa3a16237d80ac/l10n_be_intervat/models/account_return.py#L15 ### Steps to reproduce: - Disable demo data and install `accountant` - Create a Fiscal Position "Belgium" (Country: Belgium, Foreign Tax ID: BE010203040) - Click the alert to install the Belgian taxes - Create and confirm an invoice for a Belgian customer: - Fiscal Position: Belgium - Any product with a Belgian tax - Invoice Date: 01/01/2026 - Open the Tax Report and select `VAT Return (BE)` for January - Click `Returns` and select the full year - Mark the December return as Completed from the three-dot menu - Review January and fill the missing company data (TIN: 1111111, phone and email) - Click `Validate -> Lock -> Submit` ### Before the fix: The generated XML uses the company VAT number (`1111111`) instead of the fiscal position foreign VAT (`010203040`). opw-6076540 Forward-Port-Of: odoo/enterprise#112610
This update addresses a critical issue where Odoo Enterprise would crash when attempting to download a URL document alongside a spreadsheet. The fix ensures stable and reliable downloading of both document types, improving user experience and preventing data loss. This resolves a reported bug impacting document access.
Original PR description
Try to download a url document along with a spreadsheet. `onDownload` crash when trying to download a url document. Task: 5485662 Forward-Port-Of: odoo/enterprise#113645 Forward-Port-Of: odoo/enterprise#112513
This update resolves a technical test failure related to the new leaderboard settings within the enterprise timesheet grid. The change ensures that the necessary system calls are executed correctly when these settings are enabled, improving the stability and reliability of the timesheet functionality.
Original PR description
This commit checks the steps expected once the leaderboard settings in timesheet grid is enabled to make sure the RPCs called are correctly done as expected. runbot-error-243315 Forward-Port-Of: odoo/enterprise#115029
This update addresses a temporary issue where mail query counters were inflated due to a change in how messages are accessed. The team temporarily bypassed cached values to improve browsing speed, resulting in higher counter counts. This fix ensures more accurate performance metrics moving forward.
This update corrects a calculation error by excluding company executives (JC999) from the ONSS Base Salary figures reported on payslips. This ensures accurate reporting to the Belgian National Social Security Institute (ONSS) and aligns with regulatory requirements. The change improves payroll accuracy and compliance.
Original PR description
This commit excludes company executives (Joint Committee 999) from the computation of Total ONSS Base Salary (With Previous Payslips) on their payslips. TaskID-6124693
This update fixes inaccuracies in how signed documents are displayed and communicated, particularly when using 'Sign Now'. Now, certificates clearly show who signed on behalf of whom, and confirmation emails accurately reflect the signing process, improving transparency and trust.
Original PR description
Before: When a document template is signed using "Sign Now" on behalf of another user, the certificate should show the line “Connected as ” for internal and portal users. Previously, the Email…
Before: When a document template is signed using "Sign Now" on behalf of another user, the certificate should show the line “Connected as ” for internal and portal users. Previously, the Email verification note under Participants could appear even when no email verification was actually done, for example when using "Sign Now". Additionally, the signature confirmation email did not clearly reflect when the document was signed locally on behalf of others. After: When a document is signed using Sign Now on behalf of another user, the certificate now shows the line "Connected as <LoggedUser>" for all users. The Email verification note under Participants is shown only when email verification actually happens Otherwise show `Document was signed locally for all signers using UserName's account` - The signature confirmation mail is updated for local sign cases `..., while connected as <LoggedUser>`. Impact: - Clearly shows in the certificate when a document is signed by user for another user. - Avoids showing Email verification information when it did not happen and displays the correct message instead. - Improves clarity and accuracy of signature confirmation emails. taskid-5343749
This update simplifies how the system processes XML data for Slovak reports, reducing unnecessary complexity and improving performance. By using the standard XML parsing library, we've eliminated a custom configuration that was adding overhead. This change ensures more efficient report generation and maintenance.
Original PR description
Removes the custom XMLParser configuration in favor of the default etree parser. This reduces unnecessary overhead and ensures we are using the standard library's recommended defaults for processing XML content. Forward-Port-Of: odoo/enterprise#114828
This update resolves a minor typographical error within the Odoo Enterprise codebase. The word 'occured' was incorrectly spelled and has been corrected to 'occurred'. This ensures consistent and professional terminology across various Odoo modules, improving the overall user experience and maintaining code quality.
Original PR description
Community: https://github.com/odoo/odoo/pull/261023
This update fixes a minor issue where users were unable to retry payment attempts after a failure. Now, the system automatically resets the loading state, allowing users to easily re-attempt the payment without needing to refresh the page. This enhances the user experience and reduces frustration.
Original PR description
Currently, if the call to Odoofin fails, we properly show the error to the user but we never manage to reset the isFetching state of the button This means that the only way for the user to try again is to first refresh the page This commit addresses that No task ID
This update corrects a labeling inconsistency within the l10_be_hr_payroll module. Previously, similar labels were used for two insurance fields on employee payroll forms, causing confusion. The update now uses distinct labels, improving clarity and accuracy for payroll reporting.
Original PR description
Step to reproduce: install l10_be_hr_payroll and go on employee form, payroll tab, check one of the two insurance field Cause: same string for both labels Solution: update the label string Task: 6094807
This update enhances data privacy within the Helpdesk module by restricting access to reporting menus (Ticket Analysis & SLA Status Analysis) to manager users only. Previously, non-admin users could access these reports; this change removes complex security overrides and directly restricts access, improving data security and user experience.
Original PR description
Before this commit: Currently, the `Ticket Analysis` and `SLA Status Analysis` reporting menus from the helpdesk module are accessible to non-admin users. To manage data privacy and ensure users only see their own ticket data, custom Python overrides `(specifically _load_menus_blacklist in ir.ui.menu.py)` and complex record rules `(ir.rule in helpdesk_security.xml)` were maintained to filter report data. After this commit: helpdesk: Hide the reporting menus directly by restricting the `Ticket Analysis` and `SLA Status Analysis` menu items to the manager group. Removed the custom ` _load_menus_blacklist `Python override from ir.ui.menu.py since conditionally hiding the menus in Python is no longer necessary. Removed the obsolete `ir.rule` data filters for standard users in `helpdesk_security.xml`. Revoked base read access in the `ir.model.access.csv`file for standard users to prevent direct access to the reports via URL. task-5119293
This update resolves an issue where the sign request page would crash when attempting to reload a document that had been deleted. The fix ensures the system handles deleted documents gracefully by redirecting the user to a safe view, improving user experience and preventing data errors.
Original PR description
Steps to reproduce: - Open a sign request - Go to Details - Delete the document from the form view - The UI tries to reload the document Issue: The system tries to load a document that has already been deleted. Current behavior: An error is shown and the page crashes when trying to reload the deleted document. Expected behavior: The system should handle the missing document gracefully and redirect the user to a safe view. Fix: Handled the deleted document case properly by returning a valid response and redirecting the user instead of trying to load the removed document. task id- 6095120 Forward-Port-Of: odoo/enterprise#113094
This update resolves an issue where crucial fiscal data was missing from Swedish POS receipts printed from both the online and offline systems. The fix corrects the receipt template and data generation process, ensuring accurate reporting for Swedish accounting requirements. This ensures compliance and accurate record-keeping.
Original PR description
Since the receipt printing refactor that allowed printing receipts from either the frontend or backend, the fiscal data for Swedish blackbox receipts has been broken. In the frontend, the receipt prints but the blackbox data is missing from the footer. In the backend, attempting to print the receipt gives a 500 error. This commit fixes both these issues by correcting the receipt template and data generation. Community - https://github.com/odoo/odoo/pull/260587 Forward-Port-Of: odoo/enterprise#114579
This update corrects a technical issue in the IoT setup process that was preventing proper configuration. The previous default setting of an empty string has been replaced with 'False', aligning with standard Odoo field practices and resolving a software error. This ensures the IoT setup function operates correctly.
Original PR description
Due to the refactoring in odoo/enterprise#111457, the empty string was removed as an option from the IoT subtype selection. However, in the `/iot/setup` controller the empty string was explicitly used as the default value, which now causes an error due to it not being a valid option. This commit fixes the issue by instead using `False` as the default value, as is standard for Odoo fields. Forward-Port-Of: odoo/enterprise#114823
This update fixes an issue where l10n_de_reports incorrectly identified child contacts of German companies as companies themselves. The change ensures that only partners with their own distinct commercial entities (and German VAT numbers) are classified as companies, improving the accuracy of German tax reports. This resolves a potential reporting discrepancy.
Original PR description
Problem: When l10n_de_reports is installed, child contacts of a German company are incorrectly considered as companies as well. Steps to reproduce: 1. Install l10n_de_reports. 2. Create a company with a German VAT number (e.g. DE123456789). 3. Create a child contact under that company. 4. The child contact will be incorrectly considered as a company. Cause: If l10n_de_reports is installed, any partner with a German VAT number (DE + 9 digits) is considered as a company. Since child contacts share the same VAT as their company, they would be considered as companies as well, which is not correct. However, a partner should only be considered as a company if they are their own commercial entity. https://github.com/odoo/odoo/blob/e6bd6b106c376336594edd868c09505032008ac1/odoo/addons/base/models/res_partner.py#L819 Forward-Port-Of: odoo/enterprise#114600
This update removes an outdated requirement that invoices for subscription payments needed a country associated with the payment token. This restriction was causing issues with payment processing and has been resolved. The change simplifies the process and aligns with current payment provider requirements.
Original PR description
Before this commit, a country was mantadory on the payment token when it was used to pay invoices of subscriptions. This behavior was fetched back from internal code in 15.3. This issue was not visible until recently. Some token are fine without country, the provider allows it but the cron fails to process the sale order when the contract is processed. THis commit remove that old constraint. opw-5268156 task-5349998 Forward-Port-Of: odoo/enterprise#114847 Forward-Port-Of: odoo/enterprise#100166
This update resolves an issue where planned hours were incorrectly displayed on public holiday days in the project timesheet reports. The fix ensures the report accurately excludes public holidays, regardless of whether they're linked to a specific schedule, and accounts for timezone differences to prevent date shifting.
Original PR description
### Steps to reproduce: - Install project_timesheet_forecast module - Configure your database to have a far timezone (Montevideo/Uruguay in my case) - Create a public holiday starts from 12AM to…
### Steps to reproduce: - Install project_timesheet_forecast module - Configure your database to have a far timezone (Montevideo/Uruguay in my case) - Create a public holiday starts from 12AM to 11:59PM with a calendar - Create a planning slot for a resource that overlap with the public holiday - Check the Timesheets / Planning analysis report - Group by employees > day **- Check the date of the public holiday and notice there are still planned hours shown** - Remove the calendar from the public holidays that we created previously - Check the report once again **- Notice the day of the public holiday and the day after has no planned hours** ### Cause: In the query we are using to exclude the leave days from the report we only exclude the ones that has calendar_id assigned, not taking into consideration that some of the public holiday are general and is not applied to just one working schedule. Also if we have a leave starting midnight to 11:59PM since we store dates in database as UTC for timezone like Uruguay's one it will shift the end with one day which will introduce inconsistencies ### Fix: We check if the calendar_id is null on the resource_calendar_leaves and make sure we take timezone of the resource into account when checking the dates of the leaves. opw-5027070 Forward-Port-Of: odoo/enterprise#114757 Forward-Port-Of: odoo/enterprise#111846
This update resolves an issue where the 'Time Off Type' dropdown within the Gantt view of the Time Off app was appearing empty. The fix corrects a technical problem related to how the system initially populated data, ensuring the dropdown displays the correct options for users. This improves the user experience when creating time off requests.
Original PR description
**Steps to Reproduce:** 1. Open Time Off App->Management->Time Off->Gantt View 2. Highlight multiple dates/cells to trigger the multi-create popover, then click "Set". 3. Open the "Time Off Type"…
**Steps to Reproduce:**
1. Open Time Off App->Management->Time Off->Gantt View
2. Highlight multiple dates/cells to trigger the multi-create popover, then click "Set".
3. Open the "Time Off Type" dropdown. The dropdown appears empty.
**Bug Cause:**
When forceFullDuration is true and request_duration is pre-populated in initial values, the form detects no field changes and skips triggering onchange. This prevents computed fields like allowed_work_entry_type_ids from being evaluated, resulting in an empty domain filter ('id', 'in', []).
**Solution:**
Remove the pre-population of request_duration in initial values when forceFullDuration is true. The context value force_full_duration is sufficient to filter the request_duration field to show only "full" option.
By not pre-setting the value, the form detects a field change and properly triggers onchange, allowing computed fields to evaluate and populate the Remove the pre-population of request_duration in initial values when forceFullDuration is true. The context value force_full_duration is sufficient to filter the request_duration field to show only "full" option. By not pre-setting the value, the form detects a field change and properly triggers onchange, allowing computed fields to evaluate and populate the allowed_work_entry_type_ids correctly.
**Task:** 6109569
Forward-Port-Of: odoo/enterprise#114658
Forward-Port-Of: odoo/enterprise#114050This update resolves a technical issue that prevented a key test from running correctly, ensuring consistent test results. The change improves the reliability of our reporting processes, preventing potential disruptions to financial reporting. This ensures our financial data is more trustworthy.
Original PR description
This test, when run alone, raised an error telling assigning directly self.env.companies was not the right way of doing this, and it was better to create a new env. For some reason, it didn't raise when run together with other tests ; so, runbot didn't see the issue. This commit aims at soothing the ire of Odoo's mighty tests spirits \o/ Forward-Port-Of: odoo/enterprise#114248
This update adjusts where social media links are stored within Odoo. Previously, they were located on the website, but this has been removed. The links have now been moved to the 'res' company record to align with current website design standards.
Original PR description
Since https://github.com/odoo/odoo/pull/236918, there is no more social media fields on website so we move them to res company to comply with website. Forward-Port-Of: odoo/enterprise#114696
This update clarifies the Helpdesk stage Kanban view by removing the 'Days to Rot' number, which was confusing to users. This change improves the overall usability and understanding of the Helpdesk workflow. It addresses a previous issue where the meaning of this metric was unclear.
Original PR description
Currently, only the “Days to rot” number is displayed, so users cannot understand what the number represents. In this commit, it hide from the helpdesk stage kanban view. task-5485507 Forward-Port-Of: odoo/enterprise#114880 Forward-Port-Of: odoo/enterprise#114781
A bug was causing night shift templates to incorrectly extend shift durations by one day. This update corrects a calculation error within the shift planning process, ensuring shifts accurately reflect the intended working hours. This fix prevents over-extended shifts and improves the reliability of shift scheduling.
Original PR description
Issue: ---------------------------------------- Creating a night shift from a template produces a shift spanning over one additional day. Steps to reproduce: ----------------------------------------…
Issue: ---------------------------------------- Creating a night shift from a template produces a shift spanning over one additional day. Steps to reproduce: ---------------------------------------- - Create a planning shift template form 23h to 1h the next day (2h) - It must have a span over 2 working days - Create a shift and use this template - The shift spans over one more day Cause: ---------------------------------------- In `_calculate_start_end_dates()`, we call `plan_days()` with `start` having the hours specified. So in `plan_days()` when retrieving the worked days, the first day is ignored because the resource is not supposed to be working from 23h to 1h (considering their calendar). Then we count two days, and so the end date is offset by one day. Solution: ---------------------------------------- We should call `plan_days()` without the hour specified so we make sure the first day is included in the count. opw-6134844 Forward-Port-Of: odoo/enterprise#114825 Forward-Port-Of: odoo/enterprise#114616
This update eliminates a misleading confirmation dialog that appeared when adding non-stockable products through the barcode app. Previously, users were prompted to confirm product location, which was unnecessary. The fix streamlines the process by leveraging existing data checks, improving usability and reducing potential user confusion.
Original PR description
### Steps to reproduce: - In the settings: Enable Multi-Steps Routes - Create a non-storable product P - Go to the barcode app > Operations > Delivery Order > New - Click on "Add Product" > select P…
### Steps to reproduce: - In the settings: Enable Multi-Steps Routes - Create a non-storable product P - Go to the barcode app > Operations > Delivery Order > New - Click on "Add Product" > select P as product > Confirm #### > A confirmation dialog appears: Oops! It seems that this product is not located in WH/Stock. Do you confirm you picked from there? ### Expected behavior: Since the product is not storable it should not trigger the dialog ### Cause of the issue: The `is_storable` value of the `product.product` is not part of the data that can be used to check if we should check the quantity available in location since only the product id and name are directly available: https://github.com/odoo/enterprise/blob/77d3cc81be8aeb9f2e8bf57fb561fcae80f23b04/stock_barcode/static/src/js/stock_barcode_sml_form.js#L40-L70 However, since an rpc is already performed in order to determine the `qty_available` of the product, we might as well use that same rpc to recover the information and also avoid the dialog in case it is irrelevant. opw-6110655 Forward-Port-Of: odoo/enterprise#114173
This update corrects a minor issue where the company logo wasn't appearing on the journal audit export template. The fix ensures the necessary 'o_content' class is included in the template, resolving this visual discrepancy. This ensures consistent branding across financial reports.
Original PR description
before this commit, the export template of the journal audit was missing the o_content and so the company logo class was not applied opw-6128819 Forward-Port-Of: odoo/enterprise#114782
This update corrects a bug where the 'Update Payment' button remained visible after processing batch payments for Mexican CFDI invoices. The issue stemmed from incorrect UUID comparisons during invoice payment reconciliation, leading to the button's persistent display. This fix ensures the button disappears as expected after batch payment processing.
Original PR description
- Create one invoice with the PUE payment policy. - Create another invoice with the PDD payment policy. - Send both invoices to the CFDI. - Create a batch payment for both and reconcile. - Click on Update Payment on one of the invoices. The Update Payment button does not disappear. In the method _l10n_mx_edi_cfdi_invoice_get_payments_diff, we compare the current UUIDs and the previous UUIDs to determine if the button should be shown. However, when there is a batch payment, the current UUID list includes the UUIDs of all invoices in the batch, including the PUE payment (which should normally be filtered out by the continue). The previous UUID list includes only the UUID of the PDD payment. opw-6055781 Forward-Port-Of: odoo/enterprise#114261 Forward-Port-Of: odoo/enterprise#112520
This update corrects a display issue in the Odoo Enterprise portal. Previously, running subscriptions showed the total subscription amount in the sidebar title instead of the next billing amount. Now, users will see the correct next billing amount, providing clearer and more accurate information about their ongoing subscriptions.
Original PR description
Running subscriptions were showing the total amount in the portal sidebar title instead of the next billing amount. Display the next billing amount for running subscriptions. task-6125080 Forward-Port-Of: odoo/enterprise#114083
This update fixes a display issue in reports related to invoices and purchase orders when users are in time zones ahead of UTC. The change ensures that reports accurately reflect the order date in the user's local time, preventing missed invoices due to timezone discrepancies. This improves data accuracy and reporting reliability.
Original PR description
Why this commit: When loading the 'bills to receive' or 'Invoices to be Issued' The time zones ahead of UTC will face the discrepancy in the view. e.g. etc/GMT-12 timezone is 12 hours ahead of UTC,…
Why this commit: When loading the 'bills to receive' or 'Invoices to be Issued' The time zones ahead of UTC will face the discrepancy in the view. e.g. etc/GMT-12 timezone is 12 hours ahead of UTC, So 12 AM UTC is 12 PM etc/GMT-12. So report view will not include the invoices/bill with order_date of current day till its 12 AM[next day] IN UTC, Meaning etc/GMT-12 will be seeing today's bills/invoices after 12 PM. After this commit: To resolve this discrepancy we use the context_today date to get the user local date. Which is required by the [domain sanitizer](https://github.com/odoo/odoo/blob/8bff78853f6ab8dc2cc951c03bb30181c0745834/odoo/orm/domains.py#L1572-L1574) too. Steps to reproduce (Possible in runbot) : 1. Select etc/GMT-12 timezone in preferences [when UTC is between 13:00-24:00 ~ 1:00-12:00 GMT-12(of next day)] 2. Create a PO and Validate the quantity received. 3. Go to accounting>review>bills to receive. 4. the newly created PO won't be listed here. OPW: 6083526 Forward-Port-Of: odoo/enterprise#114763
This update resolves an issue where rental tests were unreliable due to fluctuating timezones. The change ensures a consistent UTC timezone is used for all rental tests, regardless of demo data installation. This improves test stability and reliability.
Original PR description
When demo data is installed, Robodoo's timezone is set to Europe/Brussels. Rental tests expect the environment timezone (`self.env.tz`) to be UTC. However, if Robodoo is the current user and no timezone is set in the context, the environment falls back to the user's timezone. Because Robodoo's timezone changes depending on whether demo data is installed, tests can become unstable. This commit updates the renting app's common test setup to ensure a stable timezone. runbot-242821 Forward-Port-Of: odoo/enterprise#114645
This update resolves an issue where attachments couldn't be downloaded from the Odoo chatter on mobile devices (Odoo 18.4+). The fix ensures that URLs are correctly formatted for download, preventing errors and restoring the ability to access attachments. This improvement impacts mobile users' ability to retrieve files.
Original PR description
In Odoo 18.4+, downloading attachments from the chatter is broken.
See: https://github.com/odoo/odoo/pull/200099
The `onClickDownload` function now passes an absolute URL to `downloadFile`.
The download function is implemented natively in the mobile apps.
The Android implementation always prefixes the provided URL with the
database origin (i.e.: `https://example.odoo.com`).
`download({url: "https://example.odoo.com/web/content"})` will try to
download `https://example.odoo.comhttps://example.odoo.com/web/content`.
This results in an UnknownHostException.
We can remove the origin from the url before calling the native method.
By doing this on the JS side, there is no need to update the Android app.
opw-6033150
Forward-Port-Of: odoo/enterprise#114832This update resolves a problem preventing access to demo data within the accounting module, specifically when demo companies are created. The fix changes how demo user accounts are handled to ensure consistent access across all company templates, addressing a conflict caused by recent code changes related to caching.
Original PR description
Steps to reproduce: ------------------- 1. Create a new trial DB with demo data and French localization 2. Archive Marc Demo if you create the DB locally (this happens automatically on Odoo.com…
Steps to reproduce: ------------------- 1. Create a new trial DB with demo data and French localization 2. Archive Marc Demo if you create the DB locally (this happens automatically on Odoo.com trials due to the user seat limit probably) 3. Select the demo company only (unselect the main one) 4. Open Accounting and click the Purchases journal from the dashboard Access Error about reading Marc Demo. Unarchiving him would work around this issue. Why the bug ----------- demo_invoice_deferred and demo_bill_deferred set invoice_user_id to Marc Demo (base.user_demo). Marc Demo belongs to the main company and can't be read from another company when archived. On 19.0 these records only existed in the main company, where Marc Demo is accessible. Commit 9aed0c0135d7b084dee544c6566fad96c62ec1fd migrated the demo to `template`, so now they are created in every company. Still, it only breaks because of commit [3732ca85b03b](https://github.com/odoo/odoo/commit/3732ca85b03b), which added write_date to the avatar widget for cache busting. Before, the widget only needed display_name (read with sudo), so the rule was not checked. The fix ------- Use base.user_admin for demo_invoice_deferred (never archived, stays readable from any company), and False for demo_bill_deferred (a bill has no salesperson). opw-6106870 Forward-Port-Of: odoo/enterprise#113946
This update ensures that VAT numbers in the VIES summary reports are formatted correctly, removing the country code. This is necessary to comply with Czech tax regulations and generate reports that meet official VIES XML requirements, preventing potential reporting errors.
Original PR description
**Steps to reproduce:** - Install the `l10n_cz_reports` module and switch to a `CZ Company` - Create an invoice for a customer with a VAT number, add a product, and set the Transaction Code (enable…
**Steps to reproduce:** - Install the `l10n_cz_reports` module and switch to a `CZ Company` - Create an invoice for a customer with a VAT number, add a product, and set the Transaction Code (enable it from the optional columns if needed). - Navigate to Reporting > VIES Summary Report. - Observe the value in the `VAT Number` column (includes country code). - From the dropdown, export the report as XML. **Observation:** In the generated XML file, the `c_vat` field contains the VAT number including the country code (e.g., `CZ12345679`) instead of only the numeric part (`12345679`). **Root cause:** At [1], the VAT number is directly taken from the report lines without removing the country code. **Fix:** This commit ensures that the `c_vat` field contains only the VAT number without the country code, complying with the official VIES XML format requirements. Ref: https://adisspr.mfcr.cz/dpr/adis/idpr_pub/epo2_info/popis_struktury_detail.faces?zkratka=DPHSHV#:~:text=Tax%20identification%20number%20of%20the%20purchaser%20(only%20the%20numeric%20part) [1]: https://github.com/odoo/enterprise/blob/c4f2c3442f30f5ac972dd136a3642acc5bcc6da2/l10n_cz_reports_2025/models/l10n_cz_vies_summary_handler.py#L29-L62 opw-6093259 Forward-Port-Of: odoo/enterprise#114990 Forward-Port-Of: odoo/enterprise#113083
This update resolves an issue where chatter message highlights were appearing unexpectedly on the employee form in the HR payroll module. The change restricts these highlights to only the 'review_state' field, improving the user experience and preventing unnecessary visual distractions. This ensures a cleaner and more focused interface for HR professionals.
Original PR description
The dropdown_selection_badge widget was triggering chatter message highlights on hover for all its usages (e.g. Dimona). Add an opt-in highlight_chatter attribute so only the review_state field on the employee form triggers this behavior. task-6131035 Forward-Port-Of: odoo/enterprise#114138
This update corrects a recent change that removed the currency field from batch payment records. This ensures that monetary amounts are accurately associated with their correct currency, preventing potential accounting errors. The fix improves the reliability of financial reporting within the Enterprise module.
Original PR description
This commit: https://github.com/odoo/enterprise/commit/301f63597b0c21fef16a1941314ac95602c8f01f removed some currency id field from the account bank statement and so the monetary field didn't have the currency anymore task-6131298 Forward-Port-Of: odoo/enterprise#115017 Forward-Port-Of: odoo/enterprise#114369
A recent update caused crashes in the Self-Ordering and Mobile Menu (QR ordering) interfaces. This fix corrects a naming issue within the POS data loading process, ensuring these key features now function correctly. The change updates a field name to align with the current system, resolving the loading errors.
Original PR description
## Overview Accessing the Mobile Menu (QR ordering) or Self-Ordering interface crashes after installing `pos_blackbox_be` on SaaS-19.1. The interface fails to load due to a missing field in the POS…
## Overview Accessing the Mobile Menu (QR ordering) or Self-Ordering interface crashes after installing `pos_blackbox_be` on SaaS-19.1. The interface fails to load due to a missing field in the POS data loading flow. ## Steps to Reproduce 1. Install `pos_blackbox_be` 2. Open POS 3. Access the Mobile Menu (QR code) or Self-Ordering page ## Current Behavior - A traceback is raised - The interface does not load ## Root Cause The method `_load_pos_self_data_fields` returns the field: iface_fiscal_data_module However, from SaaS-19.1 this field was renamed to: iot_fdm_be_id This mismatch causes the POS self-ordering data loading to fail. ## Fix Updated the returned field to match the new field name. # Before return fields + ['iface_fiscal_data_module'] # After return fields + ['iot_fdm_be_id'] ## Impact - Restores proper loading of Mobile Menu (QR ordering) - Fixes Self-Ordering interface crash opw-6044883 ## Reproduction Video https://drive.google.com/file/d/1R5TYVIXvtts12YLF5iB4GKZirMZePoGr/view?usp=sharing Forward-Port-Of: odoo/enterprise#114357
This update ensures that Brazilian tax documents (EDI) accurately reflect tax amounts provided by Avalara, as required by Brazilian law. Previously, this information was missing, and now it's automatically included in all generated documents, regardless of tax information, to maintain compliance.
Original PR description
All fiscal documents are required by Brazil law to include the approximate value of fed, state, and city taxes that affect it. Avalara already provides back these values in their tax calculation response, we just missed sending it to the EDI. This commit takes the information from that response and adds it to the EDI payload to make sure that it is generated properly into the generated documents. We are required to always show this even if there are no informative taxes as such we combine it with the T&C sent already. task-5478059 Forward-Port-Of: odoo/enterprise#113732
Features or functions removed from Odoo
This update removes a redundant setting related to receipt printers from several point-of-sale modules. This simplifies the system and improves performance. The change was made to align with newer features and streamline the user experience for self-order kiosks.
Original PR description
**=pos_iot, pos_blackbox_be, l10n_de_pos_res_cert Following this commit: ==== - Remove `default_receipt_printer_id` field as it is no longer needed task- 5494313 Community Related PR : https://github.com/odoo/odoo/pull/246450 Upgrade Related PR : https://github.com/odoo/upgrade/pull/9381