public ErrorCode DeleteRow(DataModel dataModel, DataModelTransaction transaction, DebtRuleRow debtRuleRow)
        {
            debtRuleRow.AcquireReaderLock(transaction);
            DebtRuleMapRow[] debtRuleMaps = debtRuleRow.GetDebtRuleMapRows();

            if (debtRuleRow.GetDebtClassRows().Length != 0)
            {
                return(ErrorCode.AccessDenied);
            }
            debtRuleRow.ReleaseReaderLock(transaction.TransactionId);

            foreach (DebtRuleMapRow debtRuleMapRow in debtRuleMaps)
            {
                debtRuleMapRow.AcquireReaderLock(transaction);
                if (!DataModelFilters.HasAccess(transaction, TradingSupport.UserId, debtRuleMapRow.DebtClassId, AccessRight.Write))
                {
                    return(ErrorCode.AccessDenied);
                }
                debtRuleMapRow.ReleaseReaderLock(transaction.TransactionId);
            }

            debtRuleRow.AcquireWriterLock(transaction);
            dataModel.DestroyDebtRule(new object[] { debtRuleRow.DebtRuleId }, debtRuleRow.RowVersion);
            debtRuleRow.ReleaseLock(transaction.TransactionId);

            return(ErrorCode.Success);
        }