/// <summary> /// Adds the edit report settings. /// </summary> /// <param name="selectedSettings">The selected settings.</param> private void AddEditReportSettings(FinancialStatementReportConfiguration selectedSettings) { ReportConfigurationModalWindow reportSettingsModalWindow = new ReportConfigurationModalWindow(selectedSettings); reportSettingsModalWindow.Owner = Window.GetWindow(this); var showDialogResult = reportSettingsModalWindow.ShowDialog(); if (showDialogResult == true) { FinancialStatementReportConfiguration updatedSettings = reportSettingsModalWindow.GetFinancialStatementReportConfiguration(); ReportOptions.Current.ReportConfigurationList = ReportOptions.Current.ReportConfigurationList ?? new List <FinancialStatementReportConfiguration>(); var settingsToUpdate = ReportOptions.Current.ReportConfigurationList.FirstOrDefault(a => a.Guid == updatedSettings.Guid); if (settingsToUpdate != null) { // replace the settings with the new ones ReportOptions.Current.ReportConfigurationList.Remove(settingsToUpdate); } ReportOptions.Current.ReportConfigurationList.Add(updatedSettings); var rockConfig = RockConfig.Load(); rockConfig.ReportConfigurationListJson = ReportOptions.Current.ReportConfigurationList.ToJson(); rockConfig.Save(); BindGrid(); } }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { var rockConfig = RockConfig.Load(); List <FinancialStatementReportConfiguration> reportConfigurationList = null; try { if (rockConfig.ReportConfigurationListJson.IsNotNullOrWhiteSpace()) { reportConfigurationList = rockConfig.ReportConfigurationListJson.FromJsonOrNull <List <FinancialStatementReportConfiguration> >(); } } catch { // ignore } if (reportConfigurationList == null) { // if this is the first time the generator has run, create a default. // If they delete this default, that is OK. See https://app.asana.com/0/0/1200266899611805/f reportConfigurationList = new List <FinancialStatementReportConfiguration>(); var defaultConfiguration = new FinancialStatementReportConfiguration { DestinationFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Statements"), ExcludeOptedOutIndividuals = true, FilenamePrefix = "statement-", IncludeInternationalAddresses = false, MaxStatementsPerChapter = 500, MinimumContributionAmount = 1.00M, PreventSplittingPrimarySortValuesAcrossChapters = true, PrimarySortOrder = Client.Enums.FinancialStatementOrderBy.PostalCode, SecondarySortOrder = Client.Enums.FinancialStatementOrderBy.LastName, SplitFilesOnPrimarySortValue = true, CreatedDateTime = DateTime.Now, Guid = Guid.NewGuid() }; reportConfigurationList.Add(defaultConfiguration); rockConfig.ReportConfigurationListJson = reportConfigurationList.ToJson(); rockConfig.Save(); } ReportOptions.Current.ReportConfigurationList = reportConfigurationList; grdReportSettings.DataContext = reportConfigurationList.OrderBy(a => a.CreatedDateTime); }
/// <summary> /// Copies the base properties from a source FinancialStatementReportConfiguration object /// </summary> /// <param name="source">The source.</param> public void CopyPropertiesFrom(FinancialStatementReportConfiguration source) { this.DestinationFolder = source.DestinationFolder; this.ExcludeOptedOutIndividuals = source.ExcludeOptedOutIndividuals; this.ExcludeRecipientsThatHaveAnIncompleteAddress = source.ExcludeRecipientsThatHaveAnIncompleteAddress; this.FilenamePrefix = source.FilenamePrefix; this.IncludeInternationalAddresses = source.IncludeInternationalAddresses; this.MaxStatementsPerChapter = source.MaxStatementsPerChapter; this.MinimumContributionAmount = source.MinimumContributionAmount; this.PreventSplittingPrimarySortValuesAcrossChapters = source.PreventSplittingPrimarySortValuesAcrossChapters; this.PrimarySortOrder = source.PrimarySortOrder; this.SecondarySortOrder = source.SecondarySortOrder; this.SplitFilesOnPrimarySortValue = source.SplitFilesOnPrimarySortValue; this.CreatedDateTime = source.CreatedDateTime; this.Guid = source.Guid; }
/// <summary> /// Initializes a new instance of the <see cref="ReportConfigurationModalWindow" /> class. /// </summary> /// <param name="financialStatementReportConfiguration">The financial statement report configuration.</param> public ReportConfigurationModalWindow(FinancialStatementReportConfiguration financialStatementReportConfiguration) { InitializeComponent(); if (financialStatementReportConfiguration == null) { lblActionTitle.Content = "Add Report"; financialStatementReportConfiguration = new FinancialStatementReportConfiguration(); financialStatementReportConfiguration.CreatedDateTime = DateTime.Now; financialStatementReportConfiguration.Guid = Guid.NewGuid(); } else { lblActionTitle.Content = "Edit Report"; } cboPrimarySort.Items.Clear(); var orderByOptions = Enum.GetValues(typeof(FinancialStatementOrderBy)).OfType <FinancialStatementOrderBy>(); foreach (var orderByOption in orderByOptions) { var primarySortItem = new ComboBoxItem { Content = orderByOption.ConvertToString(true), Tag = orderByOption }; primarySortItem.IsSelected = financialStatementReportConfiguration.PrimarySortOrder == orderByOption; cboPrimarySort.Items.Add(primarySortItem); var secondarySortItem = new ComboBoxItem { Content = orderByOption.ConvertToString(true), Tag = orderByOption }; secondarySortItem.IsSelected = financialStatementReportConfiguration.SecondarySortOrder == orderByOption; cboSecondarySort.Items.Add(secondarySortItem); } tbDestinationFolder.Text = financialStatementReportConfiguration.DestinationFolder; tbFilenamePrefix.Text = financialStatementReportConfiguration.FilenamePrefix; cbSplitFilesOnPrimarySortValue.IsChecked = financialStatementReportConfiguration.SplitFilesOnPrimarySortValue; tbMaxStatementsInChapter.Text = financialStatementReportConfiguration.MaxStatementsPerChapter.ToString(); cbPreventSplittingPrimarySortValuesAcrossChapters.IsChecked = financialStatementReportConfiguration.PreventSplittingPrimarySortValuesAcrossChapters; tbMinimumContributionAmount.Text = financialStatementReportConfiguration.MinimumContributionAmount.ToString(); cbIncludeInternationalAddresses.IsChecked = financialStatementReportConfiguration.IncludeInternationalAddresses; cbDoNotIncludeIncompleteAddresses.IsChecked = financialStatementReportConfiguration.ExcludeRecipientsThatHaveAnIncompleteAddress; cbDoNotIncludeStatementsForThoseWhoHaveOptedOut.IsChecked = financialStatementReportConfiguration.ExcludeOptedOutIndividuals; FinancialStatementReportConfigurationCreateDateTime = financialStatementReportConfiguration.CreatedDateTime; FinancialStatementReportConfigurationGuid = financialStatementReportConfiguration.Guid; }
/// <summary> /// Gets the financial statement report configuration. /// </summary> /// <returns></returns> public FinancialStatementReportConfiguration GetFinancialStatementReportConfiguration() { FinancialStatementReportConfiguration financialStatementReportConfiguration = new FinancialStatementReportConfiguration(); financialStatementReportConfiguration.PrimarySortOrder = ( FinancialStatementOrderBy? )(cboPrimarySort.SelectedValue as ComboBoxItem).Tag ?? FinancialStatementOrderBy.PostalCode; financialStatementReportConfiguration.SecondarySortOrder = ( FinancialStatementOrderBy? )(cboSecondarySort.SelectedValue as ComboBoxItem).Tag ?? FinancialStatementOrderBy.LastName; financialStatementReportConfiguration.DestinationFolder = tbDestinationFolder.Text; financialStatementReportConfiguration.FilenamePrefix = tbFilenamePrefix.Text; financialStatementReportConfiguration.SplitFilesOnPrimarySortValue = cbSplitFilesOnPrimarySortValue.IsChecked ?? false; financialStatementReportConfiguration.MaxStatementsPerChapter = tbMaxStatementsInChapter.Text.AsIntegerOrNull(); financialStatementReportConfiguration.PreventSplittingPrimarySortValuesAcrossChapters = cbPreventSplittingPrimarySortValuesAcrossChapters.IsChecked ?? true; financialStatementReportConfiguration.MinimumContributionAmount = tbMinimumContributionAmount.Text.AsDecimalOrNull(); financialStatementReportConfiguration.IncludeInternationalAddresses = cbIncludeInternationalAddresses.IsChecked ?? true; financialStatementReportConfiguration.ExcludeOptedOutIndividuals = cbDoNotIncludeStatementsForThoseWhoHaveOptedOut.IsChecked ?? true; financialStatementReportConfiguration.CreatedDateTime = FinancialStatementReportConfigurationCreateDateTime ?? DateTime.Now; financialStatementReportConfiguration.Guid = FinancialStatementReportConfigurationGuid; return(financialStatementReportConfiguration); }
/// <summary> /// Initializes a new instance of the <see cref="ReportPaperStatementsSummary"/> class. /// </summary> /// <param name="completedRecipients">The completed recipients.</param> /// <param name="financialStatementReportConfiguration">The financial statement report configuration.</param> public ReportPaperStatementsSummary(List <FinancialStatementGeneratorRecipient> completedRecipients, FinancialStatementReportConfiguration financialStatementReportConfiguration) { PrimarySortName = financialStatementReportConfiguration.PrimarySortOrder.ConvertToString(true); var includedRecipients = completedRecipients.ToList(); if (financialStatementReportConfiguration.MinimumContributionAmount.HasValue) { var excludedRecipients = includedRecipients.Where(a => a.ContributionTotal < financialStatementReportConfiguration.MinimumContributionAmount.Value); StatementsExcludedMinAmountSummary = $"{excludedRecipients.Count()} | {excludedRecipients.Sum( x => x.ContributionTotal ?? 0.00M ).ToString( "C" ) }"; includedRecipients = includedRecipients.Where(a => a.ContributionTotal >= financialStatementReportConfiguration.MinimumContributionAmount.Value).ToList(); StatementsExcludedMinAmount = financialStatementReportConfiguration.MinimumContributionAmount; StatementsExcludedMinAmountVisibility = Visibility.Visible; } if (financialStatementReportConfiguration.IncludeInternationalAddresses == false) { var excludedRecipients = includedRecipients.Where(a => a.IsInternationalAddress != false); StatementsExcludedInternationalSummary = $"{excludedRecipients.Count()} | {excludedRecipients.Sum( x => x.ContributionTotal ?? 0.00M ).ToString( "C" ) }"; includedRecipients = includedRecipients.Where(a => a.IsInternationalAddress == false).ToList(); StatementsExcludedInternationalVisibility = Visibility.Visible; } if (financialStatementReportConfiguration.ExcludeRecipientsThatHaveAnIncompleteAddress) { var excludedRecipients = includedRecipients.Where(a => a.HasValidMailingAddress == false); StatementsExcludedIncompleteAddressSummary = $"{excludedRecipients.Count()} | {excludedRecipients.Sum( x => x.ContributionTotal ?? 0.00M ).ToString( "C" ) }"; includedRecipients = includedRecipients.Where(a => a.HasValidMailingAddress == true).ToList(); StatementsExcludedIncompleteAddressVisibility = Visibility.Visible; } if (financialStatementReportConfiguration.ExcludeOptedOutIndividuals) { var excludedRecipients = includedRecipients.Where(a => a.OptedOut != false); StatementExcludedOptedOutSummary = $"{excludedRecipients.Count()} | {excludedRecipients.Sum( x => x.ContributionTotal ?? 0.00M ).ToString( "C" ) }"; StatementsExcludedOptedOutVisibility = Visibility.Visible; includedRecipients = includedRecipients.Where(a => a.OptedOut == false).ToList(); } NumberOfStatements = includedRecipients.Count(); TotalAmount = includedRecipients.Sum(a => a.ContributionTotal ?? 0.00M); }