[#57] PaymentVariantsWindow: Use Task.Run()
All checks were successful
Test / Run tests (push) Successful in 1m49s
All checks were successful
Test / Run tests (push) Successful in 1m49s
This commit is contained in:
@ -189,7 +189,30 @@ namespace Elwig.Services {
|
||||
}
|
||||
|
||||
public static async Task GenerateSummary(PaymentVar v, ExportMode mode) {
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
if (mode == ExportMode.SaveList) {
|
||||
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.Wait;
|
||||
await Task.Run(async () => {
|
||||
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;
|
||||
} else {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
var data = await PaymentVariantSummaryData.ForPaymentVariant(v, ctx.PaymentVariantSummaryRows);
|
||||
@ -198,8 +221,10 @@ namespace Elwig.Services {
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task GenerateEbics(int year, int avnr) {
|
||||
using var ctx = new AppDbContext();
|
||||
@ -225,13 +250,15 @@ namespace Elwig.Services {
|
||||
Title = $"Überweisungsdaten speichern unter - Elwig",
|
||||
};
|
||||
if (d.ShowDialog() == true) {
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
try {
|
||||
using var e = new Ebics(v, d.FileName, App.Client.ExportEbicsVersion, (Ebics.AddressMode)App.Client.ExportEbicsAddress);
|
||||
await e.ExportAsync(Transaction.FromPaymentVariant(v));
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
}
|
||||
@ -244,7 +271,8 @@ namespace Elwig.Services {
|
||||
Title = $"Buchungsliste speichern unter - Elwig"
|
||||
};
|
||||
if (d.ShowDialog() == true) {
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
var tbl = await CreditNoteData.ForPaymentVariant(ctx, year, avnr);
|
||||
@ -253,14 +281,16 @@ namespace Elwig.Services {
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
});
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task<PaymentVar> CreatePaymentVariant(int year) {
|
||||
PaymentVar? v;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
v = new PaymentVar {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
var v = await Task.Run(async () => {
|
||||
using var ctx = new AppDbContext();
|
||||
var v = new PaymentVar {
|
||||
Year = year,
|
||||
AvNr = await ctx.NextAvNr(year),
|
||||
Name = "Neue Auszahlungsvariante",
|
||||
@ -270,15 +300,17 @@ namespace Elwig.Services {
|
||||
};
|
||||
ctx.Add(v);
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
return v;
|
||||
});
|
||||
App.HintContextChange();
|
||||
Mouse.OverrideCursor = null;
|
||||
return v;
|
||||
}
|
||||
|
||||
public static async Task<PaymentVar> Duplicate(this PaymentVar orig) {
|
||||
PaymentVar? n;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
n = new PaymentVar {
|
||||
var n = await Task.Run(async () => {
|
||||
using var ctx = new AppDbContext();
|
||||
var n = new PaymentVar {
|
||||
Year = orig.Year,
|
||||
AvNr = await ctx.NextAvNr(orig.Year),
|
||||
Name = $"{orig.Name} (Kopie)",
|
||||
@ -286,10 +318,10 @@ namespace Elwig.Services {
|
||||
DateString = $"{DateTime.Today:yyyy-MM-dd}",
|
||||
Data = orig.Data,
|
||||
};
|
||||
|
||||
ctx.Add(n);
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
return n;
|
||||
});
|
||||
App.HintContextChange();
|
||||
return n;
|
||||
}
|
||||
@ -297,7 +329,7 @@ namespace Elwig.Services {
|
||||
public static async Task<(int, int)> UpdatePaymentVariant(this PaymentVariantsViewModel vm, int? oldYear, int? oldAvNr) {
|
||||
var year = oldYear ?? Utils.CurrentYear;
|
||||
int avnr = 0;
|
||||
|
||||
await Task.Run(async () => {
|
||||
var d = App.Config.Debug ? BillingData.FromJson(vm.Data ?? "{}") : vm.BillingData!;
|
||||
d.ConsiderDelieryModifiers = vm.ConsiderModifiers;
|
||||
d.ConsiderContractPenalties = vm.ConsiderPenalties;
|
||||
@ -308,7 +340,7 @@ namespace Elwig.Services {
|
||||
d.NetWeightModifier = modVal > 0 ? modVal / 100.0 : 0;
|
||||
d.GrossWeightModifier = modVal < 0 ? modVal / 100.0 : 0;
|
||||
|
||||
using (var ctx = new AppDbContext()) {
|
||||
using var ctx = new AppDbContext();
|
||||
var v = new PaymentVar {
|
||||
Year = year,
|
||||
AvNr = oldAvNr ?? await ctx.NextAvNr(year),
|
||||
@ -323,24 +355,44 @@ namespace Elwig.Services {
|
||||
avnr = v.AvNr;
|
||||
ctx.Update(v);
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
});
|
||||
vm.WeightModifierChanged = false;
|
||||
App.HintContextChange();
|
||||
return (year, avnr);
|
||||
}
|
||||
|
||||
public static async Task DeletePaymentVariant(int year, int avnr) {
|
||||
using (var ctx = new AppDbContext()) {
|
||||
await Task.Run(async () => {
|
||||
using var ctx = new AppDbContext();
|
||||
var v = (await ctx.PaymentVariants.FindAsync(year, avnr))!;
|
||||
ctx.Remove(v);
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
});
|
||||
App.HintContextChange();
|
||||
}
|
||||
|
||||
public static async Task Calculate(int year, int avnr) {
|
||||
await Task.Run(async () => {
|
||||
var b = new BillingVariant(year, avnr);
|
||||
await b.Calculate();
|
||||
});
|
||||
App.HintContextChange();
|
||||
}
|
||||
|
||||
public static async Task Commit(int year, int avnr) {
|
||||
await Task.Run(async () => {
|
||||
var b = new BillingVariant(year, avnr);
|
||||
await b.Commit();
|
||||
});
|
||||
App.HintContextChange();
|
||||
}
|
||||
|
||||
public static async Task Revert(int year, int avnr) {
|
||||
await Task.Run(async () => {
|
||||
var b = new BillingVariant(year, avnr);
|
||||
await b.Revert();
|
||||
});
|
||||
App.HintContextChange();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -98,7 +98,9 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
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;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
try {
|
||||
PaymentVar n = await orig.Duplicate();
|
||||
ControlUtils.SelectItem(PaymentVariantList, n);
|
||||
@ -107,10 +109,13 @@ namespace Elwig.Windows {
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Auszahlungsvariante kopieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
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;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
try {
|
||||
await PaymentVariantService.DeletePaymentVariant(v.Year, v.AvNr);
|
||||
} catch (Exception exc) {
|
||||
@ -118,19 +123,19 @@ namespace Elwig.Windows {
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Auszahlungsvariante löschen", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
private async void CalculateButton_Click(object sender, RoutedEventArgs evt) {
|
||||
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||
return;
|
||||
ViewModel.CalculateIsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
try {
|
||||
await PaymentVariantService.Calculate(v.Year, v.AvNr);
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Berechnungsfehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
App.HintContextChange();
|
||||
Mouse.OverrideCursor = null;
|
||||
ViewModel.CalculateIsEnabled = true;
|
||||
}
|
||||
@ -161,24 +166,7 @@ namespace Elwig.Windows {
|
||||
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;
|
||||
await PaymentVariantService.GenerateSummary(v, ExportMode.SaveList);
|
||||
}
|
||||
|
||||
private async void Menu_SummaryShow_Click(object sender, RoutedEventArgs evt) {
|
||||
@ -203,16 +191,14 @@ namespace Elwig.Windows {
|
||||
if (PaymentVariantList.SelectedItem is not PaymentVar v)
|
||||
return;
|
||||
ViewModel.CommitIsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
try {
|
||||
var b = new BillingVariant(v.Year, v.AvNr);
|
||||
await b.Commit();
|
||||
await PaymentVariantService.Commit(v.Year, v.AvNr);
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
ViewModel.RevertIsEnabled = true;
|
||||
App.HintContextChange();
|
||||
}
|
||||
|
||||
private async void RevertButton_Click(object sender, RoutedEventArgs evt) {
|
||||
@ -225,10 +211,12 @@ namespace Elwig.Windows {
|
||||
if (res != MessageBoxResult.Yes)
|
||||
return;
|
||||
ViewModel.RevertIsEnabled = false;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
var b = new BillingVariant(v.Year, v.AvNr);
|
||||
await b.Revert();
|
||||
App.HintContextChange();
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
try {
|
||||
await PaymentVariantService.Revert(v.Year, v.AvNr);
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
ViewModel.CommitIsEnabled = true;
|
||||
}
|
||||
@ -250,7 +238,9 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void SaveButton_Click(object sender, RoutedEventArgs evt) {
|
||||
if (PaymentVariantList.SelectedItem is not PaymentVar v || ViewModel.BillingData == null) return;
|
||||
if (PaymentVariantList.SelectedItem is not PaymentVar v || ViewModel.BillingData == null)
|
||||
return;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
try {
|
||||
await ViewModel.UpdatePaymentVariant(v.Year, v.AvNr);
|
||||
} catch (Exception exc) {
|
||||
@ -259,6 +249,7 @@ namespace Elwig.Windows {
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Auszahlungsvariante aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
await HintContextChange();
|
||||
CommentInput_TextChanged(null, null);
|
||||
DateInput_TextChanged(null, null);
|
||||
|
Reference in New Issue
Block a user