Compare commits

..

6 Commits

12 changed files with 66 additions and 34 deletions

View File

@ -9,19 +9,16 @@ namespace Elwig.Dialogs {
public int Weight = 0; public int Weight = 0;
public string? Reason = null; public string? Reason = null;
public ManualWeighingDialog() { public ManualWeighingDialog(string? reason = null) {
InitializeComponent(); InitializeComponent();
ReasonInput.Text = reason;
} }
private void ConfirmButton_Click(object sender, RoutedEventArgs evt) { private void ConfirmButton_Click(object sender, RoutedEventArgs evt) {
DialogResult = true; DialogResult = true;
Weight = int.Parse(WeightInput.Text); Weight = int.Parse(WeightInput.Text);
Reason = Regex.Replace(ReasonInput.Text, @"\s+", "").Trim(); Reason = Regex.Replace(ReasonInput.Text, @"\s+", " ").Trim();
if (Reason == "") { if (Reason == "") Reason = null;
Reason = null;
} else if (!Reason.EndsWith(".") || !Reason.EndsWith("!") || !Reason.EndsWith("?")) {
Reason += ".";
}
Close(); Close();
} }

View File

@ -18,12 +18,14 @@
<link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-page.css"/> <link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-page.css"/>
</head> </head>
<body> <body>
<div class="m1"></div> @if (Model.ShowFoldMarks) {
<div class="m2"></div> <div class="m1"></div>
<div class="m3"></div> <div class="m2"></div>
<div class="m1 r"></div> <div class="m3"></div>
<div class="m2 r"></div> <div class="m1 r"></div>
<div class="m3 r"></div> <div class="m2 r"></div>
<div class="m3 r"></div>
}
<div class="footer-wrapper"> <div class="footer-wrapper">
<div class="pre-footer"> <div class="pre-footer">
<span class="date">@($"{Model.Date:dddd, d. MMMM yyyy}")</span> <span class="date">@($"{Model.Date:dddd, d. MMMM yyyy}")</span>

View File

@ -8,6 +8,7 @@ namespace Elwig.Documents {
private TempFile? PdfFile = null; private TempFile? PdfFile = null;
public bool ShowFoldMarks = App.Config.Debug;
public string DataPath; public string DataPath;
public int CurrentNextSeason; public int CurrentNextSeason;
public string? DocumentId; public string? DocumentId;

View File

@ -7,7 +7,7 @@
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>
<PreserveCompilationContext>true</PreserveCompilationContext> <PreserveCompilationContext>true</PreserveCompilationContext>
<ApplicationIcon>elwig.ico</ApplicationIcon> <ApplicationIcon>elwig.ico</ApplicationIcon>
<Version>0.2.0</Version> <Version>0.2.1</Version>
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
</PropertyGroup> </PropertyGroup>

View File

@ -8,6 +8,7 @@ namespace Elwig.Helpers {
public class Config { public class Config {
private readonly string FileName; private readonly string FileName;
public bool Debug;
public string DatabaseFile = App.DataPath + "database.sqlite3"; public string DatabaseFile = App.DataPath + "database.sqlite3";
public string? DatabaseLog = null; public string? DatabaseLog = null;
public string? Branch = null; public string? Branch = null;
@ -49,6 +50,13 @@ namespace Elwig.Helpers {
Branch = branch; Branch = branch;
} }
if (ini == null || !ini.TryGetKey("general.debug", out string debug)) {
Debug = false;
} else {
debug = debug.ToLower();
Debug = debug == "1" || debug == "true" || debug == "yes" || debug == "on";
}
ScaleList.Clear(); ScaleList.Clear();
Scales = ScaleList; Scales = ScaleList;
if (ini != null) { if (ini != null) {
@ -72,6 +80,7 @@ namespace Elwig.Helpers {
using var file = new StreamWriter(FileName, false, Utils.UTF8); using var file = new StreamWriter(FileName, false, Utils.UTF8);
file.Write($"\r\n[general]\r\n"); file.Write($"\r\n[general]\r\n");
if (Branch != null) file.Write($"branch = {Branch}\r\n"); if (Branch != null) file.Write($"branch = {Branch}\r\n");
if (Debug) file.Write("debug = true\r\n");
file.Write($"\r\n[database]\r\nfile = {DatabaseFile}\r\n"); file.Write($"\r\n[database]\r\nfile = {DatabaseFile}\r\n");
if (DatabaseLog != null) file.Write($"log = {DatabaseLog}\r\n"); if (DatabaseLog != null) file.Write($"log = {DatabaseLog}\r\n");
foreach (var s in ScaleList) { foreach (var s in ScaleList) {

View File

@ -219,8 +219,8 @@ namespace Elwig.Helpers {
.Sum(); .Sum();
} }
public static (int, string?)? ShowManualWeighingDialog() { public static (int, string?)? ShowManualWeighingDialog(string? reason = null) {
var d = new ManualWeighingDialog(); var d = new ManualWeighingDialog(reason);
return d.ShowDialog() == true ? (d.Weight, d.Reason) : null; return d.ShowDialog() == true ? (d.Weight, d.Reason) : null;
} }

View File

@ -413,7 +413,7 @@ namespace Elwig.Windows {
UpdateButtons(); UpdateButtons();
} }
protected void TextBox_TextChanged(object sender, RoutedEventArgs evt) { protected void TextBox_TextChanged(object sender, RoutedEventArgs? evt) {
var input = (TextBox)sender; var input = (TextBox)sender;
if (SenderIsRequired(input) && input.Text.Length == 0) { if (SenderIsRequired(input) && input.Text.Length == 0) {
ValidateInput(input, false); ValidateInput(input, false);

View File

@ -25,6 +25,7 @@ namespace Elwig.Windows {
private List<string> TextFilter = new(); private List<string> TextFilter = new();
private readonly RoutedCommand CtrlF = new(); private readonly RoutedCommand CtrlF = new();
private string? LastScaleError = null;
private string? ManualWeighingReason = null; private string? ManualWeighingReason = null;
private string? ScaleId = null; private string? ScaleId = null;
private string? WeighingId = null; private string? WeighingId = null;
@ -91,13 +92,13 @@ namespace Elwig.Windows {
AllSeasonsInput.IsChecked = true; AllSeasonsInput.IsChecked = true;
} }
private async void Window_Loaded(object sender, RoutedEventArgs evt) { private void Window_Loaded(object sender, RoutedEventArgs evt) {
OnSecondPassed(null, null); OnSecondPassed(null, null);
Timer.Start(); Timer.Start();
LockInputs(); LockInputs();
if (IsReceipt) { if (IsReceipt) {
NewDeliveryButton_Click(null, null); NewDeliveryButton_Click(null, null);
if ((await Context.Seasons.FindAsync(Utils.CurrentYear)) == null) { if ((Context.Seasons.Find(Utils.CurrentYear)) == null) {
MessageBox.Show("Die Saison für das aktuelle Jahr wurde noch nicht erstellt. Neue Lieferungen können nicht abgespeichert werden.", MessageBox.Show("Die Saison für das aktuelle Jahr wurde noch nicht erstellt. Neue Lieferungen können nicht abgespeichert werden.",
"Saison noch nicht erstellt", MessageBoxButton.OK, MessageBoxImage.Error); "Saison noch nicht erstellt", MessageBoxButton.OK, MessageBoxImage.Error);
} }
@ -147,6 +148,11 @@ namespace Elwig.Windows {
} }
private void InitialInputs() { private void InitialInputs() {
LastScaleError = null;
WeighingId = null;
ScaleId = null;
ManualWeighingReason = null;
ClearOriginalValues(); ClearOriginalValues();
ClearDefaultValues(); ClearDefaultValues();
@ -226,6 +232,7 @@ namespace Elwig.Windows {
double filterOeLt = 0; double filterOeLt = 0;
var filter = TextFilter.ToList(); var filter = TextFilter.ToList();
var hasFilters = filter.Count > 0;
if (filter.Count > 0) { if (filter.Count > 0) {
var var = await Context.WineVarieties.Select(v => v.SortId).ToListAsync(); var var = await Context.WineVarieties.Select(v => v.SortId).ToListAsync();
var qual = await Context.WineQualityLevels.Select(q => q.QualId).ToListAsync(); var qual = await Context.WineQualityLevels.Select(q => q.QualId).ToListAsync();
@ -331,7 +338,8 @@ namespace Elwig.Windows {
.ToList(); .ToList();
} }
ControlUtils.RenewItemsSource(DeliveryList, deliveries, d => ((d as Delivery)?.Year, (d as Delivery)?.DId), DeliveryList_SelectionChanged, IsCreating ? ControlUtils.RenewSourceDefault.None : ControlUtils.RenewSourceDefault.IfOnly, !updateSort); ControlUtils.RenewItemsSource(DeliveryList, deliveries, d => ((d as Delivery)?.Year, (d as Delivery)?.DId),
DeliveryList_SelectionChanged, hasFilters ? ControlUtils.RenewSourceDefault.IfOnly : ControlUtils.RenewSourceDefault.None, !updateSort);
var members = deliveries.Select(d => d.Member).DistinctBy(m => m.MgNr).ToList(); var members = deliveries.Select(d => d.Member).DistinctBy(m => m.MgNr).ToList();
StatusMembers.Text = $"Mitglieder: {members.Count}" + (members.Count > 0 && members.Count <= 4 ? $" ({string.Join(", ", members.Select(m => m.AdministrativeName))})" : ""); StatusMembers.Text = $"Mitglieder: {members.Count}" + (members.Count > 0 && members.Count <= 4 ? $" ({string.Join(", ", members.Select(m => m.AdministrativeName))})" : "");
@ -423,7 +431,6 @@ namespace Elwig.Windows {
Menu_Export_Bki.Items.Add(i); Menu_Export_Bki.Items.Add(i);
} }
// FIXME on "only one" delivery, RenewContext doees not work
await RefreshDeliveryList(); await RefreshDeliveryList();
var d = DeliveryList.SelectedItem as Delivery; var d = DeliveryList.SelectedItem as Delivery;
var y = d?.Year ?? Utils.CurrentLastSeason; var y = d?.Year ?? Utils.CurrentLastSeason;
@ -441,6 +448,7 @@ namespace Elwig.Windows {
if (IsCreating) await UpdateLsNr(); if (IsCreating) await UpdateLsNr();
await RefreshDeliveryParts(); await RefreshDeliveryParts();
RefreshInputs();
} }
private void FocusSearchInput(object sender, RoutedEventArgs evt) { private void FocusSearchInput(object sender, RoutedEventArgs evt) {
@ -649,12 +657,18 @@ namespace Elwig.Windows {
ScaleId = null; ScaleId = null;
WeighingId = null; WeighingId = null;
} }
ManualWeighingReason = null; LastScaleError = null;
ManualWeighingInput.IsChecked = false;
} catch (Exception e) { } catch (Exception e) {
LastScaleError = e.Message.Split(": ")[^1];
WeightInput.Text = "";
ScaleId = null;
WeighingId = null;
MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{e.Message}", "Waagenfehler", MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{e.Message}", "Waagenfehler",
MessageBoxButton.OK, MessageBoxImage.Error); MessageBoxButton.OK, MessageBoxImage.Error);
} }
ManualWeighingReason = null;
ManualWeighingInput.IsChecked = false;
base.TextBox_TextChanged(WeightInput, null);
EnableWeighingButtons(); EnableWeighingButtons();
UpdateButtons(); UpdateButtons();
} }
@ -771,8 +785,11 @@ namespace Elwig.Windows {
using var doc = new DeliveryNote(p.Delivery, Context); using var doc = new DeliveryNote(p.Delivery, Context);
await doc.Generate(); await doc.Generate();
Mouse.OverrideCursor = null; Mouse.OverrideCursor = null;
doc.Show(); if (App.Config.Debug) {
//await doc.Print(2); doc.Show();
} else {
await doc.Print(2);
}
} }
FinishButton.Cursor = null; FinishButton.Cursor = null;
DeliveryList.SelectedItem = null; DeliveryList.SelectedItem = null;
@ -880,7 +897,7 @@ namespace Elwig.Windows {
} }
private void WeighingManualButton_Click(object sender, RoutedEventArgs evt) { private void WeighingManualButton_Click(object sender, RoutedEventArgs evt) {
var res = Utils.ShowManualWeighingDialog(); var res = Utils.ShowManualWeighingDialog(LastScaleError);
if (res == null) return; if (res == null) return;
WeightInput.Text = $"{res?.Item1:N0}"; WeightInput.Text = $"{res?.Item1:N0}";
ManualWeighingInput.IsChecked = true; ManualWeighingInput.IsChecked = true;

View File

@ -5,6 +5,10 @@ namespace Elwig.Windows {
public MainWindow() { public MainWindow() {
InitializeComponent(); InitializeComponent();
if (!App.Config.Debug) {
TestWindowButton.Visibility = Visibility.Hidden;
//QueryWindowButton.Visibility = Visibility.Hidden;
}
} }
private void Window_Loaded(object sender, RoutedEventArgs evt) { } private void Window_Loaded(object sender, RoutedEventArgs evt) { }

View File

@ -89,7 +89,8 @@ namespace Elwig.Windows {
.ToList(); .ToList();
} }
ControlUtils.RenewItemsSource(MemberList, members, i => (i as Member)?.MgNr, MemberList_SelectionChanged, ControlUtils.RenewSourceDefault.IfOnly, !updateSort); ControlUtils.RenewItemsSource(MemberList, members, i => (i as Member)?.MgNr,
MemberList_SelectionChanged, TextFilter.Count > 0 ? ControlUtils.RenewSourceDefault.IfOnly : ControlUtils.RenewSourceDefault.None, !updateSort);
} }
private void RefreshInputs(bool validate = false) { private void RefreshInputs(bool validate = false) {

View File

@ -2,6 +2,7 @@
[general] [general]
; Only needed, if more than one branch is stored in database ; Only needed, if more than one branch is stored in database
branch = Zweigstelle branch = Zweigstelle
;debug = true
[database] [database]
; Relative or absolute path to database file ; Relative or absolute path to database file

View File

@ -72,14 +72,14 @@ namespace Tests {
[Test] [Test]
public void Test_SplitAddress() { public void Test_SplitAddress() {
Assert.Multiple(() => { Assert.Multiple(() => {
Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 1"), Is.EqualTo(("Winzerstra<EFBFBD>e", "1"))); Assert.That(Utils.SplitAddress("Winzerstraße 1"), Is.EqualTo(("Winzerstraße", "1")));
Assert.That(Utils.SplitAddress("Auf dem Feld 12"), Is.EqualTo(("Auf dem Feld", "12"))); Assert.That(Utils.SplitAddress("Auf dem Feld 12"), Is.EqualTo(("Auf dem Feld", "12")));
Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 5a"), Is.EqualTo(("Winzerstra<EFBFBD>e", "5a"))); Assert.That(Utils.SplitAddress("Winzerstraße 5a"), Is.EqualTo(("Winzerstraße", "5a")));
Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 1-3/2"), Is.EqualTo(("Winzerstra<EFBFBD>e", "1-3/2"))); Assert.That(Utils.SplitAddress("Winzerstraße 1-3/2"), Is.EqualTo(("Winzerstraße", "1-3/2")));
Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 3/4/5"), Is.EqualTo(("Winzerstra<EFBFBD>e", "3/4/5"))); Assert.That(Utils.SplitAddress("Winzerstraße 3/4/5"), Is.EqualTo(("Winzerstraße", "3/4/5")));
Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 7/2/4/77"), Is.EqualTo(("Winzerstra<EFBFBD>e", "7/2/4/77"))); Assert.That(Utils.SplitAddress("Winzerstraße 7/2/4/77"), Is.EqualTo(("Winzerstraße", "7/2/4/77")));
Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 95b"), Is.EqualTo(("Winzerstra<EFBFBD>e", "95b"))); Assert.That(Utils.SplitAddress("Winzerstraße 95b"), Is.EqualTo(("Winzerstraße", "95b")));
Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 1, TOP 3"), Is.EqualTo(("Winzerstra<EFBFBD>e", "1, TOP 3"))); Assert.That(Utils.SplitAddress("Winzerstraße 1, TOP 3"), Is.EqualTo(("Winzerstraße", "1, TOP 3")));
}); });
} }