@using RazorLight @inherits TemplatePage<Elwig.Documents.DeliveryNote> @model Elwig.Documents.DeliveryNote @{ Layout = "BusinessDocument"; } <link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\DeliveryNote.css" /> <main> <h1>@Model.Title</h1> <table class="delivery"> <colgroup> <col style="width: 10.00mm;"/> <col style="width: 21.25mm;"/> <col style="width: 21.25mm;"/> <col style="width: 21.25mm;"/> <col style="width: 21.25mm;"/> <col style="width: 30.00mm;"/> <col style="width: 12.50mm;"/> <col style="width: 12.50mm;"/> <col style="width: 15.00mm;"/> </colgroup> <thead> <tr> <th class="main" rowspan="2" style="text-align: center;">Pos.</th> <th class="main" rowspan="2" colspan="2">Sorte</th> <th class="main" rowspan="2" colspan="2">Attribut(e)</th> <th class="main" rowspan="2">Qualitätsstufe</th> <th colspan="2">Gradation</th> <th>Gewicht</th> </tr> <tr> <th style="font-size: 8pt;">[°Oe]</th> <th style="font-size: 8pt;">[°KMW]</th> <th style="font-size: 8pt;">[kg]</th> </tr> </thead> <tbody> @foreach (var part in Model.Delivery.Parts.OrderBy(p => p.DPNr)) { <tr class="main"> <td style="text-align: center;">@part.DPNr</td> <td colspan="2">@part.Variant.Name</td> <td colspan="2">@string.Join(" / ", part.Attributes)</td> <td>@part.Quality.Name</td> <td class="narrow" style="text-align: center;">@($"{part.Oe:N0}")</td> <td class="narrow" style="text-align: center;">@($"{part.Kmw:N1}")</td> <td class="narrow" style="text-align: right;">@($"{part.Weight:N0}")</td> </tr> <tr><td></td><td colspan="5" style="white-space: pre;"><i>Herkunft:</i> @part.OriginString</td></tr> @if (part.Modifiers.Count() > 0) { var first = true; foreach (var mod in part.Modifiers) { <tr class="tight @(first ? "first" : "")"><td></td><td>@Raw(first ? "<i>Zu-/Abschläge:</i>" : "")</td><td colspan="3"><b>@mod.Name</b></td><td style="white-space: pre;">@mod.ValueStr</td></tr> first = false; } } <tr><td></td><td colspan="5"> @Raw(part.ManualWeighing ? "<i>Handwiegung</i>" : $"<i>Waage:</i> {part.ScaleId ?? "?"}, <i>ID:</i> {part.WeighingId ?? "?"}") (@(part.IsGerebelt ? "gerebelt gewogen" : "nicht gerebelt gewogen"))@Raw(part.WeighingReason != null ? $", <i>Begründung:</i>" : "") @part.WeighingReason </td></tr> @if (part.Comment != null) { <tr><td></td><td colspan="5"><i>Anmerkung:</i> @part.Comment</td></tr> } @if (part.Temperature != null || part.Acid != null) { <tr><td></td><td colspan="5">@Raw(part.Temperature != null ? $"<i>Temperatur:</i> {part.Temperature:N1} °C" : "")@(part.Temperature != null && part.Acid != null ? ", " : "")@Raw(part.Acid != null ? $"<i>Säure:</i> {part.Acid:N1} g/l" : "")</td></tr> } } @if (Model.Delivery.Parts.Count() > 1) { <tr class="main sum"> <td colspan="6">Gesamt:</td> <td style="text-align: center;">@($"{Model.Delivery.Oe:N0}")</td> <td style="text-align: center;">@($"{Model.Delivery.Kmw:N1}")</td> <td style="text-align: right;">@($"{Model.Delivery.Weight:N0}")</td> </tr> } </tbody> </table> @if (Model.Delivery.Comment != null) { <p class="comment">Amerkung zur Lieferung: @Model.Delivery.Comment</p> } @if (Model.DisplayStats > 0) { <table class="delivery-note-stats @(Model.DisplayStats > 2 ? "expanded" : "")"> <colgroup> <col style="width: 45mm;"/> <col style="width: 20mm;"/> <col style="width: 20mm;"/> <col style="width: 20mm;"/> <col style="width: 20mm;"/> <col style="width: 20mm;"/> <col style="width: 20mm;"/> </colgroup> <thead> <tr> <th><b>Lese @Model.Delivery.Year</b> per @($"{Model.Date:dd.MM.yyyy}") [kg]</th> <th>Lieferpflicht</th> <th>Lieferrecht</th> <th>Unterliefert</th> <th>Noch lieferbar</th> <th>Überliefert</th> <th>Geliefert</th> </tr> </thead> <tbody> @{ string FormatRow(int obligation, int right, int sum) { return $"<td>{obligation:N0}</td>" + $"<td>{right:N0}</td>" + $"<td>{(sum < obligation ? $"{obligation - sum:N0}" : "-")}</td>" + $"<td>{(sum >= obligation && sum <= right ? $"{right - sum:N0}" : "-")}</td>" + $"<td>{(sum > right ? $"{sum - right:N0}" : "-")}</td>" + $"<td>{sum:N0}</td>"; } var sortids = Model.Delivery.Parts.Select(p => p.SortId).ToList(); var bins = Model.MemberBins.GroupBy(b => b.Key[..2]).ToDictionary(g => g.Key, g => g.Count()); } <tr> <th>Gesamtlieferung lt. gez. GA</th> @Raw(FormatRow(Model.Member.DeliveryObligation, Model.Member.DeliveryRight, Model.Member.Deliveries.Where(d => d.Year == Model.Delivery.Year).Sum(d => d.Weight))) </tr> @if (Model.DisplayStats > 1) { <tr class="subheading"> <th>Flächenbindungen:</th> </tr> @foreach (var (id, (name, right, obligation, sum, _)) in Model.MemberBins.OrderBy(b => b.Key)) { if (right > 0 || obligation > 0 || (sum > 0 && bins[id[..2]] > 1 && !id.EndsWith('_'))) { <tr class="@(sortids.Contains(id[..2]) ? "" : "optional")"> <th>@name</th> @Raw(FormatRow(obligation, right, sum)) </tr> } } } </tbody> </table> } </main> @for (int i = 0; i < 2; i++) { <div class="text @(i == 0 ? "hidden" : "bottom")"> @if (Model.Text != null) { <p class="comment">@Model.Text</p> } <div class="signatures"> <div>Genossenschaft</div> <div>Mitglied</div> </div> </div> }