Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f4fe2129d | |||
| cdb4b0a2bd | |||
| ddfc86197d | |||
| ae0a082421 | |||
| 3c52156b7e | |||
| 982a6616e1 | |||
| b1075d1e69 | |||
| cc018ded10 | |||
| 0aefab5d63 |
21
CHANGELOG.md
21
CHANGELOG.md
@@ -2,6 +2,27 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
[v1.0.4.1][v1.0.4.1] (2026-03-27) {#v1.0.4.1}
|
||||
---------------------------------------------
|
||||
|
||||
### Behobene Fehler {#v1.0.4.1-bugfixes}
|
||||
|
||||
* In der Anlieferungsbestätigung (`DeliveryConfirmation`) war in einer Spalte der Text nicht rechtsbündig. (0aefab5d63)
|
||||
* Die zweite Zeile des Absenders wurde nicht mehr abgedruckt und der Briefkopf (`Letterhead`) beinhaltete zu viele Informationen. (3c52156b7e)
|
||||
|
||||
### Sonstiges {#v1.0.4.1-misc}
|
||||
|
||||
* Evtl. wurden bei Änderungen in der Datenbank unnötigerweise einige Daten in Elwig doppelt angefordert. (cc018ded10)
|
||||
* Massenaktionen im Lieferungen-Fenster (`DeliveryAdminWindow`) sind nun nicht mehr während dem Bearbeiten oder Erstellen möglich. (b1075d1e69)
|
||||
* Das Datum auf Lieferscheinen (`DeliveryNote`) ist nun statt des heutigen, das Datum der letzten Änderung der Lieferung. (982a6616e1)
|
||||
* Sollte es im Rundschreiben-Fenster (`MailWindow`) zu einem Fehler während dem Bereinigen der Dokumenten kommen wird dieser ignoriert. (ae0a082421)
|
||||
* Abhängigkeiten aktualisiert. (ddfc86197d, cdb4b0a2bd)
|
||||
|
||||
[v1.0.4.1]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.4.1
|
||||
|
||||
|
||||
|
||||
|
||||
[v1.0.4.0][v1.0.4.0] (2026-03-16) {#v1.0.4.0}
|
||||
---------------------------------------------
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ using Elwig.Helpers;
|
||||
using Elwig.Models;
|
||||
using Elwig.Models.Entities;
|
||||
using iText.Kernel.Colors;
|
||||
using iText.Kernel.Geom;
|
||||
using iText.Kernel.Pdf;
|
||||
using iText.Kernel.Pdf.Action;
|
||||
using iText.Kernel.Pdf.Canvas;
|
||||
@@ -53,9 +54,8 @@ namespace Elwig.Documents {
|
||||
IncludeSender = includeSender;
|
||||
}
|
||||
|
||||
protected override void RenderHeader(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.RenderHeader(doc, pdf);
|
||||
|
||||
protected override void BeforeRenderBody(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.BeforeRenderBody(doc, pdf);
|
||||
var uid = new KernedParagraph(Member.UstIdNr ?? "-", 10);
|
||||
if (!Member.IsBuchführend) uid.Add(Normal(" ")).Add(Italic("(pauschaliert)"));
|
||||
Aside = new Table(ColsMM(22.5, 42.5))
|
||||
@@ -68,6 +68,20 @@ namespace Elwig.Documents {
|
||||
.AddCell(NewAsideCell("UID:", isName: true)).AddCell(NewAsideCell(uid));
|
||||
}
|
||||
|
||||
protected void RenderAddress(Canvas canvas, Rectangle pageSize) {
|
||||
canvas.Add(new Div()
|
||||
.SetFixedPositionMM(25, 50, 80, 45, pageSize)
|
||||
.SetFont(NF)
|
||||
.Add(new KernedParagraph(IncludeSender ? $"{App.Client.Sender1}\n{App.Client.Sender2}" : "", 8).SetMargins(8, 0, 8, 0).SetHeight(16.0625f))
|
||||
.Add(new KernedParagraph(Address, 12).SetMargin(0).SetHeight(12 * 5)));
|
||||
}
|
||||
|
||||
protected static void RenderAside(Table aside, Canvas canvas, Rectangle pageSize) {
|
||||
canvas.Add(new Div()
|
||||
.SetFixedPositionMM(125, 50, 65, 50, pageSize)
|
||||
.Add(aside));
|
||||
}
|
||||
|
||||
protected override void RenderBody(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.RenderBody(doc, pdf);
|
||||
|
||||
@@ -84,16 +98,10 @@ namespace Elwig.Documents {
|
||||
header.Add(new KernedParagraph(App.Client.NameTypeFull, 12).SetFont(NF).SetMargin(0));
|
||||
canvas.Add(header);
|
||||
// address
|
||||
canvas.Add(new Div()
|
||||
.SetFixedPositionMM(25, 50, 80, 45, pageSize)
|
||||
.SetFont(NF)
|
||||
.Add(new KernedParagraph(IncludeSender ? $"{App.Client.Sender1}\n{App.Client.Sender2}" : "", 8).SetMargin(0).SetHeight(16).SetPaddings(8, 0, 8, 0))
|
||||
.Add(new KernedParagraph(Address, 12).SetMargin(0).SetHeight(12 * 5)));
|
||||
RenderAddress(canvas, pageSize);
|
||||
// aside
|
||||
if (Aside != null) {
|
||||
canvas.Add(new Div()
|
||||
.SetFixedPositionMM(125, 50, 65, 50, pageSize)
|
||||
.Add(Aside));
|
||||
RenderAside(Aside, canvas, pageSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -95,8 +95,8 @@ namespace Elwig.Documents {
|
||||
}
|
||||
}
|
||||
|
||||
protected override void RenderHeader(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.RenderHeader(doc, pdf);
|
||||
protected override void BeforeRenderBody(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.BeforeRenderBody(doc, pdf);
|
||||
Aside?.AddCell(NewAsideCell("Gutschrift", 2))
|
||||
.AddCell(NewAsideCell("TG-Nr.:", isName: true)).AddCell(NewAsideCell(Payment?.Credit != null ? $"{Payment.Credit.Year}/{Payment.Credit.TgNr:000}" : "-"))
|
||||
.AddCell(NewAsideCell("Datum:", isName: true)).AddCell(NewAsideCell($"{Payment?.Variant.Date:dd.MM.yyyy}"))
|
||||
|
||||
@@ -31,8 +31,8 @@ namespace Elwig.Documents {
|
||||
MemberStats = AppDbContext.GetMemberStats(Season.Year, m.MgNr).GetAwaiter().GetResult();
|
||||
}
|
||||
|
||||
protected override void RenderHeader(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.RenderHeader(doc, pdf);
|
||||
protected override void BeforeRenderBody(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.BeforeRenderBody(doc, pdf);
|
||||
var firstDay = Data.Rows.MinBy(r => r.Date)?.Date;
|
||||
var lastDay = Data.Rows.MaxBy(r => r.Date)?.Date;
|
||||
Aside?.AddCell(NewAsideCell("Saison", 2))
|
||||
@@ -120,8 +120,8 @@ namespace Elwig.Documents {
|
||||
}
|
||||
|
||||
if (i == p.Buckets.Length - 1) {
|
||||
sub.AddCell(NewTd($"{p.Weight:N0}"));
|
||||
sub.AddCell(NewTd(p.IsNetWeight ? "\u2611" : "\u2610", 7, center: true).SetFont(SF).SetPadding(0));
|
||||
sub.AddCell(NewTd($"{p.Weight:N0}", right: true));
|
||||
sub.AddCell(NewTd(p.IsNetWeight ? "\u2611" : "\u2610", 7, right: true).SetFont(SF).SetPadding(0));
|
||||
} else {
|
||||
sub.AddCell(NewCell(colspan: 2));
|
||||
}
|
||||
|
||||
@@ -32,12 +32,13 @@ namespace Elwig.Documents {
|
||||
Delivery = d;
|
||||
Text = App.Client.TextDeliveryNote;
|
||||
DocumentId = d.LsNr;
|
||||
Date = DateOnly.FromDateTime(d.ModifiedAt);
|
||||
IsDoublePaged = true;
|
||||
MemberBuckets = ctx?.GetMemberBuckets(d.Year, d.Member.MgNr).GetAwaiter().GetResult() ?? [];
|
||||
}
|
||||
|
||||
protected override void RenderHeader(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.RenderHeader(doc, pdf);
|
||||
protected override void BeforeRenderBody(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
base.BeforeRenderBody(doc, pdf);
|
||||
Aside?.AddCell(NewAsideCell("Lieferung", 2))
|
||||
.AddCell(NewAsideCell("LS-Nr.:", isName: true)).AddCell(NewAsideCell(Delivery.LsNr))
|
||||
.AddCell(NewAsideCell("Datum/Zeit:", isName: true)).AddCell(NewAsideCell($"{Delivery.Date:dd.MM.yyyy} / {Delivery.Time:HH:mm}"))
|
||||
|
||||
@@ -88,11 +88,15 @@ namespace Elwig.Documents {
|
||||
}
|
||||
|
||||
public int Render(string path) {
|
||||
using var writer = new PdfWriter(path);
|
||||
return Render(writer);
|
||||
using (var writer = new PdfWriter(path)) {
|
||||
Render(writer);
|
||||
}
|
||||
using var reader = new PdfReader(path);
|
||||
using var pdf = new PdfDocument(reader);
|
||||
return pdf.GetNumberOfPages();
|
||||
}
|
||||
|
||||
private int Render(PdfWriter writer) {
|
||||
private void Render(PdfWriter writer) {
|
||||
NF = PdfFontFactory.CreateFont(@"C:\Windows\Fonts\times.ttf", PdfEncodings.IDENTITY_H, PdfFontFactory.EmbeddingStrategy.PREFER_NOT_EMBEDDED);
|
||||
BF = PdfFontFactory.CreateFont(@"C:\Windows\Fonts\timesbd.ttf", PdfEncodings.IDENTITY_H, PdfFontFactory.EmbeddingStrategy.PREFER_NOT_EMBEDDED);
|
||||
IF = PdfFontFactory.CreateFont(@"C:\Windows\Fonts\timesi.ttf", PdfEncodings.IDENTITY_H, PdfFontFactory.EmbeddingStrategy.PREFER_NOT_EMBEDDED);
|
||||
@@ -117,16 +121,14 @@ namespace Elwig.Documents {
|
||||
_doc = new iText.Layout.Document(pdf, iText.Kernel.Geom.PageSize.A4);
|
||||
try {
|
||||
_doc.SetFont(NF).SetFontSize(12);
|
||||
RenderHeader(_doc, pdf);
|
||||
BeforeRenderBody(_doc, pdf);
|
||||
RenderBody(_doc, pdf);
|
||||
var pageNum = pdf.GetNumberOfPages();
|
||||
return pageNum;
|
||||
} finally {
|
||||
_doc.Close();
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void RenderHeader(iText.Layout.Document doc, PdfDocument pdf) { }
|
||||
protected virtual void BeforeRenderBody(iText.Layout.Document doc, PdfDocument pdf) { }
|
||||
|
||||
protected virtual void RenderBody(iText.Layout.Document doc, PdfDocument pdf) { }
|
||||
|
||||
@@ -150,84 +152,77 @@ namespace Elwig.Documents {
|
||||
using var mergedPdf = new PdfDocument(writer);
|
||||
var merger = new PdfMerger(mergedPdf);
|
||||
|
||||
PdfPage? letterheadPage = null;
|
||||
int letterheadInsertIndex = 0;
|
||||
int letterheadDocIndex = 0;
|
||||
(PdfPage Page, int InsertIndex, int DocIndex)? letterhead = null;
|
||||
|
||||
int p = mergedPdf.GetNumberOfPages();
|
||||
for (int i = 0; i < m.Documents.Count; i++) {
|
||||
if (cancelToken?.IsCancellationRequested ?? false)
|
||||
throw new OperationCanceledException("Dokumentenerzeugung abgebrochen!");
|
||||
var doc = m.Documents[i];
|
||||
int p0 = mergedPdf.GetNumberOfPages();
|
||||
int p0 = p;
|
||||
|
||||
if (letterheadPage != null && doc is Letterhead) {
|
||||
if (mergedPdf.GetNumberOfPages() <= letterheadInsertIndex) {
|
||||
mergedPdf.AddPage(letterheadPage);
|
||||
if (letterhead != null && doc is Letterhead) {
|
||||
if (p0 <= letterhead.Value.InsertIndex) {
|
||||
mergedPdf.AddPage(letterhead.Value.Page);
|
||||
mergedPdf.AddNewPage();
|
||||
} else {
|
||||
mergedPdf.AddPage(letterheadInsertIndex + 1, letterheadPage);
|
||||
mergedPdf.AddNewPage(letterheadInsertIndex + 2);
|
||||
mergedPdf.AddPage(letterhead.Value.InsertIndex + 1, letterhead.Value.Page);
|
||||
mergedPdf.AddNewPage(letterhead.Value.InsertIndex + 2);
|
||||
}
|
||||
|
||||
pageNums[letterheadDocIndex] = 1;
|
||||
letterheadPage = null;
|
||||
pageNums[letterhead.Value.DocIndex] = 1;
|
||||
letterhead = null;
|
||||
p += 2;
|
||||
}
|
||||
|
||||
if (doc is RawPdfDocument) {
|
||||
if (IsDoublePaged && doc is Letterhead) {
|
||||
using var reader = new PdfReader(doc.PdfPath);
|
||||
using var src = new PdfDocument(reader);
|
||||
letterheadPage = src.GetPage(1).CopyTo(mergedPdf);
|
||||
letterheadInsertIndex = p0;
|
||||
letterheadDocIndex = i;
|
||||
} else {
|
||||
using var reader = new PdfReader(doc.PdfPath);
|
||||
using var src = new PdfDocument(reader);
|
||||
merger.Merge(src, 1, src.GetNumberOfPages());
|
||||
}
|
||||
using var reader = new PdfReader(doc.PdfPath);
|
||||
using var src = new PdfDocument(reader);
|
||||
merger.Merge(src, 1, src.GetNumberOfPages());
|
||||
p += src.GetNumberOfPages();
|
||||
} else {
|
||||
int pageNum = doc.Render(tmpPdf.FilePath);
|
||||
if (IsDoublePaged && doc is Letterhead) {
|
||||
using var reader = new PdfReader(tmpPdf.FilePath);
|
||||
using var src = new PdfDocument(reader);
|
||||
letterheadPage = src.GetPage(1).CopyTo(mergedPdf);
|
||||
letterheadInsertIndex = p0;
|
||||
letterheadDocIndex = i;
|
||||
letterhead = (src.GetPage(1).CopyTo(mergedPdf), p0, i);
|
||||
} else {
|
||||
using var reader = new PdfReader(tmpPdf.FilePath);
|
||||
using var src = new PdfDocument(reader);
|
||||
merger.Merge(src, 1, pageNum);
|
||||
p += pageNum;
|
||||
}
|
||||
}
|
||||
|
||||
int p1 = mergedPdf.GetNumberOfPages();
|
||||
int p1 = p;
|
||||
pageNums.Add(p1 - p0);
|
||||
|
||||
if (IsDoublePaged && doc is not Letterhead && mergedPdf.GetNumberOfPages() % 2 != 0) {
|
||||
if (letterheadPage != null) {
|
||||
mergedPdf.AddPage(letterheadPage);
|
||||
letterheadPage = null;
|
||||
if (IsDoublePaged && doc is not Letterhead && p % 2 != 0) {
|
||||
if (letterhead != null) {
|
||||
mergedPdf.AddPage(letterhead.Value.Page);
|
||||
letterhead = null;
|
||||
} else {
|
||||
mergedPdf.AddNewPage();
|
||||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
progress?.Report(100.0 * (i + 1) / (m.Documents.Count + 1));
|
||||
}
|
||||
|
||||
if (letterheadPage != null) {
|
||||
if (mergedPdf.GetNumberOfPages() <= letterheadInsertIndex) {
|
||||
mergedPdf.AddPage(letterheadPage.CopyTo(mergedPdf));
|
||||
if (letterhead != null) {
|
||||
if (p <= letterhead.Value.InsertIndex) {
|
||||
mergedPdf.AddPage(letterhead.Value.Page);
|
||||
mergedPdf.AddNewPage();
|
||||
} else {
|
||||
mergedPdf.AddPage(letterheadInsertIndex + 1, letterheadPage.CopyTo(mergedPdf));
|
||||
mergedPdf.AddNewPage(letterheadInsertIndex + 2);
|
||||
mergedPdf.AddPage(letterhead.Value.InsertIndex + 1, letterhead.Value.Page);
|
||||
mergedPdf.AddNewPage(letterhead.Value.InsertIndex + 2);
|
||||
}
|
||||
|
||||
pageNums[letterheadDocIndex] = 1;
|
||||
pageNums[letterhead.Value.DocIndex] = 1;
|
||||
p += 2;
|
||||
}
|
||||
|
||||
TotalPages = pageNums.Sum();
|
||||
TotalPages = p;
|
||||
} catch {
|
||||
pdf.Dispose();
|
||||
throw;
|
||||
@@ -297,7 +292,7 @@ namespace Elwig.Documents {
|
||||
|
||||
protected Cell NewTh(string? text, float fontSize = 8, int rowspan = 1, int colspan = 1, bool left = false, bool rotated = false) {
|
||||
var p = new KernedParagraph(text ?? "", fontSize);
|
||||
if (rotated) p.SetRotationAngle(rotated ? 0.5 * Math.PI : 0);
|
||||
if (rotated) p.SetRotationAngle(0.5 * Math.PI);
|
||||
var cell = NewCell(p, rowspan: rowspan, colspan: colspan)
|
||||
.SetTextAlignment(left ? TextAlignment.LEFT : TextAlignment.CENTER)
|
||||
.SetVerticalAlignment(VerticalAlignment.MIDDLE)
|
||||
@@ -394,6 +389,8 @@ namespace Elwig.Documents {
|
||||
}
|
||||
|
||||
private void OnPageEnd(PdfDocumentEvent evt) {
|
||||
if (_doc is Letterhead) return;
|
||||
|
||||
var pdf = evt.GetDocument();
|
||||
var page = evt.GetPage();
|
||||
var pageNum = pdf.GetPageNumber(page);
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
using Elwig.Models.Entities;
|
||||
using iText.Kernel.Pdf;
|
||||
using iText.Kernel.Pdf.Canvas;
|
||||
using iText.Layout;
|
||||
|
||||
namespace Elwig.Documents {
|
||||
public class Letterhead : BusinessDocument {
|
||||
public Letterhead(Member m) :
|
||||
base($"Briefkopf {m.FullName}", m, true) {
|
||||
Aside = null;
|
||||
}
|
||||
|
||||
protected override void RenderBody(iText.Layout.Document doc, PdfDocument pdf) {
|
||||
// do not render anything except this
|
||||
var page = pdf.AddNewPage();
|
||||
var pageSize = page.GetPageSize();
|
||||
var pdfCanvas = new PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdf);
|
||||
using var canvas = new Canvas(pdfCanvas, pageSize);
|
||||
RenderAddress(canvas, pageSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
||||
<Version>1.0.4.0</Version>
|
||||
<Version>1.0.4.1</Version>
|
||||
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
@@ -23,8 +23,8 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="bblanchon.PDFium.Win32" Version="148.0.7734" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||
<PackageReference Include="bblanchon.PDFium.Win32" Version="148.0.7749" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.2" />
|
||||
<PackageReference Include="itext" Version="9.5.0" />
|
||||
<PackageReference Include="itext.bouncy-castle-adapter" Version="9.5.0" />
|
||||
<PackageReference Include="LinqKit" Version="1.3.11" />
|
||||
|
||||
@@ -287,8 +287,7 @@ namespace Elwig.Windows {
|
||||
LockInputs();
|
||||
UnlockSearchInputs();
|
||||
FinishInputFilling();
|
||||
await RefreshList();
|
||||
RefreshInputs();
|
||||
await EnsureContextRenewed();
|
||||
Mouse.OverrideCursor = null;
|
||||
ViewModel.SearchQuery = "";
|
||||
ControlUtils.SelectItem(AreaCommitmentList, AreaCommitmentList.ItemsSource.Cast<AreaCom>().Where(a => a.FbNr == fbnr).FirstOrDefault());
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Elwig.Windows {
|
||||
set {
|
||||
_lockContext = value;
|
||||
if (!_lockContext && _renewPending) {
|
||||
Dispatcher.BeginInvoke(async () => await RenewContext());
|
||||
Dispatcher.BeginInvoke(async () => await EnsureContextRenewed());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ namespace Elwig.Windows {
|
||||
public async Task HintContextChange() {
|
||||
_renewPending = true;
|
||||
if (LockContext) return;
|
||||
await RenewContext();
|
||||
await EnsureContextRenewed();
|
||||
}
|
||||
|
||||
protected async void OnLoaded(object? sender, RoutedEventArgs? evt) {
|
||||
@@ -44,7 +44,7 @@ namespace Elwig.Windows {
|
||||
await OnRenewContext(ctx);
|
||||
}
|
||||
|
||||
protected async Task RenewContext() {
|
||||
protected async Task EnsureContextRenewed() {
|
||||
if (!_renewPending) return;
|
||||
using var ctx = new AppDbContext();
|
||||
await OnRenewContext(ctx);
|
||||
|
||||
@@ -285,17 +285,17 @@ namespace Elwig.Windows {
|
||||
await ViewModel.GenerateDeliveryDataList(DeliveryService.ExportSubject.FromFilters, ExportMode.SaveList);
|
||||
|
||||
private async void Menu_BulkAction_SetAttribute_Click(object sender, RoutedEventArgs evt) {
|
||||
if (sender is not MenuItem item) return;
|
||||
if (IsEditing || IsCreating || sender is not MenuItem item) return;
|
||||
await ViewModel.BulkSetAttribute(item.Header as string);
|
||||
}
|
||||
|
||||
private async void Menu_BulkAction_AddModifier_Click(object sender, RoutedEventArgs evt) {
|
||||
if (sender is not MenuItem item || item.Header is not string name) return;
|
||||
if (IsEditing || IsCreating || sender is not MenuItem item || item.Header is not string name) return;
|
||||
await ViewModel.BulkAddModifier(name);
|
||||
}
|
||||
|
||||
private async void Menu_BulkAction_RemoveModifier_Click(object sender, RoutedEventArgs evt) {
|
||||
if (sender is not MenuItem item || item.Header is not string name) return;
|
||||
if (IsEditing || IsCreating || sender is not MenuItem item || item.Header is not string name) return;
|
||||
await ViewModel.BulkRemoveModifier(name);
|
||||
}
|
||||
|
||||
@@ -812,13 +812,11 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
EmptyScale();
|
||||
await RefreshList();
|
||||
await RefreshDeliveryParts();
|
||||
await EnsureContextRenewed();
|
||||
Mouse.OverrideCursor = null;
|
||||
ControlUtils.SelectItem(DeliveryList, p?.Delivery);
|
||||
DeliveryPartList.SelectedItem = null;
|
||||
DeliveryPartList.ScrollIntoView(DeliveryPartList.ItemsSource.Cast<object>().Last());
|
||||
RefreshInputs();
|
||||
InitialInputs();
|
||||
}
|
||||
|
||||
@@ -851,8 +849,7 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
EmptyScale();
|
||||
await RefreshList();
|
||||
await RefreshDeliveryParts();
|
||||
await EnsureContextRenewed();
|
||||
if (p?.Delivery != null) {
|
||||
try {
|
||||
using var ctx = new AppDbContext();
|
||||
@@ -870,8 +867,7 @@ namespace Elwig.Windows {
|
||||
|
||||
Mouse.OverrideCursor = null;
|
||||
DeliveryList.SelectedItem = null;
|
||||
await RenewContext();
|
||||
RefreshInputs();
|
||||
await EnsureContextRenewed();
|
||||
InitInputs();
|
||||
}
|
||||
|
||||
@@ -902,7 +898,7 @@ namespace Elwig.Windows {
|
||||
DisableWeighingButtons();
|
||||
HideFinishNewPartDeliveryCancelButtons();
|
||||
ShowNewEditDeleteButtons();
|
||||
await RenewContext();
|
||||
await EnsureContextRenewed();
|
||||
RefreshInputs();
|
||||
ClearInputStates();
|
||||
LockInputs();
|
||||
@@ -1082,9 +1078,7 @@ namespace Elwig.Windows {
|
||||
LockInputs();
|
||||
UnlockSearchInputs();
|
||||
FinishInputFilling();
|
||||
await RefreshList();
|
||||
await RefreshDeliveryParts();
|
||||
RefreshInputs();
|
||||
await EnsureContextRenewed();
|
||||
|
||||
Mouse.OverrideCursor = null;
|
||||
DepreciateButton.IsEnabled = true;
|
||||
@@ -1184,6 +1178,9 @@ namespace Elwig.Windows {
|
||||
SeasonInput.IsEnabled = false;
|
||||
TodayOnlyInput.IsEnabled = false;
|
||||
AllSeasonsInput.IsEnabled = false;
|
||||
Menu_BulkAction_SetAttribute.IsEnabled = false;
|
||||
Menu_BulkAction_AddModifier.IsEnabled = false;
|
||||
Menu_BulkAction_RemoveModifier.IsEnabled = false;
|
||||
}
|
||||
|
||||
private void UnlockSearchInputs() {
|
||||
@@ -1191,6 +1188,9 @@ namespace Elwig.Windows {
|
||||
SeasonInput.IsEnabled = true;
|
||||
TodayOnlyInput.IsEnabled = true;
|
||||
AllSeasonsInput.IsEnabled = (ViewModel.FilterMember != null);
|
||||
Menu_BulkAction_SetAttribute.IsEnabled = true;
|
||||
Menu_BulkAction_AddModifier.IsEnabled = true;
|
||||
Menu_BulkAction_RemoveModifier.IsEnabled = true;
|
||||
}
|
||||
|
||||
new protected void UnlockInputs() {
|
||||
|
||||
@@ -374,8 +374,7 @@ namespace Elwig.Windows {
|
||||
LockInputs();
|
||||
ViewModel.EnableSearchInputs = true;
|
||||
FinishInputFilling();
|
||||
await RefreshList();
|
||||
RefreshInputs();
|
||||
await EnsureContextRenewed();
|
||||
ViewModel.SearchQuery = "";
|
||||
ControlUtils.SelectItemWithPk(DeliveryScheduleList, year, dsnr);
|
||||
if (sortid != null)
|
||||
|
||||
@@ -225,8 +225,7 @@ namespace Elwig.Windows {
|
||||
LockInputs();
|
||||
ViewModel.EnableSearchInputs = true;
|
||||
FinishInputFilling();
|
||||
await RefreshList();
|
||||
RefreshInputs();
|
||||
await EnsureContextRenewed();
|
||||
ViewModel.SearchQuery = "";
|
||||
}
|
||||
|
||||
|
||||
@@ -615,12 +615,16 @@ namespace Elwig.Windows {
|
||||
}
|
||||
|
||||
private void DisposeDocs() {
|
||||
PrintDocument?.Dispose();
|
||||
PrintDocument = null;
|
||||
try {
|
||||
PrintDocument?.Dispose();
|
||||
PrintDocument = null;
|
||||
} catch { }
|
||||
if (EmailDocuments != null) {
|
||||
foreach (var (m, docs) in EmailDocuments) {
|
||||
foreach (var d in docs) {
|
||||
d.Dispose();
|
||||
try {
|
||||
d.Dispose();
|
||||
} catch { }
|
||||
}
|
||||
}
|
||||
EmailDocuments = null;
|
||||
|
||||
@@ -436,8 +436,7 @@ namespace Elwig.Windows {
|
||||
UpdateContactInfoVisibility();
|
||||
ViewModel.EnableSearchInputs = true;
|
||||
FinishInputFilling();
|
||||
await RefreshList();
|
||||
RefreshInputs();
|
||||
await EnsureContextRenewed();
|
||||
ViewModel.SearchQuery = "";
|
||||
Mouse.OverrideCursor = null;
|
||||
if (mgnr is int m)
|
||||
|
||||
@@ -13,7 +13,7 @@ About
|
||||
**Product:** Elwig
|
||||
**Description:** Electronic Management for Vintners' Cooperatives
|
||||
**Type:** ERP system
|
||||
**Version:** 1.0.4.0 ([Changelog](./CHANGELOG.md))
|
||||
**Version:** 1.0.4.1 ([Changelog](./CHANGELOG.md))
|
||||
**License:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)
|
||||
**Website:** https://elwig.at/
|
||||
**Source code:** https://git.necronda.net/winzer/elwig
|
||||
@@ -33,7 +33,7 @@ Packaging: [WiX Toolset](https://www.firegiant.com/wixtoolset/)
|
||||
**Produkt:** Elwig
|
||||
**Beschreibung:** Elektronische Winzergenossenschaftsverwaltung
|
||||
**Typ:** Warenwirtschaftssystem (ERP-System)
|
||||
**Version:** 1.0.4.0 ([Änderungsprotokoll](./CHANGELOG.md))
|
||||
**Version:** 1.0.4.1 ([Änderungsprotokoll](./CHANGELOG.md))
|
||||
**Lizenz:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)
|
||||
**Website:** https://elwig.at/
|
||||
**Quellcode:** https://git.necronda.net/winzer/elwig
|
||||
|
||||
@@ -23,12 +23,12 @@
|
||||
<PackageReference Include="Appium.WebDriver" Version="4.4.5" />
|
||||
<PackageReference Include="NReco.PdfRenderer" Version="1.6.0" />
|
||||
<PackageReference Include="NUnit" Version="4.5.1" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="6.1.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="6.2.0" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.12.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="8.0.0">
|
||||
<PackageReference Include="coverlet.collector" Version="8.0.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
||||
Reference in New Issue
Block a user