324 lines
13 KiB
Plaintext
324 lines
13 KiB
Plaintext
@using RazorLight
|
|
@inherits TemplatePage<Elwig.Documents.MemberDataSheet>
|
|
@model Elwig.Documents.MemberDataSheet
|
|
@{
|
|
Layout = "BusinessDocument";
|
|
}
|
|
<link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\MemberDataSheet.css" />
|
|
<main>
|
|
<h1>@Model.Title</h1>
|
|
<table class="member">
|
|
<thead>
|
|
<tr><th colspan="4">Persönliche Daten</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>Mitglieds-Nr.</th>
|
|
<td>@Model.Member.MgNr</td>
|
|
<th>Vorgänger MgNr.</th>
|
|
<td>@(Model.Member.PredecessorMgNr != null ? Model.Member.PredecessorMgNr : "-")</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Titel (vorangestellt)</th>
|
|
<td>@Model.Member.Prefix</td>
|
|
<th>Titel (nachgestellt)</th>
|
|
<td>@Model.Member.Suffix</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Vorname</th>
|
|
<td>@Model.Member.GivenName</td>
|
|
<th>Nachname</th>
|
|
<td>@Model.Member.FamilyName</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Weitere Vornamen</th>
|
|
<td colspan="3">@Model.Member.MiddleName</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Geburtsjahr/-tag</th>
|
|
<td colspan="3">@(Model.Member.Birthday == null ? "-" : string.Join('.', Model.Member.Birthday.Split('-').Reverse()))</td>
|
|
</tr>
|
|
</tbody>
|
|
|
|
<thead>
|
|
<tr><th colspan="4">Anschrift</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>Adresse</th>
|
|
<td colspan="3">@Model.Member.Address</td>
|
|
</tr>
|
|
<tr>
|
|
<th>PLZ/Ort</th>
|
|
<td colspan="3">@Model.Member.PostalDest.AtPlz?.Plz @Model.Member.PostalDest.AtPlz?.Dest (@Model.Member.PostalDest.AtPlz?.Ort.Name)</td>
|
|
</tr>
|
|
</tbody>
|
|
|
|
<thead>
|
|
<tr><th colspan="4">Rechnungsadresse</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>Name</th>
|
|
<td colspan="3">@Model.Member.BillingAddress?.Name</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Adresse</th>
|
|
<td colspan="3">@Model.Member.BillingAddress?.Address</td>
|
|
</tr>
|
|
<tr>
|
|
<th>PLZ/Ort</th>
|
|
<td colspan="3">@Model.Member.BillingAddress?.PostalDest.AtPlz?.Plz @Model.Member.BillingAddress?.PostalDest.AtPlz?.Dest @((Model.Member.BillingAddress != null && Model.Member.BillingAddress.PostalDest.AtPlz != null) ? "(" + Model.Member.BillingAddress?.PostalDest.AtPlz?.Ort.Name + ")" : "")</td>
|
|
</tr>
|
|
</tbody>
|
|
|
|
<thead>
|
|
<tr><th colspan="4">Kontaktdaten</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var e in Model.Member.EmailAddresses) {
|
|
var emailNumber = Model.Member.EmailAddresses.Count > 1 ? 1 : 0;
|
|
<tr>
|
|
<th>E-Mail-Adresse @(emailNumber != 0 ? $"({emailNumber})" : "")</th>
|
|
<td colspan="3">@e.Address</td>
|
|
</tr>
|
|
emailNumber++;
|
|
}
|
|
@foreach (var k in Model.Member.TelephoneNumbers) {
|
|
<tr>
|
|
@if (k.Type.Equals("landline")) {
|
|
<th>Tel.-Nr. (Festnetz)</th>
|
|
} else if (k.Type.Equals("mobile")) {
|
|
<th>Tel.-Nr. (mobil)</th>
|
|
} else if (k.Type.Equals("fax")) {
|
|
<th>Fax-Nr.</th>
|
|
}
|
|
<td colspan="3">@k.Number</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
|
|
<thead>
|
|
<tr><th colspan="4">Bankverbindung</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>IBAN</th>
|
|
<td colspan="3">@(Model.Member.Iban != null ? Elwig.Helpers.Utils.FormatIban(Model.Member.Iban) : "")</td>
|
|
</tr>
|
|
<tr>
|
|
<th>BIC</th>
|
|
<td colspan="3">@Model.Member.Bic</td>
|
|
</tr>
|
|
</tbody>
|
|
|
|
<thead>
|
|
<tr><th colspan="4">Betrieb</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>UID</th>
|
|
<td>@Model.Member.UstIdNr</td>
|
|
<th>Betriebs-Nr.</th>
|
|
<td>@Model.Member.LfbisNr</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Buchführend</th>
|
|
<td>@(Model.Member.IsBuchführend ? "Ja" : "Nein")</td>
|
|
<th>Bio</th>
|
|
<td>@(Model.Member.IsOrganic ? "Ja" : "Nein")</td>
|
|
</tr>
|
|
</tbody>
|
|
|
|
<thead>
|
|
<tr><th colspan="4">Genossenschaft</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>Eintritt</th>
|
|
<td>@Model.Member.EntryDate</td>
|
|
<th>Austritt</th>
|
|
<td>@Model.Member.ExitDate</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Aktiv</th>
|
|
<td>@(Model.Member.IsActive ? "Ja" : "Nein")</td>
|
|
<th>Geschäftsanteile</th>
|
|
<td>@Model.Member.BusinessShares</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Volllierferant</th>
|
|
<td>@(Model.Member.IsVollLieferant ? "Ja" : "Nein")</td>
|
|
<th>Funktionär</th>
|
|
<td>@(Model.Member.IsFunktionär ? "Ja" : "Nein")</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Stamm-Zweigstelle</th>
|
|
<td>@Model.Member.Branch?.Name</td>
|
|
<th>Stammgemeinde</th>
|
|
<td>@Model.Member.DefaultKg?.Name</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Kontakt via Post</th>
|
|
<td>@(Model.Member.ContactViaPost ? "Ja" : "Nein")</td>
|
|
<th>Kontakt via E-Mail</th>
|
|
<td>@(Model.Member.ContactViaEmail ? "Ja" : "Nein")</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
@{
|
|
var areaComs = Model.Member.ActiveAreaCommitments.GroupBy(a => a.AreaComType).Select(group => new {
|
|
AreaComType = group.Key,
|
|
AreaComs = group.OrderBy(c => c.Kg.AtKg.Name),
|
|
Size = group.Sum(c => c.Area)
|
|
}).OrderByDescending(a => a.Size).ToList();
|
|
var lastContract = "";
|
|
}
|
|
|
|
@if (areaComs.Count != 0) {
|
|
<h1>Flächenbindungen</h1>
|
|
<table class="area-commitements">
|
|
<colgroup>
|
|
<col style="width: 40mm;" />
|
|
<col style="width: 30mm;" />
|
|
<col style="width: 35mm;" />
|
|
<col style="width: 15mm;" />
|
|
<col style="width: 25mm;" />
|
|
<col style="width: 20mm;" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th rowspan="2" style="text-align: left;">Katastralgemeinde</th>
|
|
<th rowspan="2" style="text-align: left;">Ried</th>
|
|
<th rowspan="2" style="text-align: left;">Parzelle(n)</th>
|
|
<th>Fläche</th>
|
|
<th rowspan="2" style="text-align: center;">Bewirt.</th>
|
|
<th rowspan="2" style="text-align: center;">Laufzeit</th>
|
|
</tr>
|
|
<tr>
|
|
<th>[m²]</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
@foreach (var contractType in areaComs) {
|
|
<tr class="contract-type @(contractType.AreaComType.DisplayName != lastContract && lastContract != "" ? "new" : "")">
|
|
<th colspan="3" style="text-align: left">
|
|
@($"{contractType.AreaComType.WineVar.Name} {(contractType.AreaComType.WineAttr != null ? "(" + contractType.AreaComType.WineAttr + ")" : "")}")
|
|
</th>
|
|
<th style="text-align: right">@($"{contractType.Size:N0}")</th>
|
|
<th colspan="2"></th>
|
|
</tr>
|
|
@foreach (var areaCom in contractType.AreaComs) {
|
|
<tr class="area-commitment">
|
|
<td>@areaCom.Kg.AtKg.Name <span style="font-size: 8pt;">(@areaCom.Kg.AtKg.KgNr)</span></td>
|
|
<td>@areaCom.Rd?.Name</td>
|
|
<td>@areaCom.GstNr.Replace(",", ", ")</td>
|
|
<td style="text-align: right;">@($"{areaCom.Area:N0}")</td>
|
|
<td style="text-align: center;">@areaCom.WineCult.Name</td>
|
|
<td style="text-align: center;">Ab @areaCom.YearFrom</td>
|
|
</tr>
|
|
lastContract = contractType.AreaComType.DisplayName;
|
|
}
|
|
}
|
|
|
|
<tr class="new">
|
|
<th colspan="3" style="text-align: left">Gesamt</th>
|
|
<th style="text-align: right">@($"{Model.Member.ActiveAreaCommitments.Select(a => a.Area).Sum():N0}")</th>
|
|
<th colspan="2"></th>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<table class="delivery-confirmation-stats">
|
|
<colgroup>
|
|
<col style="width: 102mm;" />
|
|
<col style="width: 21mm;" />
|
|
<col style="width: 21mm;" />
|
|
<col style="width: 21mm;" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th rowspan="2"></th>
|
|
<th style="text-align: center;">Fläche</th>
|
|
<th style="text-align: center;">Lieferpflicht</th>
|
|
<th style="text-align: center;">Lieferrecht</th>
|
|
</tr>
|
|
<tr>
|
|
<th style="text-align: center;">[m²]</th>
|
|
<th style="text-align: center;">[kg]</th>
|
|
<th style="text-align: center;">[kg]</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@{
|
|
string FormatRow(int mode, int area, int obligation, int right) {
|
|
return $"<td>{(mode == 0 || mode == 1 ? "" : area == 0 ? "-" : $"{area:N0}")}</td>" +
|
|
$"<td>{(mode == 1 ? "" : obligation == 0 ? "-" : $"{obligation:N0}")}</td>" +
|
|
$"<td>{(mode == 1 ? "" : right == 0 ? "-" : $"{right:N0}")}</td>";
|
|
}
|
|
var mBuckets = Model.MemberBuckets.Where(b => b.Value.Item2 > 0 || b.Value.Item3 > 0 || b.Value.Item4 > 0).ToList();
|
|
var fbVars = mBuckets.Where(b => b.Value.Item2 > 0 || b.Value.Item3 > 0).Select(b => b.Key.Replace("_", "")).Order().ToArray();
|
|
var fbs = mBuckets.Where(b => fbVars.Contains(b.Key) && b.Key.Length == 2).OrderBy(b => b.Value.Item1);
|
|
var vtr = mBuckets.Where(b => fbVars.Contains(b.Key) && b.Key.Length > 2).OrderBy(b => b.Value.Item1);
|
|
}
|
|
<tr>
|
|
<th>Laut gezeichneten GA</th>
|
|
@Raw(FormatRow(
|
|
0,
|
|
0,
|
|
Model.Member.BusinessShares * Model.Season.MinKgPerBusinessShare,
|
|
Model.Member.BusinessShares * Model.Season.MaxKgPerBusinessShare
|
|
))
|
|
</tr>
|
|
@if (fbs.Any()) {
|
|
<tr class="subheading"><th colspan="8">Flächenbindungen:</th></tr>
|
|
}
|
|
@foreach (var (id, (name, right, obligation, _, _)) in fbs) {
|
|
<tr>
|
|
<th>@name</th>
|
|
@Raw(FormatRow(2, Model.BucketAreas[id], obligation, right))
|
|
</tr>
|
|
}
|
|
@if (vtr.Any()) {
|
|
<tr class="subheading"><th colspan="8">Verträge:</th></tr>
|
|
}
|
|
@foreach (var (id, (name, right, obligation, _, _)) in vtr) {
|
|
<tr>
|
|
<th>@name</th>
|
|
@Raw(FormatRow(2, Model.BucketAreas[id], obligation, right))
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
} else {
|
|
<table class="delivery-confirmation-stats" style="margin-top: 5mm;">
|
|
<colgroup>
|
|
<col style="width: 123mm;" />
|
|
<col style="width: 21mm;" />
|
|
<col style="width: 21mm;" />
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th rowspan="2"></th>
|
|
<th style="text-align: center;">Lieferpflicht</th>
|
|
<th style="text-align: center;">Lieferrecht</th>
|
|
</tr>
|
|
<tr>
|
|
<th style="text-align: center;">[kg]</th>
|
|
<th style="text-align: center;">[kg]</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>Laut gezeichneten GA</th>
|
|
<td>@($"{Model.Member.BusinessShares * Model.Season.MinKgPerBusinessShare:N0}")</td>
|
|
<td>@($"{Model.Member.BusinessShares * Model.Season.MaxKgPerBusinessShare:N0}")</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
}
|
|
|
|
</main> |