Compare commits

..

10 Commits

Author SHA1 Message Date
5eda25ed14 Bump version to 0.10.7
All checks were successful
Test / Run tests (push) Successful in 2m2s
Deploy / Build and Deploy (push) Successful in 3m42s
2024-09-02 23:42:00 +02:00
543185d48e DeliveryAdminWindow: Add weight filter
All checks were successful
Test / Run tests (push) Successful in 2m58s
2024-09-02 23:28:55 +02:00
141086673f DeliveryAncmtList: Add status to indicate late ancmts 2024-09-02 23:10:37 +02:00
6627ab6d12 App: Try to fix auto context renewal 2
All checks were successful
Test / Run tests (push) Successful in 2m57s
2024-09-01 11:44:38 +02:00
7ef3faa39e Bump version to 0.10.6
All checks were successful
Deploy / Build and Deploy (push) Successful in 3m12s
2024-08-30 22:35:10 +02:00
8c8c0a8c2b App: Try to fix auto context renewal
All checks were successful
Test / Run tests (push) Successful in 2m23s
2024-08-30 22:26:49 +02:00
78a72c641f MemberAdminWindow: Fix checking and unchecking of ContactEmailInput
All checks were successful
Test / Run tests (push) Successful in 2m3s
2024-08-30 21:40:01 +02:00
e18bc58b6c DeliveryAncmtAdminWindow: Fix bug when pressing Enter in weight input
All checks were successful
Test / Run tests (push) Successful in 2m55s
2024-08-30 21:33:58 +02:00
21f68caf4c DeliveryAncmtAdminWindow: Increase window width 2024-08-30 21:33:16 +02:00
2ef10b4bb2 DeliveryAdminWindow: Scroll DeliveryPartList down when adding new delivery parts 2024-08-30 21:31:44 +02:00
12 changed files with 108 additions and 24 deletions

View File

@@ -2,6 +2,47 @@
Changelog Changelog
========= =========
[v0.10.7][v0.10.7] (2024-09-02) {#v0.10.7}
------------------------------------------
### Neue Funktionen {#v0.10.7-features}
* Im Anmeldungen-Fenster (`DeliveryAncmtAdminWindow`) wird der Anmeldezeitpunkt angezeigt; in der Anmeldeliste als `ok` oder `verspät.`. (141086673f)
* Im Lieferungen-Fenster (`DeliveryAdminWindow`) kann nach dem Gesamtgewicht einer Lieferung gefiltert werden (z.B. `<500kg`, `>8000kg`). (543185d48e)
### Behobene Fehler {#v0.10.7-bugfixes}
* 2. Versuch: Fehler bei automatischer Daten-Erneuerung bei längerer Benutzung. (6627ab6d12)
[v0.10.7]: https://git.necronda.net/winzer/elwig/releases/tag/v0.10.7
[v0.10.6][v0.10.6] (2024-08-30) {#v0.10.6}
------------------------------------------
### Behobene Fehler {#v0.10.6-bugfixes}
* Der Titel des Flächenbindungs-Fensters (`AreaComAdminWindow`) ist jetzt _Flächenbindungen_, nicht mehr _Lieferungen_. (ee1315929c)
* Im Auszahlungsvariante-Fenster (`ChartWindow`) einen Skalierungs-Fehler behoben. ([#33][i33])
* Versuch: Fehler bei automatischer Daten-Erneuerung bei längerer Benutzung. (8c8c0a8c2b)
### Sonstiges {#v0.10.6-misc}
* SQL-Queries für Auszahlung-Anpassen-Fenster (`PaymentAdjustmentWindow`) und Über-/Unterlieferungen effizienter umgeschrieben. (9930e6173c)
* Im Haupt-Fenster (`MainWindow`) den Menüpunkt _Waagen_ zu _Waage_ geändert. (8ce8492c74)
* Im Übernahme-Fenster (`DeliveryAdminWindow`) wird in der Teil-Lieferungen-Liste immer die letzte Teil-Lieferung angezeigt. (2ef10b4bb2)
* Breite des Traubenanmeldungen-Fensters (`DeliveryAncmtAdminWindow`) leicht erhöht und Fehler beim Enter-Drücken im _Gewicht_ Eingabefeld. (21f68caf4c, e18bc58b6c)
* Im Mitglieder-Fenster (`MemberAdminWindow`) wird das ändern der Kontaktart E-Mail wieder farblich hervorgehoben. (78a72c641f)
[v0.10.6]: https://git.necronda.net/winzer/elwig/releases/tag/v0.10.6
[i33]: https://git.necronda.net/winzer/elwig/issues/33
[v0.10.5][v0.10.5] (2024-08-24) {#v0.10.5} [v0.10.5][v0.10.5] (2024-08-24) {#v0.10.5}
------------------------------------------ ------------------------------------------

View File

@@ -53,7 +53,7 @@ namespace Elwig {
public static Dispatcher MainDispatcher { get; private set; } public static Dispatcher MainDispatcher { get; private set; }
private DateTime LastChanged; private DateTime LastChanged;
private static DateTime CurrentLastWrite => File.GetLastWriteTime(Config.DatabaseFile); private static DateTime CurrentLastWrite => File.GetLastWriteTime(Config.DatabaseFile);
private readonly DispatcherTimer ContextTimer = new() { Interval = TimeSpan.FromSeconds(2) }; private readonly DispatcherTimer ContextTimer = new() { Interval = TimeSpan.FromSeconds(5) };
public App() : base() { public App() : base() {
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
@@ -70,8 +70,9 @@ namespace Elwig {
} }
ContextTimer.Tick += (object? sender, EventArgs evt) => { ContextTimer.Tick += (object? sender, EventArgs evt) => {
if (CurrentLastWrite > LastChanged) { var ch = CurrentLastWrite;
LastChanged = CurrentLastWrite; if (ch > LastChanged) {
LastChanged = ch;
OnContextChanged(); OnContextChanged();
} }
}; };
@@ -201,7 +202,9 @@ namespace Elwig {
} }
public static async Task HintContextChange() { public static async Task HintContextChange() {
CurrentApp.LastChanged = CurrentLastWrite; var ch = CurrentLastWrite;
if (ch > CurrentApp.LastChanged)
CurrentApp.LastChanged = ch;
foreach (Window w in CurrentApp.Windows) { foreach (Window w in CurrentApp.Windows) {
if (w is not ContextWindow c) continue; if (w is not ContextWindow c) continue;
await c.HintContextChange(); await c.HintContextChange();

View File

@@ -10,8 +10,9 @@
<colgroup> <colgroup>
<col style="width: 18mm;"/> <col style="width: 18mm;"/>
<col style="width: 12mm;"/> <col style="width: 12mm;"/>
<col style="width: 81mm;"/> <col style="width: 70mm;"/>
<col style="width: 40mm;"/> <col style="width: 40mm;"/>
<col style="width: 11mm;"/>
<col style="width: 14mm;"/> <col style="width: 14mm;"/>
</colgroup> </colgroup>
<thead> <thead>
@@ -20,6 +21,7 @@
<th rowspan="2">MgNr.</th> <th rowspan="2">MgNr.</th>
<th rowspan="2" style="text-align: left;">Mitglied</th> <th rowspan="2" style="text-align: left;">Mitglied</th>
<th rowspan="2" style="text-align: left;">Sorte</th> <th rowspan="2" style="text-align: left;">Sorte</th>
<th rowspan="2">Anmldg.</th>
<th>Gewicht</th> <th>Gewicht</th>
</tr> </tr>
<tr> <tr>
@@ -33,13 +35,14 @@
<td class="number">@a.MgNr</td> <td class="number">@a.MgNr</td>
<td>@a.AdministrativeName</td> <td>@a.AdministrativeName</td>
<td>@a.Variety</td> <td>@a.Variety</td>
<td class="small">@(a.Status ?? "-")</td>
<td class="number">@($"{a.Weight:N0}")</td> <td class="number">@($"{a.Weight:N0}")</td>
</tr> </tr>
} }
<tr class="sum bold"> <tr class="sum bold">
<td colspan="2">Gesamt:</td> <td colspan="2">Gesamt:</td>
<td colspan="2">Anmeldungen: @($"{Model.Announcements.Count():N0}")</td> <td colspan="2">Anmeldungen: @($"{Model.Announcements.Count():N0}")</td>
<td class="number">@($"{Model.Announcements.Sum(a => a.Weight):N0}")</td> <td colspan="2" class="number">@($"{Model.Announcements.Sum(a => a.Weight):N0}")</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -7,7 +7,7 @@
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
<PreserveCompilationContext>true</PreserveCompilationContext> <PreserveCompilationContext>true</PreserveCompilationContext>
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon> <ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
<Version>0.10.5</Version> <Version>0.10.7</Version>
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationManifest>app.manifest</ApplicationManifest>

View File

@@ -17,6 +17,9 @@ namespace Elwig.Models.Dtos {
("Name2", "Vorname", null, 40), ("Name2", "Vorname", null, 40),
("SortId", "Sorte", null, 10), ("SortId", "Sorte", null, 10),
("Weight", "Gewicht", "kg", 20), ("Weight", "Gewicht", "kg", 20),
("CreatedTimestamp", "Angemeldet", null, 35),
("ModifiedTimestamp", "Geändert", null, 35),
("Status", "Status", null, 20),
]; ];
public DeliveryAncmtListData(IEnumerable<DeliveryAncmtListRow> rows, List<string> filterNames) : public DeliveryAncmtListData(IEnumerable<DeliveryAncmtListRow> rows, List<string> filterNames) :
@@ -42,7 +45,10 @@ namespace Elwig.Models.Dtos {
public string AdministrativeName; public string AdministrativeName;
public string SortId; public string SortId;
public string Variety; public string Variety;
public DateTime CreatedTimestamp;
public DateTime? ModifiedTimestamp;
public int Weight; public int Weight;
public string? Status;
public DeliveryAncmtListRow(DeliveryAncmt a) { public DeliveryAncmtListRow(DeliveryAncmt a) {
var s = a.Schedule; var s = a.Schedule;
@@ -56,7 +62,10 @@ namespace Elwig.Models.Dtos {
AdministrativeName = m.AdministrativeName; AdministrativeName = m.AdministrativeName;
SortId = a.SortId; SortId = a.SortId;
Variety = a.Variety.Name; Variety = a.Variety.Name;
CreatedTimestamp = a.CreatedTimestamp;
ModifiedTimestamp = a.ModifiedTimestamp == a.CreatedTimestamp ? null : a.ModifiedTimestamp;
Weight = a.Weight; Weight = a.Weight;
Status = s.AncmtTo == null ? null : a.CreatedTimestamp >= s.AncmtTo ? "verspät." : "ok";
} }
} }
} }

View File

@@ -124,6 +124,7 @@ namespace Elwig.Services {
var filterNotCult = new List<string>(); var filterNotCult = new List<string>();
var filterDate = new List<(string?, string?)>(); var filterDate = new List<(string?, string?)>();
var filterTime = new List<(string?, string?)>(); var filterTime = new List<(string?, string?)>();
int filterWeightGt = 0, filterWeightLt = 0;
int filterYearGt = 0, filterYearLt = 0; int filterYearGt = 0, filterYearLt = 0;
double filterKmwGt = 0, filterKmwLt = 0; double filterKmwGt = 0, filterKmwLt = 0;
double filterOeGt = 0, filterOeLt = 0; double filterOeGt = 0, filterOeLt = 0;
@@ -250,6 +251,15 @@ namespace Elwig.Services {
filterZwst.Add(b.ZwstId); filterZwst.Add(b.ZwstId);
filter.RemoveAt(i--); filter.RemoveAt(i--);
filterNames.Add($"Zweigstelle {b.Name}"); filterNames.Add($"Zweigstelle {b.Name}");
} else if ((e.StartsWith('>') || e.StartsWith('<')) && e.EndsWith("kg")) {
if (int.TryParse(e[1..^2], out var num)) {
switch (e[0]) {
case '>': filterWeightGt = num; break;
case '<': filterWeightLt = num; break;
}
filter.RemoveAt(i--);
}
if (e.Length == 3) filter.RemoveAt(i--);
} else if (e.StartsWith('>') || e.StartsWith('<')) { } else if (e.StartsWith('>') || e.StartsWith('<')) {
if (double.TryParse(e[1..], out var num)) { if (double.TryParse(e[1..], out var num)) {
switch ((e[0], num)) { switch ((e[0], num)) {
@@ -347,6 +357,8 @@ namespace Elwig.Services {
} }
} }
if (filterWeightGt > 0) prd = prd.And(p => p.Delivery.Parts.Sum(p => p.Weight) >= filterWeightGt);
if (filterWeightLt > 0) prd = prd.And(p => p.Delivery.Parts.Sum(p => p.Weight) <= filterWeightLt);
if (filterYearGt > 0) prd = prd.And(p => p.Year >= filterYearGt); if (filterYearGt > 0) prd = prd.And(p => p.Year >= filterYearGt);
if (filterYearLt > 0) prd = prd.And(p => p.Year < filterYearLt); if (filterYearLt > 0) prd = prd.And(p => p.Year < filterYearLt);
if (filterMgNr.Count > 0) prd = prd.And(p => filterMgNr.Contains(p.Delivery.MgNr)); if (filterMgNr.Count > 0) prd = prd.And(p => filterMgNr.Contains(p.Delivery.MgNr));
@@ -376,6 +388,13 @@ namespace Elwig.Services {
if (filterOeGt > 0) prd = prd.And(p => p.Kmw * (4.54 + 0.022 * p.Kmw) >= filterOeGt); if (filterOeGt > 0) prd = prd.And(p => p.Kmw * (4.54 + 0.022 * p.Kmw) >= filterOeGt);
if (filterOeLt > 0) prd = prd.And(p => p.Kmw * (4.54 + 0.022 * p.Kmw) < filterOeLt); if (filterOeLt > 0) prd = prd.And(p => p.Kmw * (4.54 + 0.022 * p.Kmw) < filterOeLt);
if (filterWeightGt > 0 && filterWeightLt > 0) {
filterNames.Insert(0, $"{filterWeightGt:N0}{filterWeightLt:N0} kg");
} else if (filterWeightGt > 0) {
filterNames.Insert(0, $"ab {filterWeightGt:N0} kg");
} else if (filterWeightLt > 0) {
filterNames.Insert(0, $"unter {filterWeightLt:N0} kg");
}
if (filterYearGt > 0 && filterYearLt > 0) { if (filterYearGt > 0 && filterYearLt > 0) {
filterNames.Insert(0, $"{filterYearGt}{filterYearLt - 1}"); filterNames.Insert(0, $"{filterYearGt}{filterYearLt - 1}");
} else if (filterYearGt > 0) { } else if (filterYearGt > 0) {

View File

@@ -176,6 +176,7 @@
<Bold>Zweigstelle</Bold>: z.B. musterort, ...<LineBreak/> <Bold>Zweigstelle</Bold>: z.B. musterort, ...<LineBreak/>
<Bold>Attribut</Bold>: z.B. kabinett, !kabinett (alle außer kabinett), ...<LineBreak/> <Bold>Attribut</Bold>: z.B. kabinett, !kabinett (alle außer kabinett), ...<LineBreak/>
<Bold>Bewirtschaftung</Bold>: z.B. bio, !kip (alle außer KIP), ...<LineBreak/> <Bold>Bewirtschaftung</Bold>: z.B. bio, !kip (alle außer KIP), ...<LineBreak/>
<Bold>Gewicht</Bold>: z.B. &lt;500kg, &gt;6000kg, ... (gilt für Gewicht der gesamten Lieferung)<LineBreak/>
<Bold>Datum</Bold>: z.B. 1.9., 15.9.-10.10., -15.10.2020, ...<LineBreak/> <Bold>Datum</Bold>: z.B. 1.9., 15.9.-10.10., -15.10.2020, ...<LineBreak/>
<Bold>Uhrzeit</Bold>: z.B. 06:00-08:00, 18:00-, ...<LineBreak/> <Bold>Uhrzeit</Bold>: z.B. 06:00-08:00, 18:00-, ...<LineBreak/>
<Bold>Handwiegung</Bold>: handw[iegung], !Handw[iegung] (alle ohne Handwiegung)<LineBreak/> <Bold>Handwiegung</Bold>: handw[iegung], !Handw[iegung] (alle ohne Handwiegung)<LineBreak/>

View File

@@ -690,7 +690,7 @@ namespace Elwig.Windows {
private async void NewDeliveryPartButton_Click(object sender, RoutedEventArgs evt) { private async void NewDeliveryPartButton_Click(object sender, RoutedEventArgs evt) {
FinishButton.IsEnabled = false; FinishButton.IsEnabled = false;
NewDeliveryPartButton.IsEnabled = false; NewDeliveryPartButton.IsEnabled = false;
NewDeliveryPartButton.Cursor = Cursors.Wait; Mouse.OverrideCursor = Cursors.AppStarting;
DeliveryPartList.IsEnabled = false; DeliveryPartList.IsEnabled = false;
var p = await ViewModel.UpdateDeliveryPart( var p = await ViewModel.UpdateDeliveryPart(
(DeliveryList.SelectedItem as Delivery)?.Year, (DeliveryList.SelectedItem as Delivery)?.Year,
@@ -703,9 +703,10 @@ namespace Elwig.Windows {
EmptyScale(); EmptyScale();
await RefreshList(); await RefreshList();
await RefreshDeliveryParts(); await RefreshDeliveryParts();
NewDeliveryPartButton.Cursor = null; Mouse.OverrideCursor = null;
ControlUtils.SelectItem(DeliveryList, p?.Delivery); ControlUtils.SelectItem(DeliveryList, p?.Delivery);
DeliveryPartList.SelectedItem = null; DeliveryPartList.SelectedItem = null;
DeliveryPartList.ScrollIntoView(DeliveryPartList.ItemsSource.Cast<object>().Last());
RefreshInputs(); RefreshInputs();
InitialInputs(); InitialInputs();
} }
@@ -713,7 +714,7 @@ namespace Elwig.Windows {
private async void FinishButton_Click(object sender, RoutedEventArgs evt) { private async void FinishButton_Click(object sender, RoutedEventArgs evt) {
FinishButton.IsEnabled = false; FinishButton.IsEnabled = false;
NewDeliveryPartButton.IsEnabled = false; NewDeliveryPartButton.IsEnabled = false;
FinishButton.Cursor = Cursors.Wait; Mouse.OverrideCursor = Cursors.AppStarting;
DeliveryPartList.IsEnabled = false; DeliveryPartList.IsEnabled = false;
var p = await ViewModel.UpdateDeliveryPart( var p = await ViewModel.UpdateDeliveryPart(
(DeliveryList.SelectedItem as Delivery)?.Year, (DeliveryList.SelectedItem as Delivery)?.Year,
@@ -727,7 +728,6 @@ namespace Elwig.Windows {
await RefreshList(); await RefreshList();
await RefreshDeliveryParts(); await RefreshDeliveryParts();
if (p?.Delivery != null) { if (p?.Delivery != null) {
Mouse.OverrideCursor = Cursors.AppStarting;
try { try {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
using var doc = new DeliveryNote((await ctx.Deliveries.FindAsync(p.Year, p.DId))!, ctx); using var doc = new DeliveryNote((await ctx.Deliveries.FindAsync(p.Year, p.DId))!, ctx);
@@ -740,9 +740,8 @@ namespace Elwig.Windows {
} catch (Exception exc) { } catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
} }
Mouse.OverrideCursor = null;
} }
FinishButton.Cursor = null; Mouse.OverrideCursor = null;
DeliveryList.SelectedItem = null; DeliveryList.SelectedItem = null;
await RenewContext(); await RenewContext();
RefreshInputs(); RefreshInputs();
@@ -937,7 +936,7 @@ namespace Elwig.Windows {
private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) { private async void SaveButton_Click(object? sender, RoutedEventArgs? evt) {
SaveButton.IsEnabled = false; SaveButton.IsEnabled = false;
SaveButton.Cursor = Cursors.Wait; Mouse.OverrideCursor = Cursors.AppStarting;
IsEditing = false; IsEditing = false;
IsCreating = false; IsCreating = false;
@@ -953,7 +952,7 @@ namespace Elwig.Windows {
!InputIsNotDefault(TimeInput) !InputIsNotDefault(TimeInput)
); );
SaveButton.Cursor = null; Mouse.OverrideCursor = null;
HideSaveResetCancelButtons(); HideSaveResetCancelButtons();
ShowNewEditDeleteButtons(); ShowNewEditDeleteButtons();

View File

@@ -8,7 +8,7 @@
xmlns:local="clr-namespace:Elwig.Windows" xmlns:local="clr-namespace:Elwig.Windows"
xmlns:vm="clr-namespace:Elwig.ViewModels" xmlns:vm="clr-namespace:Elwig.ViewModels"
xmlns:ctrl="clr-namespace:Elwig.Controls" xmlns:ctrl="clr-namespace:Elwig.Controls"
Title="Traubenanmeldungen - Elwig" Height="700" Width="900" MinWidth="600" MinHeight="400" Title="Traubenanmeldungen - Elwig" Height="700" Width="940" MinWidth="600" MinHeight="400"
Loaded="Window_Loaded"> Loaded="Window_Loaded">
<Window.DataContext> <Window.DataContext>
<vm:DeliveryAncmtAdminViewModel/> <vm:DeliveryAncmtAdminViewModel/>
@@ -167,6 +167,13 @@
</Style> </Style>
</DataGridTextColumn.CellStyle> </DataGridTextColumn.CellStyle>
</DataGridTextColumn> </DataGridTextColumn>
<DataGridTextColumn Header="Angemeldet" Binding="{Binding CreatedTimestamp, StringFormat='{}{0:HH:mm, dd.MM.}'}" Width="100">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>

View File

@@ -53,7 +53,7 @@ namespace Elwig.Windows {
WeightInput.Focus(); WeightInput.Focus();
WeightInput.SelectAll(); WeightInput.SelectAll();
} else if (ctrl == WeightInput) { } else if (ctrl == WeightInput) {
SaveButton_Click(null, null); ShortcutSave();
} }
} }
@@ -85,14 +85,15 @@ namespace Elwig.Windows {
using var ctx = new AppDbContext(); using var ctx = new AppDbContext();
var deliverySchedules = await ctx.DeliverySchedules var deliverySchedules = await ctx.DeliverySchedules
.Where(s => s.Year == ViewModel.FilterSeason) .Where(s => s.Year == ViewModel.FilterSeason)
.Where(s => !ViewModel.FilterOnlyUpcoming || s.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0)
.Include(s => s.Branch) .Include(s => s.Branch)
.Include(s => s.Announcements) .Include(s => s.Announcements)
.OrderBy(s => s.DateString) .OrderBy(s => s.DateString)
.ThenBy(s => s.Branch.Name) .ThenBy(s => s.Branch.Name)
.ThenBy(s => s.Description) .ThenBy(s => s.Description)
.ToListAsync(); .ToListAsync();
ControlUtils.RenewItemsSource(DeliveryScheduleList, deliverySchedules, DeliveryScheduleList_SelectionChanged, ControlUtils.RenewSourceDefault.First); ControlUtils.RenewItemsSource(DeliveryScheduleList, deliverySchedules
.Where(s => !ViewModel.FilterOnlyUpcoming || s.DateString.CompareTo(Utils.Today.ToString("yyyy-MM-dd")) >= 0)
.ToList(), DeliveryScheduleList_SelectionChanged, ControlUtils.RenewSourceDefault.First);
ControlUtils.RenewItemsSource(DeliveryScheduleInput, deliverySchedules, DeliveryScheduleInput_SelectionChanged); ControlUtils.RenewItemsSource(DeliveryScheduleInput, deliverySchedules, DeliveryScheduleInput_SelectionChanged);
} }

View File

@@ -769,6 +769,7 @@ namespace Elwig.Windows {
} }
private void ContactEmailInput_Changed(object sender, RoutedEventArgs evt) { private void ContactEmailInput_Changed(object sender, RoutedEventArgs evt) {
CheckBox_Changed(sender, evt);
EmailAddressInput_TextChanged(EmailAddress1Input, new TextChangedEventArgs(evt.RoutedEvent, UndoAction.None)); EmailAddressInput_TextChanged(EmailAddress1Input, new TextChangedEventArgs(evt.RoutedEvent, UndoAction.None));
} }

View File

@@ -18,11 +18,11 @@ namespace Tests.DocumentTests {
Assert.That(text, Contains.Substring("Anmeldeliste")); Assert.That(text, Contains.Substring("Anmeldeliste"));
Assert.That(text, Contains.Substring("01.10.2020 Matzen GV Kabinettaktion")); Assert.That(text, Contains.Substring("01.10.2020 Matzen GV Kabinettaktion"));
Assert.That(table, Is.EqualTo(new string[][] { Assert.That(table, Is.EqualTo(new string[][] {
["01.10.2020", "101 MUSTERMANN Max", "Grüner Veltliner", "5 000"], ["01.10.2020", "101 MUSTERMANN Max", "Grüner Veltliner", "-", "5 000"],
["01.10.2020", "102 WEINBAUER Wernhardt", "Grüner Veltliner", "10 000"], ["01.10.2020", "102 WEINBAUER Wernhardt", "Grüner Veltliner", "-", "10 000"],
["01.10.2020", "103 MUSTERBAUER Matthäus", "Grüner Veltliner", "8 000"], ["01.10.2020", "103 MUSTERBAUER Matthäus", "Grüner Veltliner", "-", "8 000"],
["01.10.2020", "104 WINZER Waltraud", "Grüner Veltliner", "2 000"], ["01.10.2020", "104 WINZER Waltraud", "Grüner Veltliner", "-", "2 000"],
["Gesamt:", "Anmeldungen: 4", "25 000"], ["Gesamt:", "Anmeldungen: 4", "25 000"],
})); }));
}); });
} }