Daily updates from Odoo
Tuesday, May 5, 2026
11 changes · master
Enhancements to existing features
This update ensures accurate tax calculations for employees with Income from Let-Out Property, aligning with Indian tax regulations. A 30% standard deduction is now applied to rental income, and a new configuration option allows for future adjustments. This change improves compliance and reporting accuracy for Indian users.
Original PR description
Purpose: Ensure correct tax computation for Income from Let-Out Property by applying the standard 30% deduction as per Indian tax regulations. This PR includes: - Applied 30% standard deduction on let-out property during tax input value computation. - Added rule parameter for let-out property deduction to allow future changes via configuration. - Updated tax input values to consider only 70% of the declared rental income for tax calculation. - Added tooltip on let-out property field to clarify that a 30% standard deduction is applied on gross rental income for tax computation. This change aligns the payroll tax computation with Indian income tax rules, Income from Let-Out Property is calculated after deducting the standard maintenance deduction of 30% from the gross annual rental income. task-5848157 Forward-Port-Of: odoo/enterprise#112969
This update introduces a 'Changes Summary' report for Engineering Change Orders (ECOs), streamlining the process of reviewing updates to Bills of Materials. Previously, users had to navigate multiple tabs to understand component, operation, and by-product changes. This new report consolidates all relevant information into a single, easily digestible view, improving efficiency.
Original PR description
This commit introduces a new report "Changes Summary" to Engineering Change Order (ECO) model. Previous to this commit, users had to navigate through 4 different tabs to analyze the changes of the new versions of the BoM: components, operations, instructions and by-products. This commit removes these tabs and replaces them with one comprehensive report that shows all the changes next to each other. Task-5343222
This update allows administrators to modify payroll warnings and salary structures directly within Odoo, streamlining payroll management. Previously, these settings were immutable, requiring manual updates through technical channels. A new test ensures data integrity and prevents unintended changes.
Original PR description
This commit makes payroll warnings and salary structures updatable by removing the noupdate flag on them. A test is added to check that no warnings, salary structures, or salary rule categories have the noupdate flag. task-6120462
This update enhances the visual appearance of Gantt chart connections by replacing curved lines with cleaner, right-angled connectors featuring rounded corners. The changes also include real-time updates to connector positions during drag-and-drop actions, providing a more responsive and intuitive user experience. This improves the overall professionalism and usability of the Gantt chart.
Original PR description
In this commit added below changes: - Replace Bezier curves with orthogonal paths featuring rounded corners for clearer connectors. - Added dynamic connector target updates during pill drag for better UX. ## Technical details: * **Path Structure**: Changed SVG connector path from cubic Bezier curves to orthogonal routing with rounded corners - **Before**: `M 100,50 C 150,50 200,100 250,100` (curved path) - **After**: `M 100,50 L 175,50 Q 175,75 175,100 L 250,100` (orthogonal with curves at corners) task-4648686
This update enhances the payslip account preview feature, allowing users to see a simulated account move before validation. It includes UX improvements for salary calculations and adds optional credit/debit account assignments. This provides greater transparency and control over payroll accounting.
Original PR description
This commit serves multiple purposes: - Making the "obvious" values in the salary computation tab of a payslip invisible. This means that in the list view of the rules, only values != 1 will be shown…
This commit serves multiple purposes: - Making the "obvious" values in the salary computation tab of a payslip invisible. This means that in the list view of the rules, only values != 1 will be shown in the Quantity column, values != 100 in Rate and values != Total in the Base column. - Adding credit and debit accounts on the payslip line, optional by default. - If the Anonymize flag is set on the company, adding a way to preview the account move that would be created if we validated the payslips. To do this, a new button Journal Entry (Preview) is added to the ellipses, which triggers the form view of a newly added model MockAccountMoveWizard. This is a model used to simulate the Account Move without risking the records being saved in the db and bloating everything. All of the fields of this new model are computed, so when the form view is called on a new record, the compute function is triggered and used to fill all the values we will need in the view later. The values are taken from the same function that is used when creating an actual move, which we have split to separate the value computation part and the record creation. An additional model for mock lines is also created to be able to have the One2many relation. Task: 5965802
This update enhances the Studio approval entry list and form views to better support audit trails and improve usability. The changes make these views more practical for tracking and managing approval processes within Odoo Enterprise.
Original PR description
The list and form views are too basic to be of any use for audit purposes. This commit aims at making them more useful and user-friendly task-5961149
This update improves the speed of the payroll dashboard by loading warnings asynchronously. Previously, the dashboard would lag due to waiting for all warnings to load at once. Now, warnings are displayed one by one, resulting in a much quicker and more responsive user experience.
Original PR description
Prior to this commit, the payroll dashboard would take too long to load the warnings. This commit makes the loading asynchronous, so warnings are loaded one by one instead of waiting for all of them to be loaded before displaying them. task-6117352
This update enhances the 274.xx report by organizing employee tax information into clearer categories based on their certificate type. This improves readability and simplifies tax reporting while still providing an overall tax summary. The changes were made to streamline the report for better business understanding.
Original PR description
The commit aims to improve the 274.xx report layout through separating the different entries based on the nature of their obtained certificate and grouping them separately while still maintaining an aggregate summary of their taxes. Task: 6102983
This update simplifies the user experience for submitting Belgian HR payroll declarations to ONSS. The changes include a cleaner interface by hiding batch-specific options, a progress status bar to track declaration status, and enhanced tracking of declaration history, making the process more efficient and transparent.
Original PR description
Before: - Post ONSS Declaration button was visible in both web and batch mode - ONSS Declarations smart button was visible regardless of declaration type - DMFA had no status bar to track declaration…
Before: - Post ONSS Declaration button was visible in both web and batch mode - ONSS Declarations smart button was visible regardless of declaration type - DMFA had no status bar to track declaration progress - ONSS Declaration list had no creation date or download option - Draft state existed on ONSS declaration requiring manual posting - DMFA column in ONSS list showed wrong name After: - Post ONSS Declaration button only visible in batch mode - ONSS Declarations smart button only visible in batch mode - DMFA statusbar added showing: To Submit, Posted, In Progress, Refused, Approved based on latest ONSS declaration state - Refused and In Progress states only visible when current state - ONSS Declaration list now shows XML filename, creation date and download button for XML file - Draft state removed, declarations posted directly from DMFA screen - DMFA column now shows XML generated filename Impact: - Cleaner UI by hiding batch-only features in web mode - Better visibility of declaration progress through statusbar - Easier tracking of ONSS declaration history from list view Task: 5937242
This update optimizes appointment scheduling by calculating availability only for the current month, rather than pre-computing slots for the entire booking period. This change significantly reduces server load and improves the responsiveness of the appointment booking process. It's a performance enhancement that makes scheduling appointments faster and more efficient.
Original PR description
Generate all slots and compute only availabilities for the display month instead of pre-computing all slots for the whole booking period. task-4144524 Forward-Port-Of: odoo/enterprise#115986
This update automatically handles contract amendments for offers that overlap with existing contracts, creating new versions to maintain accurate records. It also cleans up outdated contract versions, preventing data inconsistencies and providing a clearer audit trail. A warning alerts users to potential replacements of existing versions.
Original PR description
**Contract Amendment & Versioning Logic** * When an offer's contract start date falls within an existing contract period, it is treated as a contract amendment (new version) rather than a new…
**Contract Amendment & Versioning Logic** * When an offer's contract start date falls within an existing contract period, it is treated as a contract amendment (new version) rather than a new contract. * For contract amendments, the offer's contract end date is read-only and automatically inherited from the existing contract. * When creating a new offer, any existing versions with effective dates **on or after** the new offer's contract start date are automatically archived, as they likely contain outdated data. * Added a warning to notify users when a new offer will replace existing future versions. **Technical Refactoring** * Refactored the `employee_version_id` computation (used as a fallback for contract templates) to sort by the contract's effective date (`date_version`) and strictly select the most recent version that was active prior to the new offer's `contract_start_date`. Previously, it was determined based on the version active at the offer creation date. This ensures the selected employee version matches the contractual state effective at the new offer's `contract_start_date`, preventing inconsistencies caused by relying on the offer creation date. * For personal info we now use `employee_version_id` as the latest version, falling back to `version` for applicants. * Ensured cache invalidation after rollback savepoints to prevent stale data. The overridden `_get_version` in `hr_contract_salary_payroll` writes to `employee.version_id` and the `contract_template_id`; although rolled back, it polluted the cache. We now always invalidate the cache after rollbacks to avoid inconsistencies, including later module installation. **Simulation & Chatter** * Inside the simulation, when calling `_get_version`, we need to adjust the contract dates of the version being simulated. The main challenge is allocating this simulated version between existing employee versions without creating contract overlaps, since overlaps raise validation errors. * Our first approach was to archive all versions with `date_version` after `offer.contract_start_date`, then create the simulation version with `(offer.contract_start_date, False)`. Functionally, this worked. * However, we started seeing phantom messages in the employee chatter. After investigating, we discovered that archiving `employee.version_id` triggers chatter tracking automatically. Even when we tried disabling tracking before rolling back the simulation, it didn't work. The chatter was triggered directly by the ORM, as confirmed by the stack trace. * To avoid this issue, we moved to a second approach. We archive all versions after `offer.contract_start_date` and set `employee.version_id.contract_date_end = False`. Then, instead of replacing the active version, we create the simulation version as an amendment to `employee.version_id`. The amendment's effective date is set to `max(fields.Date.today(), employee.version_id.contract_date_start, self.contract_start_date)` + 1 day. This ensures the current version remains unchanged, avoids contract overlaps, and prevents chatter pollution. task: 5408192 Forward-Port-Of: odoo/enterprise#103846