Monday, March 23, 2026
45 changes · saas-19.2
Enhancements to existing features
This update enhances the clarity of test logs by logging thread IDs instead of process IDs, providing a more detailed view of concurrent activity. Previously, the logs were overly noisy due to multiple colored thread IDs. The ability to disable these colors has been added to reduce log clutter and improve readability during extensive testing.
Original PR description
When running tests, the value displayed is the process id but the color is based on the thread id, so you get a bunch of random colors for the exact same value. Update this on multiple axis: - Log the native thread id instead of the PID, in worker mode on linux this is the same thing, because the pid is also the main thread's tid. The main divergence is that ancillary threads used in worker mode will now be visible. This also should not hinder sending signals (on linux anyway) as python always dispatches signals on the main thread (and linux calls signal handlers on arbitrary threads). - Allow disabling pid / tid colors, when running a lot of tests it makes the log extremely noisy and hides log levels, while having very little value (because there's basically one thread per request so every line but the main process / thread is in a different color).
This pull request enhances the way our system generates UBL invoices for BIS3 (Germany) transactions. It removes outdated code related to previous UBL formats, streamlining the process and ensuring compatibility with the latest BIS3 standards. This change focuses on a cleaner, more efficient export of these invoices.
Original PR description
Deprecate: _ubl_add_base_line_ubl_values_item _ubl_get_line_item_node _ubl_add_base_line_ubl_values_price _ubl_add_values_payable_amount_tax_withholding _ubl_add_values_payable_rounding_amount _ubl_add_values_allowance_charge_early_payment _ubl_add_values_tax_currency_code_company_currency_if_foreign_currency _ubl_add_values_tax_currency_code_company_currency _ubl_add_values_tax_currency_code_empty _ubl_add_values_tax_currency_code --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254787 Forward-Port-Of: odoo/odoo#249823
This update removes the display of '0.00' credit and debit entries on invoices and bills. This change enhances the clarity and professionalism of financial reports, making them easier to understand for both internal teams and customers. It's a simple refinement to improve the overall user experience.
Original PR description
In order to improve the readability muting the 0.00 credit / debit on journal items in invoices / bills task: 5960944 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254397
Resolved issues and error corrections
This update resolves a technical issue that prevented the demo data from correctly generating time off allocations when using a future date (2027-01-01) for faketime testing. Updating the demo data ensures the system accurately reflects leave allocation rules, particularly for contracts starting January 1st, and avoids errors during testing.
Original PR description
Issue: The Anita Oliver contract starts on %Y-01-01, so her leave allocation begins from that date. When running with faketime set to 2027-01-01, the system attempts to create leave for the previous month, which results in an error stating that there is no allocation for that time off. Fix: Update the demo data to create the leave and payslip for the first month of the year. This prevents failures when using faketime and ensures it works correctly for real usage of `time off to defer`. task-6026690 Forward-Port-Of: odoo/enterprise#110293
Features or functions removed from Odoo
This update removes a leftover file related to the l10n_it_xml_export module, which was previously removed in 19.0. This cleanup ensures a cleaner and more streamlined system, addressing a minor technical detail.
Original PR description
The module was removed in 19.0 by this commit: https://github.com/odoo/enterprise/commit/761e08667a9c8172217afe8b709445d8e12b3872 However a file was accidentally left behind This commit cleans up the remaining file Forward-Port-Of: odoo/enterprise#111461
Code cleanup and technical improvements
This update reorganizes how Odoo handles session data, moving critical functions from the core request object to dedicated modules. This improves stability and security by reducing potential points of vulnerability and simplifying the codebase. The changes also prepare Odoo for future transitions to contextvars.
Original PR description
[x] move session related-functions out of request [x] move router related-functions out of request Task-6031124
Miscellaneous changes
Write some bytes in a `field.Binary(attachment=False)` field. The ORM doesn't encode the bytes in b64, and the value is stored as a binary blob in postgres. Attempt to download the content via /web/content (actually any route that uses `http.Stream` is affected). It sometimes download something, sometimes fail with an "Incorrect padding" error. The `http.Stream` class wrongly assumes that reading a binary/image field is always going to return the value base64-encoded, thus it always attemp
Original PR description
Write some bytes in a `field.Binary(attachment=False)` field. The ORM doesn't encode the bytes in b64, and the value is stored as a binary blob in postgres. Attempt to download the content via…
Write some bytes in a `field.Binary(attachment=False)` field. The ORM doesn't encode the bytes in b64, and the value is stored as a binary blob in postgres. Attempt to download the content via /web/content (actually any route that uses `http.Stream` is affected). It sometimes download something, sometimes fail with an "Incorrect padding" error. The `http.Stream` class wrongly assumes that reading a binary/image field is always going to return the value base64-encoded, thus it always attemps to decode it. The `b64decode` function silently discard non-b64 characters and only complain if the final thing lacks the b64 `=` padding (to make the length a multiple of 4). So when it downloaded something, it downloaded crap. The thing actually is: * Binary fields, accept raw bytes, store raw bytes in db. * Image fields, reject raw bytes, want base64, store base64 in db. When reading Image fields it is easy: always decode the base64. For Binary fields it is complicated, because some crazy people encode their binary fields in base64, and expect automatic base64 decoding when read. Crazy! So *attempt* to decode the b64 and if the decoding fail just assume it was raw bytes from the beginning. **Binary-field with non-b64 value** (original fix) Forward-Port-Of: odoo/odoo#214412 Forward-Port-Of: odoo/odoo#213997 **binary can store raw bytes** (fix of *Binary-field with non-b64 value*) Forward-Port-Of: odoo/odoo#214915 Forward-Port-Of: odoo/odoo#214758 This PR contains the squashed code of the above two PRs. Forward-Port-Of: odoo/odoo#253382 Forward-Port-Of: odoo/odoo#249544
This update resolves a technical issue preventing the tour from correctly displaying the checkout address within the Brazilian localization (l10n_br) module. The fix addresses race conditions introduced by a recent community update to the select menu, ensuring the tour functions as expected.
Original PR description
Because of the community PR that changes the DOM of the select menu, the tour in this commit crashed. This commit adapts the tour and fixes it as races conditions were still present part-of-task-5935511 Forward-Port-Of: odoo/enterprise#111248
This update fixes an issue where the Report Editor in web_studio wouldn't automatically focus on the editable field after deleting a row or column. This change ensures a smoother user experience by immediately placing the user in the editable area, preventing frustration and improving efficiency. The fix was part of a larger community contribution.
Original PR description
PR [1] ensures that editable is focused after deleting row or column from table menu by preventing default while clicking on table menu button. This change causes test [2] to fail if a table menu test runs beforehand, due to browser’s native focus behavior. This commit ensures that editable is focused whenever clicking on t-field. [1]: https://github.com/odoo/odoo/pull/249256 [2]: https://github.com/odoo/enterprise/blob/19.0/web_studio/static/tests/client_action/report_editor/report_editor_dom_edition.test.js#L456-L478 Community PR: https://github.com/odoo/odoo/pull/249256 task-5725593 Forward-Port-Of: odoo/enterprise#111154 Forward-Port-Of: odoo/enterprise#109034
This update resolves a technical issue related to how Odoo handles geographic data (topoJSON) within its spreadsheet charts. The fix ensures that these charts display correctly and reliably, improving the accuracy of visual reports. This change primarily impacts the Enterprise edition's chart functionality.
Original PR description
test adaptation Counterpart of github.com/odoo/odoo/pull/248847 Task-5224009 Forward-Port-Of: odoo/enterprise#107912
This update resolves a problem where the website's tour process was delayed due to timing issues, specifically with loading translations. The change ensures the tour starts correctly, preventing delays and improving the user experience. This was caused by recent changes in Chrome versions.
Original PR description
This commit adds an intermediary step ensuring the proper page has been reached before actually doing the checks and avoiding to let startup requests (like the loading of the translations) pending at the end of the tour (and the eventual stop of the runner browser). Note: this is most likely due to a timing (indeterministic by nature) change, emphasised by recent Chrome versions (like v145). runbot-239128 Forward-Port-Of: odoo/enterprise#111013 Forward-Port-Of: odoo/enterprise#110648
This update resolves a test issue where simultaneous data synchronization in the Point of Sale (POS) tax module caused errors. The fix ensures that backend processes complete before the test continues, improving test reliability and preventing disruptions. This enhances the overall stability of the POS tax functionality.
Original PR description
In the test test_pos_avatax_flow, two calls are made to get_order_tax_details almost simultaneously, which causes the second call to raise an error due to both call trying to sync the same order at the same time. This commit fixes the test by waiting for the backend calls to be done before proceeding with the test next steps. runbot-error: 238871, 238872 Forward-Port-Of: odoo/enterprise#110341
This update resolves an issue where the map view in the "My Dashboard" sometimes collapsed due to conflicting height settings. The fix removes overly restrictive height rules and adds a minimum height to the map, ensuring it always displays correctly regardless of the number of records shown.
Original PR description
This commit fixes rendering height issues when the map view is displayed inside "My Dashboard". * Removed `height: 100%` from the map and pin list containers. This conflicting rule interfered with the flexbox layout, often causing the map to collapse entirely since it couldn't compute its own height. * Added a `min-height` to the map renderer. This ensures the map always occupies a reasonable amount of space in the dashboard, even when there are few or no records to display. task-6022958 Forward-Port-Of: odoo/enterprise#111195 Forward-Port-Of: odoo/enterprise#110790
This update corrects a bug where changes to view ordering within the Documents module's studio interface weren't consistently applied. The fix involved updating the default order setting to be applied correctly through the designated attribute on the relational model, ensuring view ordering changes are now reliably saved and reflected.
Original PR description
Bug === When changing the order of the views using studio, it wasn't applied. The reason is that we add a default order at the wrong place in JS, it should be done with the attribute made for that, `defaultOrderBy` on the relational model. Task-6047024 Forward-Port-Of: odoo/enterprise#111395 Forward-Port-Of: odoo/enterprise#111091
This update fixes a visual inconsistency in accounting reports. Previously, the company header was grayed out in dark mode. Now, it uses a standard muted color, ensuring a consistent and professional appearance across all Odoo Enterprise environments.
Original PR description
Before this pr: - The company header in the accounting reports is grayed out in the light mode only, not in the dark mode. Reason: - Until now, we have been using the hard-coded 'lightgrey' color for the company header. After this pr: - In this pr, we are changing the color of the company header from hard-coded 'lightgrey' color to the standard variable color '--AccountReport-muted-data-color' used for muted data in account reports. Task-5960592 Forward-Port-Of: odoo/enterprise#111509 Forward-Port-Of: odoo/enterprise#110108
This update resolves an issue where long tax amounts in invoices were causing display problems. The fix ensures that tax totals are correctly rendered, regardless of the numerical size, improving the clarity and accuracy of Ke revenue reports. This enhancement ensures consistent and reliable reporting for Kenyan businesses.
Original PR description
This commit aims to: Fix Display issue when the amount is long. task-5162891 Forward-Port-Of: odoo/enterprise#111003 Forward-Port-Of: odoo/enterprise#100319
A technical issue preventing the generation of the Trial Balance report PDF has been resolved. The update corrects a formatting error in the report template, ensuring the PDF can now be successfully printed without errors. This improves the reliability of a key financial reporting tool.
Original PR description
Printing the PDF of the Trial Balance report raises a traceback. Steps to reproduce the error: - Install ``Accounting`` module - Go to Accounting > Reporting > Trial Balance > Click PDF Traceback: ```py AttributeError: 'AccountReportLineData' object has no attribute 'get' ``` https://github.com/odoo/enterprise/blob/ee5be988fd57b9b23265875fec7b42f2a761144f/account_reports/data/trial_balance_template.xml#L28 After Commit [1], line is ``AccountReportLineData`` object instead of disctionary. As a result, accessing line values using ``line.get(...)`` causes the traceback. [1]: https://github.com/odoo/enterprise/commit/6608d5c21a7fb9d57786c2a7618b878e244bd420 sentry-7323693096
This update enhances the payroll system by expanding worker code searches to include DMFA and egov3 codes, in addition to display names. This ensures more accurate and complete worker code identification, improving payroll processing efficiency and data accuracy.
Original PR description
before when searching for worker code it only used display name. now it uses dmfa, egov3 codes. Task#6020172
This update resolves a technical issue that could cause errors when importing bank statements with multiple journals using different currencies. The fix prevents a redundant process from triggering a singleton error, ensuring smoother and more reliable CODA import for businesses operating with multiple currencies.
Original PR description
When having multiple journals with the same IBAN, but different currencies, we could have a singleton error if they are not all configured the same (besides the currency). This happens in the cron that fetches new CODAs as we first fetch all CODAs. Then, for each, we have to dispatch it in the right journal. To do so, we rely on `_parse_bank_statement_file` which is called on `self`, which itself calls `_get_coda_final_statements` that triggers the singleton error. However, at this point, we don't care about calling `_get_coda_final_statements` since we only want to retrieve the IBAN and the currency of the CODA, we don't care about the other details. Thus, the solution here is to ignore this call if we don't need it while just retrieveing the necessary info to match a journal before even creating the statements. opw-5723017 opw-6036909 Forward-Port-Of: odoo/enterprise#111361 Forward-Port-Of: odoo/enterprise#111101
This update clarifies potential errors (code 9004) that users might encounter when running the Odoo Instagram module. The change provides a helpful explanation to assist users in troubleshooting without needing to contact support. This improves the overall stability and usability of the Instagram integration.
Original PR description
Purpose ======= Explain the possible errors for the code 9004, to help users debugging their Odoo servers without creating a ticket. Task-5972197 Forward-Port-Of: odoo/enterprise#110571 Forward-Port-Of: odoo/enterprise#109319
This update resolves a problem where reports with annotations were failing to export correctly. The previous filtering process was redundant, and this change removes unnecessary date filtering, ensuring reports with annotations now export reliably. This improves the balance sheet report generation process.
Original PR description
[FIX] account_report: Unable to export Report with Annotations Following changes to the date filter in https://github.com/odoo/enterprise/pull/98695, the date options can be missing a date_from (For example, when using period type: "today"). The date were used to filter on the annotations to display during the period of the report. However, we already filter on those date when generating the annotations so this was redondant and can be safely removed. To reproduce: - Open the Balance sheet - Open the chatter of any account and post a message - Click on the "PDF" button to export the report
This update fixes a usability issue on mobile devices where a key button for loan calculations was hidden within a dropdown. The change ensures a smoother, more intuitive experience when creating new loans on smartphones and tablets, allowing users to easily access necessary features.
Original PR description
Forward-Port-Of: odoo/enterprise#110931 Forward-Port-Of: odoo/enterprise#110120
This update adjusts how Odoo refreshes its GST tokens, moving from automated scheduling to manual triggering. This change ensures compliance and reduces the risk associated with automatic token updates. The process is now controlled by specific actions within the system.
Original PR description
With this PR, the GST token refresh cron interval is updated from 5 hours to 9999 months to effectively disable automatic execution. The cron will instead be triggered manually from `validate_otp` and `_cron_refresh_gst_token` based on the token expiration time. Forward-Port-Of: odoo/enterprise#109937
This update fixes an issue where portal users weren't able to view timesheets linked to projects with 'Invited internal and portal users' visibility. The change expanded the domain to include both 'portal' and 'invited_users' visibility options, ensuring portal users can access timesheets as intended.
Original PR description
Steps to reproduce: - Create Project A with visibility set to `Invited internal and portal users.` - Create a Helpdesk Team and assign Project A to it. - Create a helpdesk ticket. - Log a timesheet…
Steps to reproduce:
- Create Project A with visibility set to `Invited internal and portal users.`
- Create a Helpdesk Team and assign Project A to it.
- Create a helpdesk ticket.
- Log a timesheet on the ticket and share the ticket with the portal user.
- Log in as the portal user and check the timesheet.
- Observe that the timesheet is not visible to the portal user.
Cause:
- After introducing the `invited_users` option in `privacy_visibility`, the portal domain in `_timesheet_in_helpdesk_get_portal_domain` was not updated.
- The domain was still defined as: `('project_id.privacy_visibility', '=', 'portal')`
- As a result, timesheets linked to projects with visibility set to “Invited internal and portal users” were excluded from the portal user’s view.
Solution
Update the domain to include both visibility options: `('project_id.privacy_visibility', 'in', ['portal', 'invited_users'])`
- This ensures timesheets are visible to portal users when the project visibility is either portal or invited_users.
task-5924243
Forward-Port-Of: odoo/enterprise#111548
Forward-Port-Of: odoo/enterprise#107800This update ensures the 'To-Do' feature within Odoo Enterprise works reliably. Previously, uninstalling the 'To-Do' module could cause issues, as the feature remained active. This change guarantees that 'To-Do' is properly installed, resolving potential problems for users.
Original PR description
This commit backports the `project_enterprise_hr_todo` bridge module that ensures that `project-todo` is correctly installed in order to use the todo mail alias feature. Before, this requirement was not enforced so anyone uninstalling To-Do could experience some issue, as the feature would still be part the `project_enterprise_hr` module, even without `project_todo` installed. Forward-Port-Of: odoo/enterprise#109194
This update corrects a problem where appraisal dates weren't being calculated correctly due to a timing issue in the testing process. The fix ensures that appraisal dates are accurately determined based on company settings related to appraisal plans, improving the reliability of employee appraisal scheduling.
Original PR description
Issue: The computation of the next appraisal date for employees depends on setting the appraisal plan for a company or changing the company's settings for `duration_after_recruitment`, `duration_first_appraisal`, `duration_next_appraisal`. Fix: Moving the test employee creation after configuration of the company settings for the appraisal plan. task-6050719 Forward-Port-Of: odoo/enterprise#111345 Forward-Port-Of: odoo/enterprise#111265
This update fixes an issue where kit products in Point of Sale orders were incorrectly displaying a total cost of $0 and inaccurate margin calculations. The fix ensures that the total cost and margin are accurately computed for kit-type products, providing reliable pricing information for these items.
Original PR description
Steps to reproduce: = - Create a product with type = Goods and Track Inventory by Quantity - Go to product category > inventory valuation > costing method -> FIFO - Create a BOM for the product with BOM Type = Kit. - Create and validate a POS order. - Open the order in the backend. Issue: = - The total cost was shown as 0.0 for kit products. Also, the margin amount and margin percentage were incorrect. Fix: = - Ensure that the total cost and margin are correctly computed for kit-type products in POS orders. task-5924559 Forward-Port-Of: odoo/odoo#248137
This update resolves a bug in the demo data for our holiday system. When simulating future dates (faketime), the system incorrectly generated errors related to leave allocations. Updating the demo data ensures accurate leave calculations, particularly when using future date simulations, and prevents errors in real-world usage of the 'time off to defer' feature.
Original PR description
Issue: The Anita Oliver contract starts on %Y-01-01, so her leave allocation begins from that date. When running with faketime set to 2027-01-01, the system attempts to create leave for the previous month, which results in an error stating that there is no allocation for that time off. Fix: Update the demo data to create the leave and payslip for the first month of the year. This prevents failures when using faketime and ensures it works correctly for real usage of `time off to defer`. task-6026690 Forward-Port-Of: odoo/odoo#253295
This update addresses a visual issue where blank space appeared in activity cards after a description was cleared. The fix ensures that the activity note is only displayed when there's actual content, improving the overall user experience and preventing unnecessary blank areas in the interface. This change was part of a larger effort to streamline the Odoo interface.
Original PR description
**Description of the issue/feature this PR addresses:** When an activity description is cleared, the stored value may still contain empty HTML content. The UI was still rendering this as a note,…
**Description of the issue/feature this PR addresses:** When an activity description is cleared, the stored value may still contain empty HTML content. The UI was still rendering this as a note, resulting in unnecessary blank space in the activity card. **Current behavior before PR:** Even when the activity description is cleared and contains only empty HTML, the activity note container is still rendered, leaving visible empty space in the UI. **Desired behavior after PR is merged:** The activity note is rendered only when it contains meaningful content. Empty HTML descriptions are ignored, preventing blank space from appearing in the activity card UI. Before <img width="445" height="84" alt="image" src="https://github.com/user-attachments/assets/f6648bb0-78d9-4063-a347-fe664370106e" /> After <img width="459" height="72" alt="image" src="https://github.com/user-attachments/assets/84c2063a-7c68-4dfe-b729-566ca4b5dcd1" /> task-[4752613](https://www.odoo.com/odoo/project/1519/tasks/4752613) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254936 Forward-Port-Of: odoo/odoo#252139
This update corrects a map data issue that was preventing the accurate display of Russia on the Asia map. It also adds a new Oceania map, ensuring a more complete and accurate geographical representation for our users. This enhancement improves the overall visual experience and data accuracy within the spreadsheet feature.
Original PR description
- Fix Asia map (russia was missing) - Added Oceania map Task-5224009 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248847
This update resolves an issue where the 'Recipient Bank' field on credit notes wouldn't display partner bank accounts. The system was incorrectly filtering accounts based on invoice types. Now, users can successfully search and add a partner's bank account when creating a credit note.
Original PR description
Description of the issue this commit addresses: The Recipient Bank field in the Other Info tab of the Account Move form view refilters accounts to only show you company's ones. This is expected for invoices but is blocking when doing a credit note. You can't find a partner's bank account to fill that field. --- Steps to reproduce: 1. Install account. 2. Create an Invoice to a partner which has a bank account setup. 3. Create a Credit Note for that Invoice. 4. In the "Other Info" tab, remove the partner's bank account. 5. Try to search for his bank account to add it back. It won't show up. --- Desired behavior after this commit is merged: The Recipient Bank field prefilters bank accounts based on who is expected to be the recipient of the move. --- task-5976951 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254850 Forward-Port-Of: odoo/odoo#252961
This update resolves an issue where tours on the website were experiencing delays loading translations, particularly with recent Chrome versions. The fix introduces a temporary step to ensure the page is fully loaded before translation checks begin, preventing disruptions to the tour experience.
Original PR description
This commit adds an intermediary step ensuring the proper page has been reached before actually doing the checks and avoiding to let startup requests (like the loading of the translations) pending at the end of the tour (and the eventual stop of the runner browser). Note: this is most likely due to a timing (indeterministic by nature) change, emphasised by recent Chrome versions (like v145). runbot-239128 Forward-Port-Of: odoo/odoo#254745 Forward-Port-Of: odoo/odoo#253896
This update corrects a visual issue where menu items on the website weren't aligning correctly based on the chosen mobile view setting (left, center, or right). The fix adjusts how menu elements are styled to ensure they align properly with the selected layout, improving the overall user experience. This change primarily affects the mobile website experience.
Original PR description
Steps to reproduce: =================== 1- Enter the website editor 2- Enable mobile view 3- Edit the alignment of the mobile menu to be center or right aligned The group labels (e.g. "Shop",…
Steps to reproduce: =================== 1- Enter the website editor 2- Enable mobile view 3- Edit the alignment of the mobile menu to be center or right aligned The group labels (e.g. "Shop", "Forum") stay left-aligned regardless of the chosen alignment. This can also be seen on desktop by switching to the sidebar header template. Cause: ====== The class .accordion-button uses `display:flex` and `text-align:left` and that class is used for the menu groups labels. this prevents the alignment from working. Solution: ========= When right-aligned (`text-end`), reverse the flex direction so the arrow moves to the left and the text stays on the right. When centered (`text-center`), let the text span fill the remaining space and center its content via `text-align: center`, keeping the arrow on its position. The default left-aligned case is unchanged. opw-5494765 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244565
This update resolves an issue where the selection within the HTML editor would reset to the beginning after using the command palette. The change creates an override to refocus the editable area upon closing the command palette, ensuring the user's current selection is maintained. This improves the editor's usability and prevents data loss.
Original PR description
Before this commit: when the whole editable regains the focus, the selection in the editable is reset to the start of it. After this commit: We create a override for hotkey service to open the command palette with an onClose to refocus the editable area without losing the current selection. For the hotkey override, we pass the area option so it's only valid in the editable area. Outside the editable, the command palette is opened in the default way. task-5949705 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254623 Forward-Port-Of: odoo/odoo#250624
This update resolves an issue where salespeople without project access were unable to open sale orders with timesheet entries. The fix uses sudo() to bypass access restrictions when determining button visibility, ensuring all salespeople can manage their timesheet-based sales orders.
Original PR description
to reproduce: ============= - create a user with only user access to timesheet and no access to project - create and confirm a sale order with a timesheet-delivered service product assigned to that salesperson - record some hours on that SO with another user - open the sale order as that salesperson -> AccessError problem: ======== `_compute_show_hours_recorded_button` reads `timesheet_count` and `project_count` on the sale order, which internally query `account.analytic.line` and `project.project` records. a salesperson without all timesheet or project groups lacks read access to those models, causing an AccessError during the compute. solution: ========= use `sudo()` since the result is only used to determine button visibility and does not expose sensitive data to the user. opw-5893324 Forward-Port-Of: odoo/odoo#248026
This update fixes a technical error that prevented users from selecting a 'Time Off Type' within the 'New Group Allocation' wizard. The issue stemmed from an outdated reference to a company ID field, which has now been removed. This ensures the allocation process functions correctly for all users.
Original PR description
This error occurs when selecting the `Time Off Type` in the `New Group Allocation` wizard.
Steps to reproduce:
- Install `hr_holidays` module
- Time Off > Management > Allocations > `New Group Allocation`
- Try to select `Time Off Type`
Traceback:
`ValueError: Invalid field hr.work.entry.type.company_id in condition ('company_id', 'in', [1, False])`
In this [commit], the `company_id` field was removed from the `hr.work.entry.type` model; however, it is still referenced in the `_domain_work_entry_type_id` domain.
[commit]: https://github.com/odoo/odoo/commit/d37cf89a6ff134988b4a7c001a97973cd95a2ea8#diff-5cda5340aaeaddd073ac083c1909e0e52d6cbc48cb8d9c8f93ad48fd8a04f00dL68-L69
sentry-7328870622This update ensures that payment methods created within a branch company can be correctly associated with point-of-sale locations, regardless of the primary company. Previously, a validation error occurred when attempting to save a payment method linked to a branch, now this is resolved by adding a company constraint to the payment method model.
Original PR description
Steps to reproduce: ------------------- * Let's say you're on company A, create a pos payment method * Don't assign a pos yet * Create a branch company sub_A * Switch to that branch company * Create…
Steps to reproduce: ------------------- * Let's say you're on company A, create a pos payment method * Don't assign a pos yet * Create a branch company sub_A * Switch to that branch company * Create a pos * Now switch to company A but also select sub_A * In the config of the pos from sub_A, try to add the new payment method and save > Validation error -> Normal * Now instead go to the payment method form * In the point of sales select the pos sub_A * Save > No error * Try opening the pos sub_A > Validation error, same as the first one -> Normal Why the fix: ------------ We already have a contraint on the pos config model checking that the companies match. https://github.com/odoo/odoo/blob/88df50bc96448dfaff28bd37e970ffd18bf8d554/addons/point_of_sale/models/pos_config.py#L469-L473 However when writing on the model pos payment there is no constraint and the ORM currently does not trigger constraints on comodel of the field we're modifying so we need to add this constraint on the pos payment method model as well opw-6000206 Forward-Port-Of: odoo/odoo#253858
A recent test related to product archiving in the Point of Sale module was failing intermittently. This update ensures all test sessions are closed before running the test, resolving the issue where products weren't being properly archived. This improves the reliability of our testing process.
Original PR description
After this commit https://github.com/odoo/odoo/pull/252211/changes/3344bd72b9c5591b466aeca7f9da218da53dee3b the test test_archived_product_removed_and_order_is_refunded was sometimes broken because some session were still opened and the product could not be archived. This commit ensures that all sessions are closed before lauching the test. runbot-error: 241842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#253296
This update prevents unwanted formatting from being pasted into the HTML composer within Discuss. Previously, pasting content could introduce styles and HTML elements that disrupted the composer's intended use. This change ensures a cleaner and more consistent experience for creating HTML content.
Original PR description
When pasting content into the HTML editor composer, we want to ensure that no formatting is retained from the source in Discuss. This is achieved by intercepting the paste event in the clipboard plugin and removing the style and remove tags that we do not want to allow in the HTML editor composer in Discuss. This prevents any unwanted styles or HTML elements from being introduced into the composer in Discuss. task-5364799 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238136
This update corrects a formatting issue in Odoo's Danish (DK) nemhandel XML files. The 'DK' prefix was missing from the CVR nemhandel identifier, which is now correctly added to ensure accurate data transmission. This ensures proper processing of invoices and refunds related to Danish electronic payments.
Original PR description
In this commit af94099c4d74e9c48251a1c1656e3ad11b9f8a70, we made a fix regarding OIOUBL21 XML files, but we forgot to add the 'DK' prefix for CVR nemhandel identifier. The format should be 'DK' + nemhandel_identifier_value. no-task Forward-Port-Of: odoo/odoo#254430
This update addresses several minor issues related to resource management within Odoo, primarily focusing on enhancing the user experience and flexibility. Specifically, the Kanban interface now correctly displays resource search options, and employees without defined schedules are now recognized as flexible resources. These changes ensure a smoother workflow for managing resources.
Original PR description
## [FIX] resource_mail: change placeholder for the many2many_avatar_resource in kanban The default placeholder is "Search users...." which made little sense in the context of searching for resources.…
## [FIX] resource_mail: change placeholder for the many2many_avatar_resource in kanban The default placeholder is "Search users...." which made little sense in the context of searching for resources. ## [FIX] web: give specification to AutoComplete in m2m tags popover Before this commit, when the user uses the quick edit of m2m avatar widget, the specification is not given to props since the popover does not have the specification of the main component. This commit makes sure the specification is given to popover to correctly give them to the Autocomplete widget. ## [FIX] web: allow to change the popover to use in KanbanMany2ManyTagsAvatarFieldPopover Before this commit, it was not possible to change the popover used in KanbanMany2ManyAvatarFieldPopover in the case, we need to extend that popover class used. This commit allows to alter the popover class. ## [FIX] resource_mail: review m2m resource field widgets This commit reviews the code in the different components for m2m resource to use as much as possible the methods defined in the basic m2m avatar widgets defined in web and mail. ## [FIX] resource: make sure resource without calendar set is flexible one Before this commit, when an employee does not have a working schedule set, neither work per day set, this employee is not considered as a resource flexible in resource.resource record associated. This commit makes sure this kind of employee be considered as flexible resource. task-6020304
This update resolves an issue where cross-origin requests with the Range header would fail due to preflight checks. The change adds the necessary header to allow these requests to succeed, improving compatibility with external systems. While future customization is considered, this fix addresses a specific, previously undetected problem.
Original PR description
Previously, specifying the Range header in a CORS request would result in a preflight failure even if cors was enabled on the route. It is sometimes desirable to allow querying ranges even in a CORS context. It may be desirable at some point in the future to allow controllers to customize their preflight responses more thoroughly, but considering this hasn't really be an issue before, it seems premature. Instead, this commit just adds the Range header to the Allow-Control-Allow-Headers response header to allow such requests to succeed. Forward-Port-Of: odoo/odoo#254805
This update resolves a visual bug in the website builder where certain options groups would disappear unexpectedly when accessed by users with limited permissions. The fix moves the access right filtering step earlier in the process, ensuring the builder correctly displays available options or shows a blank state when none are visible. This improves the user experience for all website builder users.
Original PR description
Since the [website builder refactor], the `OptionContainer` component filters the option based on access right when rendering the list of options, and hides itself if there is no options visible when…
Since the [website builder refactor], the `OptionContainer` component filters the option based on access right when rendering the list of options, and hides itself if there is no options visible when rendered. With [folding of options], the options are rendered only when the group is unfolded. Thus the component can hide itself only if unfolded. Generally, there is at least one option visible when a group is rendered, which appears when the group is unfolded. But when options are filtered because of access right, the filtered list is often empty, and the group disappears when unfolded. This commit moves the filtering slightly earlier, so the options are filtered before rendering. If the filtered list of options is empty, the component shows nothing at all as it knows it has zero options, instead of a folded group. Steps to reproduce: - With a user with only the "restricted editor" access right (and not "editor and designer") - Open website builder on /blog - Click in the title in the cover - Bug: the "Blog Page" options group appears (but it is empty, and disappears when opened) [website builder refactor]: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 [folding of options]: 64d35ccd6fade9e0473686b8484f561b5f4215ce task-6032728
This update ensures that all required address fields (street, city, zip, state, country) are included when generating seller addresses on e-invoices for Viettel. This change is necessary to meet Viettel's EDI requirements and avoid potential invoice rejection issues, ensuring compliance and accurate reporting.
Original PR description
The seller address on e-invoices was missing some fields. This commit updates the logic to include street2, city, zip, state, and country when generating the seller address, ensuring full address details are provided in compliance with Viettel EDI requirements. task-6040875 Forward-Port-Of: odoo/odoo#254564
This update corrects a previous issue where half-day leave periods (like 3.5 or 4.5 days) weren't accurately displayed in the calendar view. The system now correctly recognizes and shows these half-day portions, ensuring leave schedules are displayed completely and accurately.
Original PR description
-When the leave includes a half day (for example, 4.5 or 3.5 days), the half-day portion is not displayed on the dashboard. --Rendering logic has been adjusted to count for half-days. Forward-Port-Of: odoo/odoo#255096 Forward-Port-Of: odoo/odoo#250342