Daily updates from Odoo
Tuesday, December 23, 2025
9 changes · master
Resolved issues and error corrections
This update significantly speeds up spreadsheet loading times by optimizing how the system determines the latest version. Previously, the system relied on a slow snapshot process, but now it efficiently checks all revisions, reducing server load and improving user experience. This change impacts the performance of our spreadsheet functionality.
Original PR description
Commit 8f3e242e197b2f26982749 added an Etag to reduce the load on the network when loading a spreadsheet. Now, this commit ensures the Etag is computed as fast as possible to also reduce the load on…
Commit 8f3e242e197b2f26982749 added an Etag to reduce the load on the network when loading a spreadsheet. Now, this commit ensures the Etag is computed as fast as possible to also reduce the load on the server. The Etag is based on the latest revision (field `current_revision_uuid`). When computing `current_revision_uuid`, we look at the lastest revisions. However, the current code only look at *active* revisions, and fallback on the snapshot. The snapshot is a json file (potentially large) that needs be parsed. This is not fast. To make it worse: spreadsheets are snapshotted as often as it can be, which means we almost always fall in the slow path when computing the Etag. With this commit, we consider all revisions (active or not). We also load in memory only the latest instead of fetching multiple revisions for each spreadsheet (the work is done by postgres through `_read_group`) On a spreadsheet with a snapshot of 9.8MB, server time `"GET /spreadsheet/data/documents.document/17 HTTP/1.1" 304` before: ~310ms after: ~5ms Task-5431940 Forward-Port-Of: odoo/enterprise#102556
This update fixes an issue where batch picking lines were incorrectly linked to the wrong internal transfer, leading to inaccurate inventory counts. The fix ensures that each picking receives the correct quantity of products, resolving a discrepancy in delivered stock. This improves the reliability of batch transfer operations.
Original PR description
**Steps to reproduce:** - enable "packages" and "batch transfers" settings - open wharehouse management/operation type - select internal transfer - check "automatic batch" and group by "contact" -…
**Steps to reproduce:** - enable "packages" and "batch transfers" settings - open wharehouse management/operation type - select internal transfer - check "automatic batch" and group by "contact" - create two storable product with an on hand quantity of 10 - create a an internal transfer for the first product for a qty of 10 - mark it as to do - do the same for the second product and make sure that it's the same contact - open barcode and select batches - select the last batch created - scan WH-STOCK - enter and confirm a quantity of 4 for each line - click on put in pack (at this step we can already see that the two new lines created are associated wit the second picking, even though it should be one line per picking) - click on the +6 on each line and click on put in pack - validate **Current behavior:** - a back order has been created for the first picking - the first internal transfer has only delivered 4 units of the first product - the second internal transfer has delivered 10 of the second product and 5 of the first product **Expected behavior:** both pickings should have delivered 10 of their product **Cause of the issue:** The lines created when clicking on "put in pack" for the first time are both associated with the second picking because the line split: https://github.com/odoo/enterprise/blob/898e3e47cfe3b86230da2b146960983d7ad144d0/stock_barcode/static/src/models/barcode_picking_model.js#L514 and the picking_id of the new line is set to the values provided by the `_getNewLineDefaultValues` as the picking_id of the last selected `line`: https://github.com/odoo/enterprise/blob/24b4e49dbe16cb8bd40170abfc089dd64c3f34dd/stock_barcode_picking_batch/static/src/models/barcode_picking_batch_model.js#L280-L281 rather than from the values of the initial line it is split from. opw-4952964 Forward-Port-Of: odoo/enterprise#102575 Forward-Port-Of: odoo/enterprise#91378
This update fixes a misleading error message displayed when deleting sale orders linked to appointments. Previously, users received an incorrect instruction to reduce order quantities. Now, the system correctly informs users they must cancel the order before deletion, ensuring a smoother and more accurate user experience. This prevents confusion and potential data issues.
Original PR description
Problem: When the module is installed and there are bookings with answers linked to sale orders, the order lines are deleted before the order, causing the wrong error message to be displayed.…
Problem: When the module is installed and there are bookings with answers linked to sale orders, the order lines are deleted before the order, causing the wrong error message to be displayed. Solution: The order lines should not be manually unlinked from the sale order. It should be the bookings linked to the order lines that should be unlinked before the sale order deletion. Expected Behavior: When deleting a sale order whose lines have bookings, the following error message shoud be displayed: "You can not delete a sent quotation or a confirmed sales order. You must first cancel it." Current Behavior: When deleting a sale order whose lines have bookings, the following error message is displayed: "Once a sales order is confirmed, you can't remove one of its lines (we need to track if something gets invoiced or delivered). Set the quantity to 0 instead." Steps to reproduce on Runbot: 1. Install Appointments and ecommerce 2. For the dental care appointment, edit and enable "Up-front payment" 3. On the website, book an appointment for dental care and proceed to payment 4. Delete the sale order with the booking 5. Observe the incorrect error message being displayed opw-5092349 Forward-Port-Of: odoo/enterprise#100371
This update fixes an issue with how the AI agent processes dates, ensuring more accurate and reliable scheduling and task assignment. The changes improve the overall performance and consistency of the AI agent's date calculations, leading to better automation and scheduling capabilities. This primarily impacts the AI module.
This update addresses critical issues related to credit note generation for KRA (Kenya Revenue Authority) compliance. Specifically, the system now prevents credit notes with mismatched customer PINs and ensures credit notes are not dated before the original invoice, ensuring accurate reporting and avoiding potential penalties.
Original PR description
* Prevent credit note with customer PIN different than the submitted invoice. * Prevent credit note to be dated before the original invoice date. task-5160113 Forward-Port-Of: odoo/enterprise#102475 Forward-Port-Of: odoo/enterprise#100480
A crash occurred when users attempted to validate signatures due to a missing field in the system. This update resolves the issue by introducing a bridge module to ensure the necessary data is available, allowing users to successfully complete the signature process. This improves the stability and usability of the Documents & HR module.
Original PR description
The system will crash with error when user tries to validate the signature. **Steps to produce: -** - Install `Sign, Employees, and Documents` apps with demo data. - Go to Apps and `uninstall` the…
The system will crash with error when user tries to validate the signature.
**Steps to produce: -**
- Install `Sign, Employees, and Documents` apps with demo data.
- Go to Apps and `uninstall` the `hr_sign` module.
- Send any employee a sign request for a document.
- When the employee tries to validate and send the document, the error appears.
**Error: -**
```
KeyError: 'sign_request_ids'
ValueError: Invalid field hr.employee.sign_request_ids in condition ('sign_request_ids', 'in', [1])
```
**Root cause: -**
- When `sign` route is called then at [1], then we try to search field `sign_request_ids` in `hr_employee`. but at [2], we can see the field `sign_request_ids` is defined in `hr_sign` module.
- And user removed the `hr_sign` module, so the field is no more exist in `hr_employee` model.
**Solution: -**
- Added new bridge module for `documents_hr` and `hr_sign`.
[1]
https://github.com/odoo/enterprise/blob/ec83cfc1ac4f0be9eacba4b7e9a41438050b8950/documents_hr/controllers/main.py#L20-L21
[2]
https://github.com/odoo/enterprise/blob/ec83cfc1ac4f0be9eacba4b7e9a41438050b8950/hr_sign/models/hr_employee.py#L9-L10
**sentry-6819182542**This update corrects a previous issue where the 'Edit Payment' button was incorrectly visible in the AT and FR POS localizations, potentially violating fiscal regulations. Now, the button is only displayed when the company isn't using FON Authentication, ensuring compliance and accurate order processing. This change improves data integrity and reduces the risk of non-compliant transactions.
Original PR description
Before this commit: =================== - On the Payment Screen, the `Edit Payment` button was visible in the `l10n_fr_pos_cert` and `l10n_at_pos` localizations. - This was incorrect because fiscal compliance in these countries does not allow altering order details at this stage. - The visibility logic for this button was unintentionally modified in `pos_hr`. After this commit: ================== The visibility of the `Edit Payment` button is now correctly enforced: - `point_of_sale`: visible only until the receipt is printed. - `pos_hr`: visible only when the logged-in user is an admin (except in AT and FR localization). - `l10n_fr_pos_cert`: never visible. - `l10n_at_pos`: visible only when the company is `not FON Authenticated`. Task: 5384822 Related Community PR: https://github.com/odoo/odoo/pull/238839 Forward-Port-Of: odoo/enterprise#102698 Forward-Port-Of: odoo/enterprise#101460
This update fixes a readability issue in the manufacturing order barcode view when using dark mode. By adjusting colors and removing a distracting style element, the finished product information is now much clearer, ensuring accurate data capture and reducing potential errors. This improves the user experience for all users.
Original PR description
*: stock_barcode Before this commit: ======================= When accessing a manufacturing order via Barcode in `dark mode`, the producing bar of the finished product is difficult to read due to…
*: stock_barcode Before this commit: ======================= When accessing a manufacturing order via Barcode in `dark mode`, the producing bar of the finished product is difficult to read due to poor colour contrast. Steps to reproduce: ======================= 1. Install the `mrp` module. 2. Switch to dark mode. 3. Open any manufacturing order using Barcode. 4. Observe the producing bar for the finished product. - The text on the producing bar is hard to read because the colour of text does not provide sufficient contrast. - Additionally, for products tracked by `lot or serial number`, when the same product is added multiple times, the barcode view groups these entries into a single grouped line, causing the same visibility issue in both MO and normal `picking/transfer` operations. Cause of the Issue: ======================= In dark mode, both the text and background colour of the producing bar are light, resulting in low colour contrast and making the text difficult to read. Additionally, the `text-muted` class applied to the `units of measure (UoM)` further reduces readability. After this commit: ======================= Updated the text colour of producing bar and background colour of grouped lines to use a darker shade for better visibility in dark mode. Also, removed the `text-muted` class used on `UOM` to improve redability. TaskID-5117608 Forward-Port-Of: odoo/enterprise#96718
This update corrects a bug in the Aged Receivable report that was misreporting amounts related to analytic accounts. The fix ensures that amounts are correctly associated with the originating invoice line, improving the accuracy of financial reporting. This resolves an issue where analytic account data was incorrectly placed on other transactions.
Original PR description
Steps to reproduce: - Activate analytic accounting - Create an invoice with one line, and set an analytic account - Set also the analytic account on the receivable line - Open the Aged Receivable - Activate debug mode, go to the configuration settings of the report - Activate the analytic groupby filter and go back to the report - unfold the partner of the invoice and select the filter with the analytic groupby -> The amount related to the analytic line is wrongly placed on another move, or possibly missing. This is due to the fact that the id used is the one of the analytic account instead of the move line. Forward-Port-Of: odoo/enterprise#102535