DeliveryAdminWindow: Fix creation of new deliveries
All checks were successful
Test / Run tests (push) Successful in 2m2s
All checks were successful
Test / Run tests (push) Successful in 2m2s
This commit is contained in:
@@ -218,7 +218,8 @@ namespace Elwig {
|
||||
MainDispatcher.Invoke(() => {
|
||||
foreach (Window w in CurrentApp.Windows) {
|
||||
if (w is not ContextWindow c) continue;
|
||||
MainDispatcher.BeginInvoke(c.HintContextChange);
|
||||
MainDispatcher.Invoke(c.HintContextChange);
|
||||
MainDispatcher.BeginInvoke(c.TryContextReload);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -30,11 +30,19 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
public async void ForceContextReload(object sender, EventArgs evt) {
|
||||
await HintContextChange();
|
||||
await ForceContextReload();
|
||||
}
|
||||
|
||||
public async Task HintContextChange() {
|
||||
public async Task ForceContextReload() {
|
||||
HintContextChange();
|
||||
await TryContextReload();
|
||||
}
|
||||
|
||||
public void HintContextChange() {
|
||||
_renewPending = true;
|
||||
}
|
||||
|
||||
public async Task TryContextReload() {
|
||||
if (LockContext) return;
|
||||
await EnsureContextRenewed();
|
||||
}
|
||||
@@ -49,9 +57,9 @@ namespace Elwig.Windows {
|
||||
|
||||
protected async Task EnsureContextRenewed() {
|
||||
if (!_renewPending) return;
|
||||
_renewPending = false;
|
||||
using var ctx = new AppDbContext();
|
||||
await OnRenewContext(ctx);
|
||||
_renewPending = false;
|
||||
}
|
||||
|
||||
virtual protected async Task OnInit(AppDbContext ctx) { }
|
||||
|
||||
@@ -424,7 +424,7 @@ namespace Elwig.Windows {
|
||||
var cursor = Mouse.OverrideCursor != null;
|
||||
if (!cursor) Mouse.OverrideCursor = Cursors.Wait;
|
||||
var query = (vm.SearchQuery, vm.FilterSeason, vm.FilterAllSeasons, vm.FilterTodayOnly);
|
||||
var (filter, deliveries, deliveryPartsNum, varieties, stat) = await Task.Run(async () => {
|
||||
var (filter, deliveries, deliveryPartsNum, varieties, members, stat) = await Task.Run(async () => {
|
||||
using var ctx = new AppDbContext();
|
||||
var (_, deliveryQuery, deliveryPartsQuery, predicate, filter) = await vm.GetFilters(ctx);
|
||||
var deliveries = await deliveryQuery
|
||||
@@ -452,9 +452,10 @@ namespace Elwig.Windows {
|
||||
|
||||
var deliveryPartsNum = await deliveryPartsQuery.CountAsync();
|
||||
var varieties = await deliveryPartsQuery.Select(d => d.SortId).Distinct().ToListAsync();
|
||||
var members = await deliveryQuery.Select(d => d.Member).Distinct().ToListAsync();
|
||||
var stat = await DeliveryService.GenerateToolTipData(deliveryPartsQuery);
|
||||
|
||||
return (filter, deliveries, deliveryPartsNum, varieties, stat);
|
||||
return (filter, deliveries, deliveryPartsNum, varieties, members, stat);
|
||||
});
|
||||
if (!cursor) Mouse.OverrideCursor = null;
|
||||
if (query != (ViewModel.SearchQuery, ViewModel.FilterSeason, ViewModel.FilterAllSeasons, ViewModel.FilterTodayOnly)) return;
|
||||
@@ -463,7 +464,6 @@ namespace Elwig.Windows {
|
||||
DeliveryList_SelectionChanged, ViewModel.TextFilter.Count > 0 ? ControlUtils.RenewSourceDefault.IfOnly : ControlUtils.RenewSourceDefault.None, !updateSort);
|
||||
await RefreshDeliveryParts();
|
||||
|
||||
var members = deliveries.Select(d => d.Member).DistinctBy(m => m.MgNr).ToList();
|
||||
ViewModel.StatusMembers = $"{members.Count:N0}" + (members.Count > 0 && members.Count <= 4 ? $" ({string.Join(", ", members.Select(m => m.AdministrativeName))})" : "");
|
||||
ViewModel.StatusDeliveries = $"{deliveries.Count:N0}";
|
||||
|
||||
@@ -576,7 +576,6 @@ namespace Elwig.Windows {
|
||||
UpdateRdInput();
|
||||
if (IsCreating) await UpdateLsNr();
|
||||
|
||||
await RefreshDeliveryParts();
|
||||
RefreshInputs();
|
||||
}
|
||||
|
||||
@@ -824,11 +823,12 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
EmptyScale();
|
||||
|
||||
await EnsureContextRenewed();
|
||||
Mouse.OverrideCursor = null;
|
||||
ControlUtils.SelectItem(DeliveryList, p?.Delivery);
|
||||
ControlUtils.SelectItemWithPk(DeliveryList, p?.Year, p?.DId);
|
||||
DeliveryPartList.SelectedItem = null;
|
||||
DeliveryPartList.ScrollIntoView(DeliveryPartList.ItemsSource.Cast<object>().Last());
|
||||
DeliveryPartList.ScrollIntoView(DeliveryPartList.ItemsSource.Cast<object>().LastOrDefault());
|
||||
InitialInputs();
|
||||
}
|
||||
|
||||
@@ -861,25 +861,21 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
EmptyScale();
|
||||
await EnsureContextRenewed();
|
||||
if (p?.Delivery != null) {
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
using var doc = new DeliveryNote((await ctx.Deliveries.FindAsync(p.Year, p.DId))!, ctx);
|
||||
await doc.Generate();
|
||||
if (App.Config.Debug) {
|
||||
doc.Show();
|
||||
} else {
|
||||
await doc.Print(2);
|
||||
}
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
|
||||
Utils.RunBackground("Lieferschein drucken", async () => {
|
||||
using var ctx = new AppDbContext();
|
||||
using var doc = new DeliveryNote((await ctx.Deliveries.FindAsync(p.Year, p.DId))!, ctx);
|
||||
await doc.Generate();
|
||||
if (App.Config.Debug) {
|
||||
doc.Show();
|
||||
} else {
|
||||
await doc.Print(2);
|
||||
}
|
||||
});
|
||||
|
||||
await EnsureContextRenewed();
|
||||
Mouse.OverrideCursor = null;
|
||||
DeliveryList.SelectedItem = null;
|
||||
await EnsureContextRenewed();
|
||||
InitInputs();
|
||||
}
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@ namespace Elwig.Windows {
|
||||
App.HintContextChange();
|
||||
ControlUtils.SelectItemWithPk(WbKgs, k.KgNr);
|
||||
} catch (Exception exc) {
|
||||
await HintContextChange();
|
||||
await ForceContextReload();
|
||||
var str = "Der Eintrag konnte nicht aus der Datenbank gelöscht werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Katastralgemeinde deaktivieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
|
||||
@@ -256,13 +256,13 @@ namespace Elwig.Windows {
|
||||
await ViewModel.UpdatePaymentVariant(v.Year, v.AvNr);
|
||||
App.HintContextChange();
|
||||
} catch (Exception exc) {
|
||||
await HintContextChange();
|
||||
await ForceContextReload();
|
||||
var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message;
|
||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||
MessageBox.Show(str, "Auszahlungsvariante aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
await HintContextChange();
|
||||
await EnsureContextRenewed();
|
||||
CommentInput_TextChanged(null, null);
|
||||
DateInput_TextChanged(null, null);
|
||||
TransferDateInput_TextChanged(null, null);
|
||||
|
||||
Reference in New Issue
Block a user