It is very common to use a "flagged for deletion" field in MRP/ERP systems.
For instance, one might want to mark a part or inventory record that is no longer sold as inactive, but there are still outstanding orders associated with it. Doing a real delete on the record could affect orders that have not shipped yet, ledger entries that have not posted yet, history tables that will not be built until the month end, etc. Many systems will disallow a record deletion unless it passes a series of validations against other tables. If you are cascading deletions through your relationships, a real delete can be even more destructive.
Instead, by flagging it for deletion, you put a clear marker of intent on the record and later a scheduled task can delete the record if it verifies that all the related tables are no longer referencing it.
A similar case could be made for this feature on a customer table and other "long-term" tables. It even makes sense on more volatile tables like orders, although the name of the flag may become something like "shipped" or "cancelled". It serves the same function: don't delete it this second, but use it as a flag for the purge program so it attempts to validate the record's deletion in the future.