DeliveryAdminWindow: Implement using of DeliveryExtractionDialog
This commit is contained in:
@ -283,5 +283,9 @@ namespace Elwig.Helpers {
|
|||||||
),
|
),
|
||||||
sum => sum.Kmw
|
sum => sum.Kmw
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static string GenerateLsNr(Delivery d) => GenerateLsNr(d.Date, d.ZwstId, d.LNr);
|
||||||
|
|
||||||
|
public static string GenerateLsNr(DateOnly date, string zwstid, int lnr) => $"{date:yyyyMMdd}{zwstid}{lnr:000}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,18 +152,25 @@ namespace Elwig.Windows {
|
|||||||
} else if (IsCreating) {
|
} else if (IsCreating) {
|
||||||
a.FbNr = newFbNr;
|
a.FbNr = newFbNr;
|
||||||
tr = (await Context.AddAsync(a));
|
tr = (await Context.AddAsync(a));
|
||||||
|
} else {
|
||||||
|
throw new Exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
await Context.SaveChangesAsync();
|
await Context.SaveChangesAsync();
|
||||||
|
|
||||||
if (newFbNr != a.FbNr) {
|
if (newFbNr != a.FbNr) {
|
||||||
await Context.Database.ExecuteSqlAsync($"UPDATE area_commitment SET fbnr = {newFbNr} WHERE fbnr = {a.FbNr}");
|
await Context.Database.ExecuteSqlAsync($"UPDATE area_commitment SET fbnr = {newFbNr} WHERE fbnr = {a.FbNr}");
|
||||||
await Context.Members.LoadAsync();
|
tr.State = EntityState.Detached;
|
||||||
|
await Context.SaveChangesAsync();
|
||||||
|
await tr.ReloadAsync();
|
||||||
a = await Context.AreaCommitments.FindAsync(newFbNr);
|
a = await Context.AreaCommitments.FindAsync(newFbNr);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
if (tr != null) await tr.ReloadAsync();
|
if (tr != null) {
|
||||||
|
tr.State = EntityState.Detached;
|
||||||
|
await tr.ReloadAsync();
|
||||||
|
}
|
||||||
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;
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(str, "Flächenbindung aktualisieren", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
@ -353,7 +353,7 @@
|
|||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
|
|
||||||
<Button x:Name="ExtractDeliveryPartButton" Content="Herausheben" IsEnabled="False"
|
<Button x:Name="ExtractDeliveryPartButton" Content="Extrahieren" IsEnabled="False"
|
||||||
ToolTip="Ausgewählte Teillieferung aus aktueller Lieferung entfernen und entweder anderer oder neuer Lieferung zuordnen"
|
ToolTip="Ausgewählte Teillieferung aus aktueller Lieferung entfernen und entweder anderer oder neuer Lieferung zuordnen"
|
||||||
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,2.5,5" Grid.Column="0" Grid.Row="2"
|
HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="5,10,2.5,5" Grid.Column="0" Grid.Row="2"
|
||||||
Click="ExtractDeliveryPartButton_Click"/>
|
Click="ExtractDeliveryPartButton_Click"/>
|
||||||
|
@ -566,12 +566,12 @@ namespace Elwig.Windows {
|
|||||||
await Context.SaveChangesAsync();
|
await Context.SaveChangesAsync();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
if (dEntry != null) {
|
if (dEntry != null) {
|
||||||
|
dEntry.State = EntityState.Detached;
|
||||||
await dEntry.ReloadAsync();
|
await dEntry.ReloadAsync();
|
||||||
if (deliveryNew) dEntry.State = EntityState.Detached;
|
|
||||||
}
|
}
|
||||||
if (pEntry != null) {
|
if (pEntry != null) {
|
||||||
|
pEntry.State = EntityState.Detached;
|
||||||
await pEntry.ReloadAsync();
|
await pEntry.ReloadAsync();
|
||||||
if (partNew) pEntry.State = EntityState.Detached;
|
|
||||||
}
|
}
|
||||||
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;
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
@ -796,10 +796,13 @@ namespace Elwig.Windows {
|
|||||||
await RefreshDeliveryParts();
|
await RefreshDeliveryParts();
|
||||||
FinishInputFilling();
|
FinishInputFilling();
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
if (entry1 != null) await entry1.ReloadAsync();
|
if (entry1 != null) {
|
||||||
|
entry1.State = EntityState.Detached;
|
||||||
|
await entry1.ReloadAsync();
|
||||||
|
}
|
||||||
if (entry2 != null) {
|
if (entry2 != null) {
|
||||||
await entry2.ReloadAsync();
|
|
||||||
entry2.State = EntityState.Detached;
|
entry2.State = EntityState.Detached;
|
||||||
|
await entry2.ReloadAsync();
|
||||||
}
|
}
|
||||||
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;
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
@ -899,8 +902,70 @@ namespace Elwig.Windows {
|
|||||||
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
DeleteDeliveryPartButton.IsEnabled = DeliveryList.SelectedItem is Delivery { Parts.Count: > 1 } && !IsCreating;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExtractDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
private async void ExtractDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
// TODO extract delivery part
|
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);
|
||||||
|
var lsnrs = await Context.Deliveries
|
||||||
|
.Where(d => d.ZwstId == delivery.ZwstId)
|
||||||
|
.Where(d => (d.DateString == day.ToString("yyyy-MM-dd") && d.TimeString.CompareTo("03:00:00") > 0) ||
|
||||||
|
(d.DateString == day.AddDays(1).ToString("yyyy-MM-dd") && d.TimeString.CompareTo("03:00:00") <= 0))
|
||||||
|
.Where(d => d.LsNr != delivery.LsNr)
|
||||||
|
.OrderBy(d => d.LsNr)
|
||||||
|
.Select(d => d.LsNr)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var res = Utils.ShowDeliveryExtractionDialog($"{delivery.LsNr}/{p.DPNr}", delivery.Member.AdministrativeName, count == 1, lsnrs);
|
||||||
|
EntityEntry<Delivery>? entry = null;
|
||||||
|
try {
|
||||||
|
Delivery? d = null;
|
||||||
|
if (res == null) {
|
||||||
|
return;
|
||||||
|
} else if (res == "new") {
|
||||||
|
d = Context.CreateProxy<Delivery>();
|
||||||
|
d.Date = delivery.Date;
|
||||||
|
d.Time = delivery.Time;
|
||||||
|
d.Year = p.Year;
|
||||||
|
d.DId = await Context.NextDId(d.Year);
|
||||||
|
d.LNr = await Context.NextLNr(d.Date);
|
||||||
|
d.ZwstId = delivery.ZwstId;
|
||||||
|
d.MgNr = delivery.MgNr;
|
||||||
|
d.Comment = delivery.Comment;
|
||||||
|
d.LsNr = Utils.GenerateLsNr(d);
|
||||||
|
entry = await Context.AddAsync(d);
|
||||||
|
await Context.SaveChangesAsync();
|
||||||
|
} else {
|
||||||
|
d = await Context.Deliveries.Where(d => d.LsNr == res).FirstOrDefaultAsync();
|
||||||
|
}
|
||||||
|
if (d == null) return;
|
||||||
|
|
||||||
|
await Context.Database.ExecuteSqlAsync($"UPDATE delivery_part SET year = {d.Year}, did = {d.DId}, dpnr = {await Context.NextDPNr(d.Year, d.DId)} WHERE (year, did, dpnr) = ({p.Year}, {p.DId}, {p.DPNr})");
|
||||||
|
Context.Entry(p).State = EntityState.Detached;
|
||||||
|
if (count == 1) {
|
||||||
|
await Context.Database.ExecuteSqlAsync($"DELETE FROM delivery WHERE (year, did) = ({delivery.Year}, {delivery.DId})");
|
||||||
|
Context.Entry(delivery).State = EntityState.Detached;
|
||||||
|
}
|
||||||
|
await Context.SaveChangesAsync();
|
||||||
|
await Context.Entry(p).ReloadAsync();
|
||||||
|
await Context.Entry(delivery).ReloadAsync();
|
||||||
|
|
||||||
|
await RefreshDeliveryList();
|
||||||
|
DeliveryList.SelectedItem = d;
|
||||||
|
} catch (Exception exc) {
|
||||||
|
if (entry != null) {
|
||||||
|
entry.State = EntityState.Detached;
|
||||||
|
await entry.ReloadAsync();
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void DeleteDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
private async void DeleteDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
@ -1027,7 +1092,7 @@ namespace Elwig.Windows {
|
|||||||
var branch = (Branch)BranchInput.SelectedItem;
|
var branch = (Branch)BranchInput.SelectedItem;
|
||||||
var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy");
|
var date = DateOnly.ParseExact(DateInput.Text, "dd.MM.yyyy");
|
||||||
var lnr = await Context.NextLNr(date);
|
var lnr = await Context.NextLNr(date);
|
||||||
LsNrInput.Text = $"{date:yyyyMMdd}{branch.ZwstId}{lnr:000}";
|
LsNrInput.Text = Utils.GenerateLsNr(date, branch.ZwstId, lnr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,6 +368,8 @@ namespace Elwig.Windows {
|
|||||||
} else if (IsCreating) {
|
} else if (IsCreating) {
|
||||||
m.MgNr = newMgNr;
|
m.MgNr = newMgNr;
|
||||||
tr = (await Context.AddAsync(m));
|
tr = (await Context.AddAsync(m));
|
||||||
|
} else {
|
||||||
|
throw new Exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BillingOrtInput.SelectedItem == null) {
|
if (BillingOrtInput.SelectedItem == null) {
|
||||||
@ -416,13 +418,15 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
if (newMgNr != m.MgNr) {
|
if (newMgNr != m.MgNr) {
|
||||||
await Context.Database.ExecuteSqlAsync($"UPDATE member SET mgnr = {newMgNr} WHERE mgnr = {m.MgNr}");
|
await Context.Database.ExecuteSqlAsync($"UPDATE member SET mgnr = {newMgNr} WHERE mgnr = {m.MgNr}");
|
||||||
await Context.Members.LoadAsync();
|
tr.State = EntityState.Detached;
|
||||||
|
await Context.SaveChangesAsync();
|
||||||
|
await tr.ReloadAsync();
|
||||||
m = await Context.Members.FindAsync(newMgNr);
|
m = await Context.Members.FindAsync(newMgNr);
|
||||||
}
|
}
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
if (tr != null) {
|
if (tr != null) {
|
||||||
|
tr.State = EntityState.Detached;
|
||||||
await tr.ReloadAsync();
|
await tr.ReloadAsync();
|
||||||
if (memberNew) tr.State = EntityState.Detached;
|
|
||||||
}
|
}
|
||||||
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;
|
||||||
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message;
|
||||||
|
Reference in New Issue
Block a user