Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
e9e4c75edd | |||
ff1a4e7182 | |||
1e9cad6de7 | |||
62fe087598 | |||
7f01b85878 | |||
a659d07db2 |
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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;
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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) { }
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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")));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user