[#43] PaymentVariantWindow: Do not use Context from ContextWindow any more

This commit is contained in:
2024-03-15 17:20:07 +01:00
parent d9f9ab2391
commit 711bab5d33
2 changed files with 59 additions and 34 deletions

View File

@ -56,6 +56,7 @@ namespace Elwig.Helpers {
public DbSet<DeliveryPartModifier> DeliveryPartModifiers { get; private set; } public DbSet<DeliveryPartModifier> DeliveryPartModifiers { get; private set; }
public DbSet<PaymentVar> PaymentVariants { get; private set; } public DbSet<PaymentVar> PaymentVariants { get; private set; }
public DbSet<PaymentMember> MemberPayments { get; private set; } public DbSet<PaymentMember> MemberPayments { get; private set; }
public DbSet<PaymentDeliveryPart> PaymentDeliveryParts { get; private set; }
public DbSet<Credit> Credits { get; private set; } public DbSet<Credit> Credits { get; private set; }
public DbSet<OverUnderDeliveryRow> OverUnderDeliveryRows { get; private set; } public DbSet<OverUnderDeliveryRow> OverUnderDeliveryRows { get; private set; }

View File

@ -27,7 +27,9 @@ namespace Elwig.Windows {
public PaymentVariantsWindow(int year) { public PaymentVariantsWindow(int year) {
InitializeComponent(); InitializeComponent();
Year = year; Year = year;
SeasonLocked = Context.Seasons.Find(Year + 1) != null; using (var ctx = new AppDbContext()) {
SeasonLocked = ctx.Seasons.Find(Year + 1) != null;
}
Title = $"Auszahlungsvarianten - Lese {Year} - Elwig"; Title = $"Auszahlungsvarianten - Lese {Year} - Elwig";
if (!App.Config.Debug) { if (!App.Config.Debug) {
DataInput.Visibility = Visibility.Hidden; DataInput.Visibility = Visibility.Hidden;
@ -35,7 +37,12 @@ namespace Elwig.Windows {
} }
protected override async Task OnRenewContext() { protected override async Task OnRenewContext() {
ControlUtils.RenewItemsSource(PaymentVariantList, await Context.PaymentVariants.Where(v => v.Year == Year).OrderBy(v => v.AvNr).ToListAsync(), v => (v as PaymentVar)?.AvNr); using var ctx = new AppDbContext();
ControlUtils.RenewItemsSource(PaymentVariantList, await ctx.PaymentVariants
.Where(v => v.Year == Year)
.OrderBy(v => v.AvNr)
.Include(v => v.Season.Currency)
.ToListAsync(), v => (v as PaymentVar)?.AvNr);
Update(); Update();
} }
@ -151,17 +158,25 @@ namespace Elwig.Windows {
private void UpdateSums() { private void UpdateSums() {
if (PaymentVariantList.SelectedItem is PaymentVar v) { if (PaymentVariantList.SelectedItem is PaymentVar v) {
using var ctx = new AppDbContext();
var sym = v.Season.Currency.Symbol; var sym = v.Season.Currency.Symbol;
ModifierSum.Text = $"{v.DeliveryPartPayments.Sum(p => p.Amount - p.NetAmount):N2} {sym}"; var modSum = ctx.PaymentDeliveryParts
TotalSum.Text = $"{v.MemberPayments.Sum(p => p.Amount):N2} {sym}"; .Where(p => p.Year == v.Year && p.AvNr == v.AvNr)
if (v.Credits.Count == 0) { .Sum(p => p.AmountValue - p.NetAmountValue);
ModifierSum.Text = $"{v.Season.DecFromDb(modSum):N2} {sym}";
var totalSum = ctx.MemberPayments
.Where(p => p.Year == v.Year && p.AvNr == v.AvNr)
.Sum(p => p.AmountValue);
TotalSum.Text = $"{v.Season.DecFromDb(totalSum):N2} {sym}";
var credits = ctx.Credits.Where(c => c.Year == v.Year && c.AvNr == v.AvNr);
if (!credits.Any()) {
VatSum.Text = $"- {sym}"; VatSum.Text = $"- {sym}";
DeductionSum.Text = $"- {sym}"; DeductionSum.Text = $"- {sym}";
PaymentSum.Text = $"- {sym}"; PaymentSum.Text = $"- {sym}";
} else { } else {
VatSum.Text = $"{v.Credits.Sum(c => c.VatAmount):N2} {sym}"; VatSum.Text = $"{v.Season.DecFromDb(credits.Sum(c => c.VatAmountValue)):N2} {sym}";
DeductionSum.Text = $"{-v.Credits.Sum(c => c.Modifiers ?? 0):N2} {sym}"; DeductionSum.Text = $"{-v.Season.DecFromDb(credits.Sum(c => c.ModifiersValue ?? 0)):N2} {sym}";
PaymentSum.Text = $"{v.Credits.Sum(c => c.Amount):N2} {sym}"; PaymentSum.Text = $"{v.Season.DecFromDb(credits.Sum(c => c.AmountValue)):N2} {sym}";
} }
} else { } else {
ModifierSum.Text = "-"; ModifierSum.Text = "-";
@ -178,17 +193,18 @@ namespace Elwig.Windows {
private async void AddButton_Click(object sender, RoutedEventArgs evt) { private async void AddButton_Click(object sender, RoutedEventArgs evt) {
try { try {
PaymentVar v = Context.CreateProxy<PaymentVar>(); using var ctx = new AppDbContext();
var v = new PaymentVar {
Year = Year,
AvNr = await ctx.NextAvNr(Year),
Name = "Neue Auszahlungsvariante",
TestVariant = true,
DateString = $"{DateTime.Today:yyyy-MM-dd}",
Data = "{\"mode\": \"elwig\", \"version\": 1, \"payment\": {}, \"curves\": []}",
};
v.Year = Year; ctx.Add(v);
v.AvNr = await Context.NextAvNr(Year); await ctx.SaveChangesAsync();
v.Name = "Neue Auszahlungsvariante";
v.TestVariant = true;
v.DateString = $"{DateTime.Today:yyyy-MM-dd}";
v.Data = "{\"mode\": \"elwig\", \"version\": 1, \"payment\": {}, \"curves\": []}";
await Context.AddAsync(v);
await Context.SaveChangesAsync();
await App.HintContextChange(); await App.HintContextChange();
ControlUtils.SelectListBoxItem(PaymentVariantList, v, v => (v as PaymentVar)?.AvNr); ControlUtils.SelectListBoxItem(PaymentVariantList, v, v => (v as PaymentVar)?.AvNr);
@ -202,17 +218,18 @@ namespace Elwig.Windows {
private async void CopyButton_Click(object sender, RoutedEventArgs evt) { private async void CopyButton_Click(object sender, RoutedEventArgs evt) {
if (PaymentVariantList.SelectedItem is not PaymentVar orig) return; if (PaymentVariantList.SelectedItem is not PaymentVar orig) return;
try { try {
PaymentVar n = Context.CreateProxy<PaymentVar>(); using var ctx = new AppDbContext();
var n = new PaymentVar {
Year = orig.Year,
AvNr = await ctx.NextAvNr(Year),
Name = $"{orig.Name} (Kopie)",
TestVariant = true,
DateString = $"{DateTime.Today:yyyy-MM-dd}",
Data = orig.Data,
};
n.Year = orig.Year; ctx.Add(n);
n.AvNr = await Context.NextAvNr(Year); await ctx.SaveChangesAsync();
n.Name = $"{orig.Name} (Kopie)";
n.TestVariant = true;
n.DateString = $"{DateTime.Today:yyyy-MM-dd}";
n.Data = orig.Data;
await Context.AddAsync(n);
await Context.SaveChangesAsync();
await App.HintContextChange(); await App.HintContextChange();
ControlUtils.SelectListBoxItem(PaymentVariantList, n, v => (v as PaymentVar)?.AvNr); ControlUtils.SelectListBoxItem(PaymentVariantList, n, v => (v as PaymentVar)?.AvNr);
@ -226,8 +243,9 @@ namespace Elwig.Windows {
private async void DeleteButton_Click(object sender, RoutedEventArgs evt) { private async void DeleteButton_Click(object sender, RoutedEventArgs evt) {
if (PaymentVariantList.SelectedItem is not PaymentVar v || !v.TestVariant) return; if (PaymentVariantList.SelectedItem is not PaymentVar v || !v.TestVariant) return;
try { try {
Context.Remove(v); using var ctx = new AppDbContext();
await Context.SaveChangesAsync(); ctx.Remove(v);
await ctx.SaveChangesAsync();
await App.HintContextChange(); await App.HintContextChange();
} catch (Exception exc) { } catch (Exception exc) {
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
@ -261,7 +279,8 @@ namespace Elwig.Windows {
private async void MailButton_Click(object sender, RoutedEventArgs evt) { private async void MailButton_Click(object sender, RoutedEventArgs evt) {
if (PaymentVariantList.SelectedItem is not PaymentVar pv) if (PaymentVariantList.SelectedItem is not PaymentVar pv)
return; return;
var vars = await Context.PaymentVariants using var ctx = new AppDbContext();
var vars = await ctx.PaymentVariants
.Where(v => pv.Year == v.Year) .Where(v => pv.Year == v.Year)
.OrderBy(v => v.AvNr) .OrderBy(v => v.AvNr)
.Select(v => v.AvNr) .Select(v => v.AvNr)
@ -353,7 +372,8 @@ namespace Elwig.Windows {
TransactionButton.IsEnabled = false; TransactionButton.IsEnabled = false;
Mouse.OverrideCursor = Cursors.AppStarting; Mouse.OverrideCursor = Cursors.AppStarting;
try { try {
var tbl = await CreditNoteData.ForPaymentVariant(Context, v.Year, v.AvNr); using var ctx = new AppDbContext();
var tbl = await CreditNoteData.ForPaymentVariant(ctx, v.Year, v.AvNr);
using var ods = new OdsFile(d.FileName); using var ods = new OdsFile(d.FileName);
await ods.AddTable(tbl); await ods.AddTable(tbl);
} catch (Exception exc) { } catch (Exception exc) {
@ -380,8 +400,12 @@ namespace Elwig.Windows {
d.GrossWeightModifier = modVal < 0 ? modVal / 100.0 : 0; d.GrossWeightModifier = modVal < 0 ? modVal / 100.0 : 0;
WeightModifierChanged = false; WeightModifierChanged = false;
v.Data = JsonSerializer.Serialize(d.Data); v.Data = JsonSerializer.Serialize(d.Data);
Context.Update(v);
await Context.SaveChangesAsync(); using (var ctx = new AppDbContext()) {
ctx.Update(v);
await ctx.SaveChangesAsync();
}
await App.HintContextChange(); await App.HintContextChange();
CommentInput_TextChanged(null, null); CommentInput_TextChanged(null, null);
ConsiderModifiersInput_Changed(null, null); ConsiderModifiersInput_Changed(null, null);