Compare commits
4 Commits
v0.4.0
...
50b9f4e207
| Author | SHA1 | Date | |
|---|---|---|---|
| 50b9f4e207 | |||
| 45fc0893b1 | |||
| c4dd56075d | |||
| f1084c716a |
@@ -6,9 +6,10 @@
|
|||||||
xmlns:local="clr-namespace:Elwig.Windows"
|
xmlns:local="clr-namespace:Elwig.Windows"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
ResizeMode="NoResize"
|
ResizeMode="NoResize"
|
||||||
|
Loaded="Window_Loaded"
|
||||||
Title="Anlieferungsbestätingungen - Elwig" Height="400" Width="600">
|
Title="Anlieferungsbestätingungen - Elwig" Height="400" Width="600">
|
||||||
<Grid>
|
<Grid>
|
||||||
<GroupBox Header="Sortieren nach" Margin="10,10,10,10" Width="150" Height="80" VerticalAlignment="Top" HorizontalAlignment="Left">
|
<GroupBox Header="Sortieren nach" Margin="10,10,10,10" Width="180" Height="80" VerticalAlignment="Top" HorizontalAlignment="Left">
|
||||||
<StackPanel Margin="5,5,0,5">
|
<StackPanel Margin="5,5,0,5">
|
||||||
<RadioButton GroupName="Order" x:Name="OrderMgNrInput" Content="Mitgliedsnummer" IsChecked="True"/>
|
<RadioButton GroupName="Order" x:Name="OrderMgNrInput" Content="Mitgliedsnummer" IsChecked="True"/>
|
||||||
<RadioButton GroupName="Order" x:Name="OrderNameInput" Content="Name"/>
|
<RadioButton GroupName="Order" x:Name="OrderNameInput" Content="Name"/>
|
||||||
@@ -16,16 +17,20 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|
||||||
<TextBox x:Name="TextElement" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible" AcceptsReturn="True"
|
<CheckBox x:Name="AllMembersInput" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,100,10,10">
|
||||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="170,10,10,10" Height="Auto"/>
|
<TextBlock>Auch Mitglieder ohne<LineBreak/>Lieferungen miteinbeziehen</TextBlock>
|
||||||
|
</CheckBox>
|
||||||
|
|
||||||
<Button x:Name="TestButton" Content="Stichprobe" FontSize="14" Width="150" Margin="10,10,10,74" Height="27"
|
<TextBox x:Name="TextElement" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible" AcceptsReturn="True"
|
||||||
|
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="200,10,10,10" Height="Auto"/>
|
||||||
|
|
||||||
|
<Button x:Name="TestButton" Content="Stichprobe" FontSize="14" Width="150" Margin="10,10,10,74" Height="27" Tag="Print" IsEnabled="False"
|
||||||
Click="TestButton_Click"
|
Click="TestButton_Click"
|
||||||
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
|
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
|
||||||
<Button x:Name="ShowButton" Content="Vorschau" FontSize="14" Width="150" Margin="10,10,10,42" Height="27"
|
<Button x:Name="ShowButton" Content="Vorschau" FontSize="14" Width="150" Margin="10,10,10,42" Height="27" Tag="Print" IsEnabled="False"
|
||||||
Click="ShowButton_Click"
|
Click="ShowButton_Click"
|
||||||
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
|
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
|
||||||
<Button x:Name="PrintButton" Content="Drucken" FontSize="14" Width="150" Margin="10,10,10,10" Height="27"
|
<Button x:Name="PrintButton" Content="Drucken" FontSize="14" Width="150" Margin="10,10,10,10" Height="27" Tag="Print" IsEnabled="False"
|
||||||
Click="PrintButton_Click"
|
Click="PrintButton_Click"
|
||||||
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
|
VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -24,6 +24,12 @@ namespace Elwig.Dialogs {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||||
|
TestButton.IsEnabled = App.IsPrintingReady;
|
||||||
|
ShowButton.IsEnabled = App.IsPrintingReady;
|
||||||
|
PrintButton.IsEnabled = App.IsPrintingReady;
|
||||||
|
}
|
||||||
|
|
||||||
protected override async Task OnRenewContext() { }
|
protected override async Task OnRenewContext() { }
|
||||||
|
|
||||||
private async Task UpdateTextParameter() {
|
private async Task UpdateTextParameter() {
|
||||||
@@ -40,13 +46,19 @@ namespace Elwig.Dialogs {
|
|||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
await UpdateTextParameter();
|
await UpdateTextParameter();
|
||||||
|
|
||||||
var members = Context.Members.FromSqlRaw($"""
|
IQueryable<Member> members;
|
||||||
SELECT m.*
|
if (AllMembersInput.IsChecked == true) {
|
||||||
FROM member m
|
members = Context.Members.Where(m => m.IsActive);
|
||||||
INNER JOIN delivery d ON d.mgnr = m.mgnr
|
} else {
|
||||||
WHERE d.year = {Year}
|
members = Context.Members.FromSqlRaw($"""
|
||||||
GROUP BY m.mgnr
|
SELECT m.*
|
||||||
""");
|
FROM member m
|
||||||
|
INNER JOIN delivery d ON d.mgnr = m.mgnr
|
||||||
|
WHERE d.year = {Year}
|
||||||
|
GROUP BY m.mgnr
|
||||||
|
""");
|
||||||
|
}
|
||||||
|
|
||||||
if (OrderMgNrInput.IsChecked == true) {
|
if (OrderMgNrInput.IsChecked == true) {
|
||||||
members = members
|
members = members
|
||||||
.OrderBy(m => m.MgNr);
|
.OrderBy(m => m.MgNr);
|
||||||
|
|||||||
@@ -118,32 +118,43 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@{
|
@{
|
||||||
string FormatRow(int obligation, int right, int sum, int? payment = null) {
|
string FormatRow(int mode, int obligation, int right, int sum, int? payment = null) {
|
||||||
var isGa = payment == null;
|
var isGa = mode == 0;
|
||||||
payment ??= sum;
|
payment ??= sum;
|
||||||
return $"<td>{obligation:N0}</td>" +
|
return $"<td>{(mode == 1 ? "" : obligation == 0 ? "-" : $"{obligation:N0}")}</td>" +
|
||||||
$"<td>{right:N0}</td>" +
|
$"<td>{(mode == 1 ? "" : right == 0 ? "-" : $"{right:N0}")}</td>" +
|
||||||
$"<td>{(payment < obligation ? $"<b>{obligation - payment:N0}\x3c/b>" : "-")}</td>" +
|
$"<td>{(mode == 1 ? "" : payment < obligation ? $"<b>{obligation - payment:N0}\x3c/b>" : "-")}</td>" +
|
||||||
$"<td>{(sum >= obligation && sum <= right ? $"{right - sum:N0}" : "-")}</td>" +
|
$"<td>{(mode == 1 ? "" : payment >= obligation && sum <= right ? $"{right - sum:N0}" : "-")}</td>" +
|
||||||
$"<td>{(obligation == 0 && right == 0 ? "-" : (sum > right ? ((isGa ? "<b>" : "") + $"{sum - right:N0}" + (isGa ? "</b>" : "")) : "-"))}</td>" +
|
$"<td>{(mode == 1 ? "" : obligation == 0 && right == 0 ? "-" : (sum > right ? ((isGa ? "<b>" : "") + $"{sum - right:N0}" + (isGa ? "</b>" : "")) : "-"))}</td>" +
|
||||||
$"<td>{(obligation == 0 && right == 0 ? "-" : $"{payment:N0}")}</td>" +
|
$"<td>{(mode != 2 ? "" : obligation == 0 && right == 0 ? "-" : $"{payment:N0}")}</td>" +
|
||||||
$"<td>{sum:N0}</td>";
|
$"<td>{sum:N0}</td>";
|
||||||
}
|
}
|
||||||
|
var mBins = Model.MemberBins.Where(b => b.Value.Item2 > 0 || b.Value.Item3 > 0 || b.Value.Item4 > 0).ToList();
|
||||||
|
var fbVars = mBins.Where(b => b.Value.Item2 > 0 || b.Value.Item3 > 0).Select(b => b.Key.Replace("_", "")).Order().ToArray();
|
||||||
|
var fbs = mBins.Where(b => fbVars.Contains(b.Key)).OrderBy(b => b.Value.Item1);
|
||||||
|
var rem = mBins.Where(b => !fbVars.Contains(b.Key)).OrderBy(b => b.Value.Item1);
|
||||||
}
|
}
|
||||||
<tr>
|
<tr>
|
||||||
<th>Gesamtlieferung lt. gez. GA</th>
|
<th>Gesamtlieferung lt. gez. GA</th>
|
||||||
@Raw(FormatRow(Model.Member.DeliveryObligation, Model.Member.DeliveryRight, Model.Member.Deliveries.Where(d => d.Year == Model.Year).Sum(d => d.Weight)))
|
@Raw(FormatRow(0, Model.Member.DeliveryObligation, Model.Member.DeliveryRight, Model.Member.Deliveries.Where(d => d.Year == Model.Year).Sum(d => d.Weight)))
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="subheading">
|
@if (rem.Any()) {
|
||||||
<th>Flächenbindungen:</th>
|
<tr class="subheading"><th colspan="8">Sortenaufteilung:</th></tr>
|
||||||
</tr>
|
}
|
||||||
@foreach (var (id, (name, right, obligation, sum, payment)) in Model.MemberBins.OrderBy(b => b.Key)) {
|
@foreach (var (id, (name, right, obligation, sum, payment)) in rem) {
|
||||||
if (right > 0 || obligation > 0 || sum > 0) {
|
<tr>
|
||||||
<tr>
|
<th>@name</th>
|
||||||
<th>@name</th>
|
@Raw(FormatRow(1, obligation, right, sum, payment))
|
||||||
@Raw(FormatRow(obligation, right, sum, payment))
|
</tr>
|
||||||
</tr>
|
}
|
||||||
}
|
@if (fbs.Any()){
|
||||||
|
<tr class="subheading"><th colspan="8">Flächenbindungen:</th></tr>
|
||||||
|
}
|
||||||
|
@foreach (var (id, (name, right, obligation, sum, payment)) in fbs) {
|
||||||
|
<tr>
|
||||||
|
<th>@name</th>
|
||||||
|
@Raw(FormatRow(2, obligation, right, sum, payment))
|
||||||
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -106,3 +106,8 @@ table.delivery-confirmation-stats tbody th {
|
|||||||
font-style: italic;
|
font-style: italic;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.delivery-confirmation-stats tr.subheading th {
|
||||||
|
font-weight: bold;
|
||||||
|
border-top: 0.5pt solid black;
|
||||||
|
}
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ namespace Elwig.Helpers {
|
|||||||
var variety = await WineVarieties.FindAsync(id[..2]);
|
var variety = await WineVarieties.FindAsync(id[..2]);
|
||||||
var attrIds = id[2..];
|
var attrIds = id[2..];
|
||||||
var attrs = await WineAttributes.Where(a => attrIds.Contains(a.AttrId)).ToListAsync();
|
var attrs = await WineAttributes.Where(a => attrIds.Contains(a.AttrId)).ToListAsync();
|
||||||
var name = (variety?.Name ?? "") + (attrs.Count > 0 ? $" ({string.Join(" / ", attrs.Select(a => a.Name))})" : "");
|
var name = (variety?.Name ?? "") + (attrIds == "_" ? " (kein Qual.Wein)" : attrs.Count > 0 ? $" ({string.Join(" / ", attrs.Select(a => a.Name))})" : "");
|
||||||
bins[id] = (
|
bins[id] = (
|
||||||
name,
|
name,
|
||||||
rightsAndObligations.GetValueOrDefault(id).Item1,
|
rightsAndObligations.GetValueOrDefault(id).Item1,
|
||||||
|
|||||||
Reference in New Issue
Block a user