Daily updates from Odoo
Tuesday, May 19, 2026
48 changes · saas-19.3
Resolved issues and error corrections
This update resolves an issue where the Planning Gantt view didn't correctly calculate working hours when the view wasn't grouped by resources. The fix ensures the total row accurately displays working schedule data regardless of grouping, improving planning accuracy for users.
Original PR description
Issue: ---------------------------------------- In the Planning Gantt view when we don't group by resources, the total row is not considering the working hours. Steps to reproduce:…
Issue: ---------------------------------------- In the Planning Gantt view when we don't group by resources, the total row is not considering the working hours. Steps to reproduce: ---------------------------------------- - Open Planning - Remove the default group by resources - Have at least a planning slot for a non-flexible employee - The total row doesn't take the working schedule into account Cause: ---------------------------------------- Since [an improvement,](https://github.com/odoo/enterprise/commit/cc35e1a4729453e4f788034a94402ab048eadfcb) the working hours data in given to the `PlanningGanttRenderer` through the progress bars data. This is an issue because the progress bars are only there if we group by resources. ([src](https://github.com/odoo/enterprise/blob/423ab064847dd41d36778a812390e3bec53ba4dc/planning/models/planning_slot.py#L2669-L2678)) Solution: ---------------------------------------- In this commit we partially revert the commit adding the working intervals in the progress bars. Instead of doing it in `_gantt_progress_bar_resource_id()` we create a new method `_get_gantt_planning_data()` which is called directly in `get_gantt_data()` and returns useful information even when there are no progress bars. opw-5507063 Forward-Port-Of: odoo/enterprise#116914 Forward-Port-Of: odoo/enterprise#112522
This update resolves an issue where kitchen tickets were incorrectly printed when platform orders were cancelled, regardless of where the cancellation occurred (Odoo PoS or provider platform). Now, cancelled platform orders will no longer trigger kitchen ticket printing, improving order accuracy and reducing unnecessary printing.
Original PR description
This fixes platform orders should not send to kitchen printer when the platform orders being cancelled. Currently accepting platform orders will not send to kitchen printer. However when cancelling platform orders on either provider platform, or within Odoo PoS. It will print a kitchen ticket of customer note. task-6071740 Forward-Port-Of: odoo/enterprise#114171
This update resolves an issue where list markers with trailing empty lines or complex formatting (links, copy-paste) didn't consistently receive color or font size adjustments. The fix ensures that list items are fully recognized for styling, regardless of formatting, improving the user experience when applying text and font styles to lists.
Original PR description
### Steps to reproduce: **Issue 1:** - Create a list with multiple items and leave the last item empty. - Press Ctrl + A to select all content. - Apply a text color from the toolbar. - The list…
### Steps to reproduce: **Issue 1:** - Create a list with multiple items and leave the last item empty. - Press Ctrl + A to select all content. - Apply a text color from the toolbar. - The list marker of the last item does not receive the color. **Issue 2:** - Create a list and type some text. - Press Ctrl+A to select all. - Apply a font size via the font-size input (inline style=`font-size: ...`). - Then apply a font size via the font-size dropdown (class-based). - Font size from the dropdown is not applied. **Issue 3:** - Create a list item and type some text. - Convert the text into a link. - Copy the link. - Press Enter and paste the link. - Select the entire list using the mouse. - Apply font size & observe that font size is not applied to some list items. **Issue 4:** - Go to Todo and create a list. - Select all items (Ctrl + A). - Apply a background color class from the toolbar. - Apply a font color using inline styling. - Observe that the font color is not visible. ### Description of the issue/feature this PR addresses: - Full-selection detection relied on Range.isPointInRange() checks on list item leaf nodes. When a list item ended with a trailing empty line, the selection often stopped on the `<li>` element and did not include the `<br>` placeholder. As a result, such list items were not considered fully selected when applying text color, and their markers remained unstyled. - Applying a font-size class on a fully-selected list item could leave existing inline font-size on list item, so new class didn’t take effect. - Creating links inside list items & repeated copy-paste operations left empty text nodes (feff cleanup). Manual selection doesn't include these nodes, `areNodeContentsFullySelected` reports that list item is not fully selected. As a result, some list items were not considered fully selected, and font size was not applied. - Background color `(bg-*)` classes also define a color property. When a font color is applied, the color is set on the `<li>`, but the nested `font.bg-*` element’s color takes precedence, causing the applied font color to be overridden. ### Desired behavior after PR is merged: - List items with trailing empty line are now treated as fully selected, even when selection ends before the `<br>` placeholder. - Clear any existing font-size styles on the list item before applying the new font-size class, so the dropdown font size applies correctly. - Empty text nodes are removed before applying font size, ensuring full list item selection and consistent font-size application. - When a list item (li) has a text color (inline style or text-* class), and nested font element has only a background color class then font element now inherits the color from the li. task - 5454639 Forward-Port-Of: odoo/odoo#264759 Forward-Port-Of: odoo/odoo#241827
This update resolves an issue with the alignment of payrun details within the Odoo Enterprise system. The team removed unnecessary code and corrected the layout to ensure payrun information is displayed accurately. This improves the user experience and data clarity for payroll processing.
Original PR description
Remove useless classes and fix alignment task-6191499
This update enhances how Odoo handles database errors during safe evaluation. By catching and retrying `IntegrityError` exceptions, the system now behaves more consistently regardless of the code being executed, leading to more reliable operations. This improves overall system stability and reduces potential disruptions.
Original PR description
It makes sense to bubble up the `psycopg2.IntegrityError` (as well as the subcase `ConcurrencyError`) so that the retry mechanism can handle this exception. In fact, this exception can be triggered without necessarily a problem with the "logic/business code". This ensures consistent behavior between the business logic and the code executed in `safe_eval`. Task-6215886 Forward-Port-Of: odoo/odoo#264838 Forward-Port-Of: odoo/odoo#264266
This update resolves issues that occurred when archiving employees with attendance and planning modules. Specifically, it ensures employees are properly checked out of attendance and planning slots during archiving, preventing access errors and data inconsistencies. The fix utilizes a 'sudo' method to grant necessary permissions for updates.
Original PR description
- Attendance checkout - Step to reproduce: with attendance installed and an employee checked in, archive that employee by HR user. If missing attendance rights, the employee will be archived but not…
- Attendance checkout
- Step to reproduce: with attendance installed and an employee checked in, archive that employee by HR user. If missing attendance rights, the employee will be archived but not checked out from its ongoing attendance.
- Cause: if no role set for Attendance (default), no permission to update the employee attendance while archiving.
- Solution: using sudo method so that any user with sufficient rights to archive an employee, can trigger check out of the corresponding attendance.
- Planning access error (fixed in 18.0 by https://github.com/odoo/odoo/pull/219395)
- Step to reproduce: with attendance and planning installed, archive an employee having planning slots. If missing planning rights, an access error is raised
- Cause: on employee archive, the corresponding planning.slots are updated and some fields recomputed with insufficient rights.
- Solution: using sudo method for recompute.
Task: 6131692
Forward-Port-Of: odoo/odoo#264518
Forward-Port-Of: odoo/odoo#260566This update fixes a bug that caused remote meeting tabs to crash when the host ended a call. The change ensures that call action dropdowns handle call disconnections gracefully, preventing errors and maintaining the existing user interface. This improves stability and reliability for users accessing meetings from multiple tabs.
Original PR description
**Steps to Reproduce:** - Start a new meeting (Host Tab). - Duplicate the tab or open the same meeting URL in another tab (remote tab). - In the remote tab, open the call menu (dropdown). - From the…
**Steps to Reproduce:** - Start a new meeting (Host Tab). - Duplicate the tab or open the same meeting URL in another tab (remote tab). - In the remote tab, open the call menu (dropdown). - From the host tab, disconnect/end the call. - Crashes on Remote Tab. **Current behavior before PR:** Before this PR, duplicating a meeting tab could leave the remote tab with a stale call action dropdown after the host ended the call. Since some action properties and handlers still assumed that selfSession and channel were always available, interacting with the dropdown could crash with errors. **Desired behavior after PR is merged:** After this PR, call action labels/classes defensively tolerate missing selfSession or channel references, and stale click handlers gracefully no-op when the call disappears mid-interaction. This prevents remote tab crashes during call teardown while preserving the existing UI behavior. task-[6191740](https://www.odoo.com/odoo/project/1519/tasks/6191740) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264989
This update fixes an issue where the print button disappeared from PDF attachment previews in version 19 and later. The change removes a redundant setting that was previously hiding the print button on desktop, ensuring it's consistently visible for all users. This restores a key functionality for accessing and printing PDF documents.
Original PR description
**Problem:** When opening a PDF attachment preview in v19+, the print button disappeared. As a result, the Print button is not accessible from the main toolbar. In v18 the buttons remained…
**Problem:** When opening a PDF attachment preview in v19+, the print button disappeared. As a result, the Print button is not accessible from the main toolbar. In v18 the buttons remained permanently visible. **Steps to reproduce:** - Open any record that has a PDF attachment in the chatter. - Click the PDF attachment to open the preview popup. - Observe toolbar buttons disappeared. **Cause:** commit responsible for this: https://github.com/odoo/odoo/commit/b7889d007f72c7e7f9f22318a9968338cde0ddb3 It was removed to prevent some bugs with some android/smartdevice and some old browsers `file_viewer.js` passes `hidePrint: true` to `hidePDFJSButtons()`. This was originally added alongside the mobile guard (`isMobileOS()`), but the `isMobileOS()` guard in `hidePDFJSButtons` already handles mobile, so the explicit `hidePrint: true` in `file_viewer.js` was redundantly hiding Print on desktop too. https://github.com/odoo/odoo/blob/654a1caafc2ab7b2841c372910b2e81dc6e9c035/addons/web/static/src/core/file_viewer/file_viewer.js#L60-L71 https://github.com/odoo/odoo/blob/654a1caafc2ab7b2841c372910b2e81dc6e9c035/addons/web/static/src/core/utils/pdfjs.js#L35-L37 **Fix:** - Remove `hidePrint: true` from `file_viewer.js` since mobile is already covered by the `isMobileOS()` check inside `hidePDFJSButtons()`. opw-6216534 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264739
This update aligns the subheaders and numerical data within Odoo's financial reports, ensuring a more consistent and professional appearance. Previously, the alignment was inconsistent, making the reports less readable. This change improves the overall user experience and data presentation.
Original PR description
Before this commit, subheaders of numeric columns were centered, while the figures in the columns were aligned to the end. This commit ensures that both the subheader and the figures are aligned the same way (center or end). task-6197223 Forward-Port-Of: odoo/enterprise#117477 Forward-Port-Of: odoo/enterprise#116578
This update addresses an issue where customers could automatically have orders confirmed when using gift card balances to cover event costs. Now, Odoo requires the standard checkout process to be completed, even with a fully covered cart, ensuring accurate order processing and preventing potential errors. This improves order reliability and customer experience.
Original PR description
**Before this commit** If a gift card balance fully covers a shopping cart containing multiple events, Odoo auto-confirms the order as soon as the last event is added, skipping the final checkout step. **After this commit** Sale orders will no longer be automatically confirmed when a customer registers for a paid event, even if an applied gift card brings the total balance to zero. opw-5896626 Forward-Port-Of: odoo/odoo#264830 Forward-Port-Of: odoo/odoo#246629
This update fixes a UI inconsistency in the property editing process. Previously, the "Add Property" button would remain visible even when switching between records or creating new ones. Now, the button correctly resets to "Edit Properties" ensuring a smoother and more intuitive user experience when managing properties.
Original PR description
Before this commit: - The “+ Add Property” button was not visible when switching between notebook pages if it was present initially. - when we are doing edit properties from the cog menu and without doing save properties if we are creating new record or switch to other record at that time button still shows “Save Properties.” leading to inconsistent UI behavior. After this commit: - The “+ Add Property” button remains visible when switching between pages. - When in property edit mode, switching records or creating a new record now correctly resets the button state back to “Edit Properties”, ensuring consistent UI behavior. task-6051322 ENT PR: https://github.com/odoo/enterprise/pull/113248 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#258030
This update fixes a UI inconsistency in the worksheet property editor. Now, the ‘Add Property’ button remains visible while editing and correctly resets to ‘Edit Properties’ when switching records or creating new ones, ensuring a smoother and more reliable user experience. This resolves a previous issue where the button's state was confusing.
Original PR description
Before this commit: - The “+ Add Property” button was not visible when switching between notebook pages if it was present initially. - when we are doing edit properties from the cog menu and without doing save properties if we are creating new record or switch to other record at that time button still shows “Save Properties.” leading to inconsistent UI behavior. After this commit: - The “+ Add Property” button remains visible when switching between pages. - When in property edit mode, switching records or creating a new record now correctly resets the button state back to “Edit Properties”, ensuring consistent UI behavior. task-6051322 Forward-Port-Of: odoo/enterprise#113248
This update corrects an issue where invoices using a specific tax category ('O-service out of tax scope') in Odoo failed Peppol validation. The fix ensures invoices with this category don't include VAT IDs, aligning with Peppol requirements and preventing validation errors.
Original PR description
**PROBLEM** In peppol, there is a tax category 'O-service out of tax scope'. This tax category is used when what is invoice can't be tax (out of the tax scope). This is different from tax exemption: when using tax category O, there can't be any vat id on the invoice. This also means you can't use tax category O with other taxes, since other taxes need the vat id. Invoices generated by odoo with tax category O failed peppol validation. **STEP TO REPRODUCE** 1. install account_edi_ubl_cii_tax_extension. 2. Create a tax with tax category O. 3. Create an invoice and try validating using the file validator. 4. You should have error BR-O-02 and BR-O-05. opw-6012669 Forward-Port-Of: odoo/odoo#264081 Forward-Port-Of: odoo/odoo#254645
This update fixes a minor issue where some work entry names in the Odoo system were misspelled. The team corrected the data files to ensure accurate and consistent naming conventions for work entries, improving the overall user experience. This change was driven by a reported issue (opw-6090081).
Original PR description
Issue: ---------------------------------------- Some work entry names are wrong. Solution: ---------------------------------------- Change the data files. opw-6090081 Forward-Port-Of: odoo/odoo#264094
This update fixes a visual issue where long accounting reports would cut off the final row, preventing users from seeing all the data. The team adjusted styling to ensure all rows are fully visible, regardless of the report's length. This improves the clarity and completeness of financial reports.
Original PR description
Problem: When an accounting report fills a whole page, the final row is not fully visible Steps to reproduce: 1- View a tax report that has a lot of entries that would fill the whole screen 2- Notice how the last line is not fully visible and it isn't possible to scroll and view the rest of it Solution: Correctly style the different < div > elements opw-6171555 Forward-Port-Of: odoo/enterprise#116068
This update fixes a potential crash in the Gantt chart interface. It reintroduces a safeguard to prevent errors when a user attempts to drag a pill without a valid target. This ensures the Gantt chart remains stable and reliable during testing and user interactions.
Original PR description
In https://github.com/odoo/enterprise/pull/113438, it was incorrectly assumed that it would be impossible to initiate a pill drag without a valid target being found. This commit reintroduces a strict safeguard to handle scenarios where the drag is triggered with no valid cell target. This prevents unexpected crashes encountered during test executions. runbot-error-242486 Forward-Port-Of: odoo/enterprise#116619
This update fixes an issue where Knowledge articles appeared narrow when printed on large screens. The fix specifically targets the Knowledge editor's form view, preventing a CSS rule from causing a constricted layout. Now, articles print correctly in a readable format when exported or printed.
Original PR description
Currently, a CSS rule forces the form container width to 1px to ensure that the nested list view can correctly compute its size. See: ```scss .o_form_view.o_xxl_form_view { .o_form_view_container {…
Currently, a CSS rule forces the form container width to 1px to ensure that the nested list view can correctly compute its size.
See:
```scss
.o_form_view.o_xxl_form_view {
.o_form_view_container {
width: 1px; /* List view needs a width value to recompute the size correctly */
}
}
```
However, since the Knowledge editor is implemented as a form view, this rule also affects Knowledge. When zooming out, the `o_xxl_form_view` class is added to the form view container, causing the rule to apply. If an article is printed while this class is present, it is constrained to an extremely narrow column, making it unreadable.
Steps to reproduce:
1. Open an article in Knowledge
2. Zoom out using `Ctrl` + `-`
3. Open the kebab menu and select "Export"
=> The article is rendered in a very narrow column.
To address this issue, we override this rule specifically for Knowledge. With this change, articles are now rendered correctly when printed or exported as PDF.
Task-5999878
Forward-Port-Of: odoo/enterprise#103259This update corrects issues with the Swedish ISO 20022 XML structure, ensuring accurate data transmission to banks. Specifically, the system now consistently uses BIC identifiers for financial institutions and addresses a unique requirement from Nordea bank regarding bank account formats.
Original PR description
Here is few fixes added to the swedish iso 20022 XML: - CdtrAgt seems to be always mandatory, change the condition in `_skip_CdtrAgt` to always use the CdtrAgt if payment_method is iso20022_se - The `_is_se_bban` is too restrictive, this should be always True when payment method is swedish iso - The `FinInstnId` node can either contain BIC or ClrSysMmbId. But as ClrSysMmbId seems to change from one bank to another, it's more relevant to always use the BIC. opw-5395736 Forward-Port-Of: odoo/enterprise#117574 Forward-Port-Of: odoo/enterprise#114662
This update fixes an issue where tax returns were incorrectly including all tax amounts, regardless of the specific region (like British Columbia or Manitoba). Previously, tax returns generated entries with taxes from multiple locations. Now, tax returns accurately reflect taxes related to the specific return type and region, ensuring accurate reporting for Canadian businesses. This improves the reliability of tax return data.
Original PR description
Issue: Validating a tax return creates an entry with all the tax aml from the company instead of filtering them according to the tax return type. Steps to reproduce: - In a company in Canada - Invoice a Customer from British Columbia in the previous month (A) - Confirm - Go to tax report -> Return - Review and Validate tax return for "Manitoba PST Return (CA)" for month A - Click on the 3 dots -> View Entry Current Behavior: - Entry has lines for PST in British-Columbia and GST taxes Expected behavior: - Entry has lines for PST in Manitoba only Cause: https://github.com/odoo/enterprise/pull/98158 introduces method `_get_vat_closing_entry_additional_domain` in the wrong class. opw-6065838 Forward-Port-Of: odoo/enterprise#116813 Forward-Port-Of: odoo/enterprise#116366
This update ensures charts maintain their current granularity when users specify custom date ranges (e.g., 'until 2024-01-01) instead of automatically adjusting based on global filters. Previously, the system struggled to determine the optimal chart level with these specific ranges, leading to potential inconsistencies. This fix guarantees a consistent chart display regardless of the user's date selection.
Original PR description
The charts adapt their granularity when a date global filter is updated. But the code didn't handle the cases where the user sets a custom range with an open start or end date (eg. `until 2024-01-01`). In those case picking the best granularity is not practical (because it fully depends on the server data), so we will just keep the current granularity. Task: [6196246](https://www.odoo.com/web#id=6196246&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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#264939 Forward-Port-Of: odoo/odoo#263019
A recent test failure in the 'pos_self_order' module was caused by how time slots were generated. This update has corrected the issue by freezing the time to midnight, ensuring all available slots are considered during testing. This prevents test failures and improves the reliability of the order scheduling functionality.
Original PR description
Before this commit: = - The test test_slot_limit_orders created slots only for the first day of the week (Monday). - The test scenario includes a slot at "18:00". - On Mondays, the test fails between 18:01 and 23:59 because the "18:00" slot no longer exists for the current day. - On other days, the test passes since slots are generated for the upcoming Monday. After this commit: = - Freezed the time to current day at "00:00" so that slot list can have every slot for that day. task-6043739 runbot-241836 Forward-Port-Of: odoo/odoo#263476 Forward-Port-Of: odoo/odoo#254775
This update fixes an issue where image data lingered in the website builder's code after shapes were removed, leading to potential performance problems. The change adds a cleanup process to remove outdated image data, ensuring a cleaner and more efficient website builder experience. This improves the overall stability and responsiveness of images on the Odoo website.
Original PR description
Steps to see the issue: - Add a shape to an image - Remove it => Image element in the DOM still has some data related to the shape. This commits adds a shared method to `ImageShapeOptionPlugin` to…
Steps to see the issue: - Add a shape to an image - Remove it => Image element in the DOM still has some data related to the shape. This commits adds a shared method to `ImageShapeOptionPlugin` to clean shape-related data when we apply a shape, or remove it, the method mirrors the behavior we had before the [html builder refactoring]. Also, commit [1] fixed the issue when the builder transfered shape or hover related data to incompatible images, when replacing an image with a shape/hover on it. However if these data attributes had already been saved prior to that commit, it would stay there indefinitely. The same could happen with hover effects attributes. Therefore, we add a resource that we call before saving data to clean any stale image data. Example of a CORS protected image: [2] [1]: https://github.com/odoo-dev/odoo/commit/137a6d7e59e1d788745c3b796a14839e52a8c5bc [2]: https://tinyjpg.com/images/social/website.jpg [html builder refactoring]: github.com/odoo/odoo/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-5172640 Forward-Port-Of: odoo/odoo#263662 Forward-Port-Of: odoo/odoo#259226
This update fixes an issue where the call preview overlay was overlapping with call actions on smaller screens. The change ensures the preview remains fully visible and readable, improving the user experience for all users. This was part of a larger effort to enhance usability across different screen sizes.
Original PR description
Purpose of this PR: Since #235707, the call preview content could overlap the call actions on small screens. This commit prevents the overlap and keeps the preview readable. Before/After: <table> <tr> <td> <img width="398" height="691" alt="image" src="https://github.com/user-attachments/assets/da7eaf5b-387e-439f-80bb-cb6dd8c07454" /> <td> <img width="391" height="691" alt="image" src="https://github.com/user-attachments/assets/384a08d1-6b51-490a-8b57-267a3bb1b3d5" /> </table> task-[6201269](https://www.odoo.com/odoo/project/1519/tasks/6201269) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263535
This update resolves an issue where users without write access to the AT Point of Sale (PoS) would receive an access error when attempting to authenticate after a token expiration. The fix ensures that the correct access error is displayed, preventing disruptions to sales transactions.
Original PR description
When trying to auth directly from the PoS when the token expires, if you are logged in with a user that doesn't have write access to the PoS. You would get an access error. Steps to reproduce: ------------------- * Setup Fiskaly in an AT company * Open PoS and try to make a sale * To fake the token expiration I modified the code so that the request always return 401 status code > Observation: You get an access error opw-5925203 Forward-Port-Of: odoo/enterprise#115735 Forward-Port-Of: odoo/enterprise#112474
This update fixes an issue where e-Faktura invoices for non-Polish customers incorrectly included the country code in the VAT number. The change ensures the correct VAT number format is used, aligning with KSeF regulations and preventing potential invoice rejection. This ensures compliance and accurate invoice generation.
Original PR description
Currently, an incorrect VAT format is used in the generated `FA3 XML` for non-Polish partners, where the VAT number includes the country code. **Steps to reproduce:** - Install the `l10n_pl_edi`…
Currently, an incorrect VAT format is used in the generated `FA3 XML` for non-Polish partners, where the VAT number includes the country code. **Steps to reproduce:** - Install the `l10n_pl_edi` module and switch to a `PL Company`. - Go to Settings and enable `Allow KSeF integration` (refer to [1]). - Create and confirm an invoice for a customer (e.g., Azure Interior). - Send the invoice using `by KSeF (e-Faktura)`. **Observation:** In the generated XML file, the `NrID` field contains the VAT number `with the country code` for non-Polish partners. **Root Cause:** At [2], `get_vat_number` sets the VAT number using `compact` from `stdnum.pl.nip`, which only works for Polish VAT numbers. At [3], `get_vat_number` correctly formats Polish VAT numbers without the country code in the `if condition`. However, in the fallback (else) case, it returns the VAT number as it is, including the country code. **Fix:** This commit ensures that for non-Polish VAT numbers, the country code is removed before setting the `NrID` or `NrVatUE` values in the XML, aligning the format with KSeF requirements. Ref: https://ksef.podatki.gov.pl/media/4u1bmhx4/information-sheet-on-the-fa-3-logical-structure.pdf (Page no.: 19) [1]: https://www.odoo.com/mail/message/1057847327 [2]: https://github.com/odoo/odoo/blob/d73e5662a0af7c549008661f743ba5d51f765339/addons/l10n_pl_edi/models/account_move.py#L257 [3]: https://github.com/odoo/odoo/blob/d73e5662a0af7c549008661f743ba5d51f765339/addons/l10n_pl_edi/data/fa3_template.xml#L67-L82 opw-6120118 Forward-Port-Of: odoo/odoo#263081
This update resolves an issue where the payroll report would fail if a new employee didn't have a start date defined. The fix ensures the report checks for a start date before attempting comparisons, preventing errors and improving report reliability. This ensures accurate payroll processing.
Original PR description
If there is no start date on the veriosn, the report will fail as it'll try to compare a bool with a datetime. So we check first that there is a start date Forward-Port-Of: odoo/enterprise#117534
This update resolves several bugs impacting the AI Fields functionality within Odoo Enterprise. Specifically, it corrects an error message that previously appeared to users and ensures accurate source citations are used when generating AI responses, improving the reliability of the AI Fields tool. This enhances the overall user experience and data integrity.
Original PR description
This commit fixes the following bugs: - In 99f76c1, tools.py was moved from ai_fields module instead ai_fields_tools in the ai module. However, the 'odoo.addons.ai_fields.tools.UnresolvedQuery' error which is caught in _computeAiField method wasn't changed to reflect the new file path which made the error appear to the user instead of just being a toaster message. - When performing web_grounding, the URL citations are replaced by [WEB_SOURCE:<id>] to prevent LLM hallucinating sources during the agentic_loop. These placeholders are replaced again by the actual URLs before sending the response back to the user. However, this wasn't done in the case of _get_direct_response when the web_grounding completion option was set to True and was only done if the custom web_search tool was used. This caused these placeholders to appear in AI Fields. task-6209766
This update resolves an issue where users couldn't create new templates after undoing a previous template conversion. The fix ensures the original project documents folder is properly restored, eliminating a conflict that prevented subsequent template creation. This improves the user experience and workflow for managing project templates.
Original PR description
Steps to Reproduce: --- 1. Create a new project. 2. Convert it into a template. 3. Click on "Undo". 4. Try to convert the project into a template again. Issue: --- After undoing the template…
Steps to Reproduce: --- 1. Create a new project. 2. Convert it into a template. 3. Click on "Undo". 4. Try to convert the project into a template again. Issue: --- After undoing the template conversion, the project's original documents folder remained archived while the template's documents folder stayed active. This inconsistent state prevented subsequent template creation from the same project. Current behaviour: --- A UserError is raised: "You cannot duplicate document(s) in the Trash." Expected behaviour: --- Undoing the template conversion should properly restore the original project's documents folder to active state and clean up the template's documents folder, allowing template conversion again without document folder conflicts. Fix: --- - Archive original project's documents folder during template creation to prevent mixed active/inactive states during copy operations - Implement callback system to properly unarchive original project's documents folder during undo task-4916027 Forward-Port-Of: odoo/odoo#264429 Forward-Port-Of: odoo/odoo#223152
This update resolves a bug where undoing a template conversion would leave the project's documents folder in an inconsistent state, preventing further template creation. The fix ensures the original project's documents are properly restored and cleaned up during the undo process, improving template management.
Original PR description
Steps to Reproduce: --- 1. Create a project with documents. 2. Convert it into a template. 3. Click on "Undo". 4. Try to convert the project into a template again. Issue: --- After undoing the template conversion, the project's original documents folder remained archived while the template's documents folder stayed active. This inconsistent state prevented subsequent template creation from the same project. Current behaviour: --- A UserError is raised: "You cannot duplicate document(s) in the Trash." Expected behaviour: --- Undoing template conversion should properly restore original project's documents folder and clean up template's documents folder. Fix: --- - Archive original project's documents folder during template creation - Implement documents folder unarchival during undo operations task-4916027 Forward-Port-Of: odoo/enterprise#117303 Forward-Port-Of: odoo/enterprise#91595
This update fixes an issue where prepaid tax calculations were inaccurate due to rounding errors, specifically when dealing with downpayment invoices. The change ensures that tax amounts are calculated correctly using global rounding, preventing discrepancies and improving financial reporting accuracy. This impacts users relying on the l10n_sa_edi module for Saudi Arabian tax compliance.
Original PR description
### Steps to reproduce: - Download 'Sales', 'Accounting', and 'l10n_sa_edi' modules - Settings > Accounting > Rounding Method > Enable global rounding - Create sale order with 8 lines at 29.7 each…
### Steps to reproduce: - Download 'Sales', 'Accounting', and 'l10n_sa_edi' modules - Settings > Accounting > Rounding Method > Enable global rounding - Create sale order with 8 lines at 29.7 each with 15% taxes (triggers rounding precision issues) - Create and confirm 100% downpayment invoice - Deliver, then create final invoice with downpayment lines - Call `_l10n_sa_get_prepaid_amount()` on final invoice > Tax amount was calculated as 35.67 instead of correct 35.64 ### Cause of Issue: The prepaid amount calculation was summing pre-rounded `tax_amount_currency` values from individual downpayment lines (4.45 + 4.46 + 4.46... = 35.67), instead of summing unrounded `raw_tax_amount_currency` values (4.455 × 8 = 35.64) to calculate `tax_amount`. https://github.com/odoo/odoo/blob/27930ae41a5f03bd499983109de7f632472c3650/addons/l10n_sa_edi/models/account_edi_xml_ubl_21_zatca.py#L227-L240 This violates Odoo's [recent change](https://github.com/odoo/odoo/pull/180062) in `round_globally` pattern which states: https://github.com/odoo/odoo/blob/8a88756bed194910bc5a47e93f0e29610dbeee1f/addons/account/models/account_tax.py#L2208 ### Fix: Ensure cumulative rounding errors are avoided and correct global rounding is applied. opw-5881564 Forward-Port-Of: odoo/odoo#264713 Forward-Port-Of: odoo/odoo#261278
This pull request applies automated linting fixes across several website sale modules, including those related to Amazon, Lazada, Shopee, and renting. These fixes ensure consistent code style and formatting, improving code readability and maintainability. The changes are purely technical and do not impact any business functionality.
Original PR description
post-freeze run for task-5436779
This update reintroduces a 'proc title' monitoring feature that was previously removed. This allows the team to better track key performance indicators related to the core system. The change ensures continued visibility into important operational data.
Original PR description
This was removed in ad36284 but is useful for monitoring. 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
This update resolves an issue where dragging calendar events with their popovers open was impossible. The fix ensures that the popover closes automatically during a drag, allowing for smooth event movement. It also eliminates popover flickering that occurred during the drag and drop process.
Original PR description
[FIX] web: fix event drag and drop with opened popover Fix impossible event drag and drop when the event has its popover opened. On drag start, the popover should close to allow dragging the event. [FIX] web,calendar: fix popover flicker on event drag Fix the popover flickering when drag and dropping an event with its popover opened. Task-5965017 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264347
This update resolves an error that prevented the generation of PDF reports for Colombian tax statements. The issue stemmed from a change in how report data is structured, requiring a simple update to access the correct data values. This ensures accurate report generation and avoids disruptions for users generating these reports.
Original PR description
***Steps to reproduce*:** - Install `l10n_co_reports` module. - Create 2 vendor bills with taxes `0% EXEMPT` and `0.966% RteICA`. - Navigate to Reports -> Colombian Statements -> Certificado de…
***Steps to reproduce*:** - Install `l10n_co_reports` module. - Create 2 vendor bills with taxes `0% EXEMPT` and `0.966% RteICA`. - Navigate to Reports -> Colombian Statements -> Certificado de Retención en ICA - Generate the PDF report. ***Observed behavior*:** - An error is raised while generating the PDF: `AttributeError: 'AccountReportColumnData' object has no attribute 'get'` ***Cause*:** After commit [1](https://github.com/odoo-dev/enterprise/commit/b92dc397bef029472a40223f51b611cdf5b631dc#diff-e97f74c63a6257470e69eb8122c12d0ce4afa5bc6013176bb69e702849575123) all report lines, columns, and annotations were converted from dictionaries to custom objects (e.g., AccountReportColumnData). However, the function `_get_report_values` still uses .get() to access values, which is only valid for dictionaries. Calling .get() on these objects raises an error. ***Fix*:** - Replace the `get()` method usage with `column.name` format to access values from `AccountReportColumnData ' properly. - This ensures compatibility with the new structured column data format introduced in v19.2. opw-6205984 Forward-Port-Of: odoo/enterprise#116902
This update fixes an issue where inactive records weren't properly reflected in many-to-many field caches during updates. By ensuring inactive records are included in the cache calculations, the system now maintains a more accurate and complete view of relationships, improving data consistency and reporting. This primarily impacts modules utilizing many-to-many relationships.
Original PR description
see commit message --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where POS Managers couldn't access key features after a system update. The changes granted POS Managers the necessary permissions to access customer information and navigate the system, ensuring they can perform their roles effectively. A duplicate test was also removed to streamline the testing process.
Original PR description
POS Manager heavily relied on stock user to access many different models, after the seperation of `point_of_sale` and `pos_stock`, we needed to allow `point_of_sale` users to access `res.partners` as well as adding `group_user` to it, so it can access the home menu, which without it managers aren't able to do a bunch of actions. Morever, there was a duplicated test that was removed. Runbot Error: 242929 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website builder's AI-generated content was causing spacing issues due to overly broad spacing rules. This update refines the AI's rules to focus solely on new layout changes, ensuring existing snippet structure and classes are preserved during content edits. This improves the visual consistency and usability of the website builder.
Original PR description
Snippets added by AI have its elements glued with no proper spacing. The problem is the spacing rule in the builder topic was too broad and implied existing Bootstrap margin or gutter classes should be removed, even when only editing snippet content. Limit the rule to new layout spacing changes and tell the AI to preserve existing snippet structure/classes during content-only edits. task-id-6230199
This update optimizes a key calculation within the MRP subcontracting purchase module, reducing unnecessary database queries. By checking if a product is linked to a bill of materials, the system avoids redundant searches, particularly when processing a large number of order points. This results in significantly faster lead time calculations, improving overall system performance.
Original PR description
When computing `qty_to_order` 1-3 extra queries are made by `get_lead_days()`, which can cause performance issues when computing `qty_to_order` for a large number of orderpoints. This commit aims to…
When computing `qty_to_order` 1-3 extra queries are made by `get_lead_days()`, which can cause performance issues when computing `qty_to_order` for a large number of orderpoints. This commit aims to prevent these extra queries by returning early if the current product is not associated with a bom. The amount this commit speeds up the compute depends on how many of products passed into `_get_lead_days()` are associated with a bom. `qty_to_order` is no longer a stored field after this commit: https://github.com/odoo/odoo/pull/159432 This benchmark was done in 18.0 on /stock.warehouse.orderpoint/search_panel_select_range. This call does not trigger the compute on all orderpoints in 17.0 as the field is stored but calling the compute directly on all orderpoints results in the same speed up as seen in 18.0. | Orderpoints | % of products linked to a bom | Time before | Queries before | Time after | Queries After | |-------------|-------------------------------|-------------|----------------|------------|---------------| | 800 | 50% | 2.8s | 1570 | 2.3s | 818 | | 8,000 | 0% | 28.2s | 16,698 | 15.3s | 242 | | 8,000 | 25% | 29.6s | 16,833 | 19.2s | 4497 | | 8,000 | 50% | 29.8s | 16,925 | 23.2s | 8693 | | 8,000 | 75% | 31.6s | 16,949 | 27.6s | 12827 | Forward-Port-Of: odoo/odoo#264848 Forward-Port-Of: odoo/odoo#262321
This update fixes an issue where the spreadsheet feature was making unnecessary server requests when displaying CRM lists. By ensuring all required data is fetched directly within the spreadsheet's data source, we've significantly reduced the number of calls to the server, resulting in faster loading times and a smoother user experience. This improves overall spreadsheet performance.
Original PR description
How to reproduce: - Create a spreadsheet with a CRM list and only set 2 cells content A1: =odoo.list(1, 1, "id") A2: =odoo.list.header(1,"zip") - save and reload the spreadsheet and look at the server calls ⮕ web_search_read called 2 times The problem is that the datasource methods early return if the datasource is already loading without adding the field to the list to fetch. It was partially solved by explicitely adding the field to fetch in the *getter* `getListCellValueAndFormat` but not on `getListHeaderValue`. This revision ensures that we always add the field to the list to fetch in the datasource directly, this responsibility should not be held by the plugin getters. Task-6175523 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#261985
This update corrects a bug where purchase order quantities were incorrectly calculated due to a mismatch between product units of measure. The fix ensures accurate quantity received, preventing invoicing errors and improving order processing. Additionally, a related issue with error messages has been resolved for improved debugging.
Original PR description
Bug introduced in: https://github.com/odoo/odoo/commit/385e4cab3ba6d3b2c4975565125389eb07f2ef45 Steps to reproduce: - Create a new database with only the Purchase module installed - Enable the "Units…
Bug introduced in: https://github.com/odoo/odoo/commit/385e4cab3ba6d3b2c4975565125389eb07f2ef45 Steps to reproduce: - Create a new database with only the Purchase module installed - Enable the "Units of Measure & Packagings" option - Create a storable product "P1" with the following vendor pricelist: - Vendor: Azure Interior (1 pack of 6 for $10) - Create a purchase order: - Vendor: Azure Interior - Quantity: 3 packs of 6 of P1 - Confirm the PO - Click the Receive button (available without the Stock module since v19.1) Problem: 1:/ Expected behavior: qty_received = 3 (in purchase UoM: packs of 6) Actual behavior: qty_received = 18 (product UoM: units) `product_uom_qty` (expressed in the product's UoM) was used instead of `product_qty` (expressed in the purchase line's UoM) when computing `qty_received`. Since `qty_received` feeds into `quantity_to_invoice`, this caused the invoicing autocomplete to suggest 18 packs of 6 instead of the correct 3 packs of 6. 2:/ The parameter `invalid_targets` was not properly passed to the translation function in the error message, causing a traceback when trying to receive a PO in an invalid state. opw-6080527 Forward-Port-Of: odoo/odoo#261630 Forward-Port-Of: odoo/odoo#260163
This update fixes a technical error that prevented QR invoices from printing correctly for Swiss companies. The issue stemmed from an incorrect function call within the invoicing module, which was resolved by correcting the code syntax. This ensures all invoices with QR codes can now be printed successfully.
Original PR description
**Steps to reproduce:** - Install the `l10n_ch` module and switch to a `CH Company`. - Go to Invoicing Settings and enable `QR Codes`. - Create a new invoice for the CH Company. - In the `Other Info` tab, set `Payment QR-code` to `Swiss QR bill`. - Confirm it and click `Print`. **Error:** `TypeError: '_VirtualList' object is not callable` **Root Cause:** At [1], the code incorrectly calls `pages` as a function using `round brackets`. However, pages is a `_VirtualList` `object` that only supports index-based access using `square brackets`. **Fix:** This commit prevents the traceback and ensures that invoices can be printed successfully. [1]: https://github.com/odoo/odoo/blob/2b486f35235974584b3434c2ca93297db802ae81/addons/l10n_ch/models/ir_actions_report.py#L57-L58 opw-6215049 opw-6221311 opw-6242083 opw-6246101 opw-6244005 opw-6240997 opw-6224433
This update corrects a bug that prevented users from successfully purchasing multiple gift cards through the website. The fix involved adjusting a function to correctly handle the 'post_confirm' argument, resolving a type error that was causing the issue. This ensures a smoother purchase experience for customers.
Original PR description
Currently, an error will occur when user tries to buy multiple giftcards from the website. Error: ``` TypeError: SaleOrder._get_real_points_for_coupon() got an unexpected keyword argument 'post_confirm' ``` This occurred because the function `_get_real_points_for_coupon()` accepts the argument `_post_confirm`[1] (changed by this [PR]), whereas here in this template we pass `post_confirm`. Changed the method signature to accept the argument `post_confirm`. [1]: https://github.com/odoo/odoo/blob/32d02f22a0f397ddcc83fe1cee53f8f62d73338d/addons/sale_loyalty/models/sale_order.py#L850 [PR]: https://github.com/odoo/odoo/pull/237354/changes#diff-05c263ea6063dd0045f2cd5be1888d608448ef8ff11f23371616334273c133e5L781-R845 sentry-7482959769 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a minor issue where holiday requests weren't always correctly associated with the version of Odoo being used. Now, the system accurately tracks and manages holiday requests based on the current Odoo version, ensuring accurate scheduling and reporting. This improves the reliability of our HR data.
Original PR description
…ion being written on 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#264997
This update fixes an issue where stock valuations were inaccurate when users had timezones different from UTC. The change ensures that stock valuation calculations correctly account for the user's timezone, leading to accurate inventory reporting. This impacts how stock values are calculated for AVCO and FIFO methods.
Original PR description
**Issue** While performing stock valuation, when a `to_date` is selected, the resulting valuation may be incorrect depending on the user's timezone. **Steps to reproduce** - Set the user timezone to…
**Issue** While performing stock valuation, when a `to_date` is selected, the resulting valuation may be incorrect depending on the user's timezone. **Steps to reproduce** - Set the user timezone to UTC+1 - Create a storable product with: - quantity: 10 (created today) - unit cost: 5 - valuation method: AVCO - Go to Accounting > Review > Inventory > Inventory Valuation - Select today's date - Click on "Ending Stock" -> The total value and quantity in stock are 0 instead of respectively 50 and 10. **Cause** When selecting a date (e.g. 12/04), the `to_date` is initially set at 00:00 in the user's timezone. An attempt is then made to convert it to 23:59 to avoid excluding quantities created during that day: https://github.com/odoo/odoo/blob/87e176ad76c9d7b87cd622ae38a8b9a62813b1cb/addons/stock_account/models/product.py#L147-L150 However, this conversion is performed on a naive UTC datetime. For a user in UTC+1, this results in the following situation: - 12/04 00:00 (user timezone) -> 11/04 23:00 UTC - Converted to 23:59 UTC -> 12/04 00:59 in user timezone As a consequence, most of the quantities created on 12/04 are excluded from the valuation. This issue impacts AVCO (and FIFO as well), as `at_date` is used during cost computation: https://github.com/odoo/odoo/blob/87e176ad76c9d7b87cd622ae38a8b9a62813b1cb/addons/stock_account/models/product.py#L147-L150 In addition, `at_date` is added to the context, while `qty_available` relies on `to_date` instead: https://github.com/odoo/odoo/blob/87e176ad76c9d7b87cd622ae38a8b9a62813b1cb/addons/stock/models/product.py#L151-L153 This inconsistency leads to incorrect quantities and valuation results. opw-5491743 Forward-Port-Of: odoo/odoo#255230 Forward-Port-Of: odoo/odoo#246163
This update resolves an issue preventing non-administrator users from viewing user settings within the Odoo Enterprise system. Previously, users lacked access to the 'Settings/Users' view, restricting their ability to manage user accounts. This change ensures all users can access essential user management features.
Original PR description
Steps:
- Create a user X with admin rights
- Connect as X
- Open Settings/Users
- Access right error
```
Failed to read field res.users.database_user_ids
You are not allowed to access 'Database User' (databases.user)
```
opw-6209241
Forward-Port-Of: odoo/enterprise#117573This update removes unnecessary progress reporting from Odoo's automation and autovacuum processes. Previously, these processes were incorrectly signaling progress, leading to redundant and potentially problematic retries. This change enhances the stability and efficiency of Odoo's background jobs.
Original PR description
Base automation and autovacuum should not log progress as this is makes the job scheduler think that something progresses and can be retried leading to the same error because we process the same (all) items. In general, progress numbers are only relevant for jobs that act as job queues. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264684
This update optimizes a key process in Odoo's accounting and sales modules for Vietnam (l10n_in and l10n_in_sale). The change eliminates a redundant database query, significantly speeding up import operations and invoice processing. This improves overall system performance and responsiveness.
Original PR description
There is no need to do a query to get a random foreign state. This search can be performed many times during imports. While the query is generally not reading a lot of data, it is still doing a seq…
There is no need to do a query to get a random foreign state. This search can be performed many times during imports.
While the query is generally not reading a lot of data, it is still doing a seq scan because of the ORDER BY, while the query can be avoided completely.
```sql
EXPLAIN ANALYZE
SELECT "res_country_state"."id"
FROM "res_country_state"
WHERE "res_country_state"."code" NOT IN ('IN')
ORDER BY "res_country_state"."code", "res_country_state"."id"
LIMIT 1;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------
Limit (cost=84.93..84.94 rows=1 width=8) (actual time=0.450..0.450 rows=1 loops=1)
-> Sort (cost=84.93..90.49 rows=2224 width=8) (actual time=0.449..0.449 rows=1 loops=1)
Sort Key: code, id
Sort Method: top-N heapsort Memory: 25kB
-> Seq Scan on res_country_state (cost=0.00..73.81 rows=2224 width=8) (actual time=0.012..0.281 rows=2223 loops=1)
Filter: ((code)::text <> 'IN'::text)
Rows Removed by Filter: 2
Planning Time: 0.075 ms
Execution Time: 0.462 ms
```
This can be worse if when the table is not in the buffer.
Forward-Port-Of: odoo/odoo#265007This update resolves a problem that prevented users from successfully upgrading their Odoo system when updating tax account tags. The fix replaces a problematic process with a simpler method to ensure tax account information is correctly updated after an upgrade, improving system stability and preventing upgrade failures.
Original PR description
When a module depends on `l10n_account_withholding_tax` and updates tax account tags on the chart of accounts, the upgrade fails. `_withholding_tax_get_demo_account_ref` calls `_get_account_tax`, which calls `_deref_account_tags`, throwing an error due to missing tags in the database since the deref tags function dri. This occurs because the depening module tags has not updated yet as it needs to be triggered by the user post upgrade. This fix uses `_parse_csv` instead to avoid calling `_deref_account_tags` and triggering the issue. task-4967527 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265239