Compare commits

...

3 Commits

Author SHA1 Message Date
77cee53f2d MainWindow: Cleanup and move parts to TestWindow 2023-09-12 21:41:00 +02:00
1a673f4b3a Documents: Add CreditNote 2023-09-12 21:40:33 +02:00
5ad8c88319 Models: Add Credit 2023-09-12 21:40:04 +02:00
16 changed files with 517 additions and 47 deletions

View File

@@ -0,0 +1,86 @@
@using RazorLight
@inherits TemplatePage<Elwig.Documents.CreditNote>
@model Elwig.Documents.CreditNote
@{ Layout = "BusinessDocument"; }
<link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-creditnote.css"/>
@{
var bucketNum = Model.BucketNames.Length;
}
<main>
<div class="date">@Model.Location, am @($"{Model.Date:dd.MM.yyyy}")</div>
<h1>@Model.Title</h1>
<table class="credit">
<colgroup>
<col style="width: 24mm;"/>
<col style="width: 6mm;"/>
<col style="width: 31mm;"/>
<col style="width: 15mm;"/>
<col style="width: 8mm;"/>
<col style="width: 10mm;"/>
<col style="width: 12mm;"/>
<col style="width: 10mm;"/>
<col style="width: 12mm;"/>
<col style="width: 15mm;"/>
<col style="width: 17mm;"/>
</colgroup>
<thead>
<tr>
<th rowspan="3" style="text-align: left;">Lieferschein-Nr.</th>
<th rowspan="3">Pos.</th>
<th rowspan="3" style="text-align: left;">Sorte</th>
<th rowspan="3" style="text-align: left;">Attribut(e)</th>
<th rowspan="2" colspan="2">Gradation</th>
<th colspan="2">Zu-/Abschläge</th>
<th colspan="2">@Raw(string.Join("<br/>", Model.BucketNames))</th>
<th rowspan="2">Betrag</th>
</tr>
<tr>
<th>Abs.</th>
<th>Rel.</th>
<th>Gewicht</th>
<th>Preis</th>
</tr>
<tr>
<th>[°Oe]</th>
<th>[°KMW]</th>
<th>[@Model.CurrencySymbol/kg]</th>
<th>[%]</th>
<th>[kg]</th>
<th>[@Model.CurrencySymbol/kg]</th>
<th>[@Model.CurrencySymbol]</th>
</tr>
</thead>
<tbody>
@{
string FormatRow(int? weight, decimal? amount) {
var w = weight == null || weight == 0 ? "-" : $"{weight:N0}";
return $"<td class='weight'>{w}</td><td class='amount'>{amount?.ToString("0." + string.Concat(Enumerable.Repeat('0', Model.Precision)))}</td>";
}
string? last = null;
}
@foreach (var part in Model.Parts) {
var pmt = part.Payment;
var abs = pmt?.ModAbs == null || pmt?.ModAbs == 0 ? "-" : pmt?.ModAbs.ToString("0." + string.Concat(Enumerable.Repeat('0', Model.Precision)));
var rel = pmt?.ModRel == null || pmt?.ModRel == 0 ? "-" : $"{pmt?.ModRel * 100:0.00##}";
<tr class="first @(bucketNum <= 1 ? "last" : "") @(last != null && last != part.SortId ? "new" : "")">
<td rowspan="@bucketNum" class="lsnr">@part.Delivery.LsNr</td>
<td rowspan="@bucketNum" class="dpnr">@part.DPNr</td>
<td rowspan="@bucketNum" class="variant">@part.Variant.Name</td>
<td rowspan="@bucketNum" class="attribute">@string.Join(" / ", part.PartAttributes.Select(a => a.AttrId))</td>
<td rowspan="@bucketNum" class="oe">@($"{part.Oe:N0}")</td>
<td rowspan="@bucketNum" class="kmw">@($"{part.Kmw:N1}")</td>
<td rowspan="@bucketNum" class="abs">@abs</td>
<td rowspan="@bucketNum" class="rel">@rel</td>
@Raw(FormatRow(pmt?.Buckets?.ElementAtOrDefault(0), pmt?.Prices?.ElementAtOrDefault(0)))
<td rowspan="@bucketNum" class="amount sum">@($"{pmt?.Amount:N2}")</td>
</tr>
@for (int i = 1; i < bucketNum; i++) {
<tr class="@(i == bucketNum - 1 ? "last" : "")">
@Raw(FormatRow(pmt?.Buckets?.ElementAtOrDefault(i), pmt?.Prices?.ElementAtOrDefault(i)))
</tr>
}
last = part.SortId;
}
</tbody>
</table>
</main>

View File

@@ -0,0 +1,39 @@
using Elwig.Helpers;
using Elwig.Models;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
namespace Elwig.Documents {
public class CreditNote : BusinessDocument {
public Credit Credit;
public string? Text;
public string CurrencySymbol;
public string[] BucketNames;
public int Precision;
public IEnumerable<DeliveryPart> Parts;
public CreditNote(Credit c, AppDbContext ctx) : base($"Traubengutschrift Nr. {c.TgId} {c.Payment.Variant.Name}", c.Member) {
UseBillingAddress = true;
Credit = c;
Aside = Aside.Replace("</table>", "") +
$"<thead><tr><th colspan='2'>Gutschrift</th></tr></thead><tbody>" +
$"<tr><th>TG-Nr.</th><td>{c.TgId}</td></tr>" +
$"<tr><th>Überw. am</th><td>{c.Payment.Variant.TransferDate:dd.MM.yyyy}</td></tr>" +
$"<tr><th>Datum/Zeit</th><td>{c.ModifiedTimestamp:dd.MM.yyyy} / {c.ModifiedTimestamp:HH:mm}</td></tr>" +
$"</tbody></table>";
Text = App.Client.TextDeliveryNote;
DocumentId = $"Tr.-Gutschr. {c.TgId}";
CurrencySymbol = c.Payment.Variant.Season.Currency.Symbol ?? c.Payment.Variant.Season.Currency.Code;
BucketNames = c.Payment.Variant.BucketNames;
Precision = c.Payment.Variant.Season.Precision;
Parts = ctx.DeliveryParts.FromSql($"""
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, v.mgnr) = ({c.Year}, {c.Member.MgNr})
ORDER BY sortid, LENGTH(attributes) DESC, attributes, kmw DESC, date, time, dpnr
""").ToList();
}
}}

View File

@@ -49,6 +49,8 @@ namespace Elwig.Documents {
name = "BusinessLetter";
} else if (this is DeliveryNote) {
name = "DeliveryNote";
} else if (this is CreditNote) {
name = "CreditNote";
} else {
throw new InvalidOperationException("Invalid document object");
}

View File

@@ -18,6 +18,7 @@ namespace Elwig.Documents {
await e.CompileTemplateAsync("BusinessDocument");
await e.CompileTemplateAsync("BusinessLetter");
await e.CompileTemplateAsync("DeliveryNote");
await e.CompileTemplateAsync("CreditNote");
Engine = e;
evtHandler();

View File

@@ -0,0 +1,64 @@
table.credit {
font-size: 10pt;
}
table.credit th,
table.credit td {
padding: 0 0.25mm;
}
table.credit thead {
font-size: 8pt
}
table.credit thead th {
font-weight: normal;
font-style: italic;
vertical-align: bottom;
}
table.credit td {
vertical-align: top;
}
table.credit .oe,
table.credit .kmw {
text-align: center;
}
table.credit .dpnr {
text-align: center;
}
table.credit .amount,
table.credit .weight {
text-align: right;
}
table.credit .rel,
table.credit .abs {
text-align: center;
}
table.credit .amount.sum {
vertical-align: bottom;
padding-bottom: 1mm;
}
table.credit tbody tr:not(.first):not(.last) {
break-before: avoid;
break-after: avoid;
}
table.credit tbody tr.first td {
padding-top: 1mm;
}
table.credit tbody tr.last td {
padding-bottom: 1mm;
}
table.credit tbody tr.new {
border-top: 0.5pt solid black;
}

View File

@@ -44,6 +44,7 @@ namespace Elwig.Helpers {
public DbSet<DeliveryPartModifier> DeliveryPartModifiers { get; private set; }
public DbSet<PaymentVar> PaymentVariants { get; private set; }
public DbSet<PaymentMember> MemberPayments { get; private set; }
public DbSet<Credit> Credits { get; private set; }
private readonly StreamWriter? LogFile = null;
public static DateTime LastWriteTime => File.GetLastWriteTime(App.Config.DatabaseFile);

View File

@@ -21,12 +21,9 @@ namespace Elwig.Helpers.Billing {
public static IEnumerable<Transaction> FromPaymentVariant(PaymentVar variant) {
var last = variant.Season.PaymentVariants.Where(v => v.TransferDate != null).OrderBy(v => v.TransferDate).LastOrDefault();
var dict = last?.MemberPayments.ToDictionary(m => m.MgNr, m => m.Amount) ?? new();
return variant.MemberPayments
.OrderBy(m => m.MgNr)
.Select(m => {
var amt = Math.Round(dict.GetValueOrDefault(m.MgNr, 0), 2);
return new Transaction(m.Member, m.Amount - amt, m.Variant.Season.CurrencyCode, m.TgNr ?? 0);
})
return variant.Credits
.OrderBy(c => c.MgNr)
.Select(c => new Transaction(c.Member, c.Amount, variant.Season.CurrencyCode, c.TgNr))
.ToList();
}

104
Elwig/Models/Credit.cs Normal file
View File

@@ -0,0 +1,104 @@
using Elwig.Helpers;
using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations.Schema;
namespace Elwig.Models {
[Table("credit"), PrimaryKey("Year", "TgNr"), Index("Year", "AvNr", "MgNr", IsUnique = true)]
public class Credit {
[Column("year")]
public int Year { get; set; }
[Column("tgnr")]
public int TgNr { get; set; }
[NotMapped]
public string TgId => $"{Year}/{TgNr:000}";
[Column("mgnr")]
public int MgNr { get; set; }
[Column("avnr")]
public int AvNr { get; set; }
[Column("net_amount")]
public long NetAmountValue { get; set; }
[NotMapped]
public decimal NetAmount {
get => Utils.DecFromDb(NetAmountValue, 2);
set => NetAmountValue = Utils.DecToDb(value, 2);
}
[Column("prev_net_amount")]
public long? PrevNetAmountValue { get; set; }
[NotMapped]
public decimal? PrevNetAmount {
get => PrevNetAmountValue != null ? Utils.DecFromDb(PrevNetAmountValue.Value, 2) : null;
set => PrevNetAmountValue = value != null ? Utils.DecToDb(value.Value, 2) : null;
}
[Column("vat")]
public double VatValue { get; set; }
[NotMapped]
public decimal Vat {
get => (decimal)VatValue;
set => VatValue = (double)value;
}
[Column("vat_amount")]
public long VatAmountValue { get; private set; }
[NotMapped]
public decimal VatAmount {
get => Utils.DecFromDb(VatAmountValue, 2);
}
[Column("gross_amount")]
public long GrossAmountValue { get; private set; }
[NotMapped]
public decimal GrossAmount {
get => Utils.DecFromDb(GrossAmountValue, 2);
}
[Column("modifiers")]
public long? ModifiersValue { get; set; }
[NotMapped]
public decimal? Modifiers {
get => ModifiersValue != null ? Utils.DecFromDb(ModifiersValue.Value, 2) : null;
set => ModifiersValue = value != null ? Utils.DecToDb(value.Value, 2) : null;
}
[Column("prev_modifiers")]
public long? PrevModifiersValue { get; set; }
[NotMapped]
public decimal? PrevModifiers {
get => PrevModifiersValue != null ? Utils.DecFromDb(PrevModifiersValue.Value, 2) : null;
set => PrevModifiersValue = value != null ? Utils.DecToDb(value.Value, 2) : null;
}
[Column("amount")]
public long AmountValue { get; private set; }
[NotMapped]
public decimal Amount {
get => Utils.DecFromDb(AmountValue, 2);
}
[Column("ctime")]
public long CTime { get; private set; }
[NotMapped]
public DateTime CreatedTimestamp => DateTimeOffset.FromUnixTimeSeconds(CTime).LocalDateTime;
[Column("mtime")]
public long MTime { get; private set; }
[NotMapped]
public DateTime ModifiedTimestamp => DateTimeOffset.FromUnixTimeSeconds(CTime).LocalDateTime;
[ForeignKey("Year, AvNr, MgNr")]
public virtual PaymentMember Payment { get; private set; }
[ForeignKey("Year, AvNr")]
public virtual PaymentVar Variant { get; private set; }
[ForeignKey("MgNr")]
public virtual Member Member { get; private set; }
}
}

View File

@@ -30,15 +30,10 @@ namespace Elwig.Models {
[Column("kmw")]
public double Kmw { get; set; }
[NotMapped]
public double Oe {
get {
return Utils.KmwToOe(Kmw);
}
set {
Kmw = Utils.OeToKmw(value);
}
get => Utils.KmwToOe(Kmw);
set => Kmw = Utils.OeToKmw(value);
}
[Column("qualid")]
@@ -107,6 +102,10 @@ namespace Elwig.Models {
[NotMapped]
public IEnumerable<Modifier> Modifiers => PartModifiers.Select(m => m.Modifier).OrderBy(m => m.Ordering);
[InverseProperty("DeliveryPart")]
public virtual PaymentDeliveryPart? Payment { get; private set; }
[NotMapped]
public string OriginString => Origin.OriginString + "\n" + (Kg?.Gl != null ? $" / {Kg.Gl.Name}" : "") + (Kg != null ? $" / {Kg.AtKg.Gem.Name} / KG {Kg.AtKg.Name}" : "") + (Rd != null ? $" / Ried {Rd.Name}" : "");
}
}

View File

@@ -0,0 +1,158 @@
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
namespace Elwig.Models {
[Table("payment_delivery_part"), PrimaryKey("Year", "DId", "DPNr", "AvNr")]
public class PaymentDeliveryPart {
[Column("year")]
public int Year { get; set; }
[Column("did")]
public int DId { get; set; }
[Column("dpnr")]
public int DPNr { get; set; }
[Column("avnr")]
public int AvNr { get; set; }
[Column("mod_abs")]
public long ModAbsValue { get; set; }
[NotMapped]
public decimal ModAbs {
get => Variant.Season.DecFromDb(ModAbsValue);
set => ModAbsValue = Variant.Season.DecToDb(value);
}
[Column("mod_rel")]
public double ModRelValue { get; set; }
[NotMapped]
public decimal ModRel {
get => (decimal)ModRelValue;
set => ModRelValue = (double)value;
}
[Column("bucket_1")]
public int? Bucket1 { get; set; }
[Column("bucket_2")]
public int? Bucket2 { get; set; }
[Column("bucket_3")]
public int? Bucket3 { get; set; }
[Column("bucket_4")]
public int? Bucket4 { get; set; }
[Column("bucket_5")]
public int? Bucket5 { get; set; }
[Column("bucket_6")]
public int? Bucket6 { get; set; }
[Column("bucket_7")]
public int? Bucket7 { get; set; }
[Column("bucket_8")]
public int? Bucket8 { get; set; }
[Column("bucket_9")]
public int? Bucket9 { get; set; }
[NotMapped]
public int[] Buckets => (new int?[] { Bucket1, Bucket2, Bucket3, Bucket4, Bucket5, Bucket6, Bucket7, Bucket8, Bucket9 })
.Where(b => b != null).Select(b => b.Value).ToArray();
[Column("price_1")]
public long? Price1Value { get; set; }
[NotMapped]
public decimal? Price1 {
get => Price1Value != null ? Variant.Season.DecFromDb(Price1Value.Value) : null;
set => Price1Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_2")]
public long? Price2Value { get; set; }
[NotMapped]
public decimal? Price2 {
get => Price2Value != null ? Variant.Season.DecFromDb(Price2Value.Value) : null;
set => Price2Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_3")]
public long? Price3Value { get; set; }
[NotMapped]
public decimal? Price3 {
get => Price3Value != null ? Variant.Season.DecFromDb(Price3Value.Value) : null;
set => Price3Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_4")]
public long? Price4Value { get; set; }
[NotMapped]
public decimal? Price4 {
get => Price4Value != null ? Variant.Season.DecFromDb(Price4Value.Value) : null;
set => Price4Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_5")]
public long? Price5Value { get; set; }
[NotMapped]
public decimal? Price5 {
get => Price5Value != null ? Variant.Season.DecFromDb(Price5Value.Value) : null;
set => Price5Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_6")]
public long? Price6Value { get; set; }
[NotMapped]
public decimal? Price6 {
get => Price6Value != null ? Variant.Season.DecFromDb(Price6Value.Value) : null;
set => Price6Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_7")]
public long? Price7Value { get; set; }
[NotMapped]
public decimal? Price7 {
get => Price7Value != null ? Variant.Season.DecFromDb(Price7Value.Value) : null;
set => Price7Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_8")]
public long? Price8Value { get; set; }
[NotMapped]
public decimal? Price8 {
get => Price8Value != null ? Variant.Season.DecFromDb(Price8Value.Value) : null;
set => Price8Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("price_9")]
public long? Price9Value { get; set; }
[NotMapped]
public decimal? Price9 {
get => Price9Value != null ? Variant.Season.DecFromDb(Price9Value.Value) : null;
set => Price9Value = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[Column("amount")]
public long? AmountValue { get; set; }
[NotMapped]
public decimal? Amount {
get => AmountValue != null ? Variant.Season.DecFromDb(AmountValue.Value) : null;
set => AmountValue = value != null ? Variant.Season.DecToDb(value.Value) : null;
}
[NotMapped]
public decimal[] Prices => (new decimal?[] { Price1, Price2, Price3, Price4, Price5, Price6, Price7, Price8, Price9 })
.Where(p => p != null).Select(p => p.Value).ToArray();
[ForeignKey("Year, AvNr")]
public virtual PaymentVar Variant { get; private set; }
[ForeignKey("Year, DId, DPNr")]
public virtual DeliveryPart DeliveryPart { get; private set; }
}
}

View File

@@ -2,7 +2,7 @@ using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
namespace Elwig.Models {
[Table("payment_member"), PrimaryKey("Year", "AvNr", "MgNr"), Index("Year", "TgNr", IsUnique = true)]
[Table("payment_member"), PrimaryKey("Year", "AvNr", "MgNr")]
public class PaymentMember {
[Column("year")]
public int Year { get; set; }
@@ -16,9 +16,6 @@ namespace Elwig.Models {
[Column("amount")]
public long AmountValue { get; set; }
[Column("tgnr")]
public int? TgNr { get; set; }
[NotMapped]
public decimal Amount {
get => Variant.Season.DecFromDb(AmountValue);
@@ -30,5 +27,8 @@ namespace Elwig.Models {
[ForeignKey("MgNr")]
public virtual Member Member { get; private set; }
[InverseProperty("Payment")]
public virtual Credit? Credit { get; private set; }
}
}

View File

@@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
namespace Elwig.Models {
[Table("payment_variant"), PrimaryKey("Year", "AvNr")]
@@ -66,6 +67,10 @@ namespace Elwig.Models {
[Column("bucket_9_name")]
public string? Bucket9Name { get; set; }
[NotMapped]
public string[] BucketNames => (new string?[] { Bucket1Name, Bucket2Name, Bucket3Name, Bucket4Name, Bucket5Name, Bucket6Name, Bucket7Name, Bucket8Name, Bucket9Name })
.Where(n => n != null).Select(n => n ?? "").ToArray();
[Column("comment")]
public string? Comment { get; set; }
@@ -77,5 +82,8 @@ namespace Elwig.Models {
[InverseProperty("Variant")]
public virtual ISet<PaymentMember> MemberPayments { get; private set; }
[InverseProperty("Variant")]
public virtual ISet<Credit> Credits { get; private set; }
}
}

View File

@@ -23,7 +23,7 @@
<MenuItem Header="Über"/>
</MenuItem>
</Menu>
<Grid Height="100" VerticalAlignment="Top" Margin="0,25,0,0">
<Grid Height="100" VerticalAlignment="Top" Margin="25,25,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
@@ -40,24 +40,18 @@
<Button x:Name="MemberAdminButton" Content="Mitglieder" Click="MemberAdminButton_Click"
Margin="50,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="MemberListButton" Content="Mitgliederliste" Click="MemberListButton_Click"
Margin="50,200,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="ReceiptButton" Content="Übernahme" Click="ReceiptButton_Click"
Margin="50,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
Margin="50,200,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="DeliveryAdminButton" Content="Lieferungen" Click="DeliveryAdminButton_Click"
Margin="50,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="PaymentWindowButton" Content="Auszahlung" Click="PaymentWindowButton_Click"
Margin="50,280,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="DeliveryListButton" Content="Lieferungungen" Click="DeliveryListButton_Click" IsEnabled="False"
<Button x:Name="BaseDataButton" Content="Stammdaten" Click="BaseDataButton_Click"
Margin="50,320,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="BaseDataButton" Content="Stammdaten" Click="BaseDataButton_Click"
Margin="260,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="PdfButton" Content="PDF Erzeugen" Click="PdfButton_Click" Tag="Print"
Margin="260,200,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="TestWindowButton" Content="Test Fenster" Click="TestWindowButton_Click"
Margin="260,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="QueryWindowButton" Content="Datenbankabfragen" Click="QueryWindowButton_Click"
Margin="260,280,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="PaymentWindowButton" Content="Auszahlung" Click="PaymentWindowButton_Click"
<Button x:Name="QueryWindowButton" Content="Datenbankabfragen" Click="QueryWindowButton_Click"
Margin="260,320,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</Grid>
</Window>

View File

@@ -1,9 +1,4 @@
using System.Linq;
using System.Windows;
using System.Windows.Input;
using Elwig.Documents;
using Elwig.Helpers;
using Microsoft.EntityFrameworkCore;
namespace Elwig.Windows {
public partial class MainWindow : Window {
@@ -12,9 +7,7 @@ namespace Elwig.Windows {
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {
PdfButton.IsEnabled = App.IsPrintingReady;
}
private void Window_Loaded(object sender, RoutedEventArgs evt) { }
private void MemberAdminButton_Click(object sender, RoutedEventArgs evt) {
var w = new MemberAdminWindow();
@@ -40,15 +33,6 @@ namespace Elwig.Windows {
// TODO
}
private async void PdfButton_Click(object sender, RoutedEventArgs evt) {
Mouse.OverrideCursor = Cursors.Wait;
using var ctx = new AppDbContext();
using var doc = new DeliveryNote(await ctx.Deliveries.OrderBy(d => d.Parts.Count).ThenBy(d => d.Year).ThenBy(d => d.DId).LastAsync(), ctx);
await doc.Generate();
doc.Show();
Mouse.OverrideCursor = null;
}
private void TestWindowButton_Click(object sender, RoutedEventArgs evt) {
var w = new TestWindow();
w.Show();

View File

@@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Elwig.Windows"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
Title="Test Fenster - Elwig" MinHeight="400" MinWidth="325" Height="450" Width="800" ResizeMode="CanResize">
Title="Test Fenster - Elwig" MinHeight="400" MinWidth="325" Height="450" Width="800" ResizeMode="CanResize" Loaded="Window_Loaded">
<Grid>
<xctk:CheckComboBox x:Name="MyComboBox" HorizontalAlignment="Left" Margin="216,186,0,0" VerticalAlignment="Top" Delimiter=", "
SelectedValue="{Binding SelectedValue}"
@@ -18,5 +18,10 @@
<TextBlock x:Name="Output" Height="20" Width="200" Margin="470,329,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Button x:Name="ChartButton" Content="Chart" Click="ChartButton_Click"
Margin="50,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="PdfDeliveryButton" Content="Lieferschein Erzeugen" Click="PdfDeliveryButton_Click" Tag="Print"
Margin="260,190,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Button x:Name="PdfCreditButton" Content="Gutschrift Erzeugen" Click="PdfCreditButton_Click" Tag="Print"
Margin="260,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</Grid>
</Window>

View File

@@ -1,16 +1,26 @@
using Elwig.Documents;
using Elwig.Helpers;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using System.Windows;
using System.Windows.Input;
using Xceed.Wpf.Toolkit.Primitives;
namespace Elwig.Windows {
public partial class TestWindow : Window {
public TestWindow() {
InitializeComponent();
MyComboBox.ItemsSource = new string[] { "Klasse A" , "Klasse B", "Klasse C", "Klasse D", "Klasse E", "Klasse F" };
MyListBox.ItemsSource = new string[] { "Test 1", "Test 2", "Test 3", "Test 4" };
}
private void Window_Loaded(object sender, RoutedEventArgs evt) {
PdfDeliveryButton.IsEnabled = App.IsPrintingReady;
PdfCreditButton.IsEnabled = App.IsPrintingReady;
}
private void OnItemSelectionChanged(object sender, ItemSelectionChangedEventArgs e) {
MyText.Text = string.Join(", ", MyComboBox.SelectedItems.Cast<string>());
}
@@ -39,5 +49,23 @@ namespace Elwig.Windows {
var w = new ChartWindow();
w.Show();
}
private async void PdfDeliveryButton_Click(object sender, RoutedEventArgs evt) {
Mouse.OverrideCursor = Cursors.Wait;
using var ctx = new AppDbContext();
using var doc = new DeliveryNote(await ctx.Deliveries.OrderBy(d => d.Parts.Count).ThenBy(d => d.Year).ThenBy(d => d.DId).LastAsync(), ctx);
await doc.Generate();
doc.Show();
Mouse.OverrideCursor = null;
}
private async void PdfCreditButton_Click(object sender, RoutedEventArgs evt) {
Mouse.OverrideCursor = Cursors.Wait;
using var ctx = new AppDbContext();
using var doc = new CreditNote(await ctx.Credits.FirstAsync(), ctx);
await doc.Generate();
doc.Show();
Mouse.OverrideCursor = null;
}
}
}