Confirm before you delete any inline row
Rule-driven confirmation and hard-block dialogs for every embedded One2many and Many2many list in Odoo — with dependent-record counts and a full audit trail.
The problem
In Odoo, deleting a row from an inline One2many or Many2many table — sales order lines, purchase lines, invoice lines, task checklists — happens the instant you click the trash icon. There is no confirmation step, so a single misclick silently removes a line, and because nothing is saved yet, the loss often goes unnoticed until it is too late.
The solution
This app puts a rule-driven confirmation or hard-block dialog in front of every inline delete. Rules match by model, field, and record state, show how many dependent records will be affected, and every confirmed deletion is written to a searchable audit log — so nothing disappears without a trace.
Built for teams that cannot afford a silent delete
Every capability below is implemented in the module.
Confirmation Dialog On Every Inline Delete
Any embedded One2many or Many2many list gets an "Are you sure?" prompt before the row is removed, replacing Odoo's default instant delete.
Context-Aware Rule Engine
Rules match on model, x2many field name, and a safe Python condition against the row's own field values, so the prompt only fires where you need it.
Hard-Block Rules
Some deletions should never happen. Mark a rule Block (e.g. confirmed lines) and the delete is refused outright with an explanation, no override.
Dependent-Record Count
Rules can point at a related model and field; the dialog shows exactly how many linked records will be affected before you confirm.
Custom Messages Per Rule
Write your own confirmation or block message per rule, with placeholders for the record name and dependent count, or let the app generate one.
Severity Levels
Mark each rule Info, Warning, or Danger to color the confirm button and signal how serious the deletion is.
Full Audit Trail
Every confirmed deletion is logged with the user, timestamp, model, field, and a JSON snapshot of the deleted row's data.
Global On/Off And Default-Confirm Toggle
Turn the whole feature on or off, and choose whether unmatched deletions are confirmed by default or pass through untouched, from General Settings.
Fail-Open Safety
Any unexpected error in the rule engine falls through to Odoo's native deletion, so this app can never block or break normal record removal.
How it works
Configure Rules
Define rules by model, field, and condition in the Delete Confirmation app, choosing Confirm or Block per case.
Toggle Global Behavior
Set the global on/off, default-confirm, and audit switches once in General Settings.
Users Delete As Normal
When someone clicks the trash icon on an inline row, the matching rule's dialog appears automatically.
Review The Audit Log
Every confirmed deletion is recorded, so admins can trace who removed what and when.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
Yes. It patches the standard embedded list renderer, so it applies to any One2many or Many2many field shown as an inline editable list — sales lines, purchase lines, invoice lines, task checklists, and any custom module's embedded lists.
Buy it on the Odoo App Store
Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.
Delete Confirmation Dialog for Inline x2many Rows
A confirmation dialog on every inline One2many and Many2many row delete, driven by context-aware rules with hard blocks, dependent-record counts and a full audit trail — and fail-open safety.
Buy on Odoo App Store