Sunday, September 14, 2025
5 changes · 19.0
Enhancements to existing features
Italian fiscal position tax mapping now includes service-specific taxes, preventing one base tax from being mapped to both goods and services EU zero-rate taxes. This improves invoice tax accuracy for domestic and intra-EU scenarios and reduces manual correction risk.
Original PR description
Due to service taxes missing from the domestic fiscal position, when using the base tax on a product and the intracom fiscal position, it is mapped to both the 0% EU G and 0% EU S taxes. This happens with multiple taxes. By adding service taxes and splitting the mapping from default to goods and from services to services, the fiscal position only ever applies one tax per origin. task-none Forward-Port-Of: odoo/odoo#226529
The website configuration wizard now makes it easier to find the right industry by tolerating typos and using synonyms more effectively. It also updates wording and dropdown behavior to make setup clearer and faster for users creating a website.
Original PR description
Improved the search algorithm for the industry search bar in the website configurator. Typos are now checked to an extend: the autocomplete engine will look for the nearest word from a dictionnary made with all the words used in the industry list (labels and synonyms). For the improvement of the autocorrect, the Levenshtein fuzzy matching algorithm was used. Results returned from a synonym match are now inserted at the end of the match list. Some text changes: - In the first dropdown, "a business website" -> "a website" - The placeholder of the second dropdown became "Restaurant, Hair Salon, Clothing Store,..." linked to https://github.com/odoo/iap-apps/pull/1136 task-4642966 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This update corrects the styling of the website sales upsell popup so customers see it as intended. It also adjusts HR attendance and skills settings so attendance is not enabled by default and certification activities apply only to employees.
Original PR description
[IMP] hr_attendance: backend attendance unactivated by default [FIX] hr_skills: Certifications activity type are for employees only --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes the email campaign editor load faster by using only the assets needed for mailings instead of the full website frontend bundle. It also improves the empty-email experience, fixes snippet editing issues, and makes email previews and design options more reliable for users creating campaigns.
Original PR description
This is a cleaning pass after the `mass_mailing` [refactoring]. ### Stop using `web.assets_frontend` for mailings For multiple reasons: - loading this bundle implied that all frontend JS and SCSS…
This is a cleaning pass after the `mass_mailing` [refactoring]. ### Stop using `web.assets_frontend` for mailings For multiple reasons: - loading this bundle implied that all frontend JS and SCSS were loaded for a mailing, while the mailing actually only uses css, and only a fraction of it. - this bundle is crowded with assets from all modules that are totally irrelevant to `mass_mailing`. i.e. not loading it prevents issues where `website` (or any other module) style assets modified `mass_mailing` assets in a way that was not desirable. This will drastically improve loading time when starting a new mailing for the first time, and will also speed up the `convert_inline` process since a lot less style rules need to be parsed. This implies that the `snippets preview dialog` can no longer load `web.assets_frontend` by default. Instead a resource was introduced for each module to introduce their own previewing assets through a plugin. ### Improve UX for an empty mailing Ensure that a user typing directly in the `o_editable` element will not result in a corrupted content, and that the UX for an empty email hints at the user what to do. This results in a better experience when a user uses the `empty theme` for a new mailing. ### Fix snippets - clean snippets options (remove duplicates, redundant, ineffective options). - ensure that no editable phrasing content sits next to flow content (which is not well supported in the editor). - ensure that style assets for snippets correctly use the `mass_mailing` bundle. - ensure that snippets use the proper technical classes. - ensure that when `col-x` is specified, `col-md-y` is specified too, to avoid bumps in the interface when the user tries to redimension columns. [refactoring]: https://github.com/odoo/odoo/commit/82969dc5c6c36a7a91194cf15b33c9abb560a8e7 task-5078825 Co-authored-by: Damien Abeloos <abd@odoo.com> Co-authored-by: Thomas Josse <thjo@odoo.com>
Changing an expense product's policy no longer recalculates and overwrites the analytic distribution on existing expenses. This preserves previously entered expense analytics while still applying distribution rules correctly for new expenses.
Original PR description
When changing the expense policy of an expense product, the compute of analytic distribution of all expenses linked to the product is triggered. Steps: - Have an expense product X with expense policy…
When changing the expense policy of an expense product, the compute of analytic distribution of all expenses linked to the product is triggered. Steps: - Have an expense product X with expense policy 'at_sales' - Create several expenses with an expense product X and any analytic account - Create an analytic distribution model that link the expense account of X with a specific analytic account AA - Create a new expense for product X, the analytic account AA should be set from the distribution model - Go to the form view of product x and change the expense policy to 'cost' - Go back to the expense list view -> All expenses having the product X have the AA account Cause: `sale_order_id` has been added to the `depends` of `hr_expense._compute_analytic_distribution` by 2b3bf5e0fe31d4b4ef6b487da493657f695b14e1 but this wrong since we have the `sale_expense._onchange_sale_order_id` that add the `analytic_dostribution` field to the fields to be computed. The compute is triggered since we change `product_id.expense_policy`, which triggers the `_compute_can_be_reinvoiced` which triggers the `_compute_sale_order_id` Fix: With this commit, we emove the depends on the compute and we also adapt `test_compute_analytic_distribution_expense` in a way that it triggers the onchange as we do in the original flow. opw-4998899 Forward-Port-Of: odoo/odoo#226864 Forward-Port-Of: odoo/odoo#224226