[#15] PaymentVariantsWindow: Use MailWindow

This commit is contained in:
2024-02-29 11:32:38 +01:00
parent 624c9a6b34
commit 20772d09ae
3 changed files with 26 additions and 68 deletions

View File

@ -564,5 +564,15 @@ namespace Elwig.Windows {
SelectedDocs.Add(new(DocType.DeliveryConfirmation, s, ((int)Year!, DocumentNonDeliverersInput.IsChecked == true)));
SelectedDocumentsList.SelectedIndex = SelectedDocs.Count - 1;
}
public void AddCreditNote(int index) {
AvaiableDocumentsList.SelectedIndex = 2 + index;
if (AvaiableDocumentsList.SelectedItem is not string s || SelectedDocs.Any(d => d.Type == DocType.CreditNote))
return;
var name = s.Split(" ")[^1];
var pv = Context.PaymentVariants.Single(v => v.Year == Year && v.Name == name)!;
SelectedDocs.Add(new(DocType.CreditNote, s, (pv.Year, pv.AvNr)));
SelectedDocumentsList.SelectedIndex = SelectedDocs.Count - 1;
}
}
}

View File

@ -166,15 +166,9 @@
<Button x:Name="TransactionButton" Content="Buchungsliste" FontSize="14" Width="180" Margin="10,42,10,10" Height="27" IsEnabled="False"
Click="TransactionButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Left"/>
<ProgressBar x:Name="ProgressBar" Margin="10,10,10,74" Height="27" Width="180"
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
<Button x:Name="ShowButton" Content="Vorschau" FontSize="14" Width="180" Margin="10,10,10,42" Height="27" Tag="Print" IsEnabled="False"
Click="ShowButton_Click"
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
<Button x:Name="PrintButton" Content="Drucken" FontSize="14" Width="180" Margin="10,10,10,10" Height="27" Tag="Print" IsEnabled="False"
Click="PrintButton_Click"
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
<Button x:Name="MailButton" Content="Traubengutschriften" FontSize="14" Width="180" Margin="10,74,10,10" Height="27" Tag="Print" IsEnabled="False"
Click="MailButton_Click"
VerticalAlignment="Top" HorizontalAlignment="Left"/>
</Grid>
</GroupBox>

View File

@ -1,9 +1,7 @@
using Elwig.Documents;
using Elwig.Helpers;
using Elwig.Helpers;
using Elwig.Models.Dtos;
using Elwig.Models.Entities;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System;
using System.Linq;
using System.Threading.Tasks;
@ -54,8 +52,7 @@ namespace Elwig.Windows {
EditButton.Content = locked ? "Ansehen" : "Bearbeiten";
EditButton.IsEnabled = true;
SaveButton.IsEnabled = !locked;
ShowButton.IsEnabled = true;
PrintButton.IsEnabled = true;
MailButton.IsEnabled = true;
ExportButton.IsEnabled = locked;
TransactionButton.IsEnabled = locked;
@ -99,8 +96,7 @@ namespace Elwig.Windows {
RevertButton.Visibility = Visibility.Hidden;
Arrow3.Content = "\xF0AF";
DeleteButton.IsEnabled = false;
ShowButton.IsEnabled = false;
PrintButton.IsEnabled = false;
MailButton.IsEnabled = false;
ExportButton.IsEnabled = false;
TransactionButton.IsEnabled = false;
@ -249,12 +245,16 @@ namespace Elwig.Windows {
App.FocusChartWindow(v.Year, v.AvNr);
}
private async void ShowButton_Click(object sender, RoutedEventArgs evt) {
await Generate(1);
}
private async void PrintButton_Click(object sender, RoutedEventArgs evt) {
await Generate(2);
private async void MailButton_Click(object sender, RoutedEventArgs evt) {
if (PaymentVariantList.SelectedItem is not PaymentVar pv)
return;
var vars = await Context.PaymentVariants
.Where(v => pv.Year == v.Year && !v.TestVariant)
.OrderBy(v => v.AvNr)
.Select(v => v.AvNr)
.ToArrayAsync();
var w = App.FocusMailWindow(pv.Year);
w.AddCreditNote(Array.IndexOf(vars, pv.AvNr));
}
private async void CommitButton_Click(object sender, RoutedEventArgs evt) {
@ -511,51 +511,5 @@ namespace Elwig.Windows {
}
UpdateSaveButton();
}
private async Task Generate(int mode) {
if (PaymentVariantList.SelectedItem is not PaymentVar v)
return;
Mouse.OverrideCursor = Cursors.AppStarting;
var members = Context.Members.FromSqlRaw($"""
SELECT m.*
FROM member m
INNER JOIN delivery d ON d.mgnr = m.mgnr
WHERE d.year = {Year}
GROUP BY m.mgnr
""");
members = members.OrderBy(m => m.MgNr);
IEnumerable<Member> list = await members.ToListAsync();
var data = await CreditNoteDeliveryData.ForPaymentVariant(Context.CreditNoteDeliveryRows, Context.Seasons, v.Year, v.AvNr);
var payments = await Context.MemberPayments.Where(p => p.Year == v.Year && p.AvNr == v.AvNr).ToDictionaryAsync(c => c.MgNr);
await Context.GetMemberAreaCommitmentBuckets(Year, 0);
using var doc = Document.Merge(list.Select(m =>
new CreditNote(
Context,
payments[m.MgNr],
data[m.MgNr],
BillingData?.ConsiderContractPenalties ?? false,
BillingData?.ConsiderTotalPenalty ?? false,
BillingData?.ConsiderAutoBusinessShares ?? false,
Context.GetMemberUnderDelivery(Year, m.MgNr).GetAwaiter().GetResult()
)
));
await doc.Generate(new Progress<double>(v => {
ProgressBar.Value = v;
}));
Mouse.OverrideCursor = null;
if (mode < 2) {
doc.Show();
return;
}
if (App.Config.Debug) {
doc.Show();
} else {
await doc.Print();
}
}
}
}