Monday, August 24, 2026
42 changes · master
Enhancements to existing features
Time off administrators can now see and configure whether each time off type creates a matching Calendar entry. This makes the existing setting easier to find and helps businesses control when leave requests appear in employees' calendars.
Original PR description
The `create_calendar_meeting` field on `hr.leave.type` allows users to choose if leave requests created with a given time off type generate a corresponding entry in the Calendar app. However, this field was not displayed on the form view. This commit adds `create_calendar_meeting` to the `hr.leave.type` form view inside the configuration section, along with dedicated help text explaining its behavior. Task: 6445794 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#283450
In editable lists configured to add new rows at the top, the “Add a line” button now appears at the top as well. This makes it clearer where new entries will be inserted and improves consistency across related sales, stock, project, and general list views.
Original PR description
Previously, when using editable="top", clicking "Add a line" created the new record at the top, but the "Add a line" button is at the bottom of the list, making the UI inconsistent. After this change, the "Add a line" button is positioned at the top of the list, and new records are inserted directly below it. This makes it clearer where new lines will be created and provides a more intuitive editing experience. task-6234437 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change lets Odoo population scenarios combine several reusable data blueprints instead of copying the same setup repeatedly. It makes demo, benchmark, and test data easier to maintain across areas like accounting, sales, stock, products, and projects while reducing inconsistencies when shared datasets change.
Original PR description
Population scenarios often reuse independent datasets, such as a product catalog, partners, or warehouses. Blueprint inheritance can extend one definition, but it cannot combine several definitions into a new scenario. This currently requires copying operations between blueprints, making them harder to maintain and reuse. Add an `<import>` element that expands another XML blueprint in place. Imports can be customized through XPath specifications and namespaced to avoid ID conflicts, including when the same blueprint is imported more than once. task-6314573 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Grouped list counts are moved back next to the group name after earlier design experiments proved less suitable. This restores a more familiar layout while keeping subtle visual improvements to group header spacing and background color.
Original PR description
After some experiments with the position and design of the grouped list Count, it has been decided to revert its position, ie: next to the group name. The previous redesigns (#235250 #255332 #266360) were reverted. Only some changes on the group header height and bg color were added back from #235250. task-6452702 part-of: task-5221260
This update enables stricter automated quality checks for project-related document test code. It helps keep the codebase more reliable while limiting user-facing changes to a minor adjustment in how a project menu option is evaluated.
Original PR description
Task-5180137 Forward-Port-Of: odoo/odoo#284055 Forward-Port-Of: odoo/odoo#280233
Sales teams can now configure products directly inside quotation templates, including attribute choices, custom values, and optional extras. This makes reusable quote templates more accurate and reduces manual rework when creating customer quotations.
Original PR description
Before this commit: Quotation template lines only stored a product variant (product_id), with no support for no-variant attributes, custom attribute values, or the product configurator dialog. After this commit: Quotation template lines can now use the product configurator, just like regular sale order lines like pick attribute values, custom values, and extra options directly when adding a product to a template. - Prices are hidden in the configurator for templates, including for optional lines. - Matrix/grid-configured products open the regular configurator dialog on templates. - Attribute selections carry over in both directions from a template into a new quotation, and from a quotation line back into a template. - Template description translations stay in sync across languages. task-6128596
This update refreshes U.S. payroll tax settings for Kentucky, Utah, and Kansas so payroll calculations align with corrected 2026 state requirements. It updates unemployment wage caps, Utah withholding table values, and Kansas allowance handling to help ensure more accurate employee pay and tax withholding.
Original PR description
Purpose: Some values and data need to be updated as a follow-up to this PR: https://github.com/odoo/enterprise/pull/125937. Kentucky: - 2026 SUI cap = 12,000 Utah: - 2026 SUI cap = 50,700 - Allowance and threshold tables values for single are corrected to be 2 and 36 respectively. Kansas: - Income tax formula for Kansas already includes the filer and/or spouse in the allowances. Correct the formula to only apply the allowance to the dependents. task-6467500
Users can again access document folder actions from menus, making it easier to share or export live folder views into spreadsheets and knowledge articles. The update also improves linked and embedded folder sharing while protecting access tokens from being exposed through Knowledge search state.
Original PR description
Also impacted: test_documents_full It is convenient to export a dynamic view of a folder in both spreadsheet and knowledge links settings. * Care is taken to avoid leaking access folders tokens through the search panel/model's state in knowledge. * We also enable sharing folders shared via link through embedded views as it enables benefitting from the power of them vs. adding the link to the folder in the article. * As with other actions initiated on shortcuts, the "real" operation is done on the target. Sharing the target is simpler than patching a folder "child_of" to return the target children (shortcut as documents_unique_folder_id is not supported). Task-5180137 Forward-Port-Of: odoo/enterprise#128882 Forward-Port-Of: odoo/enterprise#122481
New employee payroll review records now start in the reviewed status instead of an empty status. This removes ambiguity in employee payroll setup and keeps review indicators clearer for payroll and accounting teams.
Original PR description
Default the field to '1_reviewed' task-6470096
Website editors can now place content in dedicated areas on product pages, choosing whether it appears on every product page or only on the current one. Terms and conditions content is moved into the new editing area automatically, and empty placeholder lines are cleaned up to prevent unwanted spacing.
Original PR description
This commit adds different drop zones on the product page. We introduce zones where elements dropped inside will be displayed across all product pages, as well as zones where elements dropped inside will only be visible on the current product page. We also remove the terms and conditions option from the edit settings, and thanks to the upgrade script, we move them to the new dropzone if the option was enabled. If a page with the `o_drop_inner_empty` class is saved and contains an empty `<p>` tag, we remove it to avoid unwanted whitespace. Currently, a hint is displayed, but there is no way to delete the empty line. Upgrade PR: https://github.com/odoo/upgrade/pull/10116 task-6147939
Activity assignment emails are now grouped so a user receives one message per record instead of separate emails for every activity. This reduces inbox clutter and mail server load, while also ensuring scheduled activities use a valid compatible activity type.
Original PR description
Previously, when a plan scheduled multiple activities assigned to a user, the system sent a separate email notification for each individual activity. This resulted in excessive email spam for the…
Previously, when a plan scheduled multiple activities assigned to a user, the system sent a separate email notification for each individual activity. This resulted in excessive email spam for the assignee and unnecessarily increased mail server costs.
This commit improves the mail notification flow by grouping activities by user and record before dispatching. Instead of sending one email per activity, it now sends a single consolidated email per user per record, listing all assigned activities with their summaries and deadlines.
[IMP] {test_}mail: ensure activity type consistency by falling back to default type
Although unrelated to this PR, the TODO regarding activity type model consistency has been resolved by always resetting to a default compatible type when the activity type is not consistent (not present or not compatible).
We also remove the invalid activity type from the activity values if present, to prevent the incompatible type from being restored.
Task-6255045The website configurator no longer uses a moving background that could slow down some devices. Keeping the background fixed helps the page feel more responsive and improves the setup experience for users.
Original PR description
Background animation in the configurator caused performance issues on some devices and could make the page feel laggy. This commit removes the animation and keeps the background fixed. task-6497101 <img width="1911" height="921" alt="image" src="https://github.com/user-attachments/assets/951bf4db-6c22-440d-8148-6626ebda3fdf" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Email notifications no longer send readers to internal contact records when they see a partner mention. Mentions are shown as non-clickable highlighted text, avoiding confusing or inaccessible links for email recipients.
Original PR description
**Before this PR:** Partner @mentions in email notifications linked to the corresponding partner record. **After this PR:** Partner @mentions now render as links when the mentioned partner has an email address. If the mentioned partner has no email address, the @mention is rendered as plain text instead. task-4844982 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now find relevant ADEME emission factors more easily by filtering by location and seeing more recent factors first. The update also improves how dates, locations, units, and currencies from the ADEME database are interpreted, reducing irrelevant or confusing results.
Original PR description
Purpose: Today, it is complex for the user to find the relevant emission factors to use. For instance, when searching for "electricity", 406 records are found, many of which have the same name but…
Purpose: Today, it is complex for the user to find the relevant emission factors to use. For instance, when searching for "electricity", 406 records are found, many of which have the same name but different emission values. To improve the user experience, we should be able to filter by country and have the most recent factors shown first in the list view. In this commit, we add some flexibility on the validity dates given by the ADEME database. For instance, the following format dates are now parsed correctly: - 2026 - déc-18 - 31-mars-21 - Année 2008 Additionally, the location and sub-location are now taken into account (for the ADEME database) and stored in new fields (country_ids, state_ids). Some parsing and mapping were required to map those locations/sub-locations to existing records in the DB (a new CSV data file was added for this purpose). We also added a new filter to filter on factors that are relevant compared to the user's location (it compares the user's company's country to the ones of the factors). We also handle more units of measure and currencies, and we ignore some unknown units that are not relevant for the user. task-6109010
Financial reports now avoid unnecessary database work when preparing ledger queries. This reduces server resource usage significantly on large databases and should make affected reports load faster without changing report results.
Original PR description
Prior to this commit, the financial engine's query generation included redundant joins to `account_move` (INNER JOIN) and `res_partner` (LEFT JOIN). Neither table is utilized in the SELECT, WHERE,…
Prior to this commit, the financial engine's query generation included redundant joins to `account_move` (INNER JOIN) and `res_partner` (LEFT JOIN). Neither table is utilized in the SELECT, WHERE, GROUP BY, or ORDER BY clauses of these financial reports. These joins have been removed based on the following justifications: 1. account_move (INNER JOIN): Because `move_id` is a NOT NULL foreign key constraint on the line table, orphan lines cannot exist and the join acts as a no-op. Furthermore, the filter on entry state utilizes `parent_state` which is already denormalized on `account_move_line`. Removing this INNER JOIN allows the planner to avoid a massive, resource-heavy Nested Loop over the parent table's primary key index. 2. res_partner (LEFT JOIN): While PostgreSQL's optimizer was already utilizing "Left Join Elimination" to strip this out of the execution plan at runtime, removing it from the query builder cleans up the codebase and prevents unnecessary overhead in the query construction phase. Benchmarks on large database shows a large performance optimization: - Shared Hit Blocks: ~940,000 -> ~51,800 (a ~94.5% memory page reduction) Before Plan: https://explain.dalibo.com/plan/e3e2193968bf2a18 After Plan: https://explain.dalibo.com/plan/1dgdh22f68d89aca
Odoo can now receive payment status updates from the Odoo Fin proxy through a webhook. This helps keep online payment records and batch payments more current while avoiding duplicate refresh jobs.
Original PR description
This commit adds a webhook to allow Odoo Fin proxy to communicate with the Odoo database that a payment status has been updated. Once the call received, the code is making sure first that we have an associated client_id and at least a payment or a batchpayment with the payment identifier. This is also make sure that the cron is not already triggered to avoid multiple calls as the cron will fetch the status for all payments and batches. task-6377052
Leave types that deduct extra hours can now let employees take time off even when their extra-hours balance is not yet sufficient. This gives businesses more flexibility to manage time off policies while still tracking the resulting negative overtime balance.
Original PR description
When "Deduct Extra Hours" is checked on a leave type, add a new "Allow Negative?" checkbox that allows employees to take time off even if they don't have enough extra hours accumulated yet. task-5017245
Repeated copies of the same attachment, such as email signature images, are now grouped into one preview in the chatter attachment box. Users can expand the group to view, download, or remove individual copies, making important files easier to find while preserving access to every attachment.
Original PR description
Signature images ride along with every mail, so the same picture ends up attached to a record over and over. The attachment box lists every one of them, burying the files users actually came for.…
Signature images ride along with every mail, so the same picture ends up attached to a record over and over. The attachment box lists every one of them, burying the files users actually came for. This is a recurring complaint from the support team. Attachments holding the same content are now shown as a single preview carrying a counter on its bottom end corner. Clicking the counter unfolds the copies, each with its date, so that any of them can still be downloaded or removed on its own. Removing the preview itself removes the whole group, as that is what it stands for. Copies are matched on their checksum, and only grouped in the chatter attachment box: on a message the attachments are part of what the author wrote, so hiding some of them would drop information. task-6428149 https://github.com/odoo/enterprise/pull/126070 <img width="643" height="614" alt="image" src="https://github.com/user-attachments/assets/bb44d1bd-952e-409e-ae91-029ce88c87bb" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Binary files can now carry their filename directly, making attachment names easier to preserve and reducing the need for separate filename fields. File previews and reads avoid sending unnecessary encoded content, which can improve performance and browser caching across affected apps.
The Point of Sale product configuration window now shows product reference codes again, helping staff identify the right item more easily. Searching by a variant reference now opens the matching product variant, reducing selection mistakes during checkout.
Original PR description
We reintroduce the default code on the product configuration modal, and ensure that searching for a variant reference opens the right variant. task-6463377 Forward-Port-Of: odoo/odoo#283846 Forward-Port-Of: odoo/odoo#282707
Belgian payroll reporting now supports the Employee Participation declaration alongside the existing 273S flow. This gives payroll teams a more complete 273.XX reporting process for meeting Belgian compliance requirements.
Original PR description
Task: 6361345
Duplicate attachments, such as repeated email signature images, are now grouped into one preview in the chatter attachment box. Users can expand the group to view, download, or remove individual copies, making important files easier to find while preserving access to every attachment.
Original PR description
Signature images ride along with every mail, so the same picture ends up attached to a record over and over. The attachment box lists every one of them, burying the files users actually came for. This is a recurring complaint from the support team. Attachments holding the same content are now shown as a single preview carrying a counter on its bottom end corner. Clicking the counter unfolds the copies, each with its date, so that any of them can still be downloaded or removed on its own. Removing the preview itself removes the whole group, as that is what it stands for. Copies are matched on their checksum, and only grouped in the chatter attachment box: on a message the attachments are part of what the author wrote, so hiding some of them would drop information. task-6428149
This update modernizes how Odoo handles binary file information, such as file names, checksums, and whether full file data is loaded. It also updates related settings and tests across several apps to keep file handling consistent and reduce unnecessary data loading.
Original PR description
Belgian payroll payslips now include more detailed explanations for additional salary rules, making payroll calculations easier to understand. The underlying explanation logic was also simplified, improving maintainability without changing the payroll outcome.
Original PR description
- Add detailed explanations for additional salary rules on the payslip. - Refactor existing explanations to stop using `localdict` for passing values. Pass it directly via functions such as `result` and `rate` Task ID: 6450081
Draft payslips are now recomputed when they overlap with a salary adjustment. This helps payroll teams avoid outdated calculations and reduces the risk of incorrect payments before payslips are finalized.
Original PR description
…ustment task-6479469
Online stores can now set a minimum quantity that shoppers must buy for specific products. Product pages and carts automatically enforce the minimum, including when the same product appears in different units of measure, helping businesses protect pricing, packaging, or fulfillment requirements.
Original PR description
Add support for a minimum quantity on eCommerce products. The product page now initializes the quantity to the configured minimum and prevents decreasing below it. The cart also blocks quantity reductions that would violate the constraint. The minimum quantity is computed across all instances of the same product in the cart, including different UoMs converted to the product's base UoM. Changing the UoM automatically adjusts the quantity if needed. Removing one UoM while another remains in the cart increases the remaining quantity to preserve the constraint. Enterprise: https://github.com/odoo/enterprise/pull/122657 task-6354127
Manufacturing orders now handle expected work order durations more accurately for full production runs. The update also prevents production quantities from being changed too early and makes it easier to recover cancelled backorder steps, reducing disruption on the shop floor.
Original PR description
Some more improvements to refine the production process: - Allow computation of workorders' expected duration for a full production. - Remove writing into `qty_produced` while setting workorders states, unless its being marked as done. Task: 6421044 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#278809
Rental products can now require a minimum total rental amount before customers can add them to the cart. This helps businesses enforce rental sales rules consistently by checking rental duration and quantity together, and by preventing cart changes that would fall below the required minimum.
Original PR description
Extend the minimum quantity feature to rental products. The constraint is based on `periodicity × quantity ≥ minimum quantity`. The product page disables Add to Cart until the constraint is satisfied, while taking existing cart lines into account. The cart prevents quantity reductions and date changes that would break the constraint. As for regular products, the minimum is evaluated across all cart lines and remaining quantities are automatically adjusted when needed after removing a line. Community: https://github.com/odoo/odoo/pull/273732 task-6354127
Frontdesk now checks that email, SMS, and WhatsApp notification templates are properly set before those alerts can be enabled. It also prevents templates in active use from being deleted, reducing missed visitor notifications and setup mistakes.
Original PR description
Improve the validation of Frontdesk host notification templates: - Ensure Email, SMS, and WhatsApp notification templates are configured whenever their corresponding notification is enabled. - Prevent deletion of notification templates that are currently used by Frontdesk stations. Fix: - Update the `mail_template_id` domain to use `frontdesk.visitor` instead of `frontdesk.frontdesk`, since the email template is related to the visitor model. TaskId-6416010
Belgian payroll now helps ensure eligible employees receive a prorated 13th month payment when they leave the company. A dedicated employee-page action appears only when the employee qualifies, reducing manual work and improving payroll accuracy around departures.
Original PR description
When a Belgian employee leaves the company (fired or resigned) and has worked long enough (6 months for fired employee and 3 years for resigned employee), they are owed a partial 13th month payment. This commit adds a "13th Month" button on the employee's page, which only shows up when the employee actually qualifies, and creates a payslip with the correct partial amount for the months they worked. Also fixes a case where that amount could come out wrong if the payslip was generated before the departure date was officially confirmed. task-6439087
Payroll run cards now adapt better across desktop, narrow layouts, and phones, keeping key actions easier to access and preventing crowded content from overflowing. Metrics and step actions have been simplified so users can scan payroll runs more clearly and act faster.
Original PR description
The pay run card laid its name, kpis, steps and action buttons out on a single row. Below the xl breakpoint the buttons collapsed into the overflow menu, and on narrower screens the kpis and the…
The pay run card laid its name, kpis, steps and action buttons out on a single row. Below the xl breakpoint the buttons collapsed into the overflow menu, and on narrower screens the kpis and the steps were squeezed until they spilled out of the card. Keep the action buttons rendered inline at every size: only the remaining actions, the deletion and the smart buttons stay in the ellipsis menu. Fold the kpis and the steps away once the card can no longer hold everything on one row. A chevron at the bottom of the card unfolds them into a row of their own, kpis on the left and steps on the right, and the fold is driven by a container query so a card narrowed by the open chatter behaves like a narrow screen. Only the standalone card above a payslip list folds; the pay runs kanban lists many cards at once and keeps them inline. On phones the kpis are dropped altogether, the steps stay on show, and the action buttons and the overflow menu dock to a bar at the bottom of the screen. Restyle the metrics: drop the icons, mute the labels and enlarge the amounts, keeping the currency symbol and the whole units at full size with the decimals small and muted. A field renders an amount as a single string, so a payrun_kpi widget splits it; the Belgian and Saudi metrics reuse the same markup and follow. Show only the step's own action inline. `is_priority` raises the inline budget from one button to two rather than marking a button prominent, and "Add Employees" was the only flagged button in the version, time, attendance and payslip steps, so it was buying the second slot that Continue and Validate sat in. Drop its flag and anchor the inherited buttons on it rather than on the deletion, leaving each step's own action first and "Add Employees" in the ellipsis menu. Keep the pay run name's underline hidden until the card is hovered, so the card reads as a title rather than as a form. task-6361830
Clicking a chatter notification now opens the related record form immediately instead of first opening a chat window. This reduces extra steps for users and helps them get to the relevant business information faster.
Original PR description
Before this commit: Clicking on a chatter notification in the systray would open the chat window, requiring users to click Open Form View to access the related record. After this commit: Clicking on a chatter notification now opens the corresponding form view directly, reducing the number of clicks and enhancing user efficiency. task-4681025 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Turkish payroll rules have been updated with the 2026 payroll parameters, including clearer naming for the minimum net wage and configurable SSI contribution settings. This helps payroll teams calculate employee contributions more accurately within the current legal framework.
Original PR description
- Update the Turkish payroll rule parameters for 2026. - Rename the minimum wage parameter to 'Turkiye Minimum Net Wage'. - Add configurable parameters for the SSI minimum contribution base and employee contribution rate. - Update the SSI contribution computation to account for both the minimum and maximum contribution bases. **task-6397284** Forward-Port-Of: odoo/enterprise#128658 Forward-Port-Of: odoo/enterprise#125985
Stock quantity updates now reuse the same warehouse lookup when processing multiple products. This reduces unnecessary database work during batch operations, helping inventory-related actions run more efficiently without changing user workflows.
Original PR description
When `_inverse_qty_available` processes multiple products, it performs the same warehouse search for every eligible product, resulting in redundant queries during batch operations. Look up the warehouse lazily once and reuse it for all products in the recordset. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#283564
This update refines several VoIP screens and messages to make call-related workflows clearer for users. It replaces a log wizard label with an icon, renames the main outgoing number setting to a more understandable term, and improves the wording of tracking emails.
Original PR description
see commit titles task-6487015
This change improves Odoo's internal testing tools so simulated dates and times can be advanced during automated checks. It helps teams validate future marketing automation work more reliably, including incremental synchronization and application overhaul efforts.
Original PR description
Allows notably to make time move forward (tick). Prepares Task-6425785 [marketing_automation] Incremental sync Prepares Task-3866422 [marketing_automation] Overhaul application
This update improves internal testing for Marketing Automation scheduled jobs, helping ensure campaign activities run reliably over time. It also prevents test scenarios from getting stuck when scheduled jobs trigger repeatedly, reducing risk in future application improvements.
Original PR description
Forward-Port-Of: odoo/enterprise#128884 Forward-Port-Of: odoo/enterprise#128522
Loading indicators now appear without shifting button content or making the page feel jumpy. This improves visual stability and polish when users click actions that need time to complete.
Original PR description
The helper function `addLoadingEffect` disables the button and adds an inline font-awesome icon as a spinner. This can cause elements to shift on the page. Additionnally, the font-awesome icon has a…
The helper function `addLoadingEffect` disables the button and adds an inline font-awesome icon as a spinner. This can cause elements to shift on the page. Additionnally, the font-awesome icon has a very light imbalance that makes it wiggle instead of staying centered. Instead, we want to leave the layout as unaltered as possible while keeping the loading behavior. | Snippet | Before | After | | --- | --- | --- | | Button | <img width="174" height="74" alt="image" src="https://github.com/user-attachments/assets/b88dd91c-4d49-485e-8d10-b1a9afe37901" /> | <img width="168" height="131" alt="image" src="https://github.com/user-attachments/assets/88261d9b-19d2-42bf-8a2f-ea57c55954db" /> | | Accordion | <img width="633" height="89" alt="image" src="https://github.com/user-attachments/assets/9eeaf7d4-1933-4322-9e70-1d3c93ffa7d3" /> | <img width="650" height="134" alt="image" src="https://github.com/user-attachments/assets/2ee590cb-7b63-4d6c-bbae-472616530921" /> | | Carousel indicator | <img width="228" height="87" alt="image" src="https://github.com/user-attachments/assets/39fd0685-0517-456a-a1fd-6914f9ee4dbc" /> | <img width="194" height="99" alt="image" src="https://github.com/user-attachments/assets/2eaf1da3-d6eb-4ce3-8088-188c03508e92" /> | task-5221179
India withholding reports now use the shared withholding framework instead of older country-specific rules. This keeps reporting aligned with the latest accounting logic and reduces inconsistencies after the India-specific implementation was removed.
Original PR description
Update report domains to align with the generic withholding framework after removing the India-specific withholding implementation. com:https://github.com/odoo/odoo/pull/273075 upg:https://github.com/odoo/upgrade/pull/10681 task-6324221
The spreadsheet component has been updated to a newer version, bringing general improvements to the spreadsheet experience in Odoo. This helps keep spreadsheet features current and supports better reliability for users working with spreadsheet-based data.
Original PR description
Task: [6219600](https://www.odoo.com/odoo/project/2328/tasks/6219600) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
India accounting now uses Odoo’s shared withholding tax framework instead of a country-specific setup. This simplifies future maintenance, aligns terminology with common Indian TDS usage, and prepares automatic withholding tax application on vendor bills in a future update.
Original PR description
Previously, India used a custom withholding implementation. The generic `l10n_account_withholding_tax` module now supports the required Indian withholding features, making the custom implementation unnecessary. With this commit, `l10n_in` adopts the generic withholding framework and removes the India-specific withholding implementation, including section alerts and related warnings. Additionally, the `l10n_in_tax_type` selection values `tds_purchase` and `tds_sale` are merged into `tds`. The purchase/sale distinction is now handled by the `type_tax_use` field. In future, withholding taxes will be added to the chart of accounts and automatically applied to vendor bills according to the applicable rules. ent:https://github.com/odoo/enterprise/pull/122266 upg:https://github.com/odoo/upgrade/pull/10681 task-6324221
The blog module gets a refreshed design with new page layouts, modern navigation, updated demo content, and more customization options for blog lists and individual posts. This helps businesses present content more professionally and gives website editors better control over how articles are showcased.
Original PR description
- requires : - https://github.com/odoo/upgrade/pull/7957 - https://github.com/odoo/documentation/pull/16596 ------------ ## Blog redesign This PR introduces a redesign of the blog module, featuring…
- requires :
- https://github.com/odoo/upgrade/pull/7957
- https://github.com/odoo/documentation/pull/16596
------------
## Blog redesign
This PR introduces a redesign of the blog module, featuring **new layouts**, an **updated set of demo data** as well as **new features**.
### Layout
This PR introduces **five** new layouts in addition to the existing ones :
#### Grid layouts
<details>
<summary>Grid</summary>
<img width="1322" height="864" alt="image" src="https://github.com/user-attachments/assets/4482cab2-a72f-49a2-ba07-ba7343c78e47" />
</details>
<details>
<summary>Split</summary>
<img width="1724" height="920" alt="image" src="https://github.com/user-attachments/assets/dee9fbbf-09be-4f0e-b50e-768dc3d97271" />
</details>
#### List layouts
<details>
<summary>Minimal</summary>
<img width="1331" height="504" alt="image" src="https://github.com/user-attachments/assets/f027ce7b-f52b-4d4c-806b-09be1f5ebf46" />
</details>
<details>
<summary>Compact</summary>
<img width="1343" height="777" alt="image" src="https://github.com/user-attachments/assets/52ed31c8-e9eb-40b6-8d27-242c17e84d81" />
</details>
<details>
<summary>Regular</summary>
<img width="1351" height="860" alt="image" src="https://github.com/user-attachments/assets/8218cf13-3868-4b4b-9838-aff322cc04b3" />
</details>
<details>
<summary>Large</summary>
<img width="1341" height="860" alt="image" src="https://github.com/user-attachments/assets/31d461b5-9a50-4cc7-8f71-88342f02aa5b" />
</details>
### Features
- $\color{Red}{\textbf{(NEW!)}}$
- Introduce a **Promote last** option for the default grid layout, which puts the emphasis on the most recent article;
- Allow to set the page width to **Large**
- Added a new option to achieve a full-width cover on the blog post page.
### Demo data
All the demo data have been totally reviewed to showcase the new design
### Various improvements
- Refine the options available by organising them into sections;
- Revamp the relations between options, dissociate options that were not related and nest the ones which are;
- Refine sidebar and behaviour
- Dissociate author & date in two different option + allow to choose the formatting of the date between different formats
task-3083656
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prOriginal PR description
Add `filename` to `BinaryValue`. We can now write a dict {file_name, content} on binary fields. For attachments, the file name is stored in ir.attachment.name.
We remove the need to have "bin_size" context value and don't transfer base64-encoded data for `web_read`.
odoo/enterprise#118187
odoo/documentation#18337
task-6303991
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prodoo/odoo#266082