Daily updates from Odoo
Saturday, September 13, 2025
6 changes · saas-18.3
Enhancements to existing features
Invoices created from sales orders now use the sales order name as the reference when no customer reference is already provided. This helps teams match prepayments more reliably and reduces payment reconciliation errors, with related updates to payment memo handling and localization tests.
Original PR description
Unless there's already a customer reference, we need the SO name to be able to match any prepayment --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
Signing fields can no longer be added before the PDF page is ready, preventing errors during document preparation. Cleanup of temporary page elements was also adjusted to avoid disrupting page re-rendering, making the signing setup experience more stable.
Original PR description
Fixed an issue where users could drag and drop sign items before the target PDF page was fully loaded, which caused runtime errors. The system now blocks adding new sign items until the target page has finished loading. Also fixed a problem with cleaning up dummy elements: these were sometimes removed incorrectly when the iframe re-rendered the pages, as the cleanup was already handled automatically. task-5065598 Forward-Port-Of: odoo/enterprise#94001
This fix updates an accounting report test so it no longer depends on a payment reference staying blank in every localization setup. It helps keep automated builds stable when Czech accounting localization is installed, reducing false test failures without changing business behavior.
Original PR description
test_document_data_basic was failing in builds with l10n_cz installed because - we set move_sales_2.payment_reference = '' in setUpClass and without l10n_cz it stays empty - but with l10n_cz installed it gets recomputed because of precompute=True on taxable_supply_date (which a stored computed field that triggers an extra write on account.move when the company is in CZ, and that write causes the compute graph to run again, and _compute_payment_reference fills the value back in) this commit solves this issue by not making assumptions about the payment_reference value and would use it as is in the generated data validation build_error-231479 Forward-Port-Of: odoo/enterprise#94554
This fixes an issue where moving documents into a folder could accidentally remove access for members who had previously visited that folder. Users keep their intended document permissions, reducing unexpected access loss and support needs.
Original PR description
When moving documents with members to a folder which has been visited by those same members (or some of them) they are removed from those documents access. This is caused by the document.access which has an entry for the members but with a null role. Task-5075196 Forward-Port-Of: odoo/enterprise#94610 Forward-Port-Of: odoo/enterprise#94149
This fix improves the reliability of the two-factor authentication flow when the web client starts. It corrects a test synchronization issue so the related login behavior is properly checked and intermittent failures are less likely to reach users.
Original PR description
Should actually fix what #224161 tried to: I didn't notice that the events had been renamed (#220852) and since the test was still disabled (and the fixing PR was set to the master one) all the CIs ran without the test, thus not testing the fix in any way. It could have passed anyway as it's a non-deterministic issue, but it's at best a 50/50 that it succeeds so over 3 stagings I'd most likely have seen it... https://runbot.odoo.com/odoo/error/231316 https://runbot.odoo.com/odoo/error/181862 (the original of the same) Forward-Port-Of: odoo/odoo#226857
Bank reconciliation matching now recognizes shorter sales order references like SO0001. This helps payments match the right customer documents more reliably, reducing manual reconciliation work.
Original PR description
Matching on references was limited to matching words > 8, to increase reliability, but the default sequence for sale orders is 6 characters (SO0001), so they would never be found unless we reach SO1000000 -_-