Example #1
0
        public static DataSet GetOneYearMonthGivingDataSet(Dictionary <String, TVariant> AParameters)
        {
            FDbAdapter = new TReportingDbAdapter(false);
            TLogging.SetStatusBarProcedure(WriteToStatusBar);
            DataSet ReturnDataSet = new DataSet();

            // get recipients
            DataTable Recipients = TFinanceReportingWebConnector.RecipientGiftStatementRecipientTable(AParameters, FDbAdapter);

            if (FDbAdapter.IsCancelled || (Recipients == null))
            {
                return(null);
            }

            DataTable Donors = new DataTable("Donors");

            foreach (DataRow Row in Recipients.Rows)
            {
                // get donor information for each recipient
                Donors.Merge(TFinanceReportingWebConnector.OneYearMonthGivingDonorTable(AParameters, (Int64)Row["RecipientKey"], FDbAdapter));

                if (FDbAdapter.IsCancelled)
                {
                    return(null);
                }
            }

            ReturnDataSet.Tables.Add(Recipients);
            ReturnDataSet.Tables.Add(Donors);

            return((FDbAdapter.IsCancelled) ? null : ReturnDataSet);
        }
        public static DataSet GetReportDataSet(String AReportType, Dictionary <String, TVariant> AParameters)
        {
            TLogging.SetStatusBarProcedure(WriteToStatusBar);
            DataSet ResultSet = null;

            FDbAdapter = new TReportingDbAdapter(true);   // Uses a separate DB Connection.

            switch (AReportType)
            {
            /* Financial Development */

            case "GiftsOverMinimum":

                ResultSet = TFinanceReportingWebConnector.GiftsOverMinimum(AParameters, FDbAdapter);
                break;

            default:
                TLogging.Log("GetDataSetThread unknown ReportType: " + AReportType);
                break;
            }

            FDbAdapter.CloseConnection();

            if (FDbAdapter.IsCancelled)
            {
                ResultSet = null;
            }

            return(ResultSet);
        }
        public static DataTable GetReportDataTable(String AReportType, Dictionary <String, TVariant> AParameters)
        {
            FDbAdapter = new TReportingDbAdapter();
            TLogging.SetStatusBarProcedure(WriteToStatusBar);
            DataTable ResultTbl = null;

            switch (AReportType)
            {
            case "BalanceSheet":
                ResultTbl = TFinanceReportingWebConnector.BalanceSheetTable(AParameters, FDbAdapter);
                break;

            case "HOSA":
                ResultTbl = TFinanceReportingWebConnector.HosaGiftsTable(AParameters, FDbAdapter);
                break;

            case "Stewardship":
                ResultTbl = TFinanceReportingWebConnector.StewardshipTable(AParameters, FDbAdapter);
                break;

            case "IncomeExpense":
                ResultTbl = TFinanceReportingWebConnector.IncomeExpenseTable(AParameters, FDbAdapter);
                break;

            case "AFO":
                ResultTbl = TFinanceReportingWebConnector.AFOTable(AParameters, FDbAdapter);
                break;

            case "Executive Summary":
                ResultTbl = TFinanceReportingWebConnector.ExecutiveSummaryTable(AParameters, FDbAdapter);
                break;

            case "TrialBalance":
                ResultTbl = TFinanceReportingWebConnector.TrialBalanceTable(AParameters, FDbAdapter);
                break;

            case "GiftBatchDetail":
                ResultTbl = TFinanceReportingWebConnector.GiftBatchDetailTable(AParameters, FDbAdapter);
                break;

            case "RecipientTaxDeductPct":
                ResultTbl = TFinanceReportingWebConnector.RecipientTaxDeductPctTable(AParameters, FDbAdapter);
                break;

            default:
                TLogging.Log("GetDatatableThread unknown ReportType: " + AReportType);
                break;
            }

            return((FDbAdapter.IsCancelled) ? null : ResultTbl);
        }
Example #4
0
        public static DataTable GetReportDataTable(String AReportType, Dictionary <String, TVariant> AParameters)
        {
            TLogging.SetStatusBarProcedure(WriteToStatusBar);
            DataTable ResultTbl = null;

            switch (AReportType)
            {
            /* GL Reports */

            case "BalanceSheet":

                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.BalanceSheetTable(AParameters, FDbAdapter);
                break;

            case "FieldGifts":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.KeyMinGiftsTable(AParameters, FDbAdapter);
                break;

            case "HOSA":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.HosaGiftsTable(AParameters, FDbAdapter);
                break;

            case "Stewardship":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.StewardshipTable(AParameters, FDbAdapter);
                break;

            case "Fees":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.FeesTable(AParameters, FDbAdapter);
                break;

            case "StewardshipForPeriod":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.StewardshipForPeriodTable(AParameters, FDbAdapter);
                break;

            case "IncomeExpense":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.IncomeExpenseTable(AParameters, FDbAdapter);
                break;

            case "AFO":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.AFOTable(AParameters, FDbAdapter);
                break;

            case "Executive Summary":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.ExecutiveSummaryTable(AParameters, FDbAdapter);
                break;

            case "TrialBalance":
                FDbAdapter = new TReportingDbAdapter(false);

                ResultTbl = TFinanceReportingWebConnector.TrialBalanceTable(AParameters, FDbAdapter);
                break;

            case "SurplusDeficit":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.SurplusDeficitTable(AParameters, FDbAdapter);
                break;

            /* Gift Reports */

            case "GiftBatchDetail":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.GiftBatchDetailTable(AParameters, FDbAdapter);
                break;

            case "RecipientTaxDeductPct":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.RecipientTaxDeductPctTable(AParameters, FDbAdapter);
                break;

            case "FieldLeaderGiftSummary":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.FieldLeaderGiftSummary(AParameters, FDbAdapter);
                break;

            case "TotalGiftsThroughField":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.TotalGiftsThroughField(AParameters, FDbAdapter);
                break;

            case "MotivationResponse":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.

                ResultTbl = TFinanceReportingWebConnector.MotivationResponse(AParameters, FDbAdapter);
                break;

            case "DonorGiftsToField":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.
                ResultTbl  = TFinanceReportingWebConnector.DonorGiftsToField(AParameters, FDbAdapter);
                break;

            case "GiftDestination":
                FDbAdapter = new TReportingDbAdapter(false);
                ResultTbl  = TFinanceReportingWebConnector.GiftDestination(AParameters, FDbAdapter);
                break;

            case "TotalForRecipients":
                FDbAdapter = new TReportingDbAdapter(false);
                ResultTbl  = TFinanceReportingWebConnector.TotalForRecipients(AParameters, FDbAdapter);
                break;

            /* Financial Development */

            case "SYBUNT":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.
                ResultTbl  = TFinanceReportingWebConnector.SYBUNTTable(AParameters, FDbAdapter);
                break;

            case "GiftsOverMinimum":
                FDbAdapter = new TReportingDbAdapter(true);       // Uses a separate DB Connection.
                ResultTbl  = TFinanceReportingWebConnector.GiftsOverMinimum(AParameters, FDbAdapter);
                break;

            default:
                TLogging.Log("GetDatatableThread unknown ReportType: " + AReportType);
                break;
            }

            if (FDbAdapter != null)
            {
                FDbAdapter.CloseConnection();

                if (FDbAdapter.IsCancelled)
                {
                    ResultTbl = null;
                }
            }

            return(ResultTbl);
        }
Example #5
0
        public static DataSet GetRecipientGiftStatementDataSet(Dictionary <String, TVariant> AParameters)
        {
            string ReportType = AParameters["param_report_type"].ToString();

            FDbAdapter = new TReportingDbAdapter(false);
            TLogging.SetStatusBarProcedure(WriteToStatusBar);
            DataSet ReturnDataSet = new DataSet();

            // get recipients
            DataTable Recipients = TFinanceReportingWebConnector.RecipientGiftStatementRecipientTable(AParameters, FDbAdapter);

            if (FDbAdapter.IsCancelled || (Recipients == null))
            {
                return(null);
            }

            DataTable RecipientTotals = new DataTable("RecipientTotals");

            RecipientTotals.Columns.Add("PreviousYearTotal", typeof(decimal));
            RecipientTotals.Columns.Add("CurrentYearTotal", typeof(decimal));
            DataTable Donors = new DataTable("Donors");

            foreach (DataRow Row in Recipients.Rows)
            {
                if (ReportType == "Complete")
                {
                    // get year totals for recipient
                    RecipientTotals.Merge(TFinanceReportingWebConnector.RecipientGiftStatementTotalsTable(AParameters, (Int64)Row["RecipientKey"],
                                                                                                          FDbAdapter));
                }

                // get donor information for each recipient
                Donors.Merge(TFinanceReportingWebConnector.RecipientGiftStatementDonorTable(AParameters, (Int64)Row["RecipientKey"], FDbAdapter));

                if (FDbAdapter.IsCancelled)
                {
                    return(null);
                }
            }

            DataView  View           = new DataView(Donors);
            DataTable DistinctDonors = new DataTable();

            if (View.Count > 0)
            {
                DistinctDonors = View.ToTable(true, "DonorKey");
            }

            DataTable DonorAddresses = new DataTable("DonorAddresses");

            if ((ReportType == "Complete") || (ReportType == "Donors Only"))
            {
                foreach (DataRow Row in DistinctDonors.Rows)
                {
                    // get best address for each distinct donor
                    DonorAddresses.Merge(TFinanceReportingWebConnector.RecipientGiftStatementDonorAddressesTable(Convert.ToInt64(Row["DonorKey"]),
                                                                                                                 FDbAdapter));

                    if (FDbAdapter.IsCancelled)
                    {
                        return(null);
                    }
                }
            }
            else
            {
                DonorAddresses.Merge(DistinctDonors);
            }

            // We only want distinct donors for this report (i.e. no more than one per recipient)
            if (ReportType == "Donors Only")
            {
                if (View.Count > 0)
                {
                    DistinctDonors = View.ToTable(true, "DonorKey", "DonorName", "RecipientKey");
                    Donors.Clear();
                    Donors.Merge(DistinctDonors);
                }
                else // I should return an empty table with just columns, to keep the client happy:
                {
                    DistinctDonors = new DataTable();
                    DistinctDonors.Columns.Add("DonorKey", typeof(Int64));
                    DistinctDonors.Columns.Add("DonorName", typeof(String));
                    DistinctDonors.Columns.Add("RecipientKey", typeof(Int64));
                }
            }

            ReturnDataSet.Tables.Add(Recipients);
            ReturnDataSet.Tables.Add(RecipientTotals);
            ReturnDataSet.Tables.Add(Donors);
            ReturnDataSet.Tables.Add(DonorAddresses);

            return((FDbAdapter.IsCancelled) ? null : ReturnDataSet);
        }
Example #6
0
        /// main method
        public static void Main(string[] args)
        {
            TPetraServerConnector.Connect("../../etc/TestServer.config");

            try
            {
                string OutputPath = TAppSettingsManager.GetValue("OutputPath", "../../delivery/GDPdU/data");

                if (!Directory.Exists(OutputPath))
                {
                    Directory.CreateDirectory(OutputPath);
                }

                string SummaryCostCentres            = TAppSettingsManager.GetValue("SummaryCostCentres", "4300S");
                string IgnoreCostCentres             = TAppSettingsManager.GetValue("IgnoreCostCentres", "xyz");
                string IgnoreAccounts                = TAppSettingsManager.GetValue("IgnoreAccounts", "4300S,GIFT");
                string IncludeAccounts               = TAppSettingsManager.GetValue("IncludeAccounts", "4310");
                string FinancialYears                = TAppSettingsManager.GetValue("FinancialYearNumber", "0");
                string IgnoreTransactionsByReference = TAppSettingsManager.GetValue("IgnoreReference", "L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12");
                int    FirstFinancialYear            = TAppSettingsManager.GetInt32("FirstFinancialYear", DateTime.Now.Year);
                int    LedgerNumber = TAppSettingsManager.GetInt32("LedgerNumber", 43);
                char   CSVSeparator = TAppSettingsManager.GetValue("CSVSeparator", ";")[0];
                string NewLine      = "\r\n";
                string culture      = TAppSettingsManager.GetValue("culture", "de-DE");

                string ReportingCostCentres =
                    TFinanceReportingWebConnector.GetReportingCostCentres(LedgerNumber, SummaryCostCentres, IgnoreCostCentres);

                //TLogging.Log("cost centres " + ReportingCostCentres);
                //TLogging.Log("accounts " + IncludeAccounts);

                if (TAppSettingsManager.GetBoolean("IgnorePersonCostCentres", true))
                {
                    ReportingCostCentres = TGDPdUExportAccountsAndCostCentres.WithoutPersonCostCentres(LedgerNumber, ReportingCostCentres);
                }

                IgnoreAccounts =
                    TFinanceReportingWebConnector.GetReportingAccounts(LedgerNumber, IgnoreAccounts, IncludeAccounts);

                // set decimal separator, and thousands separator
                Ict.Common.Catalog.SetCulture(culture);

                List <string> CostCentresInvolved = new List <string>();
                List <string> AccountsInvolved    = new List <string>();

                foreach (string FinancialYearString in FinancialYears.Split(new char[] { ',' }))
                {
                    Int32 FinancialYear = Convert.ToInt32(FinancialYearString);

                    string OutputPathForYear = Path.Combine(OutputPath, (FirstFinancialYear + FinancialYear).ToString());

                    if (!Directory.Exists(OutputPathForYear))
                    {
                        Directory.CreateDirectory(OutputPathForYear);
                    }

                    TGDPdUExportWorkers.Export(OutputPathForYear, CSVSeparator, NewLine,
                                               LedgerNumber * 1000000,
                                               FirstFinancialYear + FinancialYear);

                    TGDPdUExportTransactions.ExportGLTransactions(OutputPathForYear,
                                                                  CSVSeparator,
                                                                  NewLine,
                                                                  LedgerNumber,
                                                                  FinancialYear,
                                                                  ReportingCostCentres,
                                                                  IgnoreAccounts,
                                                                  IgnoreTransactionsByReference,
                                                                  ref CostCentresInvolved,
                                                                  ref AccountsInvolved);

                    TGDPdUExportBalances.ExportGLBalances(OutputPathForYear, CSVSeparator, NewLine, LedgerNumber,
                                                          FinancialYear, ReportingCostCentres,
                                                          IgnoreAccounts);
                }

                TGDPdUExportAccountsAndCostCentres.ExportCostCentres(OutputPath, CSVSeparator, NewLine, LedgerNumber,
                                                                     CostCentresInvolved);

                TGDPdUExportAccountsAndCostCentres.ExportAccounts(OutputPath, CSVSeparator, NewLine, LedgerNumber,
                                                                  AccountsInvolved);
            }
            catch (Exception e)
            {
                TLogging.Log(e.ToString());
            }

            if (TAppSettingsManager.GetValue("interactive", "true") == "true")
            {
                Console.WriteLine("Please press Enter to continue...");
                Console.ReadLine();
            }
        }