Example #1
0
        /// <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();
            }
        }
Example #3
0
        /// <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;
            }
        }
Example #4
0
        /// <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;
            }
        }