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.

Capabilities

Built for teams that cannot afford a silent delete

Every capability below is implemented in the module.

01

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.

02

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.

03

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.

04

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.

05

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.

06

Severity Levels

Mark each rule Info, Warning, or Danger to color the confirm button and signal how serious the deletion is.

07

Full Audit Trail

Every confirmed deletion is logged with the user, timestamp, model, field, and a JSON snapshot of the deleted row's data.

08

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.

09

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.

Workflow

How it works

1

Configure Rules

Define rules by model, field, and condition in the Delete Confirmation app, choosing Confirm or Block per case.

2

Toggle Global Behavior

Set the global on/off, default-confirm, and audit switches once in General Settings.

3

Users Delete As Normal

When someone clicks the trash icon on an inline row, the matching rule's dialog appears automatically.

4

Review The Audit Log

Every confirmed deletion is recorded, so admins can trace who removed what and when.

Questions

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.

Get the app

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
Related apps

More Odoo extra tools apps

Disable Developer Mode — Restrict & Audit Debug Access

Restrict developer mode to an authorized group, close the ?debug=1 URL bypass that other apps leave open, and log every attempt with who, when and whether it worked.

Extra ToolsView app

Dynamic Buttons Show/Hide

Hide or disable any workflow button per user, with dry-run preview, conflict detection, preset templates and an audit trail — without touching access rights or Developer Mode.

Extra ToolsView app

Dynamic Hide/Show Duplicate & Action Menu

Per-model, per-user and per-group rules that hide Duplicate, Delete, Export and Archive in both list and form views — with nested group support, time-boxed rules, a bulk wizard and an audit trail of blocked attempts, no view editing.

Extra ToolsView app

Field Binary Drag — Drag & Drop Uploads with Preview

Drag and drop onto any binary or image field, with drop-zone highlighting, thumbnail preview before commit, upload progress, batch drops and type and size validation.

Extra ToolsView app

Font Awesome Icon Picker Widget

A click-to-open visual picker for any Character field, backed by a namespaced Font Awesome 6.5.2 library — browse by category, search, preview live, and keep legacy FA4 values rendering.

Extra ToolsView app

Hide Action & Print Menu Buttons

No-code hiding of the Action and Print menus, individual items, or specific reports — scoped per user, group, model, view, and even record state, with a preview-as-user check and a governance audit log.

Extra ToolsView app