Compare commits
	
		
			4 Commits
		
	
	
		
			v0.2.0
			...
			1e9cad6de7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1e9cad6de7 | |||
| 62fe087598 | |||
| 7f01b85878 | |||
| a659d07db2 | 
@@ -9,19 +9,16 @@ namespace Elwig.Dialogs {
 | 
			
		||||
        public int Weight = 0;
 | 
			
		||||
        public string? Reason = null;
 | 
			
		||||
 | 
			
		||||
        public ManualWeighingDialog() {
 | 
			
		||||
        public ManualWeighingDialog(string? reason = null) {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            ReasonInput.Text = reason;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ConfirmButton_Click(object sender, RoutedEventArgs evt) {
 | 
			
		||||
            DialogResult = true;
 | 
			
		||||
            Weight = int.Parse(WeightInput.Text);
 | 
			
		||||
            Reason = Regex.Replace(ReasonInput.Text, @"\s+", "").Trim();
 | 
			
		||||
            if (Reason == "") {
 | 
			
		||||
                Reason = null;
 | 
			
		||||
            } else if (!Reason.EndsWith(".") || !Reason.EndsWith("!") || !Reason.EndsWith("?")) {
 | 
			
		||||
                Reason += ".";
 | 
			
		||||
            }
 | 
			
		||||
            Reason = Regex.Replace(ReasonInput.Text, @"\s+", " ").Trim();
 | 
			
		||||
            if (Reason == "") Reason = null;
 | 
			
		||||
            Close();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,7 @@ namespace Elwig.Helpers {
 | 
			
		||||
    public class Config {
 | 
			
		||||
 | 
			
		||||
        private readonly string FileName;
 | 
			
		||||
        public bool Debug;
 | 
			
		||||
        public string DatabaseFile = App.DataPath + "database.sqlite3";
 | 
			
		||||
        public string? DatabaseLog = null;
 | 
			
		||||
        public string? Branch = null;
 | 
			
		||||
@@ -49,6 +50,13 @@ namespace Elwig.Helpers {
 | 
			
		||||
                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();
 | 
			
		||||
            Scales = ScaleList;
 | 
			
		||||
            if (ini != null) {
 | 
			
		||||
@@ -72,6 +80,7 @@ namespace Elwig.Helpers {
 | 
			
		||||
            using var file = new StreamWriter(FileName, false, Utils.UTF8);
 | 
			
		||||
            file.Write($"\r\n[general]\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");
 | 
			
		||||
            if (DatabaseLog != null) file.Write($"log = {DatabaseLog}\r\n");
 | 
			
		||||
            foreach (var s in ScaleList) {
 | 
			
		||||
 
 | 
			
		||||
@@ -219,8 +219,8 @@ namespace Elwig.Helpers {
 | 
			
		||||
                .Sum();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static (int, string?)? ShowManualWeighingDialog() {
 | 
			
		||||
            var d = new ManualWeighingDialog();
 | 
			
		||||
        public static (int, string?)? ShowManualWeighingDialog(string? reason = null) {
 | 
			
		||||
            var d = new ManualWeighingDialog(reason);
 | 
			
		||||
            return d.ShowDialog() == true ? (d.Weight, d.Reason) : null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -413,7 +413,7 @@ namespace Elwig.Windows {
 | 
			
		||||
            UpdateButtons();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected void TextBox_TextChanged(object sender, RoutedEventArgs evt) {
 | 
			
		||||
        protected void TextBox_TextChanged(object sender, RoutedEventArgs? evt) {
 | 
			
		||||
            var input = (TextBox)sender;
 | 
			
		||||
            if (SenderIsRequired(input) && input.Text.Length == 0) {
 | 
			
		||||
                ValidateInput(input, false);
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,7 @@ namespace Elwig.Windows {
 | 
			
		||||
        private List<string> TextFilter = new();
 | 
			
		||||
        private readonly RoutedCommand CtrlF = new();
 | 
			
		||||
 | 
			
		||||
        private string? LastScaleError = null;
 | 
			
		||||
        private string? ManualWeighingReason = null;
 | 
			
		||||
        private string? ScaleId = null;
 | 
			
		||||
        private string? WeighingId = null;
 | 
			
		||||
@@ -91,13 +92,13 @@ namespace Elwig.Windows {
 | 
			
		||||
            AllSeasonsInput.IsChecked = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void Window_Loaded(object sender, RoutedEventArgs evt) {
 | 
			
		||||
        private void Window_Loaded(object sender, RoutedEventArgs evt) {
 | 
			
		||||
            OnSecondPassed(null, null);
 | 
			
		||||
            Timer.Start();
 | 
			
		||||
            LockInputs();
 | 
			
		||||
            if (IsReceipt) {
 | 
			
		||||
                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.",
 | 
			
		||||
                        "Saison noch nicht erstellt", MessageBoxButton.OK, MessageBoxImage.Error);
 | 
			
		||||
                }
 | 
			
		||||
@@ -147,6 +148,11 @@ namespace Elwig.Windows {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void InitialInputs() {
 | 
			
		||||
            LastScaleError = null;
 | 
			
		||||
            WeighingId = null;
 | 
			
		||||
            ScaleId = null;
 | 
			
		||||
            ManualWeighingReason = null;
 | 
			
		||||
 | 
			
		||||
            ClearOriginalValues();
 | 
			
		||||
            ClearDefaultValues();
 | 
			
		||||
 | 
			
		||||
@@ -226,6 +232,7 @@ namespace Elwig.Windows {
 | 
			
		||||
            double filterOeLt = 0;
 | 
			
		||||
 | 
			
		||||
            var filter = TextFilter.ToList();
 | 
			
		||||
            var hasFilters = filter.Count > 0;
 | 
			
		||||
            if (filter.Count > 0) {
 | 
			
		||||
                var var = await Context.WineVarieties.Select(v => v.SortId).ToListAsync();
 | 
			
		||||
                var qual = await Context.WineQualityLevels.Select(q => q.QualId).ToListAsync();
 | 
			
		||||
@@ -331,7 +338,8 @@ namespace Elwig.Windows {
 | 
			
		||||
                    .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();
 | 
			
		||||
            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);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // FIXME on "only one" delivery, RenewContext doees not work
 | 
			
		||||
            await RefreshDeliveryList();
 | 
			
		||||
            var d = DeliveryList.SelectedItem as Delivery;
 | 
			
		||||
            var y = d?.Year ?? Utils.CurrentLastSeason;
 | 
			
		||||
@@ -441,6 +448,7 @@ namespace Elwig.Windows {
 | 
			
		||||
            if (IsCreating) await UpdateLsNr();
 | 
			
		||||
 | 
			
		||||
            await RefreshDeliveryParts();
 | 
			
		||||
            RefreshInputs();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void FocusSearchInput(object sender, RoutedEventArgs evt) {
 | 
			
		||||
@@ -649,12 +657,18 @@ namespace Elwig.Windows {
 | 
			
		||||
                    ScaleId = null;
 | 
			
		||||
                    WeighingId = null;
 | 
			
		||||
                }
 | 
			
		||||
                ManualWeighingReason = null;
 | 
			
		||||
                ManualWeighingInput.IsChecked = false;
 | 
			
		||||
                LastScaleError = null;
 | 
			
		||||
            } 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",
 | 
			
		||||
                       MessageBoxButton.OK, MessageBoxImage.Error);
 | 
			
		||||
            }
 | 
			
		||||
            ManualWeighingReason = null;
 | 
			
		||||
            ManualWeighingInput.IsChecked = false;
 | 
			
		||||
            base.TextBox_TextChanged(WeightInput, null);
 | 
			
		||||
            EnableWeighingButtons();
 | 
			
		||||
            UpdateButtons();
 | 
			
		||||
        }
 | 
			
		||||
@@ -771,8 +785,11 @@ namespace Elwig.Windows {
 | 
			
		||||
                using var doc = new DeliveryNote(p.Delivery, Context);
 | 
			
		||||
                await doc.Generate();
 | 
			
		||||
                Mouse.OverrideCursor = null;
 | 
			
		||||
                doc.Show();
 | 
			
		||||
                //await doc.Print(2);
 | 
			
		||||
                if (App.Config.Debug) {
 | 
			
		||||
                    doc.Show();
 | 
			
		||||
                } else {
 | 
			
		||||
                    await doc.Print(2);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            FinishButton.Cursor = null;
 | 
			
		||||
            DeliveryList.SelectedItem = null;
 | 
			
		||||
@@ -880,7 +897,7 @@ namespace Elwig.Windows {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WeighingManualButton_Click(object sender, RoutedEventArgs evt) {
 | 
			
		||||
            var res = Utils.ShowManualWeighingDialog();
 | 
			
		||||
            var res = Utils.ShowManualWeighingDialog(LastScaleError);
 | 
			
		||||
            if (res == null) return;
 | 
			
		||||
            WeightInput.Text = $"{res?.Item1:N0}";
 | 
			
		||||
            ManualWeighingInput.IsChecked = true;
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,10 @@ namespace Elwig.Windows {
 | 
			
		||||
 | 
			
		||||
        public MainWindow() {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            if (!App.Config.Debug) {
 | 
			
		||||
                TestWindowButton.Visibility = Visibility.Hidden;
 | 
			
		||||
                //QueryWindowButton.Visibility = Visibility.Hidden;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void Window_Loaded(object sender, RoutedEventArgs evt) { }
 | 
			
		||||
 
 | 
			
		||||
@@ -89,7 +89,8 @@ namespace Elwig.Windows {
 | 
			
		||||
                    .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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@
 | 
			
		||||
[general]
 | 
			
		||||
; Only needed, if more than one branch is stored in database
 | 
			
		||||
branch = Zweigstelle
 | 
			
		||||
;debug = true
 | 
			
		||||
 | 
			
		||||
[database]
 | 
			
		||||
; Relative or absolute path to database file
 | 
			
		||||
 
 | 
			
		||||
@@ -72,14 +72,14 @@ namespace Tests {
 | 
			
		||||
        [Test]
 | 
			
		||||
        public void Test_SplitAddress() {
 | 
			
		||||
            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("Winzerstra<EFBFBD>e 5a"), Is.EqualTo(("Winzerstra<EFBFBD>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<EFBFBD>e 3/4/5"), Is.EqualTo(("Winzerstra<EFBFBD>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<EFBFBD>e 95b"), Is.EqualTo(("Winzerstra<EFBFBD>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 5a"), Is.EqualTo(("Winzerstraße", "5a")));
 | 
			
		||||
                Assert.That(Utils.SplitAddress("Winzerstraße 1-3/2"), Is.EqualTo(("Winzerstraße", "1-3/2")));
 | 
			
		||||
                Assert.That(Utils.SplitAddress("Winzerstraße 3/4/5"), Is.EqualTo(("Winzerstraße", "3/4/5")));
 | 
			
		||||
                Assert.That(Utils.SplitAddress("Winzerstraße 7/2/4/77"), Is.EqualTo(("Winzerstraße", "7/2/4/77")));
 | 
			
		||||
                Assert.That(Utils.SplitAddress("Winzerstraße 95b"), Is.EqualTo(("Winzerstraße", "95b")));
 | 
			
		||||
                Assert.That(Utils.SplitAddress("Winzerstraße 1, TOP 3"), Is.EqualTo(("Winzerstraße", "1, TOP 3")));
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user