BaseDataWindow: Add fields for season
This commit is contained in:
111
Elwig/Windows/BaseDataWindow.xaml.Season.cs
Normal file
111
Elwig/Windows/BaseDataWindow.xaml.Season.cs
Normal file
@ -0,0 +1,111 @@
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace Elwig.Windows {
|
||||
public partial class BaseDataWindow {
|
||||
|
||||
private bool _seasonChanged = false;
|
||||
private bool _seasonUpdate = false;
|
||||
|
||||
private void SeasonsInitEditing() {
|
||||
ControlUtils.RenewItemsSource(SeasonList, Context.Seasons.OrderByDescending(s => s.Year).ToList(), s => (s as Season)?.Year);
|
||||
SeasonList_SelectionChanged(null, null);
|
||||
}
|
||||
|
||||
private void SeasonsFinishEditing() {
|
||||
ControlUtils.RenewItemsSource(SeasonList, Context.Seasons.OrderByDescending(s => s.Year).ToList(), s => (s as Season)?.Year);
|
||||
_seasonChanged = false;
|
||||
}
|
||||
|
||||
private async Task SeasonsSave() {
|
||||
if (!_seasonChanged || SeasonList.SelectedItem is not Season s)
|
||||
return;
|
||||
Context.Update(s);
|
||||
await Context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
private async void SeasonList_SelectionChanged(object? sender, SelectionChangedEventArgs? evt) {
|
||||
_seasonUpdate = true;
|
||||
if (SeasonList.SelectedItem is Season s) {
|
||||
SeasonModifierList.ItemsSource = await Context.Modifiers.Where(m => m.Year == s.Year).OrderBy(m => m.Ordering).ToListAsync();
|
||||
SeasonMaxKgPerHaInput.Text = s.MaxKgPerHa.ToString();
|
||||
SeasonVatNormalInput.Text = (s.VatNormal * 100).ToString();
|
||||
SeasonVatFlatrateInput.Text = (s.VatFlatrate * 100).ToString();
|
||||
SeasonStartInput.Text = $"{s.StartDate:dd.MM.yyyy}";
|
||||
SeasonEndInput.Text = $"{s.EndDate:dd.MM.yyyy}";
|
||||
SeasonMinKgPerBsInput.Text = s.MinKgPerBusinessShare.ToString();
|
||||
SeasonMaxKgPerBsInput.Text = s.MaxKgPerBusinessShare.ToString();
|
||||
SeasonPenaltyPerKgInput.Text = s.PenaltyPerKg?.ToString() ?? "";
|
||||
SeasonPenaltyInput.Text = s.PenaltyAmount?.ToString() ?? "";
|
||||
SeasonPenaltyNoneInput.Text = s.PenaltyNone?.ToString() ?? "";
|
||||
|
||||
var sym = s.Currency.Symbol ?? "";
|
||||
SeasonModifierAbsInput.Unit = $"{sym}/kg";
|
||||
SeasonPenaltyPerKgInput.Unit = $"{sym}/kg";
|
||||
SeasonPenaltyInput.Unit = sym;
|
||||
SeasonPenaltyNoneInput.Unit = sym;
|
||||
} else {
|
||||
SeasonModifierList.ItemsSource = null;
|
||||
SeasonMaxKgPerHaInput.Text = "";
|
||||
SeasonVatNormalInput.Text = "";
|
||||
SeasonVatFlatrateInput.Text = "";
|
||||
SeasonStartInput.Text = "";
|
||||
SeasonEndInput.Text = "";
|
||||
SeasonMinKgPerBsInput.Text = "";
|
||||
SeasonMaxKgPerBsInput.Text = "";
|
||||
SeasonPenaltyPerKgInput.Text = "";
|
||||
SeasonPenaltyInput.Text = "";
|
||||
SeasonPenaltyNoneInput.Text = "";
|
||||
}
|
||||
_seasonUpdate = false;
|
||||
}
|
||||
|
||||
private void Season_Changed(object? sender, RoutedEventArgs? evt) {
|
||||
if (_seasonUpdate || (!IsEditing && !IsCreating) || SeasonList.SelectedItem is not Season s) return;
|
||||
_seasonChanged = true;
|
||||
|
||||
if (SeasonMaxKgPerHaInput.Text.Length > 0)
|
||||
s.MaxKgPerHa = int.Parse(SeasonMaxKgPerHaInput.Text);
|
||||
if (SeasonVatNormalInput.Text.Length > 0)
|
||||
s.VatNormal = double.Parse(SeasonVatNormalInput.Text) / 100;
|
||||
if (SeasonVatFlatrateInput.Text.Length > 0)
|
||||
s.VatFlatrate = double.Parse(SeasonVatFlatrateInput.Text) / 100;
|
||||
if (SeasonMinKgPerBsInput.Text.Length > 0)
|
||||
s.MinKgPerBusinessShare = int.Parse(SeasonMinKgPerBsInput.Text);
|
||||
if (SeasonMaxKgPerBsInput.Text.Length > 0)
|
||||
s.MaxKgPerBusinessShare = int.Parse(SeasonMaxKgPerBsInput.Text);
|
||||
s.PenaltyPerKg = (SeasonPenaltyPerKgInput.Text.Length > 0) ? decimal.Parse(SeasonPenaltyPerKgInput.Text) : null;
|
||||
s.PenaltyAmount = (SeasonPenaltyInput.Text.Length > 0) ? decimal.Parse(SeasonPenaltyInput.Text) : null;
|
||||
s.PenaltyNone = (SeasonPenaltyNoneInput.Text.Length > 0) ? decimal.Parse(SeasonPenaltyNoneInput.Text) : null;
|
||||
|
||||
UpdateButtons();
|
||||
}
|
||||
|
||||
private void SeasonMinMaxKgInput_TextChanged(object sender, TextChangedEventArgs evt) {
|
||||
InputTextChanged((TextBox)sender, Validator.CheckInteger((TextBox)sender, true, 5));
|
||||
Season_Changed(sender, evt);
|
||||
}
|
||||
|
||||
private void SeasonVatInput_TextChanged(object sender, TextChangedEventArgs evt) {
|
||||
InputTextChanged((TextBox)sender, Validator.CheckDecimal((TextBox)sender, true, 2, 1));
|
||||
Season_Changed(sender, evt);
|
||||
}
|
||||
|
||||
private void SeasonPenaltyPerKgInput_TextChanged(object sender, TextChangedEventArgs evt) {
|
||||
if (SeasonList.SelectedItem is not Season s) return;
|
||||
InputTextChanged((TextBox)sender, Validator.CheckDecimal((TextBox)sender, false, 2, s.Precision));
|
||||
Season_Changed(sender, evt);
|
||||
}
|
||||
|
||||
private void SeasonMoneyInput_TextChanged(object sender, TextChangedEventArgs evt) {
|
||||
InputTextChanged((TextBox)sender, Validator.CheckDecimal((TextBox)sender, false, 4, 2));
|
||||
Season_Changed(sender, evt);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user