[#32] PaymentVariantsWindow: Add export options for Summary
This commit is contained in:
@ -56,15 +56,22 @@
|
|||||||
|
|
||||||
<Menu Grid.ColumnSpan="2" BorderThickness="0,0,0,1" BorderBrush="LightGray" Background="White">
|
<Menu Grid.ColumnSpan="2" BorderThickness="0,0,0,1" BorderBrush="LightGray" Background="White">
|
||||||
<MenuItem Header="Variantendaten">
|
<MenuItem Header="Variantendaten">
|
||||||
<!-- TODO -->
|
<MenuItem x:Name="Menu_SummaryShow" Header="...anzeigen (PDF)" IsEnabled="False"
|
||||||
|
Click="Menu_SummaryShow_Click" InputGestureText="Strg+P"/>
|
||||||
|
<MenuItem x:Name="Menu_SummarySave" Header="...speichern... (PDF)" IsEnabled="False"
|
||||||
|
Click="Menu_SummarySave_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_SummaryExport" Header="...speichern... (Excel)" IsEnabled="False"
|
||||||
|
Click="Menu_SummaryExport_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_SummaryPrint" Header="...drucken" IsEnabled="False"
|
||||||
|
Click="Menu_SummaryPrint_Click" InputGestureText="Strg+Shift+P"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="Buchungsliste">
|
<MenuItem Header="Buchungsliste">
|
||||||
<MenuItem x:Name="Menu_ExportSave" Header="...speichern... (Excel)" IsEnabled="False"
|
<MenuItem x:Name="Menu_ExportSave" Header="...speichern... (Excel)" IsEnabled="False"
|
||||||
Click="Menu_ExportSave_Click"/>
|
Click="Menu_ExportSave_Click" InputGestureText="Strg+L"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="Überweisungsdaten">
|
<MenuItem Header="Überweisungsdaten">
|
||||||
<MenuItem x:Name="Menu_EbicsSave" Header="...exportieren... (EBICS)" IsEnabled="False"
|
<MenuItem x:Name="Menu_EbicsSave" Header="...exportieren... (EBICS)" IsEnabled="False"
|
||||||
Click="Menu_EbicsSave_Click"/>
|
Click="Menu_EbicsSave_Click" InputGestureText="Strg+Ü"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
|
|
||||||
@ -189,7 +196,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Button x:Name="MailButton" Content="Traubengutschriften"
|
<Button x:Name="MailButton" Content="Traubengutschriften"
|
||||||
FontSize="14" Width="180" Margin="10,10,10,10" Height="27" IsEnabled="False"
|
FontSize="14" Width="160" Margin="10,10,10,10" Height="27" IsEnabled="False"
|
||||||
Click="MailButton_Click"
|
Click="MailButton_Click"
|
||||||
VerticalAlignment="Bottom" HorizontalAlignment="Right" Grid.Column="1"/>
|
VerticalAlignment="Bottom" HorizontalAlignment="Right" Grid.Column="1"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -12,6 +12,7 @@ using Elwig.Helpers.Billing;
|
|||||||
using Elwig.Helpers.Export;
|
using Elwig.Helpers.Export;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using Elwig.Documents;
|
||||||
|
|
||||||
namespace Elwig.Windows {
|
namespace Elwig.Windows {
|
||||||
public partial class PaymentVariantsWindow : ContextWindow {
|
public partial class PaymentVariantsWindow : ContextWindow {
|
||||||
@ -24,8 +25,17 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private static readonly JsonSerializerOptions JsonOpt = new() { WriteIndented = true };
|
private static readonly JsonSerializerOptions JsonOpt = new() { WriteIndented = true };
|
||||||
|
|
||||||
|
private readonly RoutedCommand CtrlL = new("CtrlL", typeof(MemberAdminWindow), [new KeyGesture(Key.L, ModifierKeys.Control)]);
|
||||||
|
private readonly RoutedCommand CtrlP = new("CtrlP", typeof(MemberAdminWindow), [new KeyGesture(Key.P, ModifierKeys.Control)]);
|
||||||
|
private readonly RoutedCommand CtrlÜ = new("CtrlÜ", typeof(MemberAdminWindow), [new KeyGesture(Key.Oem1, ModifierKeys.Control)]);
|
||||||
|
private readonly RoutedCommand CtrlShiftP = new("CtrlShiftP", typeof(MemberAdminWindow), [new KeyGesture(Key.P, ModifierKeys.Control | ModifierKeys.Shift)]);
|
||||||
|
|
||||||
public PaymentVariantsWindow(int year) {
|
public PaymentVariantsWindow(int year) {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
CommandBindings.Add(new CommandBinding(CtrlL, Menu_ExportSave_Click));
|
||||||
|
CommandBindings.Add(new CommandBinding(CtrlP, Menu_SummaryShow_Click));
|
||||||
|
CommandBindings.Add(new CommandBinding(CtrlÜ, Menu_EbicsSave_Click));
|
||||||
|
CommandBindings.Add(new CommandBinding(CtrlShiftP, Menu_SummaryPrint_Click));
|
||||||
Year = year;
|
Year = year;
|
||||||
using (var ctx = new AppDbContext()) {
|
using (var ctx = new AppDbContext()) {
|
||||||
SeasonLocked = ctx.Seasons.Find(Year + 1) != null;
|
SeasonLocked = ctx.Seasons.Find(Year + 1) != null;
|
||||||
@ -62,6 +72,10 @@ namespace Elwig.Windows {
|
|||||||
MailButton.IsEnabled = true;
|
MailButton.IsEnabled = true;
|
||||||
Menu_ExportSave.IsEnabled = locked;
|
Menu_ExportSave.IsEnabled = locked;
|
||||||
Menu_EbicsSave.IsEnabled = locked;
|
Menu_EbicsSave.IsEnabled = locked;
|
||||||
|
Menu_SummaryExport.IsEnabled = true;
|
||||||
|
Menu_SummaryShow.IsEnabled = true;
|
||||||
|
Menu_SummarySave.IsEnabled = true;
|
||||||
|
Menu_SummaryPrint.IsEnabled = true;
|
||||||
|
|
||||||
NameInput.Text = v.Name;
|
NameInput.Text = v.Name;
|
||||||
NameInput.IsReadOnly = false;
|
NameInput.IsReadOnly = false;
|
||||||
@ -115,6 +129,10 @@ namespace Elwig.Windows {
|
|||||||
MailButton.IsEnabled = false;
|
MailButton.IsEnabled = false;
|
||||||
Menu_ExportSave.IsEnabled = false;
|
Menu_ExportSave.IsEnabled = false;
|
||||||
Menu_EbicsSave.IsEnabled = false;
|
Menu_EbicsSave.IsEnabled = false;
|
||||||
|
Menu_SummaryExport.IsEnabled = false;
|
||||||
|
Menu_SummaryShow.IsEnabled = false;
|
||||||
|
Menu_SummarySave.IsEnabled = false;
|
||||||
|
Menu_SummaryPrint.IsEnabled = false;
|
||||||
|
|
||||||
BillingData = null;
|
BillingData = null;
|
||||||
NameInput.Text = "";
|
NameInput.Text = "";
|
||||||
@ -289,6 +307,60 @@ namespace Elwig.Windows {
|
|||||||
w.AddCreditNote(Array.IndexOf(vars, pv.AvNr));
|
w.AddCreditNote(Array.IndexOf(vars, pv.AvNr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void Menu_SummaryExport_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||||
|
return;
|
||||||
|
var d = new SaveFileDialog() {
|
||||||
|
FileName = $"Variantendaten-{v.Name.Trim().Replace(' ', '-')}.ods",
|
||||||
|
DefaultExt = "ods",
|
||||||
|
Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
|
||||||
|
Title = $"Variantendaten {v.Name} speichern unter - Elwig"
|
||||||
|
};
|
||||||
|
if (d.ShowDialog() == false)
|
||||||
|
return;
|
||||||
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
try {
|
||||||
|
using var ctx = new AppDbContext();
|
||||||
|
var data = await PaymentVariantSummaryData.ForPaymentVariant(v, ctx.PaymentVariantSummaryRows);
|
||||||
|
using var ods = new OdsFile(d.FileName);
|
||||||
|
await ods.AddTable(data);
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Menu_SummaryShow_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||||
|
return;
|
||||||
|
await GenerateSummary(v, ExportMode.Show);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Menu_SummarySave_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||||
|
return;
|
||||||
|
await GenerateSummary(v, ExportMode.SavePdf);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Menu_SummaryPrint_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||||
|
return;
|
||||||
|
await GenerateSummary(v, ExportMode.Print);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static async Task GenerateSummary(PaymentVar v, ExportMode mode) {
|
||||||
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
|
try {
|
||||||
|
using var ctx = new AppDbContext();
|
||||||
|
var data = await PaymentVariantSummaryData.ForPaymentVariant(v, ctx.PaymentVariantSummaryRows);
|
||||||
|
using var doc = new PaymentVariantSummary(v, data);
|
||||||
|
await Utils.ExportDocument(doc, mode);
|
||||||
|
} catch (Exception exc) {
|
||||||
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
|
}
|
||||||
|
|
||||||
private async void CommitButton_Click(object sender, RoutedEventArgs evt) {
|
private async void CommitButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||||
return;
|
return;
|
||||||
|
Reference in New Issue
Block a user