Compare commits
6 Commits
c9f49927a8
...
0e17aa5408
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e17aa5408 | |||
| 2bf850bc55 | |||
| aadf536d13 | |||
| 3be6371be1 | |||
| ca1b68aa4f | |||
| d4e5ac6753 |
@@ -157,9 +157,12 @@ namespace Elwig {
|
||||
|
||||
protected void OnPrintingReadyChanged(EventArgs evt) {
|
||||
foreach (Window w in Windows) {
|
||||
foreach (var b in ControlUtils.FindAllChildren<Button>(w).Where(b => "Print".Equals(b.Tag))) {
|
||||
foreach (var b in ControlUtils.FindAllChildren<Button>(w).Where(b => b.Tag?.ToString() == "Print")) {
|
||||
b.IsEnabled = IsPrintingReady;
|
||||
}
|
||||
foreach (var i in ControlUtils.FindAllChildren<MenuItem>(w).Where(i => i.Tag?.ToString() == "Print")) {
|
||||
i.IsEnabled = IsPrintingReady;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,15 @@ using System;
|
||||
using System.Threading.Tasks;
|
||||
using System.IO;
|
||||
using Elwig.Helpers;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
|
||||
namespace Elwig.Documents {
|
||||
public abstract class Document : IDisposable {
|
||||
public abstract partial class Document : IDisposable {
|
||||
|
||||
private TempFile? PdfFile = null;
|
||||
private TempFile? _pdfFile = null;
|
||||
private string? _renderedHtml = null;
|
||||
|
||||
public bool ShowFoldMarks = App.Config.Debug;
|
||||
|
||||
@@ -35,17 +39,56 @@ namespace Elwig.Documents {
|
||||
Date = DateTime.Today;
|
||||
}
|
||||
|
||||
[GeneratedRegex(@"</body>.*?</footer>\s*</div>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled)]
|
||||
private static partial Regex GeneratedDocumentHeaderRegex();
|
||||
private static readonly Regex DocumentHeaderRegex = GeneratedDocumentHeaderRegex();
|
||||
|
||||
[GeneratedRegex(@"<style>.*?/style>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled)]
|
||||
private static partial Regex GeneratedHtmlStyleRegex();
|
||||
private static readonly Regex HtmlStyleRegex = GeneratedHtmlStyleRegex();
|
||||
|
||||
[GeneratedRegex(@"<link[^>]*>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Compiled)]
|
||||
private static partial Regex GeneratedHtmlLinkRegex();
|
||||
private static readonly Regex HtmlLinkRegex = GeneratedHtmlLinkRegex();
|
||||
|
||||
~Document() {
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
PdfFile?.Dispose();
|
||||
PdfFile = null;
|
||||
_pdfFile?.Dispose();
|
||||
_pdfFile = null;
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
private Task<string> Render() {
|
||||
public static async Task<Document> Merge(IEnumerable<Document> docs) {
|
||||
string html = "";
|
||||
var styles = new List<string>();
|
||||
foreach (var d in docs) {
|
||||
var h = await d.Render();
|
||||
var s = HtmlStyleRegex.Matches(h).Select(m => m.Value).ToList();
|
||||
var l = HtmlLinkRegex.Matches(h).Select(m => m.Value).ToList();
|
||||
if (s.All(styles.Contains)) {
|
||||
h = HtmlStyleRegex.Replace(h, "");
|
||||
} else {
|
||||
styles.AddRange(s);
|
||||
}
|
||||
if (l.All(styles.Contains)) {
|
||||
h = HtmlLinkRegex.Replace(h, "");
|
||||
} else {
|
||||
styles.AddRange(l);
|
||||
}
|
||||
html += h;
|
||||
}
|
||||
html = DocumentHeaderRegex.Replace(html, "<div class='document-break'/>");
|
||||
return new InternalDocument("Mehrere Dokumente") {
|
||||
_renderedHtml = html,
|
||||
};
|
||||
}
|
||||
|
||||
private async Task<string> Render() {
|
||||
if (_renderedHtml != null)
|
||||
return _renderedHtml;
|
||||
string name;
|
||||
if (this is BusinessLetter) {
|
||||
name = "BusinessLetter";
|
||||
@@ -55,14 +98,17 @@ namespace Elwig.Documents {
|
||||
name = "CreditNote";
|
||||
} else if (this is DeliveryJournal) {
|
||||
name = "DeliveryJournal";
|
||||
} else if (this is Letterhead) {
|
||||
name = "Letterhead";
|
||||
} else {
|
||||
throw new InvalidOperationException("Invalid document object");
|
||||
}
|
||||
return Render(name);
|
||||
return await Render(name);
|
||||
}
|
||||
|
||||
private Task<string> Render(string name) {
|
||||
return Html.CompileRenderAsync(name, this);
|
||||
private async Task<string> Render(string name) {
|
||||
_renderedHtml = await Html.CompileRenderAsync(name, this);
|
||||
return _renderedHtml;
|
||||
}
|
||||
|
||||
public async Task Generate() {
|
||||
@@ -71,22 +117,26 @@ namespace Elwig.Documents {
|
||||
await File.WriteAllTextAsync(tmpHtml.FilePath, await Render(), Utils.UTF8);
|
||||
await Pdf.Convert(tmpHtml.FilePath, pdf.FilePath);
|
||||
}
|
||||
PdfFile = pdf;
|
||||
_pdfFile = pdf;
|
||||
}
|
||||
|
||||
public void SaveTo(string pdfPath) {
|
||||
if (PdfFile == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
||||
File.Copy(PdfFile.FilePath, pdfPath);
|
||||
if (_pdfFile == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
||||
File.Copy(_pdfFile.FilePath, pdfPath);
|
||||
}
|
||||
|
||||
public async Task Print(int copies = 1) {
|
||||
if (PdfFile == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
||||
await Pdf.Print(PdfFile.FilePath, copies);
|
||||
if (_pdfFile == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
||||
await Pdf.Print(_pdfFile.FilePath, copies);
|
||||
}
|
||||
|
||||
public void Show() {
|
||||
if (PdfFile == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
||||
Pdf.Show(PdfFile.NewReference(), Title);
|
||||
if (_pdfFile == null) throw new InvalidOperationException("Pdf file has not been generated yet");
|
||||
Pdf.Show(_pdfFile.NewReference(), Title);
|
||||
}
|
||||
|
||||
private class InternalDocument : Document {
|
||||
public InternalDocument(string title) : base(title) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace Elwig.Documents {
|
||||
await e.CompileTemplateAsync("DeliveryNote");
|
||||
await e.CompileTemplateAsync("CreditNote");
|
||||
await e.CompileTemplateAsync("DeliveryJournal");
|
||||
await e.CompileTemplateAsync("Letterhead");
|
||||
|
||||
Engine = e;
|
||||
evtHandler();
|
||||
|
||||
9
Elwig/Documents/Letterhead.cshtml
Normal file
9
Elwig/Documents/Letterhead.cshtml
Normal file
@@ -0,0 +1,9 @@
|
||||
@using RazorLight
|
||||
@inherits TemplatePage<Elwig.Documents.Letterhead>
|
||||
@model Elwig.Documents.Letterhead
|
||||
@{ Layout = "BusinessDocument"; }
|
||||
<style>
|
||||
header, .footer-wrapper {
|
||||
visibility: hidden;
|
||||
}
|
||||
</style>
|
||||
9
Elwig/Documents/Letterhead.cshtml.cs
Normal file
9
Elwig/Documents/Letterhead.cshtml.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using Elwig.Models;
|
||||
|
||||
namespace Elwig.Documents {
|
||||
public class Letterhead : BusinessDocument {
|
||||
public Letterhead(Member m) : base($"Briefkopf {m.Name}", m, true) {
|
||||
Aside = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,7 @@ namespace Elwig.Documents {
|
||||
public static async Task Print(string path, int copies = 1) {
|
||||
var p = new Process() { StartInfo = new() { FileName = PdfToPrinter } };
|
||||
p.StartInfo.ArgumentList.Add(path);
|
||||
p.StartInfo.ArgumentList.Add("/s");
|
||||
p.StartInfo.ArgumentList.Add($"copies={copies}");
|
||||
p.Start();
|
||||
await p.WaitForExitAsync();
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
hr.page-break {
|
||||
display: none;
|
||||
}
|
||||
.document-break {
|
||||
break-before: page;
|
||||
}
|
||||
|
||||
@page {
|
||||
size: A4;
|
||||
|
||||
@@ -58,7 +58,8 @@ namespace Elwig.Helpers {
|
||||
continue;
|
||||
} else if (child is T t) {
|
||||
yield return t;
|
||||
} else if (child is DependencyObject childDepOpj) {
|
||||
}
|
||||
if (child is DependencyObject childDepOpj) {
|
||||
foreach (T childOfChild in FindAllChildren<T>(childDepOpj)) {
|
||||
yield return childOfChild;
|
||||
}
|
||||
|
||||
@@ -157,8 +157,12 @@ namespace Elwig.Helpers {
|
||||
}
|
||||
|
||||
public static void MailTo(string emailAddress) {
|
||||
MailTo(new string[] { emailAddress });
|
||||
}
|
||||
|
||||
public static void MailTo(IEnumerable<string> emailAddresses) {
|
||||
Process.Start(new ProcessStartInfo() {
|
||||
FileName = $"mailto:{emailAddress}",
|
||||
FileName = $"mailto:{string.Join(",%20", emailAddresses)}",
|
||||
UseShellExecute = true,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -62,13 +62,13 @@
|
||||
<MenuItem x:Name="Menu_Print_PrintDeliveryNote" Header="Lieferschein drucken" IsEnabled="False"
|
||||
Click="Menu_Print_PrintDeliveryNote_Click"/>
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal" Header="Lieferjournal">
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_ShowToday" Header="von heute anzeigen"
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_ShowToday" Header="von heute anzeigen" IsEnabled="False" Tag="Print"
|
||||
Click="Menu_Print_DeliveryJournal_ShowToday_Click"/>
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_PrintToday" Header="von heute drucken"
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_PrintToday" Header="von heute drucken" IsEnabled="False" Tag="Print"
|
||||
Click="Menu_Print_DeliveryJournal_PrintToday_Click"/>
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_ShowFilter" Header="aus Filtern anzeigen"
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_ShowFilter" Header="aus Filtern anzeigen" IsEnabled="False" Tag="Print"
|
||||
Click="Menu_Print_DeliveryJournal_ShowFilter_Click"/>
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_PrintFilter" Header="aus Filtern drucken"
|
||||
<MenuItem x:Name="Menu_Print_DeliveryJournal_PrintFilter" Header="aus Filtern drucken" IsEnabled="False" Tag="Print"
|
||||
Click="Menu_Print_DeliveryJournal_PrintFilter_Click"/>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
|
||||
@@ -94,6 +94,11 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||
Menu_Print_DeliveryJournal_ShowToday.IsEnabled = App.IsPrintingReady;
|
||||
Menu_Print_DeliveryJournal_PrintToday.IsEnabled = App.IsPrintingReady;
|
||||
Menu_Print_DeliveryJournal_ShowFilter.IsEnabled = App.IsPrintingReady;
|
||||
Menu_Print_DeliveryJournal_PrintFilter.IsEnabled = App.IsPrintingReady;
|
||||
|
||||
OnSecondPassed(null, null);
|
||||
Timer.Start();
|
||||
LockInputs();
|
||||
@@ -108,7 +113,7 @@ namespace Elwig.Windows {
|
||||
|
||||
private async void Menu_Print_ShowDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
||||
if (DeliveryList.SelectedItem is not Delivery d) return;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
using var doc = new DeliveryNote(d, Context);
|
||||
await doc.Generate();
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -117,7 +122,7 @@ namespace Elwig.Windows {
|
||||
|
||||
private async void Menu_Print_PrintDeliveryNote_Click(object sender, RoutedEventArgs evt) {
|
||||
if (DeliveryList.SelectedItem is not Delivery d) return;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
using var doc = new DeliveryNote(d, Context);
|
||||
await doc.Generate();
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -134,7 +139,7 @@ namespace Elwig.Windows {
|
||||
Title = $"Traubentransportscheinliste (BKI) speichern unter - Elwig"
|
||||
};
|
||||
if (d.ShowDialog() == true) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
using var file = new Bki(d.FileName);
|
||||
await file.ExportAsync(year);
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -142,7 +147,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void Menu_Print_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
||||
await doc.Generate();
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -150,7 +155,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void Menu_Print_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
var doc = new DeliveryJournal(Context, DateOnly.FromDateTime(Utils.Today));
|
||||
await doc.Generate();
|
||||
Mouse.OverrideCursor = null;
|
||||
@@ -158,7 +163,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void Menu_Print_DeliveryJournal_ShowFilter_Click(object sender, RoutedEventArgs evt) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
var (f, _, d, _) = await GetFilters();
|
||||
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
||||
await doc.Generate();
|
||||
@@ -167,7 +172,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void Menu_Print_DeliveryJournal_PrintFilter_Click(object sender, RoutedEventArgs evt) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
var (f, _, d, _) = await GetFilters();
|
||||
var doc = new DeliveryJournal(string.Join(" / ", f), d);
|
||||
await doc.Generate();
|
||||
@@ -878,15 +883,14 @@ namespace Elwig.Windows {
|
||||
await RefreshDeliveryList();
|
||||
await RefreshDeliveryParts();
|
||||
if (p?.Delivery != null) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
using var doc = new DeliveryNote(p.Delivery, Context);
|
||||
await doc.Generate();
|
||||
Mouse.OverrideCursor = null;
|
||||
if (App.Config.Debug) {
|
||||
doc.Show();
|
||||
} else {
|
||||
await doc.Print(2);
|
||||
Activate();
|
||||
doc.Print(2);
|
||||
}
|
||||
}
|
||||
FinishButton.Cursor = null;
|
||||
@@ -950,7 +954,7 @@ namespace Elwig.Windows {
|
||||
try {
|
||||
if (res == null || res <= 0)
|
||||
return;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
ClearOriginalValues();
|
||||
if (res >= p.Weight) {
|
||||
ControlUtils.SelectComboBoxItem(WineQualityLevelInput, q => (q as WineQualLevel)?.QualId, "WEI");
|
||||
@@ -1032,7 +1036,7 @@ namespace Elwig.Windows {
|
||||
$"Soll die Lieferung {d.LsNr} ({d.Member.AdministrativeName}, MgNr. {d.Member.MgNr}) wirklich unwiderruflich gelöscht werden?",
|
||||
"Lieferung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
||||
if (r == MessageBoxResult.Yes) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
Context.Remove(d);
|
||||
await Context.SaveChangesAsync();
|
||||
await RefreshDeliveryList();
|
||||
@@ -1119,7 +1123,7 @@ namespace Elwig.Windows {
|
||||
EntityEntry<Delivery>? entry = null;
|
||||
try {
|
||||
Delivery? d = null;
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
if (res == "new") {
|
||||
d = Context.CreateProxy<Delivery>();
|
||||
d.Date = delivery.Date;
|
||||
@@ -1170,7 +1174,7 @@ namespace Elwig.Windows {
|
||||
$"Soll die Teillieferung Nr. {p.DPNr} wirklich unwiderruflich gelöscht werden?",
|
||||
"Lieferung löschen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
||||
if (r == MessageBoxResult.Yes) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
Context.Remove(p);
|
||||
await Context.SaveChangesAsync();
|
||||
await RefreshDeliveryParts();
|
||||
|
||||
@@ -55,7 +55,12 @@
|
||||
</MenuItem>
|
||||
<MenuItem Header="Drucken">
|
||||
<MenuItem Header="Stammdatenblatt drucken"/>
|
||||
<MenuItem Header="Mitgliederliste drucken"/>
|
||||
<MenuItem Header="Briefköpfe drucken">
|
||||
<MenuItem x:Name="Menu_Print_Letterheads_MgNr" Header="nach MgNr. sortiert" IsEnabled="False" Tag="Print"
|
||||
Click="Menu_Print_Letterheads_MgNr_Click"/>
|
||||
<MenuItem x:Name="Menu_Print_Letterheads_Name" Header="nach Name sortiert" IsEnabled="False" Tag="Print"
|
||||
Click="Menu_Print_Letterheads_Name_Click"/>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Rundschreiben">
|
||||
<MenuItem Header="Runschreiben ausschicken"/>
|
||||
|
||||
@@ -10,6 +10,7 @@ using Elwig.Models;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||
using System.Collections.ObjectModel;
|
||||
using Elwig.Documents;
|
||||
|
||||
namespace Elwig.Windows {
|
||||
public partial class MemberAdminWindow : AdministrationWindow {
|
||||
@@ -54,6 +55,9 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs evt) {
|
||||
Menu_Print_Letterheads_MgNr.IsEnabled = App.IsPrintingReady;
|
||||
Menu_Print_Letterheads_Name.IsEnabled = App.IsPrintingReady;
|
||||
|
||||
ActiveMemberInput.IsChecked = true;
|
||||
UpdatePhoneNrInputVisibility();
|
||||
LockInputs();
|
||||
@@ -266,7 +270,26 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private void Menu_Member_SendEmail_Click(object sender, RoutedEventArgs evt) {
|
||||
Utils.MailTo(((Member)MemberList.SelectedItem).EmailAddresses.First().Address);
|
||||
Utils.MailTo(((Member)MemberList.SelectedItem).EmailAddresses.Select(a => a.Address));
|
||||
}
|
||||
|
||||
private async void Menu_Print_Letterheads_MgNr_Click(object sender, RoutedEventArgs evt) {
|
||||
using var d = await Document.Merge(Context.Members
|
||||
.Where(m => m.IsActive)
|
||||
.OrderBy(m => m.MgNr)
|
||||
.Select(m => new Letterhead(m)));
|
||||
await d.Generate();
|
||||
d.Show();
|
||||
}
|
||||
|
||||
private async void Menu_Print_Letterheads_Name_Click(object sender, RoutedEventArgs evt) {
|
||||
using var d = await Document.Merge(Context.Members
|
||||
.Where(m => m.IsActive)
|
||||
.OrderBy(m => m.FamilyName)
|
||||
.ThenBy(m => m.GivenName)
|
||||
.Select(m => new Letterhead(m)));
|
||||
await d.Generate();
|
||||
d.Show();
|
||||
}
|
||||
|
||||
private void FocusSearchInput(object sender, RoutedEventArgs evt) {
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
<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"
|
||||
<Button x:Name="PdfDeliveryButton" Content="Lieferschein Erzeugen" Click="PdfDeliveryButton_Click" Tag="Print" IsEnabled="False"
|
||||
Margin="260,190,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
|
||||
<Button x:Name="PdfCreditButton" Content="Gutschrift Erzeugen" Click="PdfCreditButton_Click" Tag="Print"
|
||||
<Button x:Name="PdfCreditButton" Content="Gutschrift Erzeugen" Click="PdfCreditButton_Click" Tag="Print" IsEnabled="False"
|
||||
Margin="260,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void PdfDeliveryButton_Click(object sender, RoutedEventArgs evt) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
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();
|
||||
@@ -60,7 +60,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private async void PdfCreditButton_Click(object sender, RoutedEventArgs evt) {
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||
using var ctx = new AppDbContext();
|
||||
using var doc = new CreditNote(await ctx.Credits.FirstAsync(), ctx);
|
||||
await doc.Generate();
|
||||
|
||||
Reference in New Issue
Block a user