Add configurable finance rules and dashboard basis indicators

This commit is contained in:
2026-05-20 13:10:33 +02:00
parent 5e305ae396
commit d66074b740
23 changed files with 1028 additions and 204 deletions
@@ -19,6 +19,7 @@ public class DatabaseSeedService : IDatabaseSeedService
EnsureFinanceReferenceDefaults(db);
EnsureBudgetExchangeRateDefaults(db);
EnsureFinanceIntercompanyRuleDefaults(db);
EnsureFinanceRuleDefaults(db);
}
private static void SeedIfEmpty(AppDbContext db)
@@ -893,4 +894,39 @@ public class DatabaseSeedService : IDatabaseSeedService
if (changed)
db.SaveChanges();
}
private static void EnsureFinanceRuleDefaults(AppDbContext db)
{
if (!CanUseTable(db, "FinanceRules"))
return;
var changed = false;
foreach (var item in FinanceRuleEngine.CreateDefaultRules())
{
var exists = db.FinanceRules.Any(rule =>
rule.ScopeKey == item.ScopeKey &&
rule.RuleType == item.RuleType &&
rule.FieldName == item.FieldName &&
rule.MatchType == item.MatchType &&
rule.MatchValue == item.MatchValue);
if (exists)
continue;
db.FinanceRules.Add(item);
changed = true;
}
if (changed)
db.SaveChanges();
}
private static bool CanUseTable(AppDbContext db, string tableName)
{
var conn = db.Database.GetDbConnection();
if (conn.State != System.Data.ConnectionState.Open)
conn.Open();
return DatabaseSchemaTools.GetTableColumns(conn, transaction: null, tableName).Count > 0;
}
}