DeliveryAdminWindow: Add DeliveryJournal
This commit is contained in:
67
Elwig/Documents/DeliveryJournal.cshtml
Normal file
67
Elwig/Documents/DeliveryJournal.cshtml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
@using RazorLight
|
||||||
|
@inherits TemplatePage<Elwig.Documents.DeliveryJournal>
|
||||||
|
@model Elwig.Documents.DeliveryJournal
|
||||||
|
@{ Layout = "Document"; }
|
||||||
|
<link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-deliveryjournal.css"/>
|
||||||
|
<main>
|
||||||
|
<h1>Lieferjournal</h1>
|
||||||
|
<h2>@Model.Filter</h2>
|
||||||
|
<table class="journal">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 25mm;"/>
|
||||||
|
<col style="width: 5mm;"/>
|
||||||
|
<col style="width: 17mm;"/>
|
||||||
|
<col style="width: 10mm;"/>
|
||||||
|
<col style="width: 8mm;"/>
|
||||||
|
<col style="width: 38mm;"/>
|
||||||
|
<col style="width: 28mm;"/>
|
||||||
|
<col style="width: 10mm;"/>
|
||||||
|
<col style="width: 10mm;"/>
|
||||||
|
<col style="width: 14mm;"/>
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th rowspan="2" style="text-align: left;">Lieferschein-Nr.</th>
|
||||||
|
<th rowspan="2">Pos.</th>
|
||||||
|
<th rowspan="2">Datum</th>
|
||||||
|
<th rowspan="2">Zeit</th>
|
||||||
|
<th colspan="2" rowspan="2" style="text-align: left;">Mitglied</th>
|
||||||
|
<th rowspan="2" style="text-align: left;">Sorte</th>
|
||||||
|
<th colspan="2">Gradation</th>
|
||||||
|
<th>Gewicht</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>[°Oe]</th>
|
||||||
|
<th>[°KMW]</th>
|
||||||
|
<th>[kg]</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (var p in Model.Deliveries) {
|
||||||
|
<tr>
|
||||||
|
<td>@p.Delivery.LsNr</td>
|
||||||
|
<td>@p.DPNr</td>
|
||||||
|
<td>@($"{p.Delivery.Date:dd.MM.yyyy}")</td>
|
||||||
|
<td>@($"{p.Delivery.Time:HH:mm}")</td>
|
||||||
|
<td class="mgnr">@p.Delivery.Member.MgNr</td>
|
||||||
|
<td>@p.Delivery.Member.AdministrativeName</td>
|
||||||
|
<td>@p.Variant.Name</td>
|
||||||
|
<td class="grad">@($"{p.Oe:N0}")</td>
|
||||||
|
<td class="grad">@($"{p.Kmw:N1}")</td>
|
||||||
|
<td class="weight">@($"{p.Weight:N0}")</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
<tr class="sum">
|
||||||
|
@{
|
||||||
|
var kmw = Elwig.Helpers.Utils.AggregateDeliveryPartsKmw(Model.Deliveries);
|
||||||
|
var oe = Elwig.Helpers.Utils.KmwToOe(kmw);
|
||||||
|
}
|
||||||
|
<td colspan="2">Gesamt:</td>
|
||||||
|
<td colspan="5">(Teil-)Lieferungen: @($"{Model.Deliveries.DistinctBy(p => p.Delivery).Count():N0}") (@($"{Model.Deliveries.Count():N0}"))</td>
|
||||||
|
<td class="grad">@($"{oe:N0}")</td>
|
||||||
|
<td class="grad">@($"{kmw:N1}")</td>
|
||||||
|
<td class="weight">@($"{Model.Deliveries.Sum(p => p.Weight):N0}")</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</main>
|
25
Elwig/Documents/DeliveryJournal.cshtml.cs
Normal file
25
Elwig/Documents/DeliveryJournal.cshtml.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
using Elwig.Helpers;
|
||||||
|
using Elwig.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Elwig.Documents {
|
||||||
|
public class DeliveryJournal : Document {
|
||||||
|
|
||||||
|
public string Filter;
|
||||||
|
public IEnumerable<DeliveryPart> Deliveries;
|
||||||
|
|
||||||
|
public DeliveryJournal(string filter, IEnumerable<DeliveryPart> deliveries) : base($"Lieferjournal {filter}") {
|
||||||
|
Filter = filter;
|
||||||
|
Deliveries = deliveries;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeliveryJournal(AppDbContext ctx, DateOnly date) :
|
||||||
|
this(date.ToString("dd.MM.yyyy"), ctx.DeliveryParts
|
||||||
|
.Where(p => p.Delivery.DateString == date.ToString("yyy-MM-dd"))
|
||||||
|
.OrderBy(p => p.Delivery.LsNr)
|
||||||
|
.ThenBy(p => p.DPNr)
|
||||||
|
.ToList()) { }
|
||||||
|
}
|
||||||
|
}
|
@ -53,6 +53,8 @@ namespace Elwig.Documents {
|
|||||||
name = "DeliveryNote";
|
name = "DeliveryNote";
|
||||||
} else if (this is CreditNote) {
|
} else if (this is CreditNote) {
|
||||||
name = "CreditNote";
|
name = "CreditNote";
|
||||||
|
} else if (this is DeliveryJournal) {
|
||||||
|
name = "DeliveryJournal";
|
||||||
} else {
|
} else {
|
||||||
throw new InvalidOperationException("Invalid document object");
|
throw new InvalidOperationException("Invalid document object");
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ namespace Elwig.Documents {
|
|||||||
await e.CompileTemplateAsync("BusinessLetter");
|
await e.CompileTemplateAsync("BusinessLetter");
|
||||||
await e.CompileTemplateAsync("DeliveryNote");
|
await e.CompileTemplateAsync("DeliveryNote");
|
||||||
await e.CompileTemplateAsync("CreditNote");
|
await e.CompileTemplateAsync("CreditNote");
|
||||||
|
await e.CompileTemplateAsync("DeliveryJournal");
|
||||||
|
|
||||||
Engine = e;
|
Engine = e;
|
||||||
evtHandler();
|
evtHandler();
|
||||||
|
47
Elwig/Documents/style-deliveryjournal.css
Normal file
47
Elwig/Documents/style-deliveryjournal.css
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24pt;
|
||||||
|
margin-bottom: 2mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 14pt;
|
||||||
|
margin-top: 2mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal {
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal thead {
|
||||||
|
font-size: 8pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal th {
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal td {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal .mgnr,
|
||||||
|
table.journal .weight {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal .grad {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal tr.sum {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.journal tr.sum td {
|
||||||
|
border-top: 0.5pt solid black;
|
||||||
|
}
|
@ -63,6 +63,10 @@
|
|||||||
Click="Menu_Print_ShowDeliveryNote_Click"/>
|
Click="Menu_Print_ShowDeliveryNote_Click"/>
|
||||||
<MenuItem x:Name="Menu_Print_PrintDeliveryNote" Header="Lieferschein drucken" IsEnabled="False"
|
<MenuItem x:Name="Menu_Print_PrintDeliveryNote" Header="Lieferschein drucken" IsEnabled="False"
|
||||||
Click="Menu_Print_PrintDeliveryNote_Click"/>
|
Click="Menu_Print_PrintDeliveryNote_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_Print_ShowDeliveryJournalToday" Header="Lieferjournal anzeigen (heute)"
|
||||||
|
Click="Menu_Print_ShowDeliveryJournalToday_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_Print_ShowDeliveryJournalYesterday" Header="Lieferjournal anzeigen (gestern)"
|
||||||
|
Click="Menu_Print_ShowDeliveryJournalYesterday_Click"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="Exportieren">
|
<MenuItem Header="Exportieren">
|
||||||
<MenuItem x:Name="Menu_Export_Bki" Header="Traubentransportscheinliste (BKI)"/>
|
<MenuItem x:Name="Menu_Export_Bki" Header="Traubentransportscheinliste (BKI)"/>
|
||||||
|
@ -141,6 +141,22 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void Menu_Print_ShowDeliveryJournalToday_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
|
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
||||||
|
await doc.Generate();
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
|
doc.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Menu_Print_ShowDeliveryJournalYesterday_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
Mouse.OverrideCursor = Cursors.Wait;
|
||||||
|
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today.AddDays(-1)));
|
||||||
|
await doc.Generate();
|
||||||
|
Mouse.OverrideCursor = null;
|
||||||
|
doc.Show();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnSecondPassed(object? sender, EventArgs? evt) {
|
private void OnSecondPassed(object? sender, EventArgs? evt) {
|
||||||
if (IsReceipt && IsCreating) {
|
if (IsReceipt && IsCreating) {
|
||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
|
Reference in New Issue
Block a user