Friday, January 23, 2026
44 changes · 19.0
Resolved issues and error corrections
This update fixes an issue where keyboard navigation within the website builder's image cropping tool was unreliable. Now, pressing 'Enter' correctly validates or dismisses the cropper, and 'Escape' properly closes the sidebar. This provides a smoother and more accessible experience for users editing images.
Original PR description
Steps to reproduce: - Select an image in the website builder. - Open the cropping tools. - Press Enter. - Try to discard the cropper. Before this commit, focus stayed on the toolbar crop button so `Enter` opened another cropper, `Escape` closed the sidebar, and the cropper buttons were not reachable via keyboard. After this commit, the cropper grabs focus and handles `Enter/Escape` itself so keyboard interactions validate or dismiss the cropper. task-5432043 Forward-Port-Of: odoo/odoo#240910
A test within the Documents module was failing due to an issue with redirect URLs. The fix ensures that test URLs are consistently relative, resolving the problem and maintaining test stability. This ensures the Documents module continues to function correctly.
Original PR description
Bug === On some runs, the redirect URL is absolute and not relative, (eg: `http://127.0.0.1:8069/web/signup?db=...`) and so the test needs to be adapted. Task-5857520 Forward-Port-Of: odoo/enterprise#105027
This update prevents excessive email notifications to managers when employees submit expenses. Previously, managers received emails for every state change, which was causing a flood of messages. Now, managers only receive a weekly email summarizing pending expenses awaiting their approval, streamlining the approval process and reducing inbox clutter.
Original PR description
When an employee submits an expense and assigns a manager, an approval activity is scheduled. However, email notifications are now disabled to avoid spamming the assigned managers. * Prevent notifying the expense manager when expense state changes. * Email 'Next expense is waiting your approval' is scheduled to be sent to the manager once a week if the manager has any expenses left to approve. task-4676396 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244995 Forward-Port-Of: odoo/odoo#210614
This update ensures that administrator users retain their default rating options within courses, preventing accidental changes made by other users. The change avoids duplicated fixes and streamlines the portal_rating module, improving stability and reducing potential conflicts. This protects the integrity of course ratings for administrators.
Original PR description
*: website_slides The default values for the admin user should not be changed by editing or deleting others' messages in courses. task-5326273 Forward-Port-Of: odoo/odoo#244782 Forward-Port-Of: odoo/odoo#236475
This update resolves a visual glitch on mobile websites where a horizontal scrollbar briefly appeared when the header returned to its original position after scrolling. The fix ensures the header's styling is correctly synchronized, preventing this momentary display issue. This improves the overall user experience, particularly on RTL websites.
Original PR description
There was an horizontal scrollbar that would appear for a short time after scrolling back to the top of the page. This would occur because the header would still have the "transform" property but the class "o_header_affixed" was already removed. To fix the issue, the header transform is now applied using dynamicContent, to synchronize the style and class correctly. This requires the standard header to have "transition: none" applied after it is scrolled since "translate(0, -100%)" would trigger an animation when hiding the header. task-5155878 Forward-Port-Of: odoo/odoo#241980
This update adds a 'View' button to the package history list, allowing users to directly access the details of each package created during a receiving process. Previously, users couldn't easily open the package records from this list, which has now been corrected to align with the data structure. This improves tracking and management of stock packages.
Original PR description
Steps to reproduce: - Enable packages - Do a reception with a product and put it in a pack - Open the 'Packages' stat button - View button is at the end of every line, to open the package - Go back to the picking and validate it - Open the 'Packages' stat button again Issue: There isn't any 'View' button, so we can't open the package records from here. It was done somewhat on purpose, as it's a list of `stock.package.history` and not `stock.package`, so we wouldn't open the right record. But we can simply add a button that opens the linked package instead. opw-5436847 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix resolves an issue where mentioning portal users from different companies within Odoo caused an access error. The problem stemmed from how user read access was determined based on the currently active company. The update corrects a data storage issue that was triggering this error, ensuring portal users can be mentioned regardless of the company context.
Original PR description
* = test_discuss_full Before this commit, mentioning a portal user from another company would result in an access error. Steps to reproduce: 1. Install `hr_holidays` module. 2 Have a portal user in company A. 3. Switch the active company to company B. 4. In any chatter, try to mention said portal user. This happens because portal user read access depends on the current active company (see `res_users_rule`). The access error happens since [1], which added user information to the partner's default Store fields. [1] https://github.com/odoo/odoo/pull/212173 task-5499827
This fix ensures the sitemap generated for eCommerce categories accurately reflects only active products. Previously, it incorrectly included archived products, leading to inaccurate sitemap listings. The update adjusts the access rules to prioritize public categories with active products, resolving this issue.
Original PR description
To reproduce:
- Connect as "admin"
- Go to "Website / eCommerce / Products / eCommerce Category"
- Create a new category "Test With Archived Products"
- Go to "Website / eCommerce / Products"
- Create a product:
- name it "Test Archived"
- in "Sales" tab, under "eCommerce Shop" section, set category to:
"Test With Archived Products"
- then archive the product
- Clear the sitemap attachment and go to /sitemap.xml
The sitemap has an entry for "Test With Archived Products" but it should should not be visible as there are only archived products for that category.
Since odoo/odoo@d3fd767b0568, access rules domain are always optimized with `active_test=False`, so ensure we only return public category that have active products.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves a technical issue that could cause Odoo upgrades to fail when using manual one2many fields. Specifically, it addresses a 'KeyError' that occurred during the upgrade process when certain inverse fields weren't properly configured. This change ensures smoother and more reliable Odoo upgrades, particularly for customizations using manual one2many relationships.
Original PR description
When ``setup`` a manual one2many field, if its ``inverse_name`` field hasn't been ``setup`` and is also a manual field which might be ``pop`` when ``setup``, the one2many field can be ``setup`` successfully. But when computing ``setup_inverses`` when ``init_models``, the ``inverse_name`` will cause a ``KeyError``. ``invf = registry[self.comodel_name]._fields[self.inverse_name]`` Reproduce: see https://github.com/odoo/odoo/pull/240085 This commit simply checks the ``setup`` for the inverse field of the one2many field. 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 multiple 'Applicant created' messages were appearing in the applicant's chatter log when a new applicant was created. The fix ensures that the log entry is only created once, improving the clarity and accuracy of applicant communication within the system. This prevents confusion and streamlines the recruitment process.
Original PR description
Steps to reproduce: 1. Create a new applicant in recruitment. 2. Open the applicant’s chatter. 3. See multiple “Applicant created” messages for the same creation. Bug cause: The applicant creation flow posts the `mt_applicant_new` subtype more than once (create + extra write/track), and the frontend renders the subtype description, so each duplicate post shows “Applicant created” again. Solution: - Post the `mt_applicant_new` subtype only once during applicant creation. - Avoid re-posting it in subsequent writes/tracking so chatter shows a single creation log. Task Id: 5454691
This update corrects a display issue in the applicant recruitment reports module. Incorrect stage names were appearing in chatter messages, preventing users from seeing the 'Stage changed' label. The fix ensures accurate stage name display and proper tracking of applicant stage transitions.
Original PR description
…records in hr_recruitment_reports demo data Steps to reproduce: 1. Load demo data for hr_recruitment_reports module 2. Check applicant records in chatter 3. Observe that stage change messages don't…
…records in hr_recruitment_reports demo data Steps to reproduce: 1. Load demo data for hr_recruitment_reports module 2. Check applicant records in chatter 3. Observe that stage change messages don't show "Stage changed" label 4. Review mail.tracking.value records for applicant stage changes 5. Observe incorrect stage name "Initial Qualification" instead of "Qualification" Bug cause: mail.message records for applicant stage changes were missing the subtype_id field, which defaults to an incorrect subtype (mt_note instead of mt_applicant_stage_changed). This caused the messages to be treated as internal notes rather than stage change notifications. Additionally, mail.tracking.value records used "Initial Qualification" as the old_value_char or new_value_char, which doesn't match the actual stage name defined in hr_recruitment module. The correct stage name is simply "Qualification" (ref: hr_recruitment.stage_job1). Solution: - Add subtype_id field with reference to hr_recruitment.mt_applicant_stage_changed to all mail.message records that track applicant stage transitions - This ensures stage change events are properly identified and displayed in chatter with the correct "Stage changed" label - Update old_value_char and new_value_char fields in mail.tracking.value records to use the correct stage name "Qualification" instead of "Initial Qualification" - Ensures consistency with actual stage names and proper display in applicant chatter history Affected records: 20 mail.message records in hr_recruitment_reports_demo.xml Task Id:5454691
This update resolves an issue where creating two companies with Sri Lankan settings resulted in a company inconsistency error. The problem stemmed from a duplicate tax ID format (using periods) in the system's tax configuration file. Removing the periods ensures correct company identification and prevents this error.
Original PR description
**STEP TO REPRODUCE** 1. create a company, and set country to Sri Lanka. 2. create a 2nd company, and do the same. 3. There is a company inconsistencies error. **CAUSE** There is 2 taxes defined in `account.tax-lk.csv` with `.` in their id. This messes up with the function `company_xmlid()`: we end up loading the `account.tax` record of the 1st company when saving the 2nd company. opw-5473952
This update addresses a potential issue where quality checks wouldn't display a helpful message if no IoT device was connected. Now, a notification appears, guiding users to configure a device and ensuring a smoother quality check process. This improves user experience and prevents confusion.
Original PR description
We now display a notification when no device is configured for a measure quality check. opw-5409775
This update automatically updates the IoT box's database when a new version is released. Previously, manual restarts were required, which was inconvenient. Now, the IoT box checks for changes and restarts itself to ensure it's always running the latest database version, improving stability and efficiency.
Original PR description
Before this commit, when the DB was upgraded to a new version, the IoT box had to be manually restarted so that it would checkout and align with the new version. After this commit, we check the DB branch whenever we receive a `bundle_changed` message on the websocket. If it has changed then the IoT will restart and checkout the new version. task-5463520 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242284 Forward-Port-Of: odoo/odoo#242195
This update resolves a technical issue that prevented the system from accurately calculating the number of documents associated with a partner during the upgrade process. The fix ensures that the system correctly identifies a single partner record, preventing a ValueError and ensuring accurate document counts.
Original PR description
When trying to compute the document count during the upgrade, we encountered a ValueError because multiple records were found for a partner. The system expected a singleton ``` File…
When trying to compute the document count
during the upgrade, we encountered a ValueError
because multiple records were found for a partner. The system expected a singleton
```
File "/home/odoo/src/enterprise/19.0/documents_hr/models/hr_employee.py", line 34, in _compute_document_count
('partner_id', '=', self.work_contact_id.id)
File "/home/odoo/src/odoo/19.0/odoo/orm/fields_misc.py", line 112, in __get__
raise ValueError("Expected singleton: %s" % record)
ValueError: Expected singleton: res.partner(11393, 11612, 13026, 13085, 13066, 11674, 13007, 11240, 11420, 13086, 2687, 8998, 10309, 8195, 8468, 6439, 8151, 6580, 7928, 10301, 11058, 10515, 5274, 9243, 8141, 8435, 8889, 7761, 7733, 8443, 8545, 9252, 8457, 9980, 5495, 11424, 6458, 10558, 11070, 8924, 11731, 11528, 11615, 11766, 13021, 13080, 11758, 11742, 9306, 8826, 11004, 9393, 8879, 9317, 11652, 13075, 11744, 11160, 11644, 11763, 11416, 11618, 11732, 7931, 3846, 8442, 10299, 7916, 8429, 8057, 11061, 9342, 6435, 6553, 6512)
```This update corrects a technical issue where order documents weren't being properly updated in the Mexican tax reporting system (l10n_mx_edi). By forcing a write-date update, the system now reliably identifies and processes documents for accurate reporting. This resolves a previous limitation in the update process.
Original PR description
Before the commit 8b118a7, the search of the documents to update has been limited and ordered. With the actual domain the records to update will be most of the time the same because is not being updated. To fix this issue we force to update it. OPW-5368047 Forward-Port-Of: odoo/enterprise#103272
This update fixes an issue where the floating order name displayed during direct sales in the restaurant POS was incorrectly showing the POS reference instead of the tracking number. Now, the order name accurately reflects the tracking number, ensuring accurate order identification and tracking for customers. This improves the overall customer experience and operational efficiency.
Original PR description
Before this commit, when making a direct sale, the floating order name was the pos reference instead of the tracking number. This is now fixed. task-id: 5470874 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242359
This update resolves an issue where 'Website: Editor and Designer' users couldn't save Unsplash images after editing website content. The fix ensures the user creating the attachment has the necessary permissions, preventing security warnings and saving functionality failures. This improves the usability of the website editor for all user roles.
Original PR description
Scenario: - Setup Unsplash and install website - Set a user as "Website: Editor and Designer" - Login as that user and go to any website page with a qweb view - Go to edit mode and drop Text-Image in…
Scenario: - Setup Unsplash and install website - Set a user as "Website: Editor and Designer" - Login as that user and go to any website page with a qweb view - Go to edit mode and drop Text-Image in a view - Replace the image with an unsplash image and then save Result: the save fails without any message shown, and there is a security access WARNING in the logs. Note: a similar scenario can be done for a restricted editor that is editing a HTML field it has write access to. Issue: to save a model with res_id 0, we need to either be admin (base.group_system) or the record creator. Since 9c9c58a5a10101532cbf046d21d4a63c2b7d2838 to bypass the mimetype neutering of happening, we create the attachment as SUPERUSER. Then when we modify the attachment url (for unsplash images), we have no access right to the attachment since we are not the creator. Fix: create the attachment with the current user, and only use SUPERUSER to set the mimetype if it was neutered (ie. the user doesn't have write access right to ir.ui.view, which in normal use case should only happen for "Restricted Editor"). This way the image is created by the user that uploaded it and not SUPERUSER. opw-4850611 opw-5387258 opw-5489219 Forward-Port-Of: odoo/odoo#245085 Forward-Port-Of: odoo/odoo#219472
This update resolves an issue where the website tour test would fail after changing the header template to 'Sidebar'. The fix ensures the WebsiteBuilder component fully remounts before the tour continues, preventing it from resetting to the initial edit state. This improves the reliability of our website test suite.
Original PR description
When changing the header template to 'Sidebar', the loading screen disappears but the WebsiteBuilder component remounts asynchronously. If the tour proceeds to the theme tab before the remount completes, the builder resets to the Edit tab (its initial state), breaking the test flow. We wait for the builder to remount, and add `.editor_enable` class to the body of the iframe, so then nothing disrupts the flow. runbot-234504 Forward-Port-Of: odoo/odoo#243518
This update resolves an issue where users would encounter errors when uploading corrupted or encrypted PDF files for quotation document headers and footers. The fix ensures the system gracefully handles unreadable PDFs, preventing disruptions to the sales process. This improves the reliability of quote generation.
Original PR description
Currently, an error occurs when uploading `encrypted or incomplete` PDF files (missing EOF marker) while creating a quotation document header or footer. **Steps to reproduce:** - Install the…
Currently, an error occurs when uploading `encrypted or incomplete` PDF files (missing EOF marker) while creating a quotation document header or footer. **Steps to reproduce:** - Install the `sale_pdf_quote_builder` module. - Navigate to: Sales > Configuration > Headers/Footers. - Upload encrypted file [1], or incomplete file [2]. **Error:** `PyPDF2.errors.DependencyError: PyCryptodome is required for AES algorithm` `PyPDF2.errors.PdfReadError: EOF marker not found` **Root cause:** At [3], `_get_form_fields_from_pdf` and `_ensure_document_not_encrypted` directly call `pdf.PdfFileReader`, when it fails to read or decrypt the file, Python raises an error. **Fix:** This commit prevents errors when users upload unreadable or encrypted PDF files. [1]: https://drive.google.com/file/d/1moSlwXHkqcV6_7zHBNhLMLi-9Ye_xDGJ/view?usp=sharing [2]: https://drive.google.com/file/d/16O4LLH8dL0RWmbOx4HrcooFUyesWaVi-/view?usp=sharing [3]: https://github.com/odoo/odoo/blob/694f1d0fb03b56dd41a59eb676e56622634cc91b/addons/sale_pdf_quote_builder/utils.py#L11 sentry-6928220164 opw-5227601 Forward-Port-Of: odoo/odoo#245167 Forward-Port-Of: odoo/odoo#230712
This update corrects a bug where the inventory count badge in the Barcode app incorrectly displayed requests from one company, even when no count existed for another. Now, the badge accurately reflects the inventory count for the company currently being viewed, ensuring data consistency and reliable reporting.
Original PR description
Steps to reproduce: - Create two companies (A and B) - Create a storable product "P1" - Log in with company A - Update the on-hand quantity of P1 in company A only - From Physical Inventory, request an inventory count for P1 - Switch to company B - Open the Barcode application Problem: The inventory count badge in the Barcode main menu displays a request count created for company A, even though no inventory count exists for company B. The badge incorrectly shows "1" instead of "0". opw-[5472031](https://www.odoo.com/web#id=5472031&view_type=form&model=project.task)
This update fixes an issue where VAT import taxes were incorrectly mapping to accounts in the Odoo system. The change in account 33312 has been addressed by updating the default account used for importing VAT taxes on purchase invoices. This ensures accurate financial reporting.
Original PR description
Due to the change of account 33312 from liability to payable, the journal entries generated when creating bills with VAT import taxes were incorrect. This fix updates the default account on the following taxes: - tax_purchase_import_10 - tax_purchase_import_8 - tax_purchase_import_5 task-5695253 Forward-Port-Of: odoo/odoo#244919 Forward-Port-Of: odoo/odoo#244434
This update corrects a technical error where a function was incorrectly called in the payroll module. The fix involves creating a new function in the documents module that correctly calls the necessary function, ensuring proper document generation within the payroll system. This resolves a potential issue impacting payroll document accuracy.
Original PR description
Issue: `_check_create_documents` is called in 'hr_payroll' but only defined in 'documents_hr_payroll' Solution: Create a new method that will be redefined in 'documents_hr_payroll' to call `_check_create_documents` opw-5213979 Forward-Port-Of: odoo/enterprise#105099 Forward-Port-Of: odoo/enterprise#104282
This update fixes a display issue in the appointment calendar for Ukrainian and Polish users. Previously, month names were shown in the genitive case, which is grammatically incorrect. The change ensures month names are displayed in the nominative case, aligning with standard calendar conventions.
Original PR description
In the appointment calendar, the "Month Year" (e.g. January 2026) is displayed at the top of the calendar selector as is standard for calendars. Unfortunately in some languages, the word month word…
In the appointment calendar, the "Month Year" (e.g. January 2026) is displayed at the top of the calendar selector as is standard for calendars. Unfortunately in some languages, the word month word used depends on grammatical situation. Steps to reproduce: - activate Ukrainian (or Polish) language - Preview (i.e. the website view) of any appointment - Change the preview into Ukrainian (or Polish) Expected result: Calendar month at top of calendar is shown in the nominative case: e.g. January 2026 = січень 2026 (in Ukrainian) Actual result: Calendar month is shown in the genitive case (e.g. "of January", as in "the 12th of January): e.g. January 2026 = січня 2026 (in Ukrainian) Fix is to switch from the "MMMM Y" format (i.e. month based on grammar context) to "LLLL Y" (i.e. stand alone month) which will use the correct month case. Ref: https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-month Note that for most languages this won't make a difference since there is usually only 1 way of writing a month. opw-5474705 picture diff (for January 2026): before fix: <img width="1168" height="468" alt="image" src="https://github.com/user-attachments/assets/36754439-e664-40f3-9c5b-7c9c76cd7cca" /> after fix: <img width="1215" height="492" alt="image" src="https://github.com/user-attachments/assets/82f0665e-fe70-4b9f-b1d4-f420b52db38f" /> Forward-Port-Of: odoo/enterprise#104942
This update aligns a key icon used in the Odoo Enterprise software with established design guidelines. The change ensures a more consistent and professional look and feel, reflecting updated branding standards. This improves the overall user experience.
Original PR description
This `network_light.svg` wasn't quite aligned with Milky picto's design guidelines. In this PR the pictogram has been tweaked in order for it to follow the guidelines. task-5126719 Forward-Port-Of: odoo/enterprise#104356 Forward-Port-Of: odoo/enterprise#95895
This update prevents the OCR from automatically updating a user's address information when processing QR-bills. Previously, the system would overwrite existing partner details, leading to confusion and incorrect data. This change ensures that address information is only populated if the QR-bill was the source of the data, improving data accuracy and user experience.
Original PR description
When the OCR detects that the document is a QR-bill, it will always overwrite the address information from the partner currently set on the record. We shouldn't do that if the partner wasn't created by the OCR. In the following scenario, it's pretty obvious why it is a bad idea: - User receives his QR-bills on his personnal email address. - He forwards it to the email alias set up for vendor bills. - A vendor bill is created with himself set as the supplier (already a bit annoying for him) - The OCR automatically analyses the document and updates the user's record with the address found in the QR-bill (really annoying). The same issue can arise if the user manually sets a supplier before sending the QR-bill for digitization. task-none
This update resolves an issue where rounding errors in currency calculations were causing the system to incorrectly remove small cash differences from reports. The fix ensures that even minor discrepancies, resulting from rounding, are accurately identified and reported, leading to more reliable cash reconciliation. This improves the accuracy of our sales reporting.
Original PR description
Before this commit, when calculating the cash difference in the report, the code did not account for currency rounding. This could lead to situations where a very small cash difference, due to rounding errors, was not recognized as zero, resulting in the unintended removal of cash moves. opw-5489958 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#245251
This update addresses a technical issue preventing Odoo from correctly importing a necessary library. The problem stemmed from a recent change in the Requests library itself, which removed a specific exception. By installing a compatible version of Requests and importing the exception correctly, this fix ensures Odoo continues to function without errors.
Original PR description
Installing `requests==2.25.1` and using the following line of code:
from requests.exceptions import JSONDecodeError
It raises the following error:
ImportError: cannot import name 'JSONDecodeError' from 'requests.exceptions' (python3.10/site-packages/requests/exceptions.py)
It was removed from the following commit in the `requests` package:
https://github.com/psf/requests/commit/db575eeedcfdb03bf31285afd3033e301df8b685
This change fixes this error importing the original exception from `json` package
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#245075This update corrects a bug where toggling image captions caused layout disruptions, particularly when images were placed within tables or other non-paragraph containers. The fix ensures images remain within their original structure, maintaining a consistent and professional look for Odoo records.
Original PR description
Description of the issue this PR addresses: - When toggling an image caption, the logic only checks whether the image or figure’s closest block is editable. This causes images inside non-paragraph containers (such as table cells, list items, blockquotes, and columns) to be repositioned, breaking the original layout. Desired behavior after PR is merged: - Image caption toggling correctly handles paragraph-related containers, ensuring the image remains within its original structural context (tables, lists, blockquotes, columns) without altering the layout. Steps to Reproduce: - Open a to-do record. - Insert a table. - Add an image inside any table cell. - Toggle the image caption multiple times (3–4 times). task-5485697 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243454
This update corrects a technical issue where internal users without sales permissions would encounter an error when accessing their sales orders through the /my page. The change mirrors a previous fix and ensures a smoother experience for all users within the Odoo system. This improves overall system stability and usability.
Original PR description
Avoid error when internal user (no sale permissions) see Orders at /my Similar to https://github.com/odoo/odoo/commit/5ebab949a06ec338cc28e912317a74bbfb3fe6ac @Tecnativa TT60025 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#245039
This update corrects a technical issue related to how payments are processed in the HR payroll system. The fix ensures that multiple payment moves are handled correctly during registration, improving the reliability of payroll calculations. This change enhances the overall accuracy of financial reporting.
Original PR description
There was an error where we weren't batching when we were selecting several moves at the same time when registering a payment. We fixed that and this test needs to be adapted. Forward-Port-Of: odoo/enterprise#104727
This update fixes an issue where customer display QR codes in the Point of Sale (POS) system were generating incorrect URLs. The change ensures the QR code uses the correct base URL configuration for the POS session, improving the reliability and accuracy of customer information displayed through QR codes.
Original PR description
Steps:
- Install point_of_sale.
- Open a POS session on a mobile device.
- Click on the customer display menu.
Issue:
- The QR code for the customer display contains an invalid URL: undefined/pos_customer_display/${config_id}.
Issue:
- The base URL was being accessed from the POS session, where it is not available.
Fix:
- Retrieve the base URL from the POS configuration instead of the session.
task-5792308This update removes the Sign menu item from Odoo's discuss channels. Previously, this menu was incorrectly displayed, which was confusing for users. This change aligns with the functionality of discuss channels, which are designed for mail threads and don't require the Sign feature.
Original PR description
Currently, the Sign menu item is displayed in discuss channels, which is not making sense. This was due to an incomplete check in the isDisplayed method of the SignRequestCogMenu component. To fix this, we enhance the condition to ensure that the menu item is not displayed when the current model is 'discuss.channel'. Discuss channels inherently support mail threads, but should not have the Sign menu item. task-5494751
This update addresses an issue where light-colored dropdown menus in the Discuss app caused eye strain when using the dark theme. A simple adjustment was made to darken these menus, ensuring a more comfortable viewing experience and improved usability in dark mode. This enhances the overall user experience for users of the Discuss app.
Original PR description
Dropdown menu are quite light in dark theme. Outside of discuss not many UI elements require dropdown. However discuss use them a lot, so this becomes a problem to have light background so often. This commit adds `.bg-view` to all discuss dropdown, which is visually unchanged in white theme but in dark theme this makes it darker so easier to read with less eye strain. Task-5492040 Before / After <img width="961" height="671" alt="Screenshot 2026-01-13 at 17 24 12" src="https://github.com/user-attachments/assets/09ab5f8f-5927-4beb-a814-d77cd61f8a01" /> <img width="957" height="667" alt="Screenshot 2026-01-13 at 17 23 56" src="https://github.com/user-attachments/assets/4ec0ef3b-7af5-4b69-b48e-40c3788eb95e" />
This update resolves an issue where the 'Pending' button in manufacturing orders incorrectly stopped productivity records for all employees involved, instead of just the current one. The fix ensures that only the employee actively working on the operation is impacted when the 'Pending' button is clicked, improving workflow efficiency and accuracy.
Original PR description
Steps to reproduce the bug:
- Create a storable product P1 with the following BoM:
- Create a new operation OP1
- Create a manufacturing order to produce one unit of P1
- Confirm the manufacturing order
- Log in as Mitchel (admin) and start OP1
- Log in as Marc (demo) and also start OP1
- Click on Pending
Problem:
Both “mrp.workcenter.productivity” records are stopped, instead of stopping only the one linked to
The `button_pending` method was stopping productivity records for all employees linked to the work order.
opw-5453752
Forward-Port-Of: odoo/enterprise#105109
Forward-Port-Of: odoo/enterprise#103553This update corrects a potential issue where users could inadvertently add special characters to the company registry field when submitting VAT returns via the Intervat API. The change adds a filter to ensure only numeric values are used, preventing errors and ensuring accurate data transmission to the API. This improves the reliability of VAT return submissions.
Original PR description
When submitting vat return to Intervat API, we are using company_registry, which is a computed field based on VAT. It's VAT - Country code But this field remains editable, so user could change it to add special characters, like dots or country code, but the Intervat API's are expecting only numbers. This commit add a regex to remove all special characters and only keep numbers from company_registry to use it for API calls. task-5500052
This update resolves an issue where users lacking specific access rights within Odoo could not submit VAT declarations through the Intervat module. By adding sudo permissions, the update ensures all users can submit, regardless of their access level, improving the usability and reliability of this important business process.
Original PR description
Add few sudo() for vat declaration, to be sure users without access rights to res.company or certificate.certificate can still make a submission. task-5470492
This update corrects a visual issue where 'Danger' and 'Success' action buttons weren't consistently displayed in the portal message action list. The fix ensures that these buttons appear correctly, regardless of whether they're shown in the dropdown or quick action menu, improving the user experience.
Original PR description
PR #224976 fixes the demonstration of an action with a `DANGER` tag in the dropdown menu in the action list. Such an action may not be located in the dropdown, but rather in the quick action menu. This change ensures that the action buttons with `DANGER` or `SUCCESS` tags are demonstrated properly in either case. Steps to reproduce: - Open a document in the portal as a portal user. - Send a message and hover over the message. - The `delete` button is not visible in the action list.
A bug was causing the 'this device' option in the Point of Sale customer display to unexpectedly close and open the POS session in a new tab. This has been fixed by correcting how the URL is generated, resolving an issue with incorrect URL formation and a missing base URL.
Original PR description
Step to reproduce: - start pos - from top-right menu, click on display icon - a dialog will appear, click on "this device" button Observation: - current session will be closed and open in new tab Cause: - Incorrect url formed for redirection which, as a fallback loads currrent pos - base url is `undefined`, as we try to get it from `pos.session`, which now is attribute of `pos.config`. https://github.com/odoo/odoo/blob/06ddce00115c906a4d8396387dd3332482145d7f/addons/point_of_sale/models/pos_config.py#L288 opw-5502812 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a potential infinite loop issue that could occur when generating combinations of product attributes, specifically with multi-checkbox attributes. The fix ensures that lines without attribute values are excluded, preventing redundant calculations and maintaining system stability. This change improves the reliability of product configuration processes.
Original PR description
Before this commit, having a `product.template.attribute.line` with zero `product.template.attribute.value` records might cause an infinite loop if this **multi-checkbox** attribute wasn't in the end…
Before this commit, having a `product.template.attribute.line` with zero `product.template.attribute.value` records might cause an infinite loop if this **multi-checkbox** attribute wasn't in the end of the list.
Suppose the order was arbitrary and we are generating combinations for two lines (the order here is important):
- Line (A) -> [] (multi checkbox type)
- Line (B) -> [attr_1, attr_2]
- The possible combinations are {(attr_1), (attr_2)}.
After generating the second combination the following 2 procedures happen.
- The value_index_per_line[1] will be resetted to -1,
- The line_index will decrement from 1 to 0.
Now, since the first line doesn't have any values, it will be skipped and the line_index will be incremented to 1.
This results in the redundant generation of the same combination, triggering an infinite loop.
Since this method yields a recordset of `product.template.attribute.value` model and the **multi-checkbox** attribute doesn't have a value being passed to the method anyways, we can exclude the lines that doesn't have values for the algorthim not to be stuck in an infinite loop.
opw-5267179
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241557This update resolves an issue where the l10n_cl_edi module was incorrectly creating duplicate vendor bills when receiving identical XML invoices via the incoming mail server. The fix prevents duplicate bill creation, ensuring accurate record keeping and avoiding potential accounting discrepancies. This addresses previous bugs opw-5362664 and opw-5409700.
Original PR description
Steps to reproduce: - With a CL Company setup - Configure an incoming mail server with DTE server option enabled - In Vendor Bills journal, enable 'Use Documents?' - Receive the same XML twice via the incoming mail server - Check created vendor bills Issue: There will be duplicated bills. Each duplicate will show the message 'E-invoice already exist: nnnnn' However, the system should avoid duplicates from being created. opw-5362664 opw-5409700 Forward-Port-Of: odoo/enterprise#103211
This update resolves an issue preventing grouping within the planning module's slot templates. The fix ensures that parameters are passed to the underlying method in the correct order, enabling proper data aggregation. This improves the functionality of the planning system.
Original PR description
Before this commit, it was impossible to group by on any field in `planning.slot.template` model, because the parameters given to the parent method of `formatted_read_group` method were not given into the right order. This commit makes sure the order is respected. Forward-Port-Of: odoo/enterprise#105211
This update removes a previous restriction that limited the use of journal accounts for reconciliation. Previously, certain accounts couldn't be used if they were designated as default debit or credit accounts within a journal. This change provides greater flexibility for accounting processes and simplifies account management.
Original PR description
Previously, a constraint prevented accounts from being non-reconcilable if they were used as default debit/credit accounts involved in journals. This behavior is too restrictive. This commit removes the constraint. task-5254202 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244398
This update fixes a potential issue with how payroll reports are generated in Switzerland. Specifically, it ensures that a snapshot is only created if one doesn't already exist, streamlining the process and preventing unnecessary data duplication. This improves the efficiency of report generation and reduces potential processing delays.
Original PR description
Forward-Port-Of: odoo/enterprise#105258 Forward-Port-Of: odoo/enterprise#105135