Daily updates from Odoo
Tuesday, July 28, 2026
2 changes
Enhancements to existing features
The Discuss interface has been refreshed with a vertical navigation rail, clearer search and filter controls, and more readable channel rows across desktop and mobile. Channels without custom images now show consistent initials-based avatars, making conversations easier to recognize.
Original PR description
Rework the Discuss sidebar to match the new design. The tab navigation becomes a vertical icon rail on every viewport (it was a bottom bar on mobile), the "New" action and the search box share a…
Rework the Discuss sidebar to match the new design. The tab navigation becomes a vertical icon rail on every viewport (it was a bottom bar on mobile), the "New" action and the search box share a first row, and the tab filters render as pill toggles on a second row. Channel rows are restyled with rounded corners, an action-tinted hover/active state and an accent bar on the active row, replacing the global contrast() filter that read too dark on the light surface. The three surfaces now form a consistent elevation hierarchy in both light and dark mode: the rail is deepest (a faint pastel of the brand primary), the channel list sits above it, and the thread is lightest. Subchannel rows abbreviate the parent channel to its first few letters so the subthread name stays the prominent label. Channels without a custom image now get an avatar generated from the name initials over a stable pastel color derived from the record, instead of the fixed monochrome SVG. task-6392371 https://github.com/odoo/odoo/pull/276874
Resolved issues and error corrections
Belgian payroll now calculates the special social contribution using the correct quarterly rates and applies it to additional payslip types such as 13th month and termination holiday pay. This improves payroll accuracy for employees with specific family situations and for departures involving notice period compensation.
Original PR description
The special social contribution (CSSS) is a quarterly tax, with quarterly rates, that is paid monthly, with small advances. The CSSS was only computed with the monthly rates, not using the correct…
The special social contribution (CSSS) is a quarterly tax, with quarterly rates, that is paid monthly, with small advances. The CSSS was only computed with the monthly rates, not using the correct rates for couples with a spouse without revenue, and defaulting to outdated rates if none were given. I fixed it to use quarterly rates when needed (i.e.: at the last month of the quarter, or for any payslip whose quarter already has a validated/paid payslip at the end of the quarter), to get the correct amount at the end of the quarter. The payslip line was also missing in the 13th month, and termination holiday (N and N-1) payslips. As they are subject to the CSSS. If the employee does not respect fully his notice period, then his IRC (which is the leftover salary he receives in his termination fees) should be split per quarter left of the notice period, then its CSSS should be computed as if the employee continued to work. It was not possible to test the IRC from the UI, as scheduling a notice period without respect would always reset `l10n_be_notice_period_theoretical_end` to `False`. The bug was to fix the computed spaghetti by splitting the `_compute_departure_date()` into two different computes. The parameter values for the were esoteric 2d/3d arrays that would sometimes mix the employee status. Since, as per the POs, I only have to worry about master for the Belgian Payroll, I have changed, split and renamed the parameter values to better fit the use case. DMFA tests are a pain to edit, and a hit to my mental health when realizing that I have to rechange all the `expected_dict` by hand each time I rebase. So I extracted the variable fields from the dict, and made a function that helps us to easily compare the issue to avoid wasting hours, or even days trying to adjust the tests. I also added some variables in the dict, as some fields (e.g.: `OccupationUserReference`) would change depending on the employee/version id, which can change if the test is ran twice, as the rollbacks do not rollback autoincrement indexes. So dmfa tests would fail if we ran it more than once without dropping the db The MISC ONSS account was removed from test_payslips_validation as the payslip was in december (the M.ONSS was 0 euros as the total gross wage was too low for the quarter) For the account move line tests, the table comment seemed outdated (as if the table was not modified but variables did). I deleted them as they also seemed to be duplicate work to do. Also, `_validate_move_lines()` would just iterate over a given array and raise if the move lines would not be the same order as the given array. `payslip.move_id.line_ids` does not seem to have a defined business order, so I made it so that id does not fail if the recordset order is different than the given array order I also made two changes to the common localdict function: - remove the `prev_` prefix to the keys, as it was wrong (the key can also contain payslips in the future) - Changed the logic so that it reuses yearly payslips when possible task-6068542