diff --git a/Elwig/Helpers/AppDbUpdater.cs b/Elwig/Helpers/AppDbUpdater.cs
index 6c3d86f..184348c 100644
--- a/Elwig/Helpers/AppDbUpdater.cs
+++ b/Elwig/Helpers/AppDbUpdater.cs
@@ -9,7 +9,7 @@ namespace Elwig.Helpers {
public static class AppDbUpdater {
// Don't forget to update value in Tests/fetch-resources.bat!
- public static readonly int RequiredSchemaVersion = 23;
+ public static readonly int RequiredSchemaVersion = 24;
private static int VersionOffset = 0;
diff --git a/Elwig/Models/Entities/Modifier.cs b/Elwig/Models/Entities/Modifier.cs
index d4e67c4..80ba35f 100644
--- a/Elwig/Models/Entities/Modifier.cs
+++ b/Elwig/Models/Entities/Modifier.cs
@@ -13,6 +13,9 @@ namespace Elwig.Models.Entities {
[Column("modid")]
public required string ModId { get; set; }
+ [Column("active")]
+ public bool IsActive { get; set; }
+
[Column("ordering")]
public int Ordering { get; set; }
@@ -21,7 +24,6 @@ namespace Elwig.Models.Entities {
[Column("abs")]
public long? AbsValue { get; set; }
-
[NotMapped]
public decimal? Abs {
get => AbsValue != null ? Season.DecFromDb(AbsValue.Value) : null;
@@ -30,19 +32,12 @@ namespace Elwig.Models.Entities {
[Column("rel")]
public double? RelValue { get; set; }
-
[NotMapped]
public decimal? Rel {
get => (decimal?)RelValue;
set => RelValue = (double?)value;
}
- [Column("standard")]
- public bool IsStandard { get; set; }
-
- [Column("quick_select")]
- public bool IsQuickSelect { get; set; }
-
[ForeignKey("Year")]
public virtual Season Season { get; private set; } = null!;
diff --git a/Elwig/Resources/Sql/21-22.sql b/Elwig/Resources/Sql/21-22.sql
index 1a86728..125444a 100644
--- a/Elwig/Resources/Sql/21-22.sql
+++ b/Elwig/Resources/Sql/21-22.sql
@@ -1,4 +1,4 @@
--- schema version 20 to 21
+-- schema version 21 to 22
CREATE VIEW v_penalty_business_shares AS
SELECT u.year, u.mgnr,
diff --git a/Elwig/Resources/Sql/22-23.sql b/Elwig/Resources/Sql/22-23.sql
index 162c27c..eec434e 100644
--- a/Elwig/Resources/Sql/22-23.sql
+++ b/Elwig/Resources/Sql/22-23.sql
@@ -1,4 +1,4 @@
--- schema version 20 to 21
+-- schema version 22 to 23
CREATE VIEW v_stat_modifier AS
SELECT v.year, v.avnr, m.modid, m.name, m.abs, m.rel,
diff --git a/Elwig/Resources/Sql/23-24.sql b/Elwig/Resources/Sql/23-24.sql
new file mode 100644
index 0000000..04bfd7f
--- /dev/null
+++ b/Elwig/Resources/Sql/23-24.sql
@@ -0,0 +1,5 @@
+-- schema version 23 to 24
+
+ALTER TABLE modifier DROP COLUMN standard;
+ALTER TABLE modifier DROP COLUMN quick_select;
+ALTER TABLE modifier ADD COLUMN active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE;
diff --git a/Elwig/Windows/BaseDataWindow.xaml b/Elwig/Windows/BaseDataWindow.xaml
index ae93924..94f422a 100644
--- a/Elwig/Windows/BaseDataWindow.xaml
+++ b/Elwig/Windows/BaseDataWindow.xaml
@@ -521,6 +521,10 @@
+
+
diff --git a/Elwig/Windows/BaseDataWindow.xaml.Mod.cs b/Elwig/Windows/BaseDataWindow.xaml.Mod.cs
index 2f87b7e..7b8c2ce 100644
--- a/Elwig/Windows/BaseDataWindow.xaml.Mod.cs
+++ b/Elwig/Windows/BaseDataWindow.xaml.Mod.cs
@@ -134,11 +134,13 @@ namespace Elwig.Windows {
SeasonModifierNameInput.Text = "";
SeasonModifierRelInput.Text = "";
SeasonModifierAbsInput.Text = "";
+ SeasonModifierActiveInput.IsChecked = false;
} else {
SeasonModifierIdInput.Text = mod.ModId;
SeasonModifierNameInput.Text = mod.Name;
SeasonModifierRelInput.Text = (mod.Rel * 100)?.ToString() ?? "";
SeasonModifierAbsInput.Text = mod.Abs?.ToString() ?? "";
+ SeasonModifierActiveInput.IsChecked = mod.IsActive;
}
_modUpdate = false;
}
@@ -154,6 +156,7 @@ namespace Elwig.Windows {
mod.Name = SeasonModifierNameInput.Text;
mod.Rel = decimal.TryParse(SeasonModifierRelInput.Text, out var vRel) ? vRel / 100 : null;
mod.AbsValue = decimal.TryParse(SeasonModifierAbsInput.Text, out var vAbs) ? Utils.DecToDb(vAbs, s.Precision) : null;
+ mod.IsActive = SeasonModifierActiveInput.IsChecked ?? false;
CollectionViewSource.GetDefaultView(_modList).Refresh();
UpdateButtons();
diff --git a/Elwig/Windows/BaseDataWindow.xaml.Season.cs b/Elwig/Windows/BaseDataWindow.xaml.Season.cs
index e770c77..c3bd1cb 100644
--- a/Elwig/Windows/BaseDataWindow.xaml.Season.cs
+++ b/Elwig/Windows/BaseDataWindow.xaml.Season.cs
@@ -187,8 +187,7 @@ namespace Elwig.Windows {
Name = m.Name,
AbsValue = m.AbsValue * mult / div,
RelValue = m.RelValue,
- IsStandard = m.IsStandard,
- IsQuickSelect = m.IsQuickSelect,
+ IsActive = m.IsActive,
}));
}
await ctx.SaveChangesAsync();
diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
index ce816b7..b2b07e3 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
@@ -1084,7 +1084,7 @@ namespace Elwig.Windows {
ControlUtils.RenewItemsSource(CultivationInput, cultList, null, ControlUtils.RenewSourceDefault.First);
ControlUtils.RenewItemsSource(WineQualityLevelInput, await ctx.WineQualityLevels.ToListAsync());
ControlUtils.RenewItemsSource(ModifiersInput, await ctx.Modifiers
- .Where(m => m.Year == y)
+ .Where(m => m.Year == y && (!IsCreating || m.IsActive))
.OrderBy(m => m.Ordering)
.Include(m => m.Season.Currency)
.ToListAsync());
@@ -1116,14 +1116,14 @@ namespace Elwig.Windows {
using var ctx = new AppDbContext();
if (DeliveryList.SelectedItem is Delivery d) {
ControlUtils.RenewItemsSource(ModifiersInput, await ctx.Modifiers
- .Where(m => m.Year == d.Year)
+ .Where(m => m.Year == d.Year && (!IsCreating || m.IsActive))
.OrderBy(m => m.Ordering)
.Include(m => m.Season.Currency)
.ToListAsync());
ControlUtils.RenewItemsSource(DeliveryPartList, d.FilteredParts.OrderBy(p => p.DPNr).ToList(), DeliveryPartList_SelectionChanged, ControlUtils.RenewSourceDefault.First);
} else {
ControlUtils.RenewItemsSource(ModifiersInput, await ctx.Modifiers
- .Where(m => m.Year == SeasonInput.Value)
+ .Where(m => m.Year == SeasonInput.Value && (!IsCreating || m.IsActive))
.OrderBy(m => m.Ordering)
.Include(m => m.Season.Currency)
.ToListAsync());
@@ -1555,6 +1555,11 @@ namespace Elwig.Windows {
var attrList = await ctx.WineAttributes.Where(a => a.IsActive).OrderBy(a => a.Name).Cast