Daily updates from Odoo
Monday, December 1, 2025
22 changes · 19.0
New functionality added to Odoo
This update introduces a new module, l10n_jo_edi_pos, to facilitate the generation and synchronization of electronic receipts with the JoFotara portal in Jordan. This ensures compliance with local tax regulations and streamlines the receipt management process for businesses operating in Jordan.
Original PR description
This commit add a new module to sync receipts with JoFotara portal. task-4213323 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Enhancements to existing features
This update enhances the emails sent for equity transactions and UBO form requests, making them more professional and user-friendly. Specifically, the email design has been modernized, and the ability to send to both subscriber and seller parties has been added for greater flexibility. This improves communication and streamlines processes related to equity management.
Original PR description
This commit improves the emails sent for equity notice and UBO form request. The following improvements are applied: 1. Make the equity/UBO button fixed at the top of the email without being editable for the user (to not mess up the token) 2. Make the rendered email look more odooish (used mail_notification_light) 3. Allow for sending to subscriber and seller at the same time in an equity transaction task-5123366
This update improves the equity tracking application by refining the email sending wizard. The changes include new unit tests for UBO records, UI/UX enhancements for a better user experience, and fixes for previously identified issues. This results in more reliable and user-friendly equity valuation communication.
This update automatically notifies users when invoices are canceled due to DGI rejections, ensuring someone is responsible for correcting and reissuing them. It also addresses a previous inconsistency where rejected invoices could unexpectedly change state, now allowing users to manually update the DGI status and maintain accurate invoice records.
Original PR description
Added 3 improvements to the process of updating the state of an invoice in Odoo, according to the state in DGI: **For invoices that have been rejected by DGI:** - Added logic to automatically notify…
Added 3 improvements to the process of updating the state of an invoice in Odoo, according to the state in DGI: **For invoices that have been rejected by DGI:** - Added logic to automatically notify relevant users when an electronic invoice (CFE) is rejected by the DGI and, as a result, canceled in the system. The goal is to ensure that there is always someone responsible who is informed to correct and resend the receipt. - Added logs in the terminal to make the debug easier in case we want to identify rejected invoices. **Particular case of an invoice that had been rejected by DGI but the user somehow fixes it and then DGI accepts it:** - Added logic to verify both DGI state and Invoice state and adjust it accordingly when updating invoice DGI status. - Make 'Update DGI status' button always visible to be able to adjust invoices states. **== Context of the Problem ==** Previously, when Odoo detected that a CFE had been rejected by the DGI, the system proceeded to cancel the invoice automatically. However, this process was carried out silently, without generating any notification. This could mean that if no user or salesperson was actively monitoring the status of the receipts, the cancellation would go unnoticed, resulting in invoices that were never corrected or reissued. For the case of a previously rejected and then accepted invoice, we always thought that 'Rejected' state in DGI was a definite state and could not suffer any change. But recently it has been a case that this state changed, creating inconsistencies in Odoo invoices states as they appear as cancelled. With these changes, the user can adjust the invoices state by clicking 'Update DGI status' button. **== Automatic Notification Logic ==** With the new functionality, every time an invoice is automatically canceled due to a DGI rejection, the system posts a message in the document chatter to report the situation. The logic for determining who is notified is as follows: _Scenario 1: Invoice with Internal Followers_ - If the canceled invoice has at least one internal follower (an Odoo user), the system will perform the following actions: - It will post a message in the invoice chatter. - It will tag (@) all internal followers to notify them directly. _Scenario 2: Invoice without Internal Followers_ - If the invoice does not have any internal followers, the system will search for a more general but relevant audience to ensure that the notification is addressed: - It will post a message in the invoice chat. - It will tag (@) all users who belong to the “Accounting Manager” permission group (technical name: group_account_manager). Task ODOO: #[1362](https://latam-localizations.odoo.com/web?debug=1#id=1362&cids=1&menu_id=88&action=131&active_id=16&model=project.task&view_type=form) Task ADHOC: #[54799](https://www.adhoc.inc/odoo//project.task/54799) Forward-Port-Of: odoo/enterprise#100523 Forward-Port-Of: odoo/enterprise#94502
This update improves the look and feel of the website builder's floating toolbars by unifying their design and functionality. This creates a more polished and consistent user experience, making the editor easier to use and more professional-looking.
Original PR description
<h1><strong>Standardize Floating Toolbar Layout </strong></h1> <p>This PR unifies the look and feel of the floating toolbars inside the website builder.<br> Over time, subtle inconsistencies slipped…
<h1><strong>Standardize Floating Toolbar Layout </strong></h1> <p>This PR unifies the look and feel of the floating toolbars inside the website builder.<br> Over time, subtle inconsistencies slipped in — animation dropdowns looked different from font popovers, highlight pickers used custom layouts, scrollbars behaved differently depending on the browser, and sublevel options in highlight configuration had no hierarchy.</p> <p>This work brings all those elements together into <strong>one cohesive design</strong>, improving usability and giving the editor a more mature, polished visual identity.</p> <hr> <h1><strong>Key Changes Before and After </strong></h1> 1. Animation Dropdown Styling <img width="290" height="290" alt="image" src="https://github.com/user-attachments/assets/35f31160-1ece-4bc6-9d2a-6ac055ef80ca" />|<img width="290" height="290" alt="image" src="https://github.com/user-attachments/assets/5cf42575-cb6b-4480-a665-505aeb022f24" /> 2. Highlight Picker Grid & Scroll Behavior <img width="270" height="299" alt="image" src="https://github.com/user-attachments/assets/da732527-03ea-42b0-8a46-514eabfa66b0" />|<img width="269" height="304" alt="image" src="https://github.com/user-attachments/assets/9a55eba5-7c2f-4441-9699-847e276938aa" /> 3. Highlight Configurator Sublevels <img width="266" height="123" alt="image" src="https://github.com/user-attachments/assets/5aa7422c-e07c-476f-a770-aa3290cdd728" />|<img width="271" height="125" alt="image" src="https://github.com/user-attachments/assets/35a80c61-ce23-45f8-af36-ea6a6709a10e" /> 4. Row Labels alignment <img width="312" height="231" alt="image" src="https://github.com/user-attachments/assets/4d014c03-1e81-44eb-8980-69f7cd065577" /> <img width="305" height="228" alt="image" src="https://github.com/user-attachments/assets/7056700e-71a2-4b05-b6ae-a07d7fec5b23" /> <hr> <h1><strong> What This PR Solves</strong></h1> <h3><strong>Before</strong></h3> <ul> <li> <p>Floating toolbar components each had their own styling quirks.</p> </li> <li> <p>The animation dropdown looked visually disconnected from other popovers.</p> </li> <li> <p>Highlight picker used a custom popover with inconsistent scroll behavior.</p> </li> <li> <p>Nested highlight options lacked indentation or visual hierarchy.</p> </li> <li> <p>Font size selector didn’t use the system font.</p> </ul> <h3><strong>After</strong></h3> <ul> <li> <p>All floating toolbar dropdowns now share a <strong>standardized design</strong>.</p> </li> <li> <p>Animation options match the layout and behavior of the <strong>font style popover</strong>.</p> </li> <li> <p>Highlight picker now uses <code inline="">dropdown-menu</code> styling with consistent scrollbars.</p> </li> <li> <p>Sublevel rows in highlight configurator now show a clear hierarchy.</p> </li> <li> <p>Font size selector uses system fonts for typographic consistency.</p> </li> <li> <p>Scrollbars are thin, predictable, and uniform.</p> </li> </ul> <hr> <h1><strong> Technical Breakdown</strong></h1> <h3><strong>1. Unified Dropdown & Popover Styling</strong></h3> <ul> <li> <p>Added thin-scrollbar styling at the web level for consistent behavior.</p> </li> </ul> <h3><strong>2. Floating Toolbar Awareness</strong></h3> <ul> <li> <p>Introduced <code inline="">dropdownClass</code> logic to let floating toolbars override default select styling.</p> </li> <li> <p>Removed the <code inline="">o-hb-select-dropdown</code> class when not needed to match the font popover.</p> </li> </ul> <h3><strong>3. Sublevel Rows in Highlight Configurator</strong></h3> <ul> <li> <p>Added <code inline="">hb-row-sublevel-1</code> to represent nested highlight styles.</p> </li> <li> <p>Updated <code inline="">--o-hb-row-bg-color</code> to align with sidebar styling and improve contrast.</p> </li> </ul> <h3><strong>4. System Font in Font Size Selector</strong></h3> <ul> <li> <p>Font size preview now uses the system font defined in CSS variables.</p> </li> </ul> <h3><strong>5. Improved Test Coverage</strong></h3> <ul> <li> <p>Ensures highlight picker grid scrolls correctly.</p> </li> <li> <p>Confirms animation dropdown matches the font popover visually.</p> </li> <li> <p>Verifies correct indentation of nested highlight configurations.</p> </li> </ul> <hr> <h1><strong>Affected Modules</strong></h1> <ul> <li> <p><code inline="">website</code></p> </li> <li> <p><code inline="">web</code></p> </li> <li> <p><code inline="">html_builder</code></p> </li> <li> <p><code inline="">html_editor</code></p> </li> </ul> <hr> <h1><strong>Task</strong></h1> <p><strong>task-5075191</strong></p>
Resolved issues and error corrections
This update fixes an issue where tasks created from sales order lines weren't automatically reflecting the correct number of hours. Previously, allocated hours were incorrectly set to zero for certain product types. Now, the task's allocated hours will accurately match the quantity of the sales order line, ensuring accurate time tracking for service-based projects.
Original PR description
To reproduce: ============= - Create service product with `service_tracking = task_in_project` and `service_type = manual` - Create a SO with this product and set quantity on the line - Confirm the SO - check the created task, allocated hours is 0.0 instead of the quantity of the SO line Problem: ======== When creating tasks from SO lines, allocated hours is initialized to 0 then computed based on the SOL quantity except when the product's service_type is 'milestones' or 'manual'. Solution: ========= Following the logic in `write` method of `sale.order.line`, the allocated hours should be set to the SOL quantity. opw-5153467 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237398 Forward-Port-Of: odoo/odoo#234524
This update fixes an error in the French payroll module that prevented users from correctly calculating payslips. The issue stemmed from an outdated reference to 'contract' instead of 'version' within the module's data files. This change ensures accurate payroll processing for French companies.
Original PR description
Steps to reproduce: 1. Open database with version saas-18.4 2. Install module l10n_fr_hr_payroll_with_accounting 3. Make sure that your company's country is France. 4. Set `Salary Journal` in:…
Steps to reproduce: 1. Open database with version saas-18.4 2. Install module l10n_fr_hr_payroll_with_accounting 3. Make sure that your company's country is France. 4. Set `Salary Journal` in: `Configuration` -> `Structure` -> `FR: Employe Carde` -> `Employe Carde` 5. In Payroll app create a payslip for any employee having contract. 6. Make sure in `other inputs` you make new type and in that in the `availability in structure` has Employee cadre chosen. 7. Now with that Salary Input type click on `Compute sheet` button. 8. The `Invalid Operation` error card will appear. **Description:** In saas-18.4, the model hr.contract was [changed](https://github.com/odoo/upgrade/blob/fa44eb03c2b46d948e20dc6f5ac01dca2b625b90/migrations/hr/saas~18.4.1.1/pre-migrate.py#L41) to hr.version . All related code https://github.com/odoo/enterprise/commit/46052c4bc5ad1bd2549a6125202e0671b56beac8 was updated to use version instead of contract. in this commit. However, in the module l10n_fr_hr_payroll, there where some fields which is still using `contract` to refer other fields . https://github.com/odoo/enterprise/blob/e29aadef1a81c662d9a4d33879b440dbe4390c0b/l10n_fr_hr_payroll/data/l10n_fr_hr_payroll_employe_cadre_data.xml#L130 Because of this, Odoo raises the error `Wrong python code name 'contract' is not defined when evaluating the code`. I have fixed the issue by updating the name from contract to version in that module contract to version. opw: [5259362](https://www.odoo.com/odoo/project/70/tasks/5259362) Forward-Port-Of: odoo/enterprise#100112
This update fixes an error in how Odoo handles invoices for customers in the UAE. Previously, invoices issued to related contacts were incorrectly labeled as 'Simplified Tax' invoices. Now, the system uses the customer's commercial contact information to accurately determine whether an invoice should be a 'Tax' or 'Simplified Tax' invoice, ensuring proper accounting and compliance.
Original PR description
Before this commit: - If an invoice is issued to a related contact of a company contact, it is labeled as a 'Simplified Tax' invoice. This is incorrect since the invoice is being issued to the related company on behalf of the company, so it should be a 'Tax' invoice. After this commit: - The commercial_partner field is now used to decide whether an invoice is a 'Tax' or 'Simplified Tax' invoice. task-5366608
This update prevents the loss of CUFE codes during DIAN invoice processing for Colombian companies. The previous process incorrectly removed the code due to a technical issue, now fixed to ensure accurate reporting and compliance. This resolves a critical bug impacting financial data integrity.
Original PR description
This issue requires a valid Colombia DIAN certificate and credentials to reproduce. Access to the Odoo Knowledge article *[CO] EDI – DIAN* is necessary for the setup. With `l10n_co_dian` installed…
This issue requires a valid Colombia DIAN certificate and credentials to reproduce. Access to the Odoo Knowledge article *[CO] EDI – DIAN* is necessary for the setup. With `l10n_co_dian` installed and a Colombian company: - Set up the DIAN Sales journal with the correct *Technical Key / Technical Control Key* as described in the article. - Ensure that each invoice name follows the required format. - Create a commercial invoice in the DIAN Sales journal (invoice date set in the past) and send it to DIAN. - Create the corresponding bill by copying the invoice reference and the CUFE code, then acknowledge receipt. - Run the server action **“Colombian EDI: Update Invoice Commercial States”**. Repeat this process at least twice. The CUFE code on the older invoice is removed. The server action calls `_l10n_co_dian_cron_update_event_status()`, which triggers `l10n_co_dian_action_update_event_status`. In this method, we remove `l10n_co_dian_document_ids` from moves considered duplicates. This deletion removes the `document_id` from the older move since it is treated as a duplicate of the newer one (both are in the “sent” state). However, in the compute method for `l10n_co_edi_cufe_cude_ref` (`_compute_l10n_co_dian_cufe`), we always reset `l10n_co_edi_cufe_cude_ref` to `False` before checking documents. Since the oldest move ends up with no documents, it never enters the loop and the CUFE code is lost. opw-5257129
This update optimizes how the product configurator popup loads in Point of Sale, making the system faster and more responsive. Previously, the system was slow when calculating exclusions for product attributes due to an inefficient search process. This change improves the overall user experience and reduces potential delays during sales transactions.
Original PR description
Before this commit, to compute the exclusions of a ptav, it would loop through all ptav records to find those that exclude the current one. This could be slow when there are many attributes and values. opw-5230890 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a bug where 'Cash on Delivery' was incorrectly offered for 'in-store' delivery types. The fix ensures that cash on delivery is only available when the delivery type is set to 'pick up in store', streamlining the checkout process for customers using this payment method. This improves the overall customer experience.
Original PR description
### Issue: In this issue, `allow_cash_on_delivery` is allowed when delivery type is pick up in store. #### Steps to reproduce: 1. Create a `fixed_price` delivery method 2. Check `Cash on delivery` checkbox 3. Change the delivery type to `in_store` and configure it 4. Activate cash on delivery payment method 5. Choose a storable ptoduct on the /shop, checkout with a created dm and proceed to payment 6. Observe that you see the 'cash on delivery' pm for pickup in store. Currently, `allow_cash_on_delivery` is invisible when `delivery_type` is set to `in_store`. However, it's not set to `False`, once the type is changed to `in_store`. opw-5258535 Forward-Port-Of: odoo/odoo#235434
This update resolves an issue where background blur in video calls would cause streams to freeze when users switched tabs. By using a separate worker thread for frame scheduling, the system now maintains a consistent video stream, ensuring a smoother and more reliable experience during calls, regardless of tab activity.
Original PR description
**Description of the issue/feature this PR addresses:** This PR fixes an issue where the video stream freezes when the background blur effect is enabled and the user switches to another browser tab…
**Description of the issue/feature this PR addresses:** This PR fixes an issue where the video stream freezes when the background blur effect is enabled and the user switches to another browser tab during video calls. **Current behavior before PR:** When background blur is enabled during a video call, the user’s video stream freezes if they switch to another browser tab. This happens because currently frame scheduling relies on `requestAnimationFrame` and `setTimeout`, which modern browsers pause or throttle in inactive tabs to conserve system resources and battery life. **Desired behavior after PR is merged:** The user’s video stream continues to render with the background blur effect, even when the browser tab is inactive. This is achieved by moving the frame scheduling logic to a Web Worker, which runs in a separate thread and is not subject to browser throttling. As a result, a consistent frame rate is maintained at all times. task-[4781227](https://www.odoo.com/odoo/project/1519/tasks/4781227) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226455
This update resolves an issue where a new order was incorrectly created when the 'Skip Preview Screen' option was enabled in the restaurant POS. The fix ensures that orders are only initialized when a table is selected or a floating order is created, preventing data access errors and improving stability. This change primarily impacts the restaurant POS experience.
Original PR description
**Steps to reproduce:** - In the config, click the ePos Printer checkbox - Also check Automatic Receipt Printing and Skip Preview Screen - Put a default preset with Name as it's identification - Go…
**Steps to reproduce:** - In the config, click the ePos Printer checkbox - Also check Automatic Receipt Printing and Skip Preview Screen - Put a default preset with Name as it's identification - Go in the restaurant and make a sale, pay for it - When going back to the floor plan, a traceback appears **Why the fix:** This current problem arises because we are trying to access the current order, but we are on the floor plan, so there is no current order yet. The order is undefined, so we try to access *undefined.floating_order_name* and a traceback appears. But the root issue is deeper than this. In the restaurant, the order is initialized when clicking a table, or when we create a floating order. But when the Skip Preview Screen option is enabled, we try to initialize the order right after the last order has been validated, like we do it in the normal PoS. Doing this, we will try to handle the preset selection way too early, as the order is not fully initialized yet, and we will try to access data that have not been set yet. The current error is not the only one we have with this setup, as other errors also arise if we bypass this specific error. To fix this, we are now only initilizing the new order when we click on a table that has no order or when making a floating order. We do not create a new order after the validation of the last one, even if the Skip Preview Screen option is enabled. This is only true in the restaurant, as we keep on initializing a new order after the validation in the regular PoS. Before this commit, we also tried to create a new order when opening the restaurant from the frontend (see image below), which resulted in a traceback. We now only create a new order if the default screen is different from the Floor Screen. <img width="375" height="249" alt="image" src="https://github.com/user-attachments/assets/e38520f6-81e2-471e-a987-98d9426a6493" /> Starting in version 19.0, there is another waiting screen after paying and before going back to the floor plan, which handles things, so the bug is not present anymore. But the traceback we get when opening the register from the frontend is still present in future versions. opw-5131309 Forward-Port-Of: odoo/odoo#230796
This update resolves an issue where the time calculations for operations on Bills of Materials (BoMs) were inaccurate when decimal quantities were used. The fix ensures that operation times are now correctly computed, leading to more precise production planning and costing. This improves the reliability of BoM-based reports and calculations.
Original PR description
When a BoM has a decimal quantity, the operations' times are not correctly computed. task: 5366973 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines the process for correcting invalid financial statements. Previously, users were directed to a view that couldn't be edited, requiring extra steps to fix errors. Now, the alert automatically directs users to the list view, allowing for immediate correction and saving time.
Original PR description
When the dashboard shows an invalid statement, clicking the alert redirected users to the kanban view of statements. That view does not allow editing or performing any corrective actions, forcing users to manually switch to the list view to fix the invalid entries. This commit updates the 'Invalid Statement(s)' alert so it redirects directly to the list view, allowing users to correct the statements without extra navigation. task-5346063
This update resolves a bug that occurred when calculating inventory values (FIFO method) due to a potential division by zero. When a stock move results in a zero quantity, the system now defaults to using the product's standard price instead, ensuring accurate valuation calculations. This improves the reliability of inventory reporting.
Original PR description
In some cases an incoming FIFO move can end up with a valued quantity of 0 (e.g. partial receipts or leftover move lines).
The valuation code was still trying to compute `value / qty`, which caused a `ZeroDivisionError`.
```py
File "/home/odoo/src/odoo/19.0/addons/stock_account/models/product.py", line 169, in _compute_value
product.avg_cost = product._get_standard_price_at_date()
File "/home/odoo/src/odoo/19.0/addons/stock_account/models/product.py", line 230, in _get_standard_price_at_date
return last_in._get_value(at_date=date) / last_in._get_valued_qty()
ZeroDivisionError: float division by zero
```
Fallback to the product’s standard price when the last incoming move has no valued quantity.
opw-5223443
upg-3275142
tbg-2284
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves a bug that prevented bank statement reconciliations from completing when using the 'Set Account' feature. The issue stemmed from the system not properly handling deleted reconciliation models, leading to errors about duplicate names. The fix ensures that reconciliation models are named uniquely, preventing these failures.
Original PR description
It may occur that when using 'Set Account' to reconcile a bank statement the reconciliation fail due to error "The operation cannot be completed: A reconciliation model already bears this name" Steps…
It may occur that when using 'Set Account' to reconcile a bank statement the reconciliation fail due to error "The operation cannot be completed: A reconciliation model already bears this name" Steps to reproduce: 1. Create a current liability, reconciliable account "455010 My Account" 2. Create 2+ with a common labels (TEST RECONCILIATION) 3. Use "Set Account" button to reconcile the first transaction with account 455010. 4. Repeat 2-3 with a shorter label 5. Open Reconciliation models for the Journal and delete the one named "455010 My Account" 6. Repeat 2-3 with an even shorted label Issue: Reconciliation will be blocked by error during automatic creation of reconciliation model Analysis: It occurs because we don't take into account that old reconciliation models may have been deleted, so even if we count a singe record it may have already been labeled "<account_name> (1)" Improved the naming by looking at the existing models and increasing the counter if necessary opw-5184696 Forward-Port-Of: odoo/enterprise#100468 Forward-Port-Of: odoo/enterprise#98785
This update fixes a bug that prevented users from successfully validating returns after duplicating and changing products within a picking. The fix ensures accurate average price calculations by limiting stock move usage to the same product, preventing UoM errors and improving return processing reliability.
Original PR description
When duplicating a delivery linked to a sale order and changing the product on the duplicated picking, validating the return could lead to an error when validating the original picking of the initial…
When duplicating a delivery linked to a sale order and changing the product on the duplicated picking, validating the return could lead to an error when validating the original picking of the initial product. The issue occurred because the average price computation was mixing stock moves of different products when consuming valuation layers, leading to a UoM singleton error. Steps to reproduce: - Create storable products P1 and P2: - Category: AVCO - P1 UoM: Unit - P2 UoM: Dozen - Create a sale order with 1 unit of P1 - Confirm the SO - Open the generated picking - Duplicate it → a new picking is created and still linked to the same SO - Change the product on the duplicated picking to P2 - Confirm and validate it - Create a return on this picking and validate it - Go back to the original picking of P1 and try to validate it Problem: A UserError is raised due to mixed products in the average price computation, resulting in a “Expected singleton: uom.uom(...)” This fix ensures that average price is computed only using stock moves belonging to the same product. opw-5027089 Forward-Port-Of: odoo/odoo#236706
This update corrects a bug where credit notes weren't automatically generating deferred revenue entries. The system was incorrectly using a setting designed for invoices. Now, credit notes will properly create deferred revenue entries when configured to 'On bill validation', ensuring accurate accounting for deferrals.
Original PR description
The system incorrectly uses the `Deferred Expense Entries` configuration to determine whether to create deferrals for credit notes, while it should follow the `Deferred Revenue Entries` setting, as invoices do. As a result, deferred entries for credit notes are not created when expected. Steps to reproduce: - Go to Accounting → Configuration → Settings. - In the Deferred Expense Entries section, set Generate entries to: Manually & Grouped - In the Deferred Revenue Entries section, set Generate entries to: On bill validation - Navigate to Accounting → Customers → Credit Notes. - Create a credit note with at least one line containing Date From and Date To (i.e., deferrable line). - Validate the credit note. - No deferred revenue entries are created. Ticket [link](https://www.odoo.com/odoo/project.task/5187051) opw-5187051 Forward-Port-Of: odoo/enterprise#100211
This update optimizes how Odoo renders message lists, resulting in a faster loading experience. The change reduced rendering time from 374ms to 315ms on a laptop with 75 messages, improving user performance. This enhancement contributes to a smoother and more responsive user interface.
Original PR description
374ms to 315ms, laptop, 75 msgs Task-5265271
This update resolves an issue preventing the correct transmission of data related to the Swiss Elm system. The fix ensures that necessary fields within the payroll module are accessible, allowing for accurate reporting and compliance with Swiss tax regulations. This ensures the continued proper functioning of the HR payroll calculations.
Original PR description
Forward-Port-Of: odoo/enterprise#100939
This update significantly speeds up the "reply" click handler in the email interface. Previously, the system unnecessarily processed all emails to determine which ones to visually highlight. The change now only renders the selected email, resulting in a much faster response time – reducing processing time from 320ms to 60ms with 125 messages loaded.
Original PR description
Before this commit, message action "reply" click handler could be slow. This happens because visually all messages but the one to reply is selected, and non-selected messages have their opacity reduced. The reduced opacity was triggered from re-rendering all the message, which all observe `thread.composer.replyToMessage` to compare with themselves. This is quite inefficient, especially when lots of messages are loaded, just to reduce opacity of all but the selected message to reply. This commit improves by rendering only the selected message, and adapt style of all other messages in CSS. With about 125 messages loaded, click handler timing goes from about 320ms to 60ms. Task-5262770