[#34] Billing: Collapse data more compactly
This commit is contained in:
@ -287,27 +287,41 @@ namespace Elwig.Helpers.Billing {
|
|||||||
|
|
||||||
var attributes = data
|
var attributes = data
|
||||||
.Select(e => e.Key)
|
.Select(e => e.Key)
|
||||||
.Where(k => !k.StartsWith('/') && k.Contains('/'))
|
.Where(k => k.Length > 3 && k.Contains('/'))
|
||||||
.Select(k => k.Split('/')[1])
|
.Select(k => k.Split('/')[1])
|
||||||
.Distinct()
|
.Distinct()
|
||||||
.ToList();
|
.ToList();
|
||||||
foreach (var idx in attributes) {
|
foreach (var idx in attributes) {
|
||||||
var len = vaributes.Count(e => e.AttrId == idx);
|
var len = vaributes.Count(e => $"{e.AttrId}{(e.CultId != null && e.CultId != "" ? "-" : "")}{e.CultId}" == idx);
|
||||||
foreach (var (v, ks) in rev1) {
|
foreach (var (v, ks) in rev1) {
|
||||||
var myKs = ks.Where(k => k.EndsWith($"/{idx}")).ToList();
|
var myKs = ks.Where(k => k.EndsWith($"/{idx}")).ToList();
|
||||||
if (myKs.Count > 1 && ((myKs.Count >= len * 0.5 && useDefault) || myKs.Count == len)) {
|
if (myKs.Count > 1 && ((myKs.Count >= len * 0.5 && useDefault) || myKs.Count == len)) {
|
||||||
foreach (var k in myKs) data.Remove(k);
|
foreach (var k in myKs) data.Remove(k);
|
||||||
data[(idx.StartsWith('-') ? "" : "/") + idx] = v;
|
data[(idx.StartsWith('-') && !useDefault ? "" : "/") + idx] = v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (var (v, ks) in rev2) {
|
foreach (var (v, ks) in rev2) {
|
||||||
var myKs = ks.Where(k => k.EndsWith($"/{idx}")).ToList();
|
var myKs = ks.Where(k => k.EndsWith($"/{idx}")).ToList();
|
||||||
if (myKs.Count > 1 && ((myKs.Count >= len * 0.5 && useDefault) || myKs.Count == len)) {
|
if (myKs.Count > 1 && ((myKs.Count >= len * 0.5 && useDefault) || myKs.Count == len)) {
|
||||||
foreach (var k in myKs) data.Remove(k);
|
foreach (var k in myKs) data.Remove(k);
|
||||||
data[(idx.StartsWith('-') ? "" : "/") + idx] = v;
|
data[(idx.StartsWith('-') && !useDefault ? "" : "/") + idx] = v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!useDefault)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var keys = data.Select(p => p.Key).ToList();
|
||||||
|
foreach (var k in keys) {
|
||||||
|
if (k.Length == 3 && k.EndsWith('/') && !keys.Contains(k[..2])) {
|
||||||
|
data.Remove(k, out var val);
|
||||||
|
data.Add(k[..2], val);
|
||||||
|
} else if (k.Contains("/-")) {
|
||||||
|
data.Remove(k, out var val);
|
||||||
|
data.Add(k.Replace("/-", "-"), val);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static JsonObject FromGraphEntries(
|
public static JsonObject FromGraphEntries(
|
||||||
|
@ -76,7 +76,7 @@ GROUP BY b.year, b.mgnr, b.sortid
|
|||||||
ORDER BY year, mgnr, bucket;
|
ORDER BY year, mgnr, bucket;
|
||||||
|
|
||||||
PRAGMA schema_version = 1701;
|
PRAGMA schema_version = 1701;
|
||||||
PRAGMA writable_schame = OFF;
|
PRAGMA writable_schema = OFF;
|
||||||
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
@ -89,4 +89,4 @@ DELETE FROM area_commitment_type WHERE attrid = 'B';
|
|||||||
UPDATE delivery_part SET cultid = 'B', attrid = NULL WHERE attrid = 'B';
|
UPDATE delivery_part SET cultid = 'B', attrid = NULL WHERE attrid = 'B';
|
||||||
DELETE FROM wine_attribute WHERE attrid = 'B';
|
DELETE FROM wine_attribute WHERE attrid = 'B';
|
||||||
|
|
||||||
UPDATE payment_variant SET data = REPLACE(REPLACE(data, '/B', '/-B'), '"/-B"', '"-B"');
|
UPDATE payment_variant SET data = REPLACE(REPLACE(REPLACE(data, '/B', '-B'), '/"', '"'), '/-', '-');
|
||||||
|
@ -126,7 +126,7 @@ namespace Elwig.Windows {
|
|||||||
Vaributes = Utils.GetVaributeList(Context, Year);
|
Vaributes = Utils.GetVaributeList(Context, Year);
|
||||||
GraphEntries.ForEach(e => {
|
GraphEntries.ForEach(e => {
|
||||||
e.Vaributes.ForEach(v => {
|
e.Vaributes.ForEach(v => {
|
||||||
var found = Vaributes.Find(a => a.Attribute?.AttrId == v.Attribute?.AttrId && a.Variety?.SortId == v.Variety?.SortId);
|
var found = Vaributes.Find(a => a.Variety?.SortId == v.Variety?.SortId && a.Attribute?.AttrId == v.Attribute?.AttrId && a.Cultivation?.CultId == v.Cultivation?.CultId);
|
||||||
if (found == null) return;
|
if (found == null) return;
|
||||||
if (e.Abgewertet) {
|
if (e.Abgewertet) {
|
||||||
found.AssignedAbgewGraphId = e.Id;
|
found.AssignedAbgewGraphId = e.Id;
|
||||||
|
@ -490,8 +490,8 @@ namespace Tests.HelperTests {
|
|||||||
"mode": "elwig",
|
"mode": "elwig",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"payment": {
|
"payment": {
|
||||||
"WR/": 0.75,
|
"default": "curve:1",
|
||||||
"default": "curve:1"
|
"WR": 0.75
|
||||||
},
|
},
|
||||||
"curves": [
|
"curves": [
|
||||||
{
|
{
|
||||||
@ -528,10 +528,10 @@ namespace Tests.HelperTests {
|
|||||||
"mode": "elwig",
|
"mode": "elwig",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"payment": {
|
"payment": {
|
||||||
"BP/": "curve:2",
|
|
||||||
"SA/": "curve:2",
|
|
||||||
"default": 0.75,
|
"default": 0.75,
|
||||||
"/K": "curve:1"
|
"/K": "curve:1",
|
||||||
|
"BP": "curve:2",
|
||||||
|
"SA": "curve:2"
|
||||||
},
|
},
|
||||||
"curves": [
|
"curves": [
|
||||||
{
|
{
|
||||||
@ -576,9 +576,9 @@ namespace Tests.HelperTests {
|
|||||||
"mode": "elwig",
|
"mode": "elwig",
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"payment": {
|
"payment": {
|
||||||
"BP/": "curve:2",
|
|
||||||
"SA/": "curve:2",
|
|
||||||
"default": 0.75,
|
"default": 0.75,
|
||||||
|
"BP": "curve:2",
|
||||||
|
"SA": "curve:2",
|
||||||
"-B": "curve:1"
|
"-B": "curve:1"
|
||||||
},
|
},
|
||||||
"curves": [
|
"curves": [
|
||||||
@ -627,8 +627,8 @@ namespace Tests.HelperTests {
|
|||||||
"payment": {
|
"payment": {
|
||||||
"default": 0.75,
|
"default": 0.75,
|
||||||
"/S": 0.3,
|
"/S": 0.3,
|
||||||
"-B": 0.2,
|
"/S-B": 0.4,
|
||||||
"/S-B": 0.4
|
"-B": 0.2
|
||||||
},
|
},
|
||||||
"curves": []
|
"curves": []
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user