diff --git a/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml.cs b/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml.cs index 7cef806..ba0764b 100644 --- a/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml.cs +++ b/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml.cs @@ -82,7 +82,18 @@ namespace Elwig.Dialogs { list = list.Where((_, n) => n % 10 == r); } - using var doc = await Document.Merge(list.Select(m => new DeliveryConfirmation(Context, Year, m))); ; + var deliveries = await Context.DeliveryParts.FromSqlRaw($""" + SELECT p.* + FROM v_delivery v + JOIN delivery_part p ON (p.year, p.did, p.dpnr) = (v.year, v.did, v.dpnr) + WHERE v.year = {Year} + ORDER BY v.sortid, v.abgewertet ASC, + COALESCE(LENGTH(v.attributes), 0) ASC, attribute_prio DESC, COALESCE(v.attributes, '~'), + v.kmw DESC, v.lsnr, v.dpnr + """) + .ToListAsync(); + + using var doc = await Document.Merge(list.Select(m => new DeliveryConfirmation(Context, Year, m, deliveries.Where(d => d.Delivery.MgNr == m.MgNr)))); ; await doc.Generate(); Mouse.OverrideCursor = null; diff --git a/Elwig/Documents/DeliveryConfirmation.cshtml.cs b/Elwig/Documents/DeliveryConfirmation.cshtml.cs index 8a3d6da..baa325f 100644 --- a/Elwig/Documents/DeliveryConfirmation.cshtml.cs +++ b/Elwig/Documents/DeliveryConfirmation.cshtml.cs @@ -12,7 +12,7 @@ namespace Elwig.Documents { public string? Text = App.Client.TextDeliveryConfirmation; public Dictionary MemberBins; - public DeliveryConfirmation(AppDbContext ctx, int year, Member m) : + public DeliveryConfirmation(AppDbContext ctx, int year, Member m, IEnumerable? deliveries = null) : base($"Anlieferungsbestätigung {year}", m) { Year = year; ShowDateAndLocation = true; @@ -20,7 +20,7 @@ namespace Elwig.Documents { IncludeSender = true; // FIXME footer in merged documents //DocumentId = $"Anl.-Best. {Year}/{m.MgNr}"; - Deliveries = ctx.DeliveryParts.FromSqlRaw($""" + Deliveries = deliveries ?? ctx.DeliveryParts.FromSqlRaw($""" SELECT p.* FROM v_delivery v JOIN delivery_part p ON (p.year, p.did, p.dpnr) = (v.year, v.did, v.dpnr)