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