/// <summary> /// Returns true if the transfer is valid. /// </summary> public bool IsValid() { var valid = Narrative.IsSomething() && FromLedger != null && ToLedger != null && FromLedger != ToLedger && TransferAmount > 0.0001M; if (!valid) { return(false); } if (BankTransferRequired) { valid = AutoMatchingReference.IsSomething(); } if (FromLedger.BudgetBucket is SurplusBucket && ToLedger.BudgetBucket is SurplusBucket && FromLedger.StoredInAccount == ToLedger.StoredInAccount) { valid = false; } return(valid); }