Compare commits

..
4 Commits
10 changed files with 45 additions and 78 deletions

No files matched your search

-36
View File
@@ -2,42 +2,6 @@
Changelog Changelog
========= =========
[v1.2.0.0][v1.2.0.0] (2026-09-30) {#v1.2.0.0}
---------------------------------------------
### Neue Funktionen {#v1.2.0.0-features}
- Bio. ([#67][i67], d592fef352)
- Rot/weiß bei Menge/Gradataion. (7fef895491)
- CompanyHasSigned in member_history. (83dfde9203)
- Straßennamen in Adressen werden normalisiert. (fda337c3cb, fa19d4dcb5)
- Ausstehende Mitgl.-Bewegungen. (e370f949f6)
### Behobene Fehler {#v1.2.0.0-bugfixes}
- Backup wiederherstellen nicht src-file löschen. (15e191d74e)
- Billing Address FullName nur wenn addresse auch. (d8126e254d)
- ShutdownGracefully. (155a599878)
- SysTec-IT Waage Fehlermeldung typo. (03872ca5c2)
- Es ist nun nicht mehr möglich Lieferungen mit negativem Gewicht zu speichern. (0e586cc438)
### Sonstiges {#v1.2.0.0-misc}
- Tara korrigieren: wenn keine Tara, dann änderbar. (0e9121c462)
- Kein right-padding auf Lieferscheinen (`DeliveryNote`). (f2b84053e6)
- Backup only in non-Debug. (cba949d2eb)
- PostalDest/Ort.Name. (66a1185dc3)
- Rot/weiß in DeliverySplittingDialog. (829ad106cf)
- Code cleanup. (c2bc5b221a, b886abc632, 5f2788eb9e, 3d96c31a70, db8afa59b7, ba7c37fd70)
- Tests hinzugefügt (`PaymentVariantServiceTest`). (4988081bfd)
- Abhängigkeiten aktualisiert. (c54a998c96, aea7c39734, fcdbc8ce17)
[v1.2.0.0]: https://git.necronda.net/winzer/elwig/releases/tag/v1.2.0.0
[i67]: https://git.necronda.net/winzer/elwig/issues/67
[v1.1.2.2][v1.1.2.2] (2026-09-14) {#v1.1.2.2} [v1.1.2.2][v1.1.2.2] (2026-09-14) {#v1.1.2.2}
--------------------------------------------- ---------------------------------------------
+1 -1
View File
@@ -70,7 +70,7 @@ namespace Elwig.Documents {
doc.Add(new KernedParagraph(12).Add(Bold($"Flächenbindungen per {Date:dd.MM.yyyy}")).SetMargins(firstOnPage ? 0 : 24, 0, 6, 0)); doc.Add(new KernedParagraph(12).Add(Bold($"Flächenbindungen per {Date:dd.MM.yyyy}")).SetMargins(firstOnPage ? 0 : 24, 0, 6, 0));
doc.Add(NewAreaCmtTable(ActiveAreaCommitments)); doc.Add(NewAreaCmtTable(ActiveAreaCommitments));
} }
if (App.Client.EnableMemberHistory) { if (App.Client.EnableMemberHistory && App.Client.ModeMemberDataSheetShares > 0) {
bool firstOnPage = false; bool firstOnPage = false;
if (pdf.GetNumberOfPages() == 1) { if (pdf.GetNumberOfPages() == 1) {
doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE)); doc.Add(new AreaBreak(AreaBreakType.NEXT_PAGE));
+1 -1
View File
@@ -9,7 +9,7 @@
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<PreserveCompilationContext>true</PreserveCompilationContext> <PreserveCompilationContext>true</PreserveCompilationContext>
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon> <ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
<Version>1.2.0.0</Version> <Version>1.1.2.2</Version>
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<ApplicationManifest>App.manifest</ApplicationManifest> <ApplicationManifest>App.manifest</ApplicationManifest>
+11
View File
@@ -61,6 +61,7 @@ namespace Elwig.Helpers {
public int ModeBusinessShares; public int ModeBusinessShares;
public bool HasRedWhite => ModeBusinessShares == 1; public bool HasRedWhite => ModeBusinessShares == 1;
public int ModeMemberDataSheetShares;
public int ModeDeliveryNoteStats; public int ModeDeliveryNoteStats;
public int ModeWineQualityStatistics; public int ModeWineQualityStatistics;
public int OrderingMemberList; public int OrderingMemberList;
@@ -127,6 +128,10 @@ namespace Elwig.Helpers {
case "SIMPLE": ModeBusinessShares = 0; break; case "SIMPLE": ModeBusinessShares = 0; break;
case "RED_WHITE": ModeBusinessShares = 1; break; case "RED_WHITE": ModeBusinessShares = 1; break;
} }
switch (parameters.GetValueOrDefault("MODE_MEMBERDATASHEET_SHARES", "FULL")?.ToUpper()) {
case "NONE": ModeMemberDataSheetShares = 0; break;
case "FULL": ModeMemberDataSheetShares = 1; break;
}
switch (parameters.GetValueOrDefault("MODE_DELIVERYNOTE_STATS", "SHORT")?.ToUpper()) { switch (parameters.GetValueOrDefault("MODE_DELIVERYNOTE_STATS", "SHORT")?.ToUpper()) {
case "NONE": ModeDeliveryNoteStats = 0; break; case "NONE": ModeDeliveryNoteStats = 0; break;
case "GA_ONLY": ModeDeliveryNoteStats = 1; break; case "GA_ONLY": ModeDeliveryNoteStats = 1; break;
@@ -209,6 +214,11 @@ namespace Elwig.Helpers {
case 0: businessShares = "SIMPLE"; break; case 0: businessShares = "SIMPLE"; break;
case 1: businessShares = "RED_WHITE"; break; case 1: businessShares = "RED_WHITE"; break;
} }
string memberDataSheetShares = "FULL";
switch (ModeMemberDataSheetShares) {
case 0: memberDataSheetShares = "NONE"; break;
case 1: memberDataSheetShares = "FULL"; break;
}
string deliveryNoteStats = "SHORT"; string deliveryNoteStats = "SHORT";
switch (ModeDeliveryNoteStats) { switch (ModeDeliveryNoteStats) {
case 0: deliveryNoteStats = "NONE"; break; case 0: deliveryNoteStats = "NONE"; break;
@@ -279,6 +289,7 @@ namespace Elwig.Helpers {
("CLIENT_ORGANIC_AUTHORITYCODE", OrganicAuthorityCode), ("CLIENT_ORGANIC_AUTHORITYCODE", OrganicAuthorityCode),
("ENABLE_MEMBERHISTORY", EnableMemberHistory ? "YES" : "NO"), ("ENABLE_MEMBERHISTORY", EnableMemberHistory ? "YES" : "NO"),
("MODE_BUSINESSSHARES", businessShares), ("MODE_BUSINESSSHARES", businessShares),
("MODE_MEMBERDATASHEET_SHARES", memberDataSheetShares),
("MODE_DELIVERYNOTE_STATS", deliveryNoteStats), ("MODE_DELIVERYNOTE_STATS", deliveryNoteStats),
("MODE_WINEQUALITYSTATISTICS", modeWineQualityStatistics), ("MODE_WINEQUALITYSTATISTICS", modeWineQualityStatistics),
("ORDERING_MEMBERLIST", orderingMemberList), ("ORDERING_MEMBERLIST", orderingMemberList),
-29
View File
@@ -1,29 +0,0 @@
using Elwig.Models.Dtos;
using Elwig.Models.Entities;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Elwig.Helpers.Export {
public class MemberMovement : IExporter<MemberHistory> {
public static string FileExtension => "ods";
private readonly OdsFile _ods;
public MemberMovement(string filename) {
_ods = new OdsFile(filename);
}
public void Dispose() {
GC.SuppressFinalize(this);
_ods.Dispose();
}
public async Task ExportAsync(IEnumerable<MemberHistory> data, IProgress<double>? progress = null) {
using var ctx = new AppDbContext();
var tbl = MemberMovementData.FromMemberHistory("", data, await ctx.GetMemberHistory());
await _ods.AddTable(tbl);
}
}
}
+16 -6
View File
@@ -65,12 +65,22 @@ namespace Elwig.Models.Dtos {
cat = 1; cat = 1;
} }
var a = h.FromMember ?? h.ToMember; Member a;
var b = (a != h.ToMember) ? h.ToMember : null; Member? b = null;
if (a == null) throw new ArgumentException(); if (h.FromMember != null && h.ToMember != null) {
if (cat <= 1) {
if (b != null && cat <= 1) { a = h.ToMember;
(b, a) = (a, b); b = h.FromMember;
} else {
a = h.FromMember;
b = h.ToMember;
}
} else if (h.FromMember != null) {
a = h.FromMember;
} else if (h.ToMember != null) {
a = h.ToMember;
} else {
throw new ArgumentException();
} }
var oldA = history[a.MgNr].GetValueOrDefault(h.DateNotice); var oldA = history[a.MgNr].GetValueOrDefault(h.DateNotice);
@@ -1,6 +1,7 @@
using Elwig.Helpers; using Elwig.Helpers;
using Elwig.Helpers.Export; using Elwig.Helpers.Export;
using Elwig.Models; using Elwig.Models;
using Elwig.Models.Dtos;
using Elwig.Models.Entities; using Elwig.Models.Entities;
using Elwig.ViewModels; using Elwig.ViewModels;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@@ -111,8 +112,9 @@ namespace Elwig.Services {
await Utils.RunForeground(async () => { await Utils.RunForeground(async () => {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
var hist = await ctx.MemberHistory.Where(h => !h.CompanyHasSigned).ToListAsync(); var hist = await ctx.MemberHistory.Where(h => !h.CompanyHasSigned).ToListAsync();
using var exporter = new MemberMovement(filename); var data = MemberMovementData.FromMemberHistory($"Ausstehend ({today:dd.MM.yyyy})", hist, await ctx.GetMemberHistory());
await exporter.ExportAsync(hist); using var ods = new OdsFile(filename);
await ods.AddTable(data);
}); });
} }
} }
+8 -1
View File
@@ -561,7 +561,7 @@
</ComboBox> </ComboBox>
<Label Content="Mitgliederbewegungen:" Margin="10,40,10,10"/> <Label Content="Mitgliederbewegungen:" Margin="10,40,10,10"/>
<CheckBox x:Name="ParameterBusinessShareHistoryInput" Content="Mit Elwig erfassen" Margin="160,45,10,15" <CheckBox x:Name="ParameterBusinessShareHistoryInput" Content="Mit Elwig erfassen" Margin="160,45,10,15"
HorizontalAlignment="Left" HorizontalAlignment="Left"
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/>
</Grid> </Grid>
@@ -611,6 +611,13 @@
<TabItem Header="Textelemente"> <TabItem Header="Textelemente">
<ScrollViewer VerticalScrollBarVisibility="Visible"> <ScrollViewer VerticalScrollBarVisibility="Visible">
<StackPanel> <StackPanel>
<GroupBox Header="Stammdatenblatt" Margin="10,10,10,10" Height="70">
<Grid>
<CheckBox x:Name="ModeMemberDataSheetShares" Content="Verlauf der Geschäftsanteile anzeigen" Margin="15,15,10,15"
HorizontalAlignment="Left" VerticalAlignment="Top"
Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/>
</Grid>
</GroupBox>
<GroupBox Header="Lieferschein" Margin="10,10,10,10" Height="180"> <GroupBox Header="Lieferschein" Margin="10,10,10,10" Height="180">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
+2
View File
@@ -338,6 +338,7 @@ namespace Elwig.Windows {
ClientEmailAddressInput.Text = p.EmailAddress; ClientEmailAddressInput.Text = p.EmailAddress;
ClientWebsiteInput.Text = p.Website; ClientWebsiteInput.Text = p.Website;
ModeMemberDataSheetShares.IsChecked = p.ModeMemberDataSheetShares > 0;
TextElementDeliveryNote.Text = p.TextDeliveryNote; TextElementDeliveryNote.Text = p.TextDeliveryNote;
switch (p.ModeDeliveryNoteStats) { switch (p.ModeDeliveryNoteStats) {
case 0: ModeDeliveryNoteNone.IsChecked = true; break; case 0: ModeDeliveryNoteNone.IsChecked = true; break;
@@ -381,6 +382,7 @@ namespace Elwig.Windows {
p.ModeBusinessShares = ParameterBusinessShareModeInput.SelectedIndex; p.ModeBusinessShares = ParameterBusinessShareModeInput.SelectedIndex;
p.EnableMemberHistory = ParameterBusinessShareHistoryInput.IsChecked ?? false; p.EnableMemberHistory = ParameterBusinessShareHistoryInput.IsChecked ?? false;
p.ModeMemberDataSheetShares = ModeMemberDataSheetShares.IsChecked == true ? 1 : 0;
p.TextDeliveryNote = string.IsNullOrWhiteSpace(TextElementDeliveryNote.Text) ? null : TextElementDeliveryNote.Text; p.TextDeliveryNote = string.IsNullOrWhiteSpace(TextElementDeliveryNote.Text) ? null : TextElementDeliveryNote.Text;
p.ModeDeliveryNoteStats = (ModeDeliveryNoteNone.IsChecked == true) ? 0 : (ModeDeliveryNoteGaOnly.IsChecked == true) ? 1 : (ModeDeliveryNoteShort.IsChecked == true) ? 2 : (ModeDeliveryNoteFull.IsChecked == true) ? 3 : 2; p.ModeDeliveryNoteStats = (ModeDeliveryNoteNone.IsChecked == true) ? 0 : (ModeDeliveryNoteGaOnly.IsChecked == true) ? 1 : (ModeDeliveryNoteShort.IsChecked == true) ? 2 : (ModeDeliveryNoteFull.IsChecked == true) ? 3 : 2;
p.TextDeliveryConfirmation = string.IsNullOrWhiteSpace(TextElementDeliveryConfirmation.Text) ? null : TextElementDeliveryConfirmation.Text; p.TextDeliveryConfirmation = string.IsNullOrWhiteSpace(TextElementDeliveryConfirmation.Text) ? null : TextElementDeliveryConfirmation.Text;
+2 -2
View File
@@ -13,7 +13,7 @@ About
**Product:** Elwig **Product:** Elwig
**Description:** Electronic Management for Vintners' Cooperatives **Description:** Electronic Management for Vintners' Cooperatives
**Type:** ERP system **Type:** ERP system
**Version:** 1.2.0.0 ([Changelog](./CHANGELOG.md)) **Version:** 1.1.2.2 ([Changelog](./CHANGELOG.md))
**License:** [GNU General Public License 3.0 (GPLv3)](./LICENSE) **License:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)
**Website:** https://elwig.at/ **Website:** https://elwig.at/
**Source code:** https://git.necronda.net/winzer/elwig **Source code:** https://git.necronda.net/winzer/elwig
@@ -33,7 +33,7 @@ Packaging: [WiX Toolset](https://www.firegiant.com/wixtoolset/)
**Produkt:** Elwig **Produkt:** Elwig
**Beschreibung:** Elektronische Winzergenossenschaftsverwaltung **Beschreibung:** Elektronische Winzergenossenschaftsverwaltung
**Typ:** Warenwirtschaftssystem (ERP-System) **Typ:** Warenwirtschaftssystem (ERP-System)
**Version:** 1.2.0.0 ([Änderungsprotokoll](./CHANGELOG.md)) **Version:** 1.1.2.2 ([Änderungsprotokoll](./CHANGELOG.md))
**Lizenz:** [GNU General Public License 3.0 (GPLv3)](./LICENSE) **Lizenz:** [GNU General Public License 3.0 (GPLv3)](./LICENSE)
**Website:** https://elwig.at/ **Website:** https://elwig.at/
**Quellcode:** https://git.necronda.net/winzer/elwig **Quellcode:** https://git.necronda.net/winzer/elwig