@ -638,15 +638,11 @@ namespace Elwig.Windows {
|
||||
private void DeliveryPartList_SelectionChanged(object? sender, SelectionChangedEventArgs? evt) {
|
||||
RefreshInputs();
|
||||
if (DeliveryPartList.SelectedItem is DeliveryPart p) {
|
||||
AbwertenButton.IsEnabled = p.QualId != "WEI";
|
||||
DepreciateButton.IsEnabled = true;
|
||||
EditDeliveryButton.IsEnabled = true;
|
||||
ExtractDeliveryPartButton.IsEnabled = !IsCreating;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
||||
} else {
|
||||
AbwertenButton.IsEnabled = false;
|
||||
DepreciateButton.IsEnabled = false;
|
||||
EditDeliveryButton.IsEnabled = false;
|
||||
ExtractDeliveryPartButton.IsEnabled = false;
|
||||
DeleteDeliveryPartButton.IsEnabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -855,43 +851,29 @@ namespace Elwig.Windows {
|
||||
LockSearchInputs();
|
||||
}
|
||||
|
||||
private async void AbwertenButton_Click(object sender, RoutedEventArgs evt) {
|
||||
if (DeliveryPartList.SelectedItem is not DeliveryPart p) return;
|
||||
var res = Utils.ShowAbwertenDialog($"{p.Delivery.LsNr}/{p.DPNr}", p.Delivery.Member.AdministrativeName, p.Weight);
|
||||
if (res == null || res <= 0)
|
||||
private async void DepreciateButton_Click(object sender, RoutedEventArgs evt) {
|
||||
if (DeliveryList.SelectedItem is not Delivery d) return;
|
||||
var res = Utils.ShowDeliverySplittingDialog(d);
|
||||
if (res == null)
|
||||
return;
|
||||
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
ClearOriginalValues();
|
||||
if (res >= p.Weight) {
|
||||
ControlUtils.SelectItemWithPk(WineQualityLevelInput, "WEI");
|
||||
ControlUtils.SelectItemWithPk(WineOriginInput, "OEST");
|
||||
p.QualId = "WEI";
|
||||
p.HkId = "OEST";
|
||||
ctx.Update(p);
|
||||
var id = res.Value.Item1;
|
||||
var weights = res.Value.Item2;
|
||||
if (id == null) {
|
||||
// abwerten
|
||||
await DeliveryService.DepreciateDelivery(d.Year, d.DId, weights);
|
||||
} else if (id.All(char.IsAsciiDigit)) {
|
||||
// auf Mitglied übertragen
|
||||
var n = await DeliveryService.SplitDeliveryToMember(d.Year, d.DId, weights, int.Parse(id));
|
||||
await Task.Delay(500);
|
||||
ControlUtils.SelectItemWithPk(DeliveryList, n.Year, n.DId);
|
||||
} else {
|
||||
var w = p.Weight - res.Value;
|
||||
ViewModel.Weight = w;
|
||||
p.Weight = w;
|
||||
ctx.Update(p);
|
||||
|
||||
var d = p.Delivery;
|
||||
var p2 = ctx.CreateProxy<DeliveryPart>();
|
||||
var values = ctx.Entry(p).CurrentValues;
|
||||
ctx.Entry(p2).CurrentValues.SetValues(values);
|
||||
p2.DPNr = await ctx.NextDPNr(d.Year, d.DId);
|
||||
p2.Weight = res.Value;
|
||||
p2.QualId = "WEI";
|
||||
p2.HkId = "OEST";
|
||||
ctx.Add(p2);
|
||||
|
||||
ctx.UpdateDeliveryPartModifiers(p2, [], p.Modifiers);
|
||||
// zu existierender Lieferung hinzufügen
|
||||
var n = await DeliveryService.SplitDeliveryToLsNr(d.Year, d.DId, weights, id);
|
||||
ControlUtils.SelectItemWithPk(DeliveryList, n.Year, n.DId);
|
||||
}
|
||||
await ctx.SaveChangesAsync();
|
||||
await RefreshDeliveryParts();
|
||||
FinishInputFilling();
|
||||
} catch (Exception exc) {
|
||||
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;
|
||||
@ -929,9 +911,7 @@ namespace Elwig.Windows {
|
||||
UnlockInputs();
|
||||
LockSearchInputs();
|
||||
|
||||
AbwertenButton.IsEnabled = false;
|
||||
ExtractDeliveryPartButton.IsEnabled = false;
|
||||
DeleteDeliveryPartButton.IsEnabled = false;
|
||||
DepreciateButton.IsEnabled = false;
|
||||
}
|
||||
|
||||
protected override void ShortcutDelete() {
|
||||
@ -1003,9 +983,7 @@ namespace Elwig.Windows {
|
||||
await RefreshDeliveryParts();
|
||||
RefreshInputs();
|
||||
|
||||
AbwertenButton.IsEnabled = p.QualId != "WEI";
|
||||
ExtractDeliveryPartButton.IsEnabled = DeliveryPartList.SelectedItem != null && !IsCreating;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
||||
DepreciateButton.IsEnabled = true;
|
||||
}
|
||||
|
||||
protected override void ShortcutReset() {
|
||||
@ -1036,93 +1014,7 @@ namespace Elwig.Windows {
|
||||
LockInputs();
|
||||
UnlockSearchInputs();
|
||||
|
||||
AbwertenButton.IsEnabled = DeliveryPartList.SelectedItem is DeliveryPart p && p.QualId != "WEI";
|
||||
ExtractDeliveryPartButton.IsEnabled = DeliveryPartList.SelectedItem != null && !IsCreating;
|
||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
||||
}
|
||||
|
||||
private async void ExtractDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
||||
if (DeliveryPartList.SelectedItem is not DeliveryPart p)
|
||||
return;
|
||||
|
||||
var delivery = p.Delivery;
|
||||
var day = delivery.Date;
|
||||
var count = delivery.Parts.Count;
|
||||
|
||||
if (delivery.Time <= new TimeOnly(3, 0))
|
||||
day = day.AddDays(-1);
|
||||
|
||||
string? res;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
var lsnrs = await ctx.Deliveries
|
||||
.Where(d => d.ZwstId == delivery.ZwstId)
|
||||
.Where(d => (d.DateString == day.ToString("yyyy-MM-dd") && (d.TimeString == null || d.TimeString.CompareTo("03:00:00") > 0)) ||
|
||||
(d.DateString == day.AddDays(1).ToString("yyyy-MM-dd") && (d.TimeString == null || d.TimeString.CompareTo("03:00:00") <= 0)))
|
||||
.Where(d => d.LsNr != delivery.LsNr)
|
||||
.OrderBy(d => d.LsNr)
|
||||
.Select(d => d.LsNr)
|
||||
.ToListAsync();
|
||||
|
||||
res = Utils.ShowDeliveryExtractionDialog($"{delivery.LsNr}/{p.DPNr}", delivery.Member.AdministrativeName, count == 1, lsnrs);
|
||||
if (res == null)
|
||||
return;
|
||||
}
|
||||
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
if (res == "new") {
|
||||
var lnr = await ctx.NextLNr(delivery.Date, delivery.ZwstId);
|
||||
var lsnr = Utils.GenerateLsNr(delivery.Date, delivery.ZwstId, lnr);
|
||||
ctx.Add(new Delivery {
|
||||
Year = p.Year,
|
||||
DId = await ctx.NextDId(p.Year),
|
||||
LNr = lnr,
|
||||
DateString = $"{delivery.Date:yyyy-MM-dd}",
|
||||
TimeString = $"{delivery.Time:HH:mm:ss}",
|
||||
ZwstId = delivery.ZwstId,
|
||||
MgNr = delivery.MgNr,
|
||||
Comment = delivery.Comment,
|
||||
LsNr = lsnr,
|
||||
});
|
||||
await ctx.SaveChangesAsync();
|
||||
res = lsnr;
|
||||
}
|
||||
Delivery? d = await ctx.Deliveries.Where(d => d.LsNr == res).FirstOrDefaultAsync();
|
||||
if (d == null) return;
|
||||
|
||||
await ctx.Database.ExecuteSqlAsync($"UPDATE delivery_part SET year = {d.Year}, did = {d.DId}, dpnr = {await ctx.NextDPNr(d.Year, d.DId)} WHERE (year, did, dpnr) = ({p.Year}, {p.DId}, {p.DPNr})");
|
||||
if (count == 1) {
|
||||
await ctx.Database.ExecuteSqlAsync($"DELETE FROM delivery WHERE (year, did) = ({delivery.Year}, {delivery.DId})");
|
||||
}
|
||||
await ctx.SaveChangesAsync();
|
||||
|
||||
await RefreshList();
|
||||
ControlUtils.SelectItem(DeliveryList, d);
|
||||
} catch (Exception exc) {
|
||||
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, "Lieferung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
|
||||
private async void DeleteDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
||||
if (DeliveryPartList.SelectedItem is not DeliveryPart p)
|
||||
return;
|
||||
|
||||
var r = MessageBox.Show(
|
||||
$"Soll die Teillieferung Nr. {p.DPNr} wirklich unwiderruflich gelöscht werden?",
|
||||
"Lieferung löschen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
||||
if (r == MessageBoxResult.OK) {
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
ctx.Remove(p);
|
||||
await ctx.SaveChangesAsync();
|
||||
}
|
||||
await RefreshDeliveryParts();
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
DepreciateButton.IsEnabled = DeliveryPartList.SelectedItem != null;
|
||||
}
|
||||
|
||||
private void ShowSaveResetCancelButtons() {
|
||||
@ -1145,22 +1037,22 @@ namespace Elwig.Windows {
|
||||
|
||||
private void ShowNewEditDeleteButtons() {
|
||||
NewDeliveryButton.IsEnabled = ViewModel.IsReceipt;
|
||||
AbwertenButton.IsEnabled = DeliveryPartList.SelectedItem is DeliveryPart p && p.QualId == "WEI";
|
||||
DepreciateButton.IsEnabled = DeliveryList.SelectedItem != null;
|
||||
EditDeliveryButton.IsEnabled = DeliveryPartList.SelectedItem != null;
|
||||
DeleteDeliveryButton.IsEnabled = DeliveryList.SelectedItem != null;
|
||||
NewDeliveryButton.Visibility = ViewModel.IsReceipt ? Visibility.Visible : Visibility.Hidden;
|
||||
AbwertenButton.Visibility = !ViewModel.IsReceipt ? Visibility.Visible : Visibility.Hidden;
|
||||
DepreciateButton.Visibility = !ViewModel.IsReceipt ? Visibility.Visible : Visibility.Hidden;
|
||||
EditDeliveryButton.Visibility = Visibility.Visible;
|
||||
DeleteDeliveryButton.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void HideNewEditDeleteButtons() {
|
||||
NewDeliveryButton.IsEnabled = false;
|
||||
AbwertenButton.IsEnabled = false;
|
||||
DepreciateButton.IsEnabled = false;
|
||||
EditDeliveryButton.IsEnabled = false;
|
||||
DeleteDeliveryButton.IsEnabled = false;
|
||||
NewDeliveryButton.Visibility = Visibility.Hidden;
|
||||
AbwertenButton.Visibility = Visibility.Hidden;
|
||||
DepreciateButton.Visibility = Visibility.Hidden;
|
||||
EditDeliveryButton.Visibility = Visibility.Hidden;
|
||||
DeleteDeliveryButton.Visibility = Visibility.Hidden;
|
||||
}
|
||||
|
Reference in New Issue
Block a user