Daily updates from Odoo
Monday, March 23, 2026
41 changes · master
Security fixes and vulnerability patches
This update strengthens Odoo's security by implementing checks for field access within SQL queries. Specifically, the system now verifies that fields used in SQL statements are correctly authorized, reducing potential vulnerabilities. This improves overall data protection and aligns with security best practices.
Original PR description
Methods creating SQL have their field access checked. - account_accountant: check field access in group by - documents: `is_folder` should be a field
New functionality added to Odoo
This update incorporates the required 2033-F document, a crucial component of the French 'Liasse fiscal' reporting process. It also includes a confirmation dialog for the report action, improving user experience and data accuracy. This ensures compliance with French tax regulations.
Original PR description
This commit will add the 2033-F document of the "Liasse fiscal" task-5417362
Enhancements to existing features
This update enhances the spreadsheet edition by replacing 'Cancel' buttons with 'Discard' buttons, providing a more intuitive user experience. Additionally, a new custom component called 'Select' was implemented to improve the visual appearance of dropdown menus within the spreadsheet, aligning with Odoo's design standards.
This pull request introduces a temporary feature within the Sale Stock module to manage rental stock transactions. It provides a basic framework for tracking rental stock, allowing for better control and reporting on rental activities. This is an initial implementation and will be refined in future development.
This update enhances the web_studio interface to allow users to hide search filters within search views, providing a more flexible way to manage search results. Previously, this functionality was missing, and this change improves the user experience by offering a simple 'invisible' option for filters.
Original PR description
It is not always possible to remove a filter from a searchview. The alternative consists it making it invisible. However the feature was not exposed in `web_studio`. This commit exposes a `invisible` checkbox in the same way it was done for fields; adding a `ModifierProperty` in the `SimpleElementEditor`. This required to change the `node` parsing logic for the simple editor which now gets the current node from the `viewEditorModel` directly. task-5937406
This update aligns the design and behavior of the Documents module's search panel with the standard Odoo search panel. The changes enhance visual clarity and consistency across the Odoo platform, making it easier for users to find documents. This ensures a more unified and intuitive user experience.
Original PR description
Follow the changes made in community do keep consistency with the search_panel. task-5367727 Community: https://github.com/odoo/odoo/pull/249868
This update enhances the pay run workflow's user interface for better readability and ease of use. Changes include simplified data labels, adjusted table styles for clearer highlighting, and streamlined resource calendar names across various payroll localizations. These improvements aim to reduce confusion and improve the overall user experience.
Original PR description
Improvements to the pay run workflow UI. Change the table column names, highlight the entire cell instead of changing the text color, shorten the names of resource calendars for localisations. Task: 5979729
This update simplifies how tracking data is managed within Odoo, making it easier for developers to add tracking functionality to modules and ensuring consistent tracking behavior across the system. It focuses on reducing manual data manipulation and improving testability, ultimately leading to more reliable tracking information for reporting and analysis.
Original PR description
Main purposes * cover various use cases of tracking in addons. Several addons are doing manual calls to tracking API: '_mail_track' (generating tracking values), '_message_track' (generating valu and…
Main purposes * cover various use cases of tracking in addons. Several addons are doing manual calls to tracking API: '_mail_track' (generating tracking values), '_message_track' (generating valu and a tracking message) or calling 'message_post' or '_message_log' with tracking values manually generated. Logging on a parent model is also a frequen need (e.g. move line change on move, esg factor line changes on factor, ...). Those should be covered by tests to assess the behavior. * update tracking API to remove low-level data manipulation and use simpler methods. Addons should not have to manipulate tracking values in any form. * locate tracking code being currently both generic for BaseModel and specific to mail.thread in a middle-ground mixin. Specifications Test various use case of tracking, notably when doing manual calls to _message_track (which generates a tracking message), _mail_track (which generates tracking values, to be included in a message_post) or logging a message using either manually crafted tracking values or a rendered body looking like tracking values. Update docstring and arguments of tracking API. Add type annotations to ease understanding of the various structures used in code. Add a 'mail.track.mixin' mixin that allows to generate tracking values without depending on 'mail.thread'. It also allows to remove part of the code that was on BaseModel just for models not inheriting from 'mail.thread'. Thread now mainly adds the posting capabilities based on tracking. Update tracking API. Introduce '_track_add' when adding a manual tracking on some values. Introduce '_track_record' when sending the tracking values on another model (e.g. a parent for logging purpose). Fix various crashing code bits discovered when adding tracking tests. Note that most are going to be backported, hence may disappear from this PR at merge time. Youpie. Task-5935695 ([mail, various] Cleanup and test tracking usage) Prepares Task-3645865 ([mail] In-body tracking) Co-Authored-By: Prakash Prajapati <ppr@odoo.com>
This update simplifies the process for employees selecting time off by only showing leave types relevant to their company's country. This reduces confusion and ensures users see the appropriate time off options, improving the overall user experience.
Original PR description
In order to prevent the user from facing any difficulties or confusions while selecting the timeoff for their employees, the current flow will display only the leave types that matches the country of the specific company of the user. Task: 5979706
This update enhances the way remuneration codes are managed within Odoo's payroll system. Previously, codes were hardcoded, but now they are dynamically pulled from the central hr_dmfa module, improving data consistency and reducing potential errors. This change simplifies payroll configuration and maintenance.
Original PR description
[IMP] l10n_be_payroll: remuneration code The remuneration codes were defined in hr_dmfa statically. I added a new field for this code to salary rules and the code will be pulled from hr_dmfa now without hardcoding. task - 6036346
This update ensures that product information in the website generator includes the product SKU (or default code), improving data accuracy and clarity. It also streamlines the variant display, allowing users to see newly created variants directly without needing to import them first.
Original PR description
An important change for the products to include the SKU (or default_code in Odoo) to the products. Also now set the variant setting on so that the user can see the variants created directly without having this confusing in-between where we import variants but they cannot see them. Forward-Port-Of: odoo/enterprise#111317
This update introduces the ability to generate images using AI through the Media Dialog, leveraging a state-of-the-art model for improved quality and speed. The changes also include bug fixes related to prompt handling and access controls, ensuring a more reliable and secure AI experience.
Original PR description
- Unify API of AI methods: including `_get_direct_response`, `_generate_next_response`, and `_generate_single_response` to accept and return parts. Parts represent a list of dicts where each dict has…
- Unify API of AI methods: including `_get_direct_response`, `_generate_next_response`, and `_generate_single_response` to accept and return parts. Parts represent a list of dicts where each dict has a type such as 'text' or 'inline_data' and a content dict.
- By returning structured AIMessageParts, the system can now support images alongside text.
- Allow image generation using AI from Media Dialog
- Introduce a tool to allow image generation using Gemini Nano Banana which is the state of the art model for image generation in terms of quality, speed and prompt adherence.
- Introduce logic inside `ai.attachment.vacuum` to remove unused AI generated images to avoid bloating the DB with large files.
- Duplicate some code from `ir.binary` into `image_tools` to be able to retrieve attachments from paths that have one of the forms:
- `/web/image/....` for attachments.
- `/<module_name>/static/...` for files from addons, for example
/ai/static/description/icon.png
- Introduce messages quick action buttons to perform the same save logic of the `MediaDialog` and `CustomMediaDialog` by passing the save method from the media dialog to the `discuss_channel`.
- Fix the following bugs:
- After https://github.com/odoo/enterprise/commit/2acc1178663d3607e96b64c17ea54f1f5c2e86f3, users have the ability to define prompts for ai.prompt.button records instead of using the name field as the prompt. However, the VoiceTranscription component wasn't updated to use the new prompt field.
- The _render_prompt method should return the 'name' of the 'ai.prompt.button' if no 'prompt' is defined or no rendering_record is passed to the method. However, this check didn't take into account that 'prompt' may contain empty HTML, for example `Markup(<p></p>)`.
- Accessing render_model field on 'ai.prompt.button' records raises AccessError for non-admin users.
- An error would occur if a public user (or portal) tried to chat with the AI using the live chat.
- The order of prompt buttons in the discuss channel/transcription component was arbitrary. Now, they are sorted based on their sequence.
- The composer retrieved by the TranscriptionComponent doesn't take the model of the current record into consideration.
- Composers should be retrieved based on the interface key and record_model but get_direct_response retrieved composers based on interface key only. While not a bug because the only usage of the endpoint (website_seo_ai composer) will always be opened from the SEO component on the website, the retrieval of composers should be consistent everywhere.
- Misc
- Move some utils from the `ai_fields` module into the `ai` module. The logic defined in `tools.py` in `ai_fields` is now used in the `ai` module. So, the logic is moved into the `ai` module as it is the base for other ai related modules. The code is moved into 'ai_fields_tools.py'.
- Previously, it was only possible to generate text using AI and AI actions such as 'Log as Note' and 'Send Message' only took text into account. Given that the AI now is capable of generating attachments i.e. images, the actions are updated to take the attachments into account.
task-5153846This update aligns the net pay field within the payslip summary widget to create a more consistent and user-friendly experience across all views of the system. This change improves the overall presentation of payroll information, ensuring a cleaner and more organized display for users. Task 6055055.
Original PR description
To keep the user experience coherent and across all different views, the net wage field was aligned in the center of its parent widget Task: 6055055
This update ensures that all data is properly cleared after testing within Odoo. This prevents inconsistencies and ensures that tests are reliable and accurate, leading to more stable releases. It's a key improvement for maintaining data integrity during development.
Original PR description
When testing, make sure all data is flushed properly. odoo/odoo#196279
Resolved issues and error corrections
This update enhances the Odoo Enterprise Web Studio interface by ensuring the 'reset' button is only displayed when a logo is uploaded. This simplifies the user experience by preventing unnecessary options and focusing on the core functionality. It's a small but important refinement for usability.
Original PR description
SPECIFICATION: The reset button should only be visible when a logo has been uploaded. If no logo is uploaded, the reset button should remain hidden. Task-4010875
This update fixes a problem in the demo data for our time off system. Specifically, it ensures that leave allocations start correctly when using future dates (like 2027-01-01) to avoid errors and ensure the system functions properly for real-world 'time off to defer' scenarios.
Original PR description
Issue: The Anita Oliver contract starts on %Y-01-01, so her leave allocation begins from that date. When running with faketime set to 2027-01-01, the system attempts to create leave for the previous month, which results in an error stating that there is no allocation for that time off. Fix: Update the demo data to create the leave and payslip for the first month of the year. This prevents failures when using faketime and ensures it works correctly for real usage of `time off to defer`. task-6026690 Forward-Port-Of: odoo/enterprise#111435 Forward-Port-Of: odoo/enterprise#110293
This update resolves an issue where the bulk payments feature would crash if a bank journal wasn't properly connected. A new user message will now appear, guiding users to ensure their bank account is linked before attempting to check the status of a payment batch. This improves the user experience and prevents unexpected errors.
Original PR description
This commit: https://github.com/odoo/enterprise/commit/c9cc89f58f7d98396afac3bdacfeff9b00a02a21 introduce the initiate bulk payments feature. When selecting a batch you can also check the status of this batch. But for the moment, if you select a batch that is not connected to a bank, the action will traceback with a redirect. This commit will add a user error to warn the user than the journal needs to be connected to a bank. task-6009083 Forward-Port-Of: odoo/enterprise#111327 Forward-Port-Of: odoo/enterprise#109956
This update resolves an error that occurred when using the 'hr_expense_stripe' module with unsupported currencies like INR. The module will no longer attempt to create a 'Stripe Issuing' journal, preventing the error and allowing users to access the invoicing dashboard. The fix ensures a stable experience when using specific currency configurations.
Original PR description
Currently, an error occurs when a user opens the invoicing dashboard after activating the `hr_expense_stripe` module for Stripe card issuing with only unsupported currencies active. Steps to…
Currently, an error occurs when a user opens the invoicing dashboard after activating the `hr_expense_stripe` module for Stripe card issuing with only unsupported currencies active. Steps to reproduce: (19.0) - Install `account` module - Set Company currency to `INR` and deactivate `USD` in currencies. - Install `hr_expense_stripe` - Create New company > Set `Country` and `Currency` (eg: India and INR) > Switch to New company > Open `Invoicing` you will get the error. Steps to reproduce: (saas-19.1) - Install `account` module - Set Company currency to `INR` and deactivate `USD` in currencies. - Install `hr_expense_stripe` > Open `Invoicing` you will get the error. Traceback: `ValueError: Expected singleton: res.currency()` In this [PR], the behavior is such that if `company.stripe_currency_id` is not set, we do not create the "Stripe Issuing". In 19.0, `@template` was executed after the post-init hook, and we were preventing the creation of the [journal] at that stage. However, when a new company is created, the template data is automatically loaded for companies with a matching chart of accounts. As a result, the `stripe_issuing_journal` is created, which leads to the error. However, in saas-19.1, due to recent improvements in a [commit], the `@template` will now loads data for companies without post init hook. As a result, the `stripe_issuing_journal` is being created, and we are encountering an error. Solution: - The`Stripe Issuing` journal will no longer be created on installing the module. - For existing databases, we will use the company currency as a fallback value to ensure that a valid currency is applied. [PR]: https://github.com/odoo/enterprise/pull/96271 [journal]: https://github.com/odoo/enterprise/blob/fea009f98885a97439edfea75376b7323c8c9a03/hr_expense_stripe/models/res_company.py#L186-L187 [commit]: https://github.com/odoo/odoo/pull/228950/changes/21fd14ed5e8bdd2cf203d466069437a62a87f2bd sentry-7284934493 Forward-Port-Of: odoo/enterprise#108436
This update resolves a technical problem related to how Odoo handles data serialization in its localization modules (Arabic, Belgian, and Mexican editions). The fix ensures that data is correctly formatted, preventing potential errors and improving the stability of these important regional versions of Odoo. This change primarily impacts the functionality of these localized modules.
Original PR description
runbot-241772 https://github.com/odoo/odoo/pull/254995
This update ensures that Knowledge articles appear in the standard activity filters (My Activities, Today Activities, and Late Activities) when viewed from the systray. Previously, Knowledge was missing these filters, leading to inconsistent activity views. This change improves user experience and ensures all relevant articles are easily accessible.
Original PR description
Activity redirections from systray apply the default filters My Activities, Today Activities, and Late Activities. However, Knowledge was missing these filters. This commit fixes this so that the default activity filters are set in all models in the activity systray. task-5424661
This update enhances product pricing by now sending unit of measure information (price per unit and quantity) to the system. It also resolves a previous issue where product tag updates weren't automatically triggered by changes to product barcodes or linked products, ensuring accurate pricing and tag synchronization.
Original PR description
If units of measure is configured, we now send the price per unit and the amount of unit for the current product. This commit also fixes an issue where we didn't call pricer API to update tags if we updated the tag barcode, or if we updated the product linked to it. Task-5129442
This update ensures the topbar menu accurately reflects the menu selected through Odoo's AI Agent. Previously, the topbar didn't update when an AI Agent opened a menu, leading to a disjointed user experience. This fix corrects this behavior, providing a more consistent and intuitive interface for users.
Original PR description
Purpose: -------- When a menu (view) was opened through an AI Agent, the menu in the topbar was not updated. This commit fixes this behaviour by setting the menu when the menu's action has been loaded Task-6017607 Forward-Port-Of: odoo/enterprise#109929
This update corrects a bug in the refund processing for multi-line orders. Previously, the system incorrectly summed line amounts, leading to inaccurate comparisons and potential refund failures due to rounding discrepancies. This change ensures refunds are calculated correctly, preventing order discrepancies and improving financial accuracy.
Original PR description
Before this commit, the some of individual line amounts were being summed to compare against the original order total when processing a refund. This could lead to incorrect comparisons due to rounding issues, resulting in errors when attempting to refund orders with multiple lines. <img width="626" height="288" alt="image" src="https://github.com/user-attachments/assets/e1bdc126-64d9-4b9a-bd16-2b97ac75e40c" /> opw-5433201 Forward-Port-Of: odoo/enterprise#109124 Forward-Port-Of: odoo/enterprise#105301
This update automatically calculates and transmits the necessary commission payments related to employee compensation for Swiss payroll (ELM). Previously, this calculation was manual, and this change streamlines the process, ensuring accurate and timely reporting to Swiss tax authorities. This improves compliance and reduces the risk of errors.
Original PR description
task-6050810 Forward-Port-Of: odoo/enterprise#111143
This update resolves a bug that prevented invoices with the ICBPER tax code from being processed correctly. The issue stemmed from a technical detail in how the system handles fixed taxes, specifically when splitting them into separate base lines. By setting a configuration flag to false, the system now generates invoices with this tax without errors.
Original PR description
**Steps to reproduce:** 1. Install module `l10n_pe_edi`. 2. Switch company to PE. 3. Create a tax: - Name: ICBPER - Amount type: Fixed - Code: ICBPER - Amount: 0.5(e.g.) - Set the tax group to ICBPER…
**Steps to reproduce:**
1. Install module `l10n_pe_edi`.
2. Switch company to PE.
3. Create a tax:
- Name: ICBPER
- Amount type: Fixed
- Code: ICBPER
- Amount: 0.5(e.g.)
- Set the tax group to ICBPER (In Advance Option)
4. Create a invoice and add a product with ICBPER tax.
5. Post the invoice and click "Process Now" (at header).
**Issue:**
Processing the invoice raises:
AttributeError: 'dict' object has no attribute '_get_downpayment_lines'
**Cause:**
When `fixed_taxes_as_allowance_charges` is True, `_setup_base_lines()` calls `_turn_emptying_taxes_as_new_base_lines()`, which splits fixed taxes (e.g., ICBPER) into separate base lines.
During this process, `base_line['record']` is no longer the original `account.move.line` record. Instead, it becomes a dictionary containing record under `base_line['record']['record']`.
- With the flag enabled: `base_line['record']` -> dict `line._get_downpayment_lines()` -> AttributeError
- With the flag disabled: `base_line['record']` -> `account.move.line``line._get_downpayment_lines()` -> works correctly
The Peru EDI implementation directly accesses `base_line['record']` expecting an `account.move.line`. The the nested dict structure causes the crash during file generation.
**Solution:**
Override `_add_invoice_config_vals()` to explicitly set `fixed_taxes_as_allowance_charges = False`
- Add test to ensure invoices with ICBPER fixed taxes generate XML without error
**opw-5809939**
Forward-Port-Of: odoo/enterprise#108638This update resolves an issue where the payroll module wouldn't function correctly if only the core payroll components were installed. The `l10n_mx_min_wage_zone` field has been moved from a separate module to the main payroll module, ensuring compatibility and proper operation for all users.
Original PR description
The `l10n_mx_min_wage_zone` field is used in `l10n_mx_hr_payroll`, but it was originally defined in `l10n_mx_hr_payroll_account_edi`. This causes errors when a user only installs the `l10n_mx_hr_payroll` module, as the field is missing. Related commit: 11bb6db4884083b3f48582b749c01ae75a09cf66 target: master task-6047772
This update fixes an issue with the account reports where messages were displayed on multiple lines, making them difficult to read. Additionally, the VIES check hyperlink was corrected to ensure proper formatting. This improves the user experience and clarity of key account reporting information.
Original PR description
The company data check message was on multiple line. <img width="555" height="99" alt="image" src="https://github.com/user-attachments/assets/3916a794-57b7-4abb-9e76-0b39e63b8dd6" /> The VIES check hyperlink wasn't Markup. <img width="685" height="73" alt="image" src="https://github.com/user-attachments/assets/0d05d15e-7155-4435-9738-5e77263f6638" />
This update resolves a test issue caused by simultaneous data synchronization attempts within the Point of Sale Tax module. The fix ensures that backend processes complete before subsequent test steps are executed, preventing errors and improving test reliability. This enhances the overall stability of the Odoo Enterprise system.
Original PR description
In the test test_pos_avatax_flow, two calls are made to get_order_tax_details almost simultaneously, which causes the second call to raise an error due to both call trying to sync the same order at the same time. This commit fixes the test by waiting for the backend calls to be done before proceeding with the test next steps. runbot-error: 238871, 238872 Forward-Port-Of: odoo/enterprise#110341
This update resolves an issue where the interactive POS tours wouldn't load correctly on databases without demo data, causing a crash. The fix ensures the tours are correctly loaded for the POS environment and prevents errors when steps are missing. This improves the user experience for new POS installations.
Original PR description
With the new interactive tour handling, an issue occurred when loading the POS on a database without demo data. The tour steps were fetched from the "web_tour.tours" registry, but those tours were…
With the new interactive tour handling, an issue occurred when loading the POS on a database without demo data. The tour steps were fetched from the "web_tour.tours" registry, but those tours were only loaded in the "web.assets_backend" bundle, while the tour service can also run in the frontend (POS). As a result, no tour was found in the registry when loading the POS, leading to empty steps. Since no steps were available, the tour tried to access the current action, which was undefined, causing a crash. To fix this, a guard was added to ensure that steps exist before accessing the current action. If no steps are found, the tour test is put on hold, as it means the tour is not part of the currently loaded bundle and should not run. Additionally, the "point_of_sale_tour" was improved to execute actions when the POS is loaded, instead of relying only on the backend. This required loading "web_tour.assets_frontend" into the "point_of_sale._assets_pos" bundle. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6050295
This update corrects a bug where changes to view ordering within the Odoo Studio interface weren't consistently applied. The fix involved updating the system to correctly utilize the `defaultOrderBy` attribute on the related models, ensuring that view order settings are properly saved and reflected.
Original PR description
Bug === When changing the order of the views using studio, it wasn't applied. The reason is that we add a default order at the wrong place in JS, it should be done with the attribute made for that, `defaultOrderBy` on the relational model. Task-6047024 Forward-Port-Of: odoo/enterprise#111395 Forward-Port-Of: odoo/enterprise#111091
This update streamlines how emojis are loaded and managed within Odoo, making it faster and more reliable. The changes improve performance in testing and reduce the overall memory footprint of the system. This enhancement contributes to a smoother user experience and more efficient test environments.
Original PR description
Feature that is aimed to ease and centralize the loading and management of emoji data. Follow-up of https://github.com/odoo/odoo/pull/253344 in the same effort to reduce overall memory consumption and increase performance in tests to restore (some) nightly builds. - Community: https://github.com/odoo/odoo/pull/253078 Forward-Port-Of: odoo/enterprise#110146
This update resolves a technical issue within the Point of Sale (POS) testing process. The previous test was incorrectly simulating order refunds, leading to errors and preventing proper refund processing. This fix ensures the test accurately reflects the backend refund workflow, improving reliability.
Original PR description
The test l10n_pe_edi_pos.RefundWithReasonTour was badly written at some steps. It was paying an order but not waiting it to be fully processed by the backend to try to refund it leading to some information missing and thus some future step failing. This commit is adding the necessary waiting steps. runbot-error: 237981 Forward-Port-Of: odoo/enterprise#110484
Previously, when users uploaded multiple files to a WhatsApp Discuss channel, only the first file was delivered. This update corrects this issue by preventing the sending of multiple attachments, ensuring all files are successfully transmitted to the recipient. This improves the reliability of WhatsApp communication within Odoo.
Original PR description
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a…
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a WhatsApp Discuss channel. 2. Send the message. -> Odoo shows all files, but only the first reaches the destination. ### Cause WhatsApp's API permits only one media object per message. Odoo's "Composer" enforces this by blocking uploads if an attachment is already present. However, it only evaluates the *current* state; dropping multiple files into an empty composer passes the check because the count is zero. On the server, the WhatsApp backend (constrained by the API) is hardcoded to send only the first attachment, silently discarding the rest. ### Fix Updated frontend validation to inspect the incoming file list during drop and paste actions. The process is now blocked if the total of existing plus incoming files exceeds one, ensuring the user is notified and preventing silent data loss. opw-5889035 Forward-Port-Of: odoo/enterprise#111001 Forward-Port-Of: odoo/enterprise#107424
This update resolves an issue where long tax amounts on invoices caused display problems. The fix ensures tax totals are correctly shown, regardless of the number of digits, improving invoice clarity for users. This change impacts the l10n_ke_edi_oscu module.
Original PR description
This commit aims to: Fix Display issue when the amount is long. task-5162891 Forward-Port-Of: odoo/enterprise#111003 Forward-Port-Of: odoo/enterprise#100319
This update fixes a visual inconsistency in the accounting reports. Previously, the company header was grayed out only in light mode. Now, it uses a standard muted color, ensuring a consistent and professional appearance across both light and dark modes.
Original PR description
Before this pr: - The company header in the accounting reports is grayed out in the light mode only, not in the dark mode. Reason: - Until now, we have been using the hard-coded 'lightgrey' color for the company header. After this pr: - In this pr, we are changing the color of the company header from hard-coded 'lightgrey' color to the standard variable color '--AccountReport-muted-data-color' used for muted data in account reports. Task-5960592 Forward-Port-Of: odoo/enterprise#111509 Forward-Port-Of: odoo/enterprise#110108
This update enhances security within Odoo's spreadsheet modules by ensuring that users only have access to data based on their permissions. The changes align search filters with access controls, preventing unauthorized data viewing. This improves data security and protects sensitive information within spreadsheet applications.
This update resolves an issue where deleting large numbers of contract salary records could lead to incomplete deletions. By implementing a commit/rollback mechanism within the scheduled task, the system now ensures all records are fully processed, preventing data inconsistencies. This improves data integrity and reliability.
Original PR description
The CRON needs savepoints when deleting records to avoid partial deletes from happening when catching ValueError. Instead of savepoints, that are heavy in terms of recources, we can commit/rollback in this cron.
Features or functions removed from Odoo
This update removes a redundant template from the Odoo Enterprise website. This cleanup is part of ongoing efforts to optimize the codebase and improve performance. Removing unused components helps streamline the system and reduces potential maintenance overhead.
Original PR description
PR [1] cleaned the enterprise codebase in preparation for OWL3. One of the affected templates (`SubscriptionPricingSelect`) seems to be unused since [2]. This commmit removes it. [1]: https://github.com/odoo/enterprise/pull/110140 [2]: https://github.com/odoo/enterprise/commit/315be581a4212b46191e0c4f82b02a2c3fde51dc
Code cleanup and technical improvements
This update modifies Odoo templates to align with upcoming OWL3 requirements, specifically by adding `.this` to template variables. This change is necessary to correctly target component variables within the Odoo rendering context, ensuring compatibility with the new OWL3 framework. The changes were made manually to ensure proper implementation.
Original PR description
In preparation for OWL3, where template variables will need to use `.this` to target component variables, we add `.this` to template variables that are targetting the component. Community PR: https://github.com/odoo/odoo/pull/254865 Script PR: odoo/odoo#247965 task: OWL3 prep - add this. to template variables
This update streamlines the calculation and management of Belgian eco vouchers by automating the process through configuration. Previously, manual wizard steps were used; now, rules are defined centrally, improving accuracy and reducing manual effort. This change focuses on a more efficient and automated approach to managing these payments.
Original PR description
The previous eco voucher system wizard manually calculated amounts and set them on property inputs for the salary rule, where the purpose of the wizard was to create even though it is under the…
The previous eco voucher system wizard manually calculated amounts and set them on property inputs for the salary rule, where the purpose of the wizard was to create even though it is under the reporting sections. This commit refactors the system to be automated and configuration-driven, while making the wizard's only relevance to the reporting: - Introduce 'eco_voucher_config' rule parameter to define rules per Joint Committee (JC), including the payment month, maximum annual amount, and optional work-rate tiers (e.g., for CP200). - Move the proration logic to the salary rule layer via 'hr.payslip._get_eco_vouchers_amount()'. The method evaluates the 12-month reference period, identifies worked days, subtracts invalid days (unpaid leaves), and calculates the final amount according to JC rules. - Update the 'ECOVOUCHERS' salary rule to automatically trigger when the payslip month matches the configuration, provided no prior eco vouchers were paid in the same reference year. (this may not be needed in the future as the eco vouchers will then only be paid in the relevant month) - Convert the 'eco_checks' field on 'hr.version' and 'hr.employee' into a computed readonly field to serve as a "Maximum Allowance" indicator based on the current contract's work rate and JC. task-5421636
This update streamlines the way Odoo calculates task overlaps, resulting in faster and more efficient processing. The change utilizes a direct SQL query and a single calculation function, replacing a more complex internal ORM approach. This improves overall performance and responsiveness for task scheduling.
Original PR description
Use a simple SQL and call `_where_calc` once instead of using internal ORM methods.