Compare commits
5 Commits
700e1ec92c
...
v1.0.4.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 149f455256 | |||
| f4fddd111f | |||
| af73226c90 | |||
| 7e6a6138e2 | |||
| 8054a024f4 |
25
CHANGELOG.md
25
CHANGELOG.md
@@ -2,6 +2,31 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
[v1.0.4.0][v1.0.4.0] (2026-03-16) {#v1.0.4.0}
|
||||
---------------------------------------------
|
||||
|
||||
### Neue Funktionen {#v1.0.4.0-features}
|
||||
|
||||
* Im Lieferungen-Fenster (`DeliveryAdminWindow`) gibt es nun über die Menü-Leiste die Möglichkeit _Massenaktionen_ für mehrere Lieferungen durchzuführen (z.B. Attribut oder Zu-/Abschlag setzen). ([#78][i78])
|
||||
|
||||
### Behobene Fehler {#v1.0.4.0-bugfixes}
|
||||
|
||||
* Waagen mit Netzwerkschnittstelle versuchen die Verbindung nun wieder neu aufzubauen, sollte diese unterbrochen werden. ([#74][i74])
|
||||
|
||||
### Sonstiges {#v1.0.4.0-misc}
|
||||
|
||||
* Die bisher verwendeten Programm-Bibliotheken zum Erstellen von PDF-Dokumente wurden vollständig durch [iText](https://itextpdf.com/) ersetzt.
|
||||
Das ermöglicht ein schnelleres, effizienteres, und stabileres Erstellen der PDF-Dokumente.
|
||||
Außerdem konnte so die Größe der Installations-Datei von ~138 MB auf ~98 MB um ca. 30 % reduziert werden. (d8c967b2f2, 8054a024f4)
|
||||
* Abhängigkeiten aktualisiert. (af73226c90, f4fddd111f)
|
||||
|
||||
[v1.0.4.0]: https://git.necronda.net/winzer/elwig/releases/tag/v1.0.4.0
|
||||
[i74]: https://git.necronda.net/winzer/elwig/issues/74
|
||||
[i78]: https://git.necronda.net/winzer/elwig/issues/78
|
||||
|
||||
|
||||
|
||||
|
||||
[v1.0.3.4][v1.0.3.4] (2026-02-19) {#v1.0.3.4}
|
||||
---------------------------------------------
|
||||
|
||||
|
||||
@@ -109,14 +109,14 @@ namespace Elwig.Documents {
|
||||
|
||||
var div = new Table(ColsMM(60, 105))
|
||||
.SetWidth(UnitValue.CreatePercentValue(100)).SetFixedLayout()
|
||||
.SetBorderCollapse(BorderCollapsePropertyValue.COLLAPSE)
|
||||
.SetBorderTop(new SolidBorder(BorderThickness));
|
||||
.SetBorderCollapse(BorderCollapsePropertyValue.COLLAPSE);
|
||||
var hint = new KernedParagraph(8)
|
||||
.Add(Italic("Hinweis:\n" +
|
||||
$"Die Summe der Lieferungen und die Summe der anfal\u00adlenden Pönalen werden mit " +
|
||||
$"{Payment?.Variant.Season.Precision} Nach\u00adkomma-stellen berechnent, " +
|
||||
$"erst das Ergebnis wird kauf-männisch auf 2 Nach\u00adkomma\u00adstellen gerundet."))
|
||||
.SetWidth(56 * PtInMM).SetMarginsMM(4, 2, 4, 2);
|
||||
div.AddCell(new Cell(1, 2).SetPadding(0).SetBorder(Border.NO_BORDER).SetBorderTop(new SolidBorder(BorderThickness)));
|
||||
div.AddCell(new Cell(3, 1).SetPadding(0).SetBorder(Border.NO_BORDER).Add(hint).SetKeepTogether(true));
|
||||
var tbl1 = new Table(ColsMM(70, 5, 5, 25))
|
||||
.SetWidth(UnitValue.CreatePercentValue(100)).SetFixedLayout()
|
||||
@@ -203,12 +203,12 @@ namespace Elwig.Documents {
|
||||
div.AddCell(new Cell().SetPadding(0).SetBorder(Border.NO_BORDER).Add(tbl1));
|
||||
div.AddCell(new Cell().SetPadding(0).SetBorder(Border.NO_BORDER).Add(tbl2));
|
||||
div.AddCell(new Cell().SetPadding(0).SetBorder(Border.NO_BORDER).Add(tbl3));
|
||||
doc.Add(div.SetMarginBottomMM(10));
|
||||
doc.Add(div);
|
||||
|
||||
if (comment != null) {
|
||||
doc.Add(new KernedParagraph($"*{comment}", 12));
|
||||
doc.Add(new KernedParagraph($"*{comment}", 12).SetMarginTopMM(10));
|
||||
}
|
||||
doc.Add(new KernedParagraph($"Überweisung erfolgt auf Konto {Utils.FormatIban(Member.Iban ?? "-")}.", 12));
|
||||
doc.Add(new KernedParagraph($"Überweisung erfolgt auf Konto {Utils.FormatIban(Member.Iban ?? "-")}.", 12).SetPaddingTopMM(10));
|
||||
if (Text != null) {
|
||||
doc.Add(new KernedParagraph(Text, 12).SetMarginTop(12).SetKeepTogether(true));
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
||||
<Version>1.0.3.4</Version>
|
||||
<Version>1.0.4.0</Version>
|
||||
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
@@ -23,22 +23,22 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="bblanchon.PDFium.Win32" Version="147.0.7690" />
|
||||
<PackageReference Include="bblanchon.PDFium.Win32" Version="148.0.7734" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||
<PackageReference Include="itext" Version="9.5.0" />
|
||||
<PackageReference Include="itext.bouncy-castle-adapter" Version="9.5.0" />
|
||||
<PackageReference Include="LinqKit" Version="1.3.11" />
|
||||
<PackageReference Include="MailKit" Version="4.15.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="10.0.3" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="10.0.3" />
|
||||
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3800.47" />
|
||||
<PackageReference Include="MailKit" Version="4.15.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="10.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.5" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="10.0.5" />
|
||||
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3856.49" />
|
||||
<PackageReference Include="NJsonSchema" Version="11.5.2" />
|
||||
<PackageReference Include="ScottPlot.WPF" Version="5.1.57" />
|
||||
<PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.2" />
|
||||
<PackageReference Include="System.IO.Hashing" Version="10.0.3" />
|
||||
<PackageReference Include="System.IO.Ports" Version="10.0.3" />
|
||||
<PackageReference Include="System.Management" Version="10.0.3" />
|
||||
<PackageReference Include="System.IO.Hashing" Version="10.0.5" />
|
||||
<PackageReference Include="System.IO.Ports" Version="10.0.5" />
|
||||
<PackageReference Include="System.Management" Version="10.0.5" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1180,5 +1180,104 @@ namespace Elwig.Services {
|
||||
await ctx.SaveChangesAsync();
|
||||
});
|
||||
}
|
||||
|
||||
public static async Task<(int Year, int DId, int DPNr)[]> GetDidsFromFilters(this DeliveryAdminViewModel vm) {
|
||||
using var ctx = new AppDbContext();
|
||||
var (_, _, parts, _, _) = await vm.GetFilters(ctx);
|
||||
return [.. (await parts.Select(p => new { p.Year, p.DId, p.DPNr }).ToListAsync()).Select(p => (p.Year, p.DId, p.DPNr))];
|
||||
}
|
||||
|
||||
public static async Task BulkSetAttribute(this DeliveryAdminViewModel vm, string? attributeName) {
|
||||
try {
|
||||
string attrid;
|
||||
if (attributeName == null) {
|
||||
attrid = "NULL";
|
||||
} else {
|
||||
using var ctx = new AppDbContext();
|
||||
var attr = await ctx.WineAttributes.Where(a => a.Name == attributeName).SingleAsync();
|
||||
attrid = $"'{attr.AttrId}'";
|
||||
}
|
||||
var dids = await vm.GetDidsFromFilters();
|
||||
var res = MessageBox.Show($"Soll wirklich für {dids.Length:N0} Teillieferung(en) das Attribut\n'{attributeName}' gesetz werden?",
|
||||
"Massenaktion: Attribut setzen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
||||
if (res != MessageBoxResult.OK) return;
|
||||
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
using (var cnx = await AppDbContext.ConnectAsync()) {
|
||||
await cnx.ExecuteBatch($"""
|
||||
UPDATE delivery_part SET attrid = {attrid}
|
||||
WHERE (year, did, dpnr) IN ({string.Join(", ", dids.Select(d => $"({d.Year},{d.DId},{d.DPNr})"))})
|
||||
""");
|
||||
}
|
||||
App.HintContextChange();
|
||||
});
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task BulkAddModifier(this DeliveryAdminViewModel vm, string modifierName) {
|
||||
try {
|
||||
string modid;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
var attr = await ctx.Modifiers.Where(a => a.Name == modifierName).FirstAsync();
|
||||
modid = $"'{attr.ModId}'";
|
||||
}
|
||||
|
||||
var dids = await vm.GetDidsFromFilters();
|
||||
var res = MessageBox.Show($"Soll wirklich für {dids.Length:N0} Teillieferung(en) der Zu-/Abschlag\n'{modifierName}' hinzugefügt werden?",
|
||||
"Massenaktion: Zu-/Abschlag hinzufügen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
||||
if (res != MessageBoxResult.OK) return;
|
||||
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
using (var cnx = await AppDbContext.ConnectAsync()) {
|
||||
await cnx.ExecuteBatch($"""
|
||||
INSERT INTO delivery_part_modifier (year, did, dpnr, modid)
|
||||
VALUES {string.Join(", ", dids.Select(d => $"({d.Year},{d.DId},{d.DPNr},{modid})"))}
|
||||
ON CONFLICT DO NOTHING
|
||||
""");
|
||||
}
|
||||
App.HintContextChange();
|
||||
});
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task BulkRemoveModifier(this DeliveryAdminViewModel vm, string modifierName) {
|
||||
try {
|
||||
string modid;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
var attr = await ctx.Modifiers.Where(a => a.Name == modifierName).FirstAsync();
|
||||
modid = $"'{attr.ModId}'";
|
||||
}
|
||||
|
||||
var dids = await vm.GetDidsFromFilters();
|
||||
var res = MessageBox.Show($"Soll wirklich für {dids.Length:N0} Teillieferung(en) der Zu-/Abschlag\n'{modifierName}' entfernt werden?",
|
||||
"Massenaktion: Zu-/Abschlag entfernen", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
||||
if (res != MessageBoxResult.OK) return;
|
||||
|
||||
Mouse.OverrideCursor = Cursors.Wait;
|
||||
await Task.Run(async () => {
|
||||
using (var cnx = await AppDbContext.ConnectAsync()) {
|
||||
await cnx.ExecuteBatch($"""
|
||||
DELETE FROM delivery_part_modifier
|
||||
WHERE (year, did, dpnr, modid) IN ({string.Join(", ", dids.Select(d => $"({d.Year},{d.DId},{d.DPNr},{modid})"))})
|
||||
""");
|
||||
}
|
||||
App.HintContextChange();
|
||||
});
|
||||
} catch (Exception exc) {
|
||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
} finally {
|
||||
Mouse.OverrideCursor = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
<Bold>Entwickler:</Bold> Lorenz Stechauner, Thomas Hilscher<LineBreak/>
|
||||
<Bold>Kontakt:</Bold> <Hyperlink NavigateUri="mailto:lorenz.stechauner@necronda.net" RequestNavigate="Hyperlink_RequestNavigate">lorenz.stechauner@necronda.net</Hyperlink>, <Hyperlink NavigateUri="mailto:thomas.hilscher@gmail.com" RequestNavigate="Hyperlink_RequestNavigate">thomas.hilscher@gmail.com</Hyperlink><LineBreak/>
|
||||
<Bold>Quellcode:</Bold> <Hyperlink NavigateUri="https://git.necronda.net/winzer/elwig" RequestNavigate="Hyperlink_RequestNavigate">https://git.necronda.net/winzer/elwig</Hyperlink><LineBreak/>
|
||||
<Bold>Entwicklungszeitraum:</Bold> 2022–2025<LineBreak/>
|
||||
<Bold>Entwicklungszeitraum:</Bold> 2022–2026<LineBreak/>
|
||||
<LineBreak/>
|
||||
<Bold>Verwendete Technologien:</Bold><LineBreak/>
|
||||
Programmiersprache: C#<LineBreak/>
|
||||
Framework: Windows Presentation Framework (WPF)<LineBreak/>
|
||||
Datenbank: <Hyperlink NavigateUri="https://sqlite.org/" RequestNavigate="Hyperlink_RequestNavigate">SQLite</Hyperlink><LineBreak/>
|
||||
PDF-Erstellung: <Hyperlink NavigateUri="https://itextpdf.com/" RequestNavigate="Hyperlink_RequestNavigate">iText</Hyperlink>, <Hyperlink NavigateUri="https://github.com/toddams/RazorLight" RequestNavigate="Hyperlink_RequestNavigate">RazorLight</Hyperlink>, <Hyperlink NavigateUri="https://github.com/bblanchon/pdfium-binaries" RequestNavigate="Hyperlink_RequestNavigate">Pdfium</Hyperlink><LineBreak/>
|
||||
PDF-Erstellung: <Hyperlink NavigateUri="https://itextpdf.com/" RequestNavigate="Hyperlink_RequestNavigate">iText</Hyperlink>, <Hyperlink NavigateUri="https://github.com/bblanchon/pdfium-binaries" RequestNavigate="Hyperlink_RequestNavigate">Pdfium</Hyperlink><LineBreak/>
|
||||
Paketierung: <Hyperlink NavigateUri="https://www.firegiant.com/wixtoolset/" RequestNavigate="Hyperlink_RequestNavigate">WiX Toolset</Hyperlink>
|
||||
</TextBlock>
|
||||
|
||||
|
||||
@@ -131,7 +131,11 @@
|
||||
</MenuItem>
|
||||
<MenuItem Header="Liefermengen" x:Name="Menu_DeliveryDataList">
|
||||
<MenuItem x:Name="Menu_DeliveryDataList_SaveFilters" Header="...aus Filtern speichern... (Excel)"
|
||||
Click="Menu_DeliveryDataList_SaveFilters_Click"/>
|
||||
Click="Menu_DeliveryDataList_SaveFilters_Click">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets" FontSize="16" Text=""/>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Statistik" x:Name="Menu_Statistics">
|
||||
<MenuItem Header="Qualitätsstatistik..." x:Name="Menu_Statistics_WineQuality">
|
||||
@@ -162,7 +166,11 @@
|
||||
</MenuItem>
|
||||
<MenuItem x:Name="Menu_Statistics_Locality" Header="Lieferstatistik pro Ort...">
|
||||
<MenuItem x:Name="Menu_Statistic_Locality_SaveFilters" Header="...aus Filtern speichern... (Excel)"
|
||||
Click="Menu_Statistic_Locality_SaveFilters_Click"/>
|
||||
Click="Menu_Statistic_Locality_SaveFilters_Click">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets" FontSize="16" Text=""/>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
<MenuItem Header="BKI">
|
||||
@@ -184,6 +192,23 @@
|
||||
<MenuItem x:Name="Menu_Export_UploadSeason" Header="...von Saison/Zweigstelle hochladen"
|
||||
Click="Menu_Export_UploadSeason_Click"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Massenaktion">
|
||||
<MenuItem x:Name="Menu_BulkAction_SetAttribute" Header="Attribut auf Lieferungen aus Filtern setzen...">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets" FontSize="16" Text=""/>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem x:Name="Menu_BulkAction_AddModifier" Header="Zu-/Abschlag auf Lieferungen aus Filtern hinzufügen...">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets" FontSize="16" Text=""/>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem x:Name="Menu_BulkAction_RemoveModifier" Header="Zu-/Abschlag auf Lieferungen aus Filtern entfernen...">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock FontFamily="Segoe MDL2 Assets" FontSize="16" Text=""/>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Einstellungen">
|
||||
<MenuItem x:Name="Menu_Settings_EnableFreeEditing" Header="Freie Bearbeitung aktivieren"
|
||||
IsCheckable="True" Checked="Menu_Settings_EnableFreeEditing_Checked" Unchecked="Menu_Settings_EnableFreeEditing_Unchecked"/>
|
||||
|
||||
@@ -14,6 +14,7 @@ using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace Elwig.Windows {
|
||||
@@ -283,6 +284,21 @@ namespace Elwig.Windows {
|
||||
private async void Menu_DeliveryDataList_SaveFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
await ViewModel.BulkRemoveModifier(name);
|
||||
}
|
||||
|
||||
private void Menu_Settings_EnableFreeEditing_Checked(object sender, RoutedEventArgs evt) {
|
||||
if (IsEditing || IsCreating) {
|
||||
DateInput.IsReadOnly = false;
|
||||
@@ -468,8 +484,10 @@ namespace Elwig.Windows {
|
||||
ViewModel.Title = $"Lieferungen - {ViewModel.FilterMember.AdministrativeName} - Elwig";
|
||||
}
|
||||
|
||||
int year = 0;
|
||||
Menu_Bki_SaveList.Items.Clear();
|
||||
foreach (var s in await ctx.Seasons.OrderByDescending(s => s.Year).ToListAsync()) {
|
||||
if (s.Year > year) year = s.Year;
|
||||
var i = new MenuItem {
|
||||
Header = $"Saison {s.Year}",
|
||||
};
|
||||
@@ -477,6 +495,37 @@ namespace Elwig.Windows {
|
||||
Menu_Bki_SaveList.Items.Add(i);
|
||||
}
|
||||
|
||||
var font = new FontFamily("Segoe MDL2 Assets");
|
||||
Menu_BulkAction_SetAttribute.Items.Clear();
|
||||
var noAttr = new MenuItem {
|
||||
Header = new TextBlock() { Text = "Kein Attribut", FontStyle = FontStyles.Italic },
|
||||
Icon = new TextBlock() { Text = "\ue75c", FontFamily = font, FontSize = 16 },
|
||||
};
|
||||
noAttr.Click += Menu_BulkAction_SetAttribute_Click;
|
||||
Menu_BulkAction_SetAttribute.Items.Add(noAttr);
|
||||
foreach (var attr in await ctx.WineAttributes.OrderBy(a => a.AttrId).ToListAsync()) {
|
||||
var i = new MenuItem {
|
||||
Header = attr.Name,
|
||||
};
|
||||
i.Click += Menu_BulkAction_SetAttribute_Click;
|
||||
Menu_BulkAction_SetAttribute.Items.Add(i);
|
||||
}
|
||||
|
||||
Menu_BulkAction_AddModifier.Items.Clear();
|
||||
Menu_BulkAction_RemoveModifier.Items.Clear();
|
||||
foreach (var mod in await ctx.Modifiers.Where(m => m.Year == year).OrderBy(m => m.ModId).ToListAsync()) {
|
||||
var i1 = new MenuItem {
|
||||
Header = mod.Name,
|
||||
};
|
||||
i1.Click += Menu_BulkAction_AddModifier_Click;
|
||||
Menu_BulkAction_AddModifier.Items.Add(i1);
|
||||
var i2 = new MenuItem {
|
||||
Header = mod.Name,
|
||||
};
|
||||
i2.Click += Menu_BulkAction_RemoveModifier_Click;
|
||||
Menu_BulkAction_RemoveModifier.Items.Add(i2);
|
||||
}
|
||||
|
||||
await RefreshList();
|
||||
var d = DeliveryList.SelectedItem as Delivery;
|
||||
var y = d?.Year ?? ViewModel.FilterSeason;
|
||||
|
||||
12
README.md
12
README.md
@@ -13,17 +13,17 @@ About
|
||||
**Product:** Elwig
|
||||
**Description:** Electronic Management for Vintners' Cooperatives
|
||||
**Type:** ERP system
|
||||
**Version:** 1.0.3.4 ([Changelog](./CHANGELOG.md))
|
||||
**Version:** 1.0.4.0 ([Changelog](./CHANGELOG.md))
|
||||
**License:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)
|
||||
**Website:** https://elwig.at/
|
||||
**Source code:** https://git.necronda.net/winzer/elwig
|
||||
**Developement period:** 2022–2025
|
||||
**Developement period:** 2022–2026
|
||||
|
||||
**Technology Stack:**
|
||||
Language: C#
|
||||
Framework: Windows Presentation Framework (WPF)
|
||||
Database: [SQLite](https://sqlite.org/)
|
||||
PDF creation: [WeasyPrint](https://weasyprint.org/), [RazorLight](https://github.com/toddams/RazorLight), [PdfiumViewer](https://github.com/pvginkel/PdfiumViewer)
|
||||
PDF creation: [iText](https://itextpdf.com/), [Pdfium](https://github.com/bblanchon/pdfium-binaries)
|
||||
Packaging: [WiX Toolset](https://www.firegiant.com/wixtoolset/)
|
||||
|
||||
|
||||
@@ -33,15 +33,15 @@ Packaging: [WiX Toolset](https://www.firegiant.com/wixtoolset/)
|
||||
**Produkt:** Elwig
|
||||
**Beschreibung:** Elektronische Winzergenossenschaftsverwaltung
|
||||
**Typ:** Warenwirtschaftssystem (ERP-System)
|
||||
**Version:** 1.0.3.4 ([Änderungsprotokoll](./CHANGELOG.md))
|
||||
**Version:** 1.0.4.0 ([Änderungsprotokoll](./CHANGELOG.md))
|
||||
**Lizenz:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)
|
||||
**Website:** https://elwig.at/
|
||||
**Quellcode:** https://git.necronda.net/winzer/elwig
|
||||
**Entwicklungszeitraum:** 2022–2025
|
||||
**Entwicklungszeitraum:** 2022–2026
|
||||
|
||||
**Verwendete Technologien:**
|
||||
Programmiersprache: C#
|
||||
Framework: Windows Presentation Framework (WPF)
|
||||
Datenbank: [SQLite](https://sqlite.org/)
|
||||
PDF-Erstellung: [iText](https://itextpdf.com/), [RazorLight](https://github.com/toddams/RazorLight), [Pdfium](https://github.com/bblanchon/pdfium-binaries)
|
||||
PDF-Erstellung: [iText](https://itextpdf.com/), [Pdfium](https://github.com/bblanchon/pdfium-binaries)
|
||||
Paketierung: [WiX Toolset](https://www.firegiant.com/wixtoolset/)
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
</Target>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
|
||||
<PackageReference Include="Appium.WebDriver" Version="4.4.5" />
|
||||
<PackageReference Include="NReco.PdfRenderer" Version="1.6.0" />
|
||||
<PackageReference Include="NUnit" Version="4.5.0" />
|
||||
<PackageReference Include="NUnit" Version="4.5.1" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="6.1.0" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.11.2">
|
||||
<PackageReference Include="NUnit.Analyzers" Version="4.12.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
||||
Reference in New Issue
Block a user