/// <summary> /// Internal method for ExportFinancialAccounts(). /// </summary> private void ExportFinancialAccounts_Internal() { var dvFunds = new DataView(_db.Table("Contribution").Data); // Get primary funds. var dtPrimaryFunds = dvFunds.ToTable(true, "fund_name"); // Get sub-funds. dvFunds.RowFilter = "ISNULL(sub_fund_name, 'Null Column') <> 'Null Column'"; var dtFunds = dvFunds.ToTable(true, "fund_name", "sub_fund_name"); // Merge primary and sub-funds. dtFunds.Merge(dtPrimaryFunds); foreach (DataRow row in dtFunds.Rows) { var importAccount = F1FinancialAccount.Translate(row); if (importAccount != null) { ImportPackage.WriteToPackage(importAccount); } } // Cleanup. dtFunds.Clear(); GC.Collect(); }
/// <summary> /// Internal method for ExportFinancialAccounts(). /// </summary> private void ExportFinancialAccounts_Internal() { using (var dtFunds = GetTableData(SqlQueries.FUNDS)) { foreach (DataRow row in dtFunds.Rows) { var importAccount = F1FinancialAccount.Translate(row); if (importAccount != null) { ImportPackage.WriteToPackage(importAccount); } } // Cleanup - Remember not to Clear() any cached tables. dtFunds.Clear(); GC.Collect(); } }
/// <summary> /// Exports the accounts. /// </summary> public override void ExportFinancialAccounts() { try { using (var dtFunds = GetTableData(SQL_FUNDS)) { foreach (DataRow row in dtFunds.Rows) { var importAccount = F1FinancialAccount.Translate(row); if (importAccount != null) { ImportPackage.WriteToPackage(importAccount); } } } } catch (Exception ex) { ErrorMessage = ex.Message; } }
/// <summary> /// Exports the accounts. /// </summary> public override void ExportFinancialAccounts() { try { AccountIds = new List <int>(); _client.Authenticator = OAuth1Authenticator.ForProtectedResource(ApiConsumerKey, ApiConsumerSecret, OAuthToken, OAuthSecret); _request = new RestRequest(API_ACCOUNTS, Method.GET); _request.AddHeader("content-type", "application/xml"); var response = _client.Execute(_request); ApiCounter++; XDocument xdoc = XDocument.Parse(response.Content); if (F1Api.DumpResponseToXmlFile) { xdoc.Save(Path.Combine(ImportPackage.PackageDirectory, $"API_FINANCIAL_ACCOUNTS_ResponseLog.xml")); } var accounts = xdoc.Element("funds"); int loopCounter = 0; // process accounts foreach (var accountNode in accounts.Elements()) { var importAccount = F1FinancialAccount.Translate(accountNode); if (importAccount != null) { ImportPackage.WriteToPackage(importAccount); } AccountIds.Add(importAccount.Id); // process sub accounts of this account _client.Authenticator = OAuth1Authenticator.ForProtectedResource(ApiConsumerKey, ApiConsumerSecret, OAuthToken, OAuthSecret); _request = new RestRequest(API_ACCOUNTS + "/" + importAccount.Id.ToString() + "/subFunds", Method.GET); _request.AddHeader("content-type", "application/xml"); var subResponse = _client.Execute(_request); ApiCounter++; xdoc = XDocument.Parse(subResponse.Content); if (F1Api.DumpResponseToXmlFile) { xdoc.Save(Path.Combine(ImportPackage.PackageDirectory, $"API_FINANCIAL_ACCOUNTS_ResponseLog.xml")); } var subAccounts = xdoc.Element("subFunds"); foreach (var subAccountNode in subAccounts.Elements()) { var importSubAccount = F1FinancialAccount.Translate(subAccountNode, importAccount.IsTaxDeductible); if (importSubAccount != null) { ImportPackage.WriteToPackage(importSubAccount); } AccountIds.Add(importSubAccount.Id); } loopCounter++; } } catch (Exception ex) { ErrorMessage = ex.Message; } }