// // This will be called if the Fast Reports Wrapper loaded OK. // Returns True if the data apparently loaded OK and the report should be printed. private bool LoadReportData(TRptCalculator ACalc) { String RootCostCentre = "[" + FLedgerNumber + "]"; ACalc.AddParameter("param_cost_centre_code", new TVariant(RootCostCentre)); // I need to get the name of the current ledger.. ALedgerTable LedgerTbl = TRemote.MFinance.AP.WebConnectors.GetLedgerInfo(FLedgerNumber); Boolean IsClosed = false; if (LedgerTbl.Rows.Count > 0) { ALedgerRow LedgerRow = LedgerTbl[0]; // // I want to tell the user whether the selected period is closed // (although they probably know already...) Int32 SelPeriod = ACalc.GetParameters().GetParameter("param_end_period_i").value.ToInt32(); Int32 SelYear = ACalc.GetParameters().GetParameter("param_year_i").value.ToInt32(); if ((SelYear < LedgerRow.CurrentFinancialYear) || (SelPeriod < LedgerRow.CurrentPeriod)) { IsClosed = true; } } String LedgerName = TRemote.MFinance.Reporting.WebConnectors.GetLedgerName(FLedgerNumber); ACalc.AddStringParameter("param_ledger_name", LedgerName); ACalc.AddParameter("param_period_closed", IsClosed); return(FPetraUtilsObject.FFastReportsPlugin.LoadReportData("TrialBalance", false, new string[] { "TrialBalance" }, ACalc, this, false)); }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("param_donorkey", txtDonor.Text); ACalc.AddParameter("param_extract_name", txtExtract.Text); DateTime FromDateThisYear = new DateTime(DateTime.Today.Year, 1, 1); DateTime ToDatePreviousYear = new DateTime(DateTime.Today.Year - 1, 12, 31); DateTime FromDatePreviousYear = new DateTime(DateTime.Today.Year - 1, 1, 1); ACalc.AddParameter("param_to_date_this_year", DateTime.Today); ACalc.AddParameter("param_from_date_this_year", FromDateThisYear); ACalc.AddParameter("param_to_date_previous_year", ToDatePreviousYear); ACalc.AddParameter("param_from_date_previous_year", FromDatePreviousYear); ACalc.AddParameter("DonorAddress", ""); int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { if ((AReportAction == TReportActionEnum.raGenerate) && (dtpFromDate.Date > dtpToDate.Date)) { TVerificationResult VerificationResult = new TVerificationResult( Catalog.GetString("From date is later than to date."), Catalog.GetString("Please change from date or to date."), TResultSeverity.Resv_Critical); FPetraUtilsObject.AddVerificationResult(VerificationResult); } ACalc.AddParameter("param_currency", "Base"); ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); // Set the values for accumulating the costs to 0 ACalc.AddParameter("CostCentreCredit", 0); ACalc.AddParameter("CostCentreDebit", 0); ACalc.AddParameter("AccountCodeCredit", 0); ACalc.AddParameter("AccountCodeDebit", 0); ACalc.AddParameter("TotalCredit", 0); ACalc.AddParameter("TotalDebit", 0); int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); // we need to know some indices of the columns for (int Counter = 0; Counter < MaxColumns; ++Counter) { String ColumnName = "param_column_" + ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); ACalc.AddParameter(ColumnName, Counter); } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("param_extract_name", txtExtract.Text); if ((AReportAction == TReportActionEnum.raGenerate) && rbtExtract.Checked && (txtExtract.Text.Length == 0)) { TVerificationResult VerificationResult = new TVerificationResult( Catalog.GetString("No recipient selected."), Catalog.GetString("Please select a recipient."), TResultSeverity.Resv_Critical); FPetraUtilsObject.AddVerificationResult(VerificationResult); } int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("ControlSource", "", ReportingConsts.HEADERCOLUMN); ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("param_all_partners", rbtAllPartners.Checked); ACalc.AddParameter("param_extract", rbtExtract.Checked); if (rbtExtract.Checked) { ACalc.AddParameter("param_extract_name", txtExtract.Text); } if (rbtAllRecipients.Checked) { ACalc.AddParameter("param_recipientkey", "0"); } else { ACalc.AddParameter("param_recipientkey", txtRecipient.Text); } int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { if ((AReportAction == TReportActionEnum.raGenerate) && (dtpFromDate.Date > dtpToDate.Date)) { TVerificationResult VerificationResult = new TVerificationResult( Catalog.GetString("From date is later than to date."), Catalog.GetString("Please change from date or to date."), TResultSeverity.Resv_Critical); FPetraUtilsObject.AddVerificationResult(VerificationResult); } ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("TransactionCount", 0); ACalc.AddParameter("TransactionCountAccount", 0); ACalc.AddParameter("SumDebitAccount", 0); ACalc.AddParameter("SumCreditAccount", 0); int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Debits") { ACalc.AddParameter("param_debit_column", Counter); } if (ColumnName == "Credits") { ACalc.AddParameter("param_credit_column", Counter); } } }
private void LoadReportParams(TRptCalculator ACalc) { // Add standard parameters for the report header ACalc.GetParameters().Add("param_requested_by", UserInfo.GUserInfo.UserID); Version ClientVersion = Assembly.GetAssembly(typeof(FastReportsWrapper)).GetName().Version; ACalc.GetParameters().Add("param_version", ClientVersion.Major.ToString() + "." + ClientVersion.Minor.ToString() + "." + ClientVersion.Build.ToString() + "." + ClientVersion.Revision.ToString()); // // Some params are always provided for reports: bool TaxDeductiblePercentageEnabled = TSystemDefaults.GetBooleanDefault(SharedConstants.SYSDEFAULT_TAXDEDUCTIBLEPERCENTAGE, false); ACalc.AddParameter("param_tax_deductible_pct", TaxDeductiblePercentageEnabled); ArrayList reportParam = ACalc.GetParameters().Elems; MethodInfo FastReport_SetParameterValue = FFastReportType.GetMethod("SetParameterValue"); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation")) { FastReport_SetParameterValue.Invoke(FfastReportInstance, new object[] { p.name, p.value.ToObject() }); } } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); // Add param_mailing_code manually as string parameter, as automated code would incorrectly add mailing codes that are numbers as integers. ACalc.AddStringParameter("param_mailing_code", cmbMailingCode.GetSelectedString()); ACalc.AddStringParameter("param_mailing_code_descr", cmbMailingCode.GetSelectedDescription()); if (dtpToDate.Date.HasValue) { Int32 ToDateYear = dtpToDate.Date.Value.Year; //TODO: Calendar vs Financial Date Handling - Confirm that these should not be ledger dates, i.e. allowing for >12 periods and non-calendar period boundaries DateTime FromDateThisYear = new DateTime(ToDateYear, 1, 1); DateTime ToDatePreviousYear = new DateTime(ToDateYear - 1, 12, 31); DateTime FromDatePreviousYear = new DateTime(ToDateYear - 1, 1, 1); ACalc.AddParameter("param_from_date_this_year", FromDateThisYear); ACalc.AddParameter("param_to_date_previous_year", ToDatePreviousYear); ACalc.AddParameter("param_from_date_previous_year", FromDatePreviousYear); } int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("param_recipientkey", txtRecipient.Text); ACalc.AddParameter("param_extract_name", txtExtract.Text); if (dtpToDate.Date.HasValue) { Int32 ToDateYear = dtpToDate.Date.Value.Year; //TODO: Calendar vs Financial Date Handling - Confirm that these should not be ledger dates, i.e. allowing for >12 periods and non-calendar period boundaries DateTime FromDateThisYear = new DateTime(ToDateYear, 1, 1); DateTime ToDatePreviousYear = new DateTime(ToDateYear - 1, 12, 31); DateTime FromDatePreviousYear = new DateTime(ToDateYear - 1, 1, 1); ACalc.AddParameter("param_from_date_this_year", FromDateThisYear); ACalc.AddParameter("param_to_date_previous_year", ToDatePreviousYear); ACalc.AddParameter("param_from_date_previous_year", FromDatePreviousYear); } int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
private Boolean LoadReportData(TRptCalculator ACalc) { ArrayList reportParam = ACalc.GetParameters().Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation") && !paramsDictionary.ContainsKey(p.name)) { paramsDictionary.Add(p.name, p.value); } } DataTable ReportTable = TRemote.MReporting.WebConnectors.GetReportDataTable("SYBUNT", paramsDictionary); if (this.IsDisposed) // There's no cancel function as such - if the user has pressed Esc the form is closed! { return(false); } if (ReportTable == null) { FPetraUtilsObject.WriteToStatusBar("Report Cancelled."); return(false); } DataView Dv = ReportTable.DefaultView; // sort the table Dv.Sort = ACalc.GetParameters().Get("param_sortby_readable").ToString().Replace(" ", ""); ReportTable = Dv.ToTable(); FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportTable, "SYBUNT"); // // My report doesn't need a ledger row - only the name of the ledger. And I need the currency formatter.. DataTable LedgerNameTable = TDataCache.TMFinance.GetCacheableFinanceTable(TCacheableFinanceTablesEnum.LedgerNameList); DataView LedgerView = new DataView(LedgerNameTable); LedgerView.RowFilter = "LedgerNumber=" + FLedgerNumber; String LedgerName = ""; if (LedgerView.Count > 0) { LedgerName = LedgerView[0].Row["LedgerName"].ToString(); } ACalc.AddStringParameter("param_ledger_name", LedgerName); ACalc.AddStringParameter("param_currency_formatter", "0,0.000"); Boolean HasData = ReportTable.Rows.Count > 0; if (!HasData) { MessageBox.Show(Catalog.GetString("No Motivation Response data found."), "Motivation Response"); } return(HasData); }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { if ((AReportAction == TReportActionEnum.raGenerate) && rbtSelectedFields.Checked && (clbFields.GetCheckedStringList().Length == 0)) { TVerificationResult VerificationMessage = new TVerificationResult( Catalog.GetString("Please select at least one field."), Catalog.GetString("No fields selected!"), TResultSeverity.Resv_Critical); FPetraUtilsObject.AddVerificationResult(VerificationMessage); } if ((AReportAction == TReportActionEnum.raGenerate) && (rbtAllFields.Checked)) { ACalc.AddParameter("param_clbFields", this.clbFields.GetAllStringList()); } if ((AReportAction == TReportActionEnum.raGenerate) && (dtpFromDate.Date > dtpToDate.Date)) { TVerificationResult VerificationResult = new TVerificationResult( Catalog.GetString("From date is later than to date."), Catalog.GetString("Please change from date or to date."), TResultSeverity.Resv_Critical); FPetraUtilsObject.AddVerificationResult(VerificationResult); } int Years = Convert.ToInt16(txtYears.Text); if ((AReportAction == TReportActionEnum.raGenerate) && ((Years > 4) || (Years < 1))) { TVerificationResult VerificationMessage = new TVerificationResult( Catalog.GetString("Set the year range between 1 and 4"), Catalog.GetString("Wrong year range entered"), TResultSeverity.Resv_Critical); FPetraUtilsObject.AddVerificationResult(VerificationMessage); } ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("Year0", DateTime.Today.Year); ACalc.AddParameter("Year1", DateTime.Today.Year - 1); ACalc.AddParameter("Year2", DateTime.Today.Year - 2); ACalc.AddParameter("Year3", DateTime.Today.Year - 3); int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
// // This will be called if the Fast Reports Wrapper loaded OK. // Returns True if the data apparently loaded OK and the report should be printed. private bool LoadReportData(TRptCalculator ACalc) { ArrayList reportParam = ACalc.GetParameters().Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation") && (!paramsDictionary.ContainsKey(p.name))) { paramsDictionary.Add(p.name, p.value); } } String RootCostCentre = "[" + FLedgerNumber + "]"; paramsDictionary.Add("param_cost_centre_code", new TVariant(RootCostCentre)); DataTable ReportTable = TRemote.MReporting.WebConnectors.GetReportDataTable("TrialBalance", paramsDictionary); if (ReportTable == null) { FPetraUtilsObject.WriteToStatusBar("Report Cancelled."); return(false); } FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportTable, "TrialBalance"); // // I need to get the name of the current ledger.. ALedgerTable LedgerTbl = TRemote.MFinance.AP.WebConnectors.GetLedgerInfo(FLedgerNumber); String LedgerName = ""; Boolean IsClosed = false; if (LedgerTbl.Rows.Count > 0) { ALedgerRow LedgerRow = LedgerTbl[0]; LedgerName = LedgerRow.LedgerName; // // I want to tell the user whether the selected period is closed // (although they probably know already...) Int32 SelPeriod = ACalc.GetParameters().GetParameter("param_end_period_i").value.ToInt32(); Int32 SelYear = ACalc.GetParameters().GetParameter("param_year_i").value.ToInt32(); if ((SelYear < LedgerRow.CurrentFinancialYear) || (SelPeriod < LedgerRow.CurrentPeriod)) { IsClosed = true; } } ACalc.AddStringParameter("param_ledger_name", LedgerName); ACalc.AddParameter("param_period_closed", IsClosed); return(true); }
/// <summary> /// Adds the selected columns to the calculation. /// </summary> /// <param name="ACalc"></param> /// <param name="AReportAction"></param> private void ReadLocalDataLabel(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_label_type", "partner"); ACalc.AddParameter("param_labeluse", "Personnel"); // TODO: do we need to cater here for applications as well? // ACalc.AddParameter("param_label_type", "application"); // ACalc.AddParameter("param_labeluse", "LongTermApp,ShortTermApp"); String SelectedColumns = ""; DataTable ColumnTable = ACalc.GetParameters().ToDataTable(); foreach (DataRow Row in ColumnTable.Rows) { if ((Row["name"].ToString() == "param_calculation") && (Row["level"].ToString() == "-1") && (Row["subreport"].ToString() == "-1") && (Row["value"].ToString().Contains("eString:"))) { int ColumnIndex = Convert.ToInt32(Row["column"].ToString()); int Index = Row["value"].ToString().IndexOf("eString:"); String ColumnName = Row["value"].ToString().Substring(Index + 8); if ((ColumnName == "Partner Key") || (ColumnName == "Partner Name")) { // don't add partner key and partner name because these are not data labels continue; } if (ColumnName == "DataLabelColumn") { ColumnName = ACalc.GetParameters().Get("param_label", ColumnIndex, -1, eParameterFit.eExact).ToString(); } SelectedColumns = SelectedColumns + ColumnName + ","; double ColumnWidth = ACalc.GetParameters().Get("ColumnWidth", ColumnIndex, -1, eParameterFit.eExact).ToDouble(); ACalc.AddParameter("param_calculation", "DataLabelColumn", ColumnIndex); ACalc.AddParameter("ColumnWidth", ColumnWidth, ColumnIndex); ACalc.AddParameter("param_label", ColumnName, ColumnIndex); } } if (SelectedColumns.Length > 0) { SelectedColumns.Substring(0, SelectedColumns.Length - 1); } ACalc.AddParameter("param_labels", SelectedColumns); }
private Boolean LoadReportData(TRptCalculator ACalc) { Shared.MReporting.TParameterList pm = ACalc.GetParameters(); pm.Add("param_start_period_i", 1); ArrayList reportParam = ACalc.GetParameters().Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation")) { paramsDictionary.Add(p.name, p.value); } } DataTable ReportTable = TRemote.MReporting.WebConnectors.GetReportDataTable("Executive Summary", paramsDictionary); if (ReportTable == null) { FPetraUtilsObject.WriteToStatusBar("Report Cancelled."); return(false); } FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportTable, "Accounts"); // // My report doesn't need a ledger row - only the name of the ledger. DataTable LedgerNameTable = TDataCache.TMFinance.GetCacheableFinanceTable(TCacheableFinanceTablesEnum.LedgerNameList); DataView LedgerView = new DataView(LedgerNameTable); LedgerView.RowFilter = "LedgerNumber=" + FLedgerNumber; String LedgerName = ""; if (LedgerView.Count > 0) { LedgerName = LedgerView[0].Row["LedgerName"].ToString(); } ACalc.AddStringParameter("param_ledger_name", LedgerName); ALedgerRow Ledger = ((ALedgerTable)TDataCache.TMFinance.GetCacheableFinanceTable(TCacheableFinanceTablesEnum.LedgerDetails, FLedgerNumber))[0]; ACalc.AddStringParameter("param_currency_name", Ledger.BaseCurrency); Boolean HasData = ReportTable.Rows.Count > 0; if (!HasData) { MessageBox.Show(Catalog.GetString("No Executive Summary data found for current Ledger."), "Executive Summary"); } return(HasData); }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("param_recipientkey", txtRecipient.Text); ACalc.AddParameter("param_extract_name", txtExtract.Text); if (!dtpFromDate.Date.HasValue || !dtpToDate.Date.HasValue) { FPetraUtilsObject.AddVerificationResult(new TVerificationResult( Catalog.GetString("Please check the entry of the Start and End dates."), Catalog.GetString("Invalid Date entered."), TResultSeverity.Resv_Critical)); } else { if (dtpFromDate.Date.Value > dtpToDate.Date.Value) { FPetraUtilsObject.AddVerificationResult(new TVerificationResult( Catalog.GetString("Start Date must not be later than End Date"), Catalog.GetString("Invalid Date period."), TResultSeverity.Resv_Critical)); } } if (dtpToDate.Date.HasValue) { Int32 ToDateYear = dtpToDate.Date.Value.Year; //TODO: Calendar vs Financial Date Handling - Confirm that these should not be ledger dates, i.e. allowing for >12 periods and non-calendar period boundaries DateTime FromDateThisYear = new DateTime(ToDateYear, 1, 1); DateTime ToDatePreviousYear = new DateTime(ToDateYear - 1, 12, 31); DateTime FromDatePreviousYear = new DateTime(ToDateYear - 1, 1, 1); ACalc.AddParameter("param_from_date_this_year", FromDateThisYear); ACalc.AddParameter("param_to_date_previous_year", ToDatePreviousYear); ACalc.AddParameter("param_from_date_previous_year", FromDatePreviousYear); } int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
/// <summary> /// Checks if there is one column which needs passport details. /// </summary> /// <returns></returns> private bool IsPassportDetailUsed(TRptCalculator ACalculator) { // if one part of an address is used DataTable ColumnParameters = ACalculator.GetParameters().ToDataTable(); bool HasPassportDetail = false; foreach (DataRow Row in ColumnParameters.Rows) { String ColumnValue = Row[4].ToString(); if ((ColumnValue == "eString:Nationality") || (ColumnValue == "eString:Passport Expiry Date") || (ColumnValue == "eString:Passport Name") || (ColumnValue == "eString:Passport Number") || (ColumnValue == "eString:Passport Date of Issue") || (ColumnValue == "eString:Passport Place of Issue") || (ColumnValue == "eString:Passport Type") || (ColumnValue == "eString:Passport Date of Birth") || (ColumnValue == "eString:Passport Place of Birth") || (ColumnValue == "eString:Passport Country of Issue")) { HasPassportDetail = true; break; } } return(HasPassportDetail); }
/// <summary> /// /// </summary> /// <param name="ACalculator"></param> protected void PreviewDetailReport(TRptCalculator ACalculator) { TFrmPrintPreview printWindow; // show a print window with all kinds of output options printWindow = new TFrmPrintPreview(this, ACalculator.GetParameters().Get("currentReport").ToString(), ACalculator.GetDuration(), ACalculator.GetResults( ), ACalculator.GetParameters(), FWrapColumn, ACalculator); this.AddOwnedForm(printWindow); printWindow.Owner = this; // printWindow.SetPrintChartProcedure(GenerateChart); printWindow.ShowDialog(); // EnableDisableToolbar(true); }
// // This will be called if the Fast Reports Wrapper loaded OK. // Returns True if the data apparently loaded OK and the report should be printed. private bool LoadReportData(TRptCalculator ACalc) { ArrayList reportParam = ACalc.GetParameters().Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation") && (!paramsDictionary.ContainsKey(p.name))) { paramsDictionary.Add(p.name, p.value); } } String RootCostCentre = "[" + FLedgerNumber + "]"; paramsDictionary.Add("param_cost_centre_code", new TVariant(RootCostCentre)); DataTable ReportTable = TRemote.MReporting.WebConnectors.GetReportDataTable("SurplusDeficit", paramsDictionary); if (ReportTable == null) { FPetraUtilsObject.WriteToStatusBar("Report Cancelled."); return(false); } FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportTable, "SurplusDeficit"); String LedgerName = TRemote.MFinance.Reporting.WebConnectors.GetLedgerName(FLedgerNumber); ACalc.AddStringParameter("param_ledger_name", LedgerName); return(true); }
/// <summary> /// Checks if there is one column which needs address details. /// </summary> /// <returns></returns> private bool IsAddressDetailUsed(TRptCalculator ACalculator) { // if one part of an address is used DataTable ColumnParameters = ACalculator.GetParameters().ToDataTable(); bool HasAddressDetail = false; foreach (DataRow Row in ColumnParameters.Rows) { String ColumnValue = Row[4].ToString(); if ((ColumnValue == "eString:Address Street") || (ColumnValue == "eString:Address Post Code") || (ColumnValue == "eString:Address City") || (ColumnValue == "eString:Address State / County / Province") || (ColumnValue == "eString:Address Country") || (ColumnValue == "eString:Primary Email") || (ColumnValue == "eString:Primary Phone") || (ColumnValue == "eString:Address Line 1") || (ColumnValue == "eString:Address Line 3")) { HasAddressDetail = true; break; } } return(HasAddressDetail); }
/// <summary> /// Called from a delegate set up by me. /// Or if you're not using a reporting UI, you can call this directly, once the data and params have been set up. /// </summary> /// <param name="ACalc"></param> public void GenerateReport(TRptCalculator ACalc) { ACalc.GetParameters().Add("param_design_template", false); if (FSelectedTemplate != null) { if (FDataGetter != null) { if (!FDataGetter(ACalc)) { return; } } FFastReportType.GetMethod("LoadFromString", new Type[] { FSelectedTemplate.XmlText.GetType() }).Invoke(FfastReportInstance, new object[] { FSelectedTemplate.XmlText }); LoadReportParams(ACalc); FFastReportType.GetMethod("Show", new Type[0]).Invoke(FfastReportInstance, null); } if (FPetraUtilsObject != null) { FPetraUtilsObject.UpdateParentFormEndOfReport(); } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Total Gifts") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
// // New methods using the Fast-reports DLL: private Boolean LoadReportData(TRptCalculator ACalc) { Shared.MReporting.TParameterList pm = ACalc.GetParameters(); pm.RemoveVariable("param_start_period_i"); pm.Add("param_start_period_i", 1); pm.Add("param_current_period", uco_GeneralSettings.GetCurrentPeiod()); ArrayList reportParam = ACalc.GetParameters().Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation")) { paramsDictionary.Add(p.name, p.value); } } DataTable ReportTable = TRemote.MReporting.WebConnectors.GetReportDataTable("AFO", paramsDictionary); if (ReportTable == null) { FPetraUtilsObject.WriteToStatusBar("Report Cancelled."); return(false); } FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportTable, "Accounts"); // // My report doesn't need a ledger row - only the name of the ledger. And I need the currency formatter.. String LedgerName = TRemote.MFinance.Reporting.WebConnectors.GetLedgerName(FLedgerNumber); ACalc.AddStringParameter("param_ledger_name", LedgerName); ACalc.AddStringParameter("param_currency_formatter", "0,0.000"); ACalc.AddStringParameter("param_base_currency", uco_GeneralSettings.GetBaseCurrency()); ACalc.AddStringParameter("param_intl_currency", uco_GeneralSettings.GetInternationalCurrency()); Boolean HasData = ReportTable.Rows.Count > 0; if (!HasData) { MessageBox.Show(Catalog.GetString("No Summary Accounts found for current Ledger."), "AFO"); } return(HasData); }
private Boolean LoadReportData(TRptCalculator ACalc) { ArrayList reportParam = ACalc.GetParameters().Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation") && !paramsDictionary.ContainsKey(p.name)) { paramsDictionary.Add(p.name, p.value); } } // get data for this report DataSet ReportDataSet = TRemote.MReporting.WebConnectors.GetOneYearMonthGivingDataSet(paramsDictionary); if (TRemote.MReporting.WebConnectors.DataTableGenerationWasCancelled() || this.IsDisposed) { return(false); } // if no recipients if (ReportDataSet.Tables["Recipients"] == null) { FPetraUtilsObject.WriteToStatusBar("No recipients found for this report period."); return(false); } // register datatables with the report FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportDataSet.Tables["Recipients"], "Recipients"); FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportDataSet.Tables["Donors"], "Donors"); // // My report doesn't need a ledger row - only the name of the ledger. And I need the currency formatter.. String LedgerName = TRemote.MFinance.Reporting.WebConnectors.GetLedgerName(FLedgerNumber); ALedgerTable LedgerDetailsTable = (ALedgerTable)TDataCache.TMFinance.GetCacheableFinanceTable(TCacheableFinanceTablesEnum.LedgerDetails, FLedgerNumber); ALedgerRow Row = LedgerDetailsTable[0]; ACalc.AddStringParameter("param_ledger_name", LedgerName); String CurrencyName = (cmbCurrency.SelectedItem.ToString() == "Base") ? Row.BaseCurrency : Row.IntlCurrency; ACalc.AddStringParameter("param_currency_name", CurrencyName); ACalc.AddStringParameter("param_currency_formatter", "0,0.000"); Boolean HasData = ReportDataSet.Tables["Recipients"].Rows.Count > 0; if (!HasData) { MessageBox.Show(Catalog.GetString( "No Recipients found."), "Recipient Gift Statement"); } return(HasData); }
private Dictionary <String, TVariant> InitialiseDictionary(TRptCalculator ACalc) { Shared.MReporting.TParameterList pm = ACalc.GetParameters(); pm.Add("param_ledger_number_i", FLedgerNumber); String LedgerName = TRemote.MFinance.Reporting.WebConnectors.GetLedgerName(FLedgerNumber); ACalc.AddStringParameter("param_ledger_name", LedgerName); ACalc.AddParameter("param_currency_name", FLedgerRow.BaseCurrency); // Stewardship reports are always in Base Currency. ACalc.AddStringParameter("param_currency_formatter", "0,0.000"); ACalc.AddParameter("param_ich_number", pm.Get("param_cmbICHNumber").ToInt32()); ACalc.AddParameter("param_period", true); Int32 period = pm.Get("param_cmbReportPeriod").ToInt32(); Int32 PeriodStart = Math.Max(1, period); Int32 PeriodEnd = period; if (PeriodEnd == 0) { PeriodEnd = TFinanceControls.GetLedgerNumPeriods(FLedgerNumber); } Int32 Year = pm.Get("param_cmbYearEnding").ToInt32(); ACalc.AddParameter("param_start_period_i", PeriodStart); ACalc.AddParameter("param_end_period_i", PeriodEnd); DateTime StartDate = TRemote.MFinance.GL.WebConnectors.GetPeriodStartDate(FLedgerNumber, Year, 0, PeriodStart); DateTime EndDate = TRemote.MFinance.GL.WebConnectors.GetPeriodEndDate(FLedgerNumber, Year, 0, PeriodEnd); ACalc.AddParameter("param_real_year", StartDate.Year); ACalc.AddParameter("param_start_date", StartDate); ACalc.AddParameter("param_end_date", EndDate); ACalc.AddParameter("param_current_financial_year", FLedgerRow.CurrentFinancialYear == Year); Boolean IsClosed = (Year < FLedgerRow.CurrentFinancialYear) || (PeriodEnd < FLedgerRow.CurrentPeriod); ACalc.AddParameter("param_period_closed", IsClosed); Boolean IsCurrent = (Year == FLedgerRow.CurrentFinancialYear) && (PeriodEnd == FLedgerRow.CurrentPeriod); ACalc.AddParameter("param_period_current", IsCurrent); ACalc.AddParameter("param_year_i", Year); ArrayList reportParam = pm.Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation")) { paramsDictionary.Add(p.name, p.value); } } return(paramsDictionary); } // Initialise Dictionary
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Total Gifts") { ACalc.AddParameter("param_gift_amount_column", Counter); } } // this parameter is added incorrectly by the generated code ACalc.RemoveParameter("param_minimum_amount"); ACalc.AddParameter("param_minimum_amount", this.txtMinimumAmount.NumberValueDecimal); }
private void LoadReportParams(TRptCalculator ACalc) { // Add standard parameters for the report header ACalc.GetParameters().Add("param_requested_by", UserInfo.GUserInfo.UserID); Version ClientVersion = Assembly.GetAssembly(typeof(FastReportsWrapper)).GetName().Version; ACalc.GetParameters().Add("param_version", ClientVersion.Major.ToString() + "." + ClientVersion.Minor.ToString() + "." + ClientVersion.Build.ToString() + "." + ClientVersion.Revision.ToString()); ArrayList reportParam = ACalc.GetParameters().Elems; MethodInfo FastReport_SetParameterValue = FFastReportType.GetMethod("SetParameterValue"); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation")) { FastReport_SetParameterValue.Invoke(FfastReportInstance, new object[] { p.name, p.value.ToObject() }); } } }
// // This will be called if the Fast Reports Wrapper loaded OK. // Returns True if the data apparently loaded OK and the report should be printed. private bool LoadReportData(TRptCalculator ACalc) { Shared.MReporting.TParameterList pm = ACalc.GetParameters(); ArrayList reportParam = ACalc.GetParameters().Elems; Dictionary <String, TVariant> paramsDictionary = new Dictionary <string, TVariant>(); foreach (Shared.MReporting.TParameter p in reportParam) { if (p.name.StartsWith("param") && (p.name != "param_calculation") && !paramsDictionary.ContainsKey(p.name) ) { paramsDictionary.Add(p.name, p.value); } } DataTable ReportTable = TRemote.MReporting.WebConnectors.GetReportDataTable("DonorGiftsToField", paramsDictionary); if (ReportTable == null) { return(false); } FPetraUtilsObject.FFastReportsPlugin.RegisterData(ReportTable, "DonorGiftsToField"); // // My report doesn't need a ledger row - only the name of the ledger. And I need the currency formatter.. String LedgerName = TRemote.MFinance.Reporting.WebConnectors.GetLedgerName(FLedgerNumber); ALedgerTable LedgerDetailsTable = (ALedgerTable)TDataCache.TMFinance.GetCacheableFinanceTable(TCacheableFinanceTablesEnum.LedgerDetails); ALedgerRow Row = LedgerDetailsTable[0]; ACalc.AddStringParameter("param_ledger_name", LedgerName); String CurrencyName = (cmbCurrency.SelectedItem.ToString() == "Base") ? Row.BaseCurrency : Row.IntlCurrency; ACalc.AddStringParameter("param_currency_name", CurrencyName); ACalc.AddStringParameter("param_currency_formatter", "0,0.000"); return(true); }
private void GenerateReport() { try { FPreviewForm.Cursor = Cursors.WaitCursor; TLogging.SetStatusBarProcedure(FPetraUtilsObject.WriteToStatusBar); // calculate the report FCalculator = new TRptCalculator(); FCalculator.GetParameters().LoadFromDataTable(FDetailParameters.ToDataTable()); if (FCalculator.GenerateResultRemoteClient()) { if (TClientSettings.DebugLevel >= TClientSettings.DEBUGLEVEL_REPORTINGDATA) { FCalculator.GetParameters().Save(TClientSettings.PathLog + Path.DirectorySeparatorChar + "debugParameterReturn.xml", true); FCalculator.GetResults().WriteCSV( FCalculator.GetParameters(), TClientSettings.PathLog + Path.DirectorySeparatorChar + "debugResultReturn.csv"); } FPreviewForm.Cursor = Cursors.Default; object[] Args = new object[1]; Args[0] = FCalculator; FPreviewForm.Invoke((System.Delegate) new TPreviewDelegate(FPreviewDelegate), Args); TLogging.Log("", TLoggingType.ToStatusBar); } else { // if generateResult failed FPreviewForm.Cursor = Cursors.Default; // EnableDisableToolbar(true); } } catch (Exception e) { TLogging.Log("Exception in GenerateReport: " + e.ToString()); // EnableDisableToolbar(true); } }
private void ReadControlsManual(TRptCalculator ACalc, TReportActionEnum AReportAction) { if (txtMinAmount.NumberValueInt > txtMaxAmount.NumberValueInt) { TVerificationResult VerificationResult = new TVerificationResult( Catalog.GetString("Gift Limit wrong."), Catalog.GetString("Minimum Amount can't be greater than Maximum Amount."), TResultSeverity.Resv_Critical); FPetraUtilsObject.AddVerificationResult(VerificationResult); } ACalc.AddParameter("param_ledger_number_i", FLedgerNumber); ACalc.AddParameter("param_donorkey", txtDonor.Text); ACalc.AddParameter("param_extract_name", txtExtract.Text); //TODO: Calendar vs Financial Date Handling - Confirm that these should not be ledger dates, i.e. allowing for >12 periods and non-calendar period boundaries DateTime FromDateThisYear = new DateTime(DateTime.Today.Year, 1, 1); DateTime ToDatePreviousYear = new DateTime(DateTime.Today.Year - 1, 12, 31); DateTime FromDatePreviousYear = new DateTime(DateTime.Today.Year - 1, 1, 1); ACalc.AddParameter("param_to_date_this_year", DateTime.Today); ACalc.AddParameter("param_from_date_this_year", FromDateThisYear); ACalc.AddParameter("param_to_date_previous_year", ToDatePreviousYear); ACalc.AddParameter("param_from_date_previous_year", FromDatePreviousYear); ACalc.AddParameter("DonorAddress", ""); int MaxColumns = ACalc.GetParameters().Get("MaxDisplayColumns").ToInt(); for (int Counter = 0; Counter <= MaxColumns; ++Counter) { String ColumnName = ACalc.GetParameters().Get("param_calculation", Counter, 0).ToString(); if (ColumnName == "Gift Amount") { ACalc.AddParameter("param_gift_amount_column", Counter); } } }
/// <summary> /// Reads the selected values from the controls, /// and stores them into the parameter system of FCalculator /// /// </summary> /// <param name="AColumnParameters">List with the current columns</param> /// <param name="ACalculator"></param> /// <returns>the MaxDisplayColumns number</returns> public static System.Int32 ReadControls(ref TParameterList AColumnParameters, ref TRptCalculator ACalculator) { System.Int32 MaxDisplayColumns; MaxDisplayColumns = AColumnParameters.Get("MaxDisplayColumns").ToInt(); ACalculator.GetParameters().Add("MaxDisplayColumns", MaxDisplayColumns); for (int Counter = 0; Counter <= MaxDisplayColumns - 1; Counter += 1) { ACalculator.GetParameters().Copy(AColumnParameters, Counter, -1, eParameterFit.eExact, Counter); if (!ACalculator.GetParameters().Exists("param_ytd", Counter)) { // if param_ytd is not set for the column then add it. ACalculator.GetParameters().Add("param_ytd", new TVariant(false), Counter); } } ACalculator.SetMaxDisplayColumns(MaxDisplayColumns); return(MaxDisplayColumns); }