Deleting records safely
When you try to delete a master record — a customer, a contact person, a product code, a make, a unit, a supplier contact, a warehouse, a leave type, a holiday, an expense category, an email account, or a user — the app first checks whether that record is still referenced anywhere else. If it is, you see the Where Is This Used? window listing every place that still depends on it. The delete is held back until the references are resolved.
This page explains what the window shows you, the difference between blocked and warning deletes, and what to do in each case.
Why the check matters
Two years from now you may forget that a particular Make was used on a stock conversion in 2024. If the app let you delete the make, the old conversion record would still hold its ID but the make itself would be gone — opening that record later would show an empty value and any aggregation built from it could break. The check prevents that.
The Where Is This Used? window
When a delete is held back, a window opens with one tab per place the record is still used. Each tab shows up to fifty matching records with the relevant context (enquiry number, supplier name, dates, status). Click into any row to navigate to that record.
The window has three possible states.
Block — you cannot proceed
Used for hard deletes where keeping the record is the only safe option. You see only a Close button. Resolve the references first — edit each referenced record to point at a different value (or delete those records if they are also unwanted), then try the delete again.
Examples:
- A Product Code still listed on an old purchase order.
- A Unit set on an enquiry product line.
- A Holiday whose comp-off credit has already been used in an approved leave.
Warn — you can proceed if you accept the trade-off
Used for change-flow operations where the historical data is allowed to keep its old reference. You see Close and Proceed anyway buttons. Clicking Proceed anyway re-runs the action with the cascade flag set; the change goes through and old records keep their existing make / category.
Examples:
- Removing a Make from a Product Head's allowed makes — old enquiries still carry that make in their products.
- Removing a Make or Product Category from a Supplier — historical purchase orders keep their value.
Informational — you confirm and proceed
Used for the user soft-delete. The window shows what the user owns or is connected to, you read it, and click Delete anyway.
Special cases
Some delete attempts surface as a plain banner rather than the Where Is This Used? window:
- Delete child records first. A customer with contact persons, a product head with product codes, a godown with rooms inside, a room with racks inside — the parent is blocked until the children are removed. Open the children list and delete them one at a time. Each child delete runs through its own Where Is This Used? check.
- Pending mail. An email account with a queued quotation, purchase order, vendor invitation, or delivery receipt cannot be deleted. Cancel the pending job from its respective queue first.
What changed in the May 2026 update
Before this update each kind of record had its own delete checks and its own slightly-different modal. New record types and new references kept being added, but the modals were not always extended. The result: some deletes silently destroyed historical data because the check missed the place the record was actually being used.
The new Where Is This Used? window is generic — it reads the same reference map that the firm backup system uses, so every new model and every new reference automatically shows up. The old per-record modals (Customer-CP, Supplier-CP, Make, Unit, Product Code, Product Head) have been retired.
The Bulk transfer helper that used to appear when you removed a unit from a product head — offering to swap the old unit for a new one across all referenced records — has also been retired. It was heavy and fragile. In its place: the Where Is This Used? window shows you the records that need cleanup, and you resolve them by hand. This is safer and works for every record type the same way.