public static bool NeedMainBankAccount(long AFromPartnerKey, long AToPartnerKey) { TDBTransaction Transaction = DBAccess.GDBAccessObj.BeginTransaction(IsolationLevel.ReadCommitted); try { PPartnerBankingDetailsTable FromBankingDetailsTable = PPartnerBankingDetailsAccess.LoadViaPPartner(AFromPartnerKey, Transaction); PPartnerBankingDetailsTable ToBankingDetailsTable = PPartnerBankingDetailsAccess.LoadViaPPartner(AToPartnerKey, Transaction); int MainBankAccounts = 0; int FromBankAccounts = FromBankingDetailsTable.Rows.Count; int ToBankAccounts = ToBankingDetailsTable.Rows.Count; if (FromBankAccounts > 0) { foreach (DataRow Row in FromBankingDetailsTable.Rows) { PPartnerBankingDetailsRow FromRow = (PPartnerBankingDetailsRow)Row; if (PBankingDetailsUsageAccess.Exists(AFromPartnerKey, FromRow.BankingDetailsKey, "MAIN", Transaction)) { MainBankAccounts += 1; } } } if (ToBankAccounts > 0) { foreach (DataRow Row in ToBankingDetailsTable.Rows) { PPartnerBankingDetailsRow FromRow = (PPartnerBankingDetailsRow)Row; if (PBankingDetailsUsageAccess.Exists(AToPartnerKey, FromRow.BankingDetailsKey, "MAIN", Transaction)) { MainBankAccounts += 1; } } } // if the merged Partner will have more than one bank account and either 0 or 2 of the bank accounts are 'Main' accounts // then a new 'Main' account needs to be selected if (((FromBankAccounts + ToBankAccounts) > 1) && (MainBankAccounts != 1)) { return(true); } } catch (Exception e) { TLogging.Log(e.ToString()); } finally { DBAccess.GDBAccessObj.RollbackTransaction(); TLogging.LogAtLevel(7, "TMergePartnersWebConnector.OrganisationIsFoundation: rollback own transaction."); } return(false); }
public static bool NeedMainBankAccount(long AFromPartnerKey, long AToPartnerKey) { bool ReturnValue = false; TDBTransaction Transaction = null; DBAccess.GDBAccessObj.BeginAutoReadTransaction(IsolationLevel.ReadCommitted, ref Transaction, delegate { PPartnerBankingDetailsTable FromBankingDetailsTable = PPartnerBankingDetailsAccess.LoadViaPPartner(AFromPartnerKey, Transaction); PPartnerBankingDetailsTable ToBankingDetailsTable = PPartnerBankingDetailsAccess.LoadViaPPartner(AToPartnerKey, Transaction); int MainBankAccounts = 0; int FromBankAccounts = FromBankingDetailsTable.Rows.Count; int ToBankAccounts = ToBankingDetailsTable.Rows.Count; if (FromBankAccounts > 0) { foreach (DataRow Row in FromBankingDetailsTable.Rows) { PPartnerBankingDetailsRow FromRow = (PPartnerBankingDetailsRow)Row; if (PBankingDetailsUsageAccess.Exists(AFromPartnerKey, FromRow.BankingDetailsKey, "MAIN", Transaction)) { MainBankAccounts += 1; } } } if (ToBankAccounts > 0) { foreach (DataRow Row in ToBankingDetailsTable.Rows) { PPartnerBankingDetailsRow FromRow = (PPartnerBankingDetailsRow)Row; if (PBankingDetailsUsageAccess.Exists(AToPartnerKey, FromRow.BankingDetailsKey, "MAIN", Transaction)) { MainBankAccounts += 1; } } } // if the merged Partner will have more than one bank account and either 0 or 2 of the bank accounts are 'Main' accounts // then a new 'Main' account needs to be selected if (((FromBankAccounts + ToBankAccounts) > 1) && (MainBankAccounts != 1)) { ReturnValue = true; } }); return(ReturnValue); }