Friday, July 24, 2026
4 changes · 19.0
Resolved issues and error corrections
Manually printed confirmed payslips now save the generated PDF to the payslip record, matching the automatic send flow. This helps payroll teams keep a complete document history in the employee payslip chatter without extra manual uploads.
Original PR description
Right now, manually printing a confirmed payslip from the list view downloads the pdf but never links it to the chatter, unlike the automatic generate and send flow. This backports the fix from the odoo/enterprise#94019 pull request, making the print controller also create the attachment on the payslip. taskid-6391358
Fixed a rounding issue that could show a tiny leftover amount instead of zero in exported Trial Balance reports. This prevents confusion when accounts are actually balanced and improves the reliability of financial report exports.
Original PR description
Steps to reproduce -------------------- - Install account_reports module; - Create a new account; - Create a miscellanous operation for the previous month using thenew account with a credit amount of $8.28; - Create a second MISC for the current month with two lines using the account : debit = 262.67 and credit = 254.39; - Open the trial balance report and filter the new account (end balance should be 0); - Export the report as XLSX; The end balance value is 2.84e-14 due to float rounding issues. opw-6369016 Forward-Port-Of: odoo/enterprise#123896
The Stripe expense cardholder field has been corrected so it uses the standard selection behavior. This ensures filters set in the view are properly applied, helping users see only the relevant cardholders when entering expenses.
Original PR description
After https://github.com/odoo/odoo/issues/196785; the standard way to build a custom m2o field in JS is to call a method from the Many2one module, instead of extending an object from it. This commit solves issues regarding domain in the view not being passed to the widget opw-6399906
This fix prevents a test helper for appointment CRM flows from affecting later steps unexpectedly. It keeps automated validation more reliable, reducing false failures or hidden side effects in quality checks.
Original PR description
Capturing `oldWriteText` at module import and relying on a subsequent tour step to restore it can cause state leakage if the subsequent step doesn't exactly target a resulting effect of the mocked `writeText` call. Refactor the tour step to capture `writeText` dynamically and restore the original method on first call. runbot-241004