Compare commits
	
		
			3 Commits
		
	
	
		
			v1.0.1.3
			...
			10cb23db9e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 10cb23db9e | |||
| a417d0f2a2 | |||
| b184d5661b | 
| @@ -28,13 +28,13 @@ | |||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.8" /> |     <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="9.0.8" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.8" /> |     <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.8" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="9.0.8" /> |     <PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="9.0.8" /> | ||||||
|     <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3351.48" /> |     <PackageReference Include="Microsoft.Web.WebView2" Version="1.0.3405.78" /> | ||||||
|     <PackageReference Include="NJsonSchema" Version="11.4.0" /> |     <PackageReference Include="NJsonSchema" Version="11.4.0" /> | ||||||
|     <PackageReference Include="PdfiumViewer" Version="2.13.0" /> |     <PackageReference Include="PdfiumViewer" Version="2.13.0" /> | ||||||
|     <PackageReference Include="PdfiumViewer.Native.x86_64.no_v8-no_xfa" Version="2018.4.8.256" /> |     <PackageReference Include="PdfiumViewer.Native.x86_64.no_v8-no_xfa" Version="2018.4.8.256" /> | ||||||
|     <PackageReference Include="RazorLight" Version="2.3.1" /> |     <PackageReference Include="RazorLight" Version="2.3.1" /> | ||||||
|     <PackageReference Include="ScottPlot.WPF" Version="5.0.55" /> |     <PackageReference Include="ScottPlot.WPF" Version="5.0.55" /> | ||||||
|     <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.0" /> |     <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="3.0.1" /> | ||||||
|     <PackageReference Include="System.IO.Hashing" Version="9.0.8" /> |     <PackageReference Include="System.IO.Hashing" Version="9.0.8" /> | ||||||
|     <PackageReference Include="System.IO.Ports" Version="9.0.8" /> |     <PackageReference Include="System.IO.Ports" Version="9.0.8" /> | ||||||
|     <PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.8" /> |     <PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.8" /> | ||||||
|   | |||||||
| @@ -41,6 +41,7 @@ namespace Elwig.Helpers.Export { | |||||||
|                 Dictionary<string, int> currentLsNrs; |                 Dictionary<string, int> currentLsNrs; | ||||||
|                 Dictionary<int, List<WbRd>> currentWbRde; |                 Dictionary<int, List<WbRd>> currentWbRde; | ||||||
|                 Dictionary<int, AT_Kg> kgs; |                 Dictionary<int, AT_Kg> kgs; | ||||||
|  |                 List<WbGl> currentWbGls; | ||||||
|  |  | ||||||
|                 using (var ctx = new AppDbContext()) { |                 using (var ctx = new AppDbContext()) { | ||||||
|                     branches = await ctx.Branches.ToDictionaryAsync(b => b.ZwstId); |                     branches = await ctx.Branches.ToDictionaryAsync(b => b.ZwstId); | ||||||
| @@ -52,6 +53,7 @@ namespace Elwig.Helpers.Export { | |||||||
|                     currentWbRde = await ctx.WbRde |                     currentWbRde = await ctx.WbRde | ||||||
|                         .GroupBy(r => r.KgNr) |                         .GroupBy(r => r.KgNr) | ||||||
|                         .ToDictionaryAsync(g => g.Key, g => g.ToList()); |                         .ToDictionaryAsync(g => g.Key, g => g.ToList()); | ||||||
|  |                     currentWbGls = await ctx.WbGls.ToListAsync(); | ||||||
|                     kgs = await ctx.Katastralgemeinden.Include(k => k.WbKg).ToDictionaryAsync(k => k.KgNr); |                     kgs = await ctx.Katastralgemeinden.Include(k => k.WbKg).ToDictionaryAsync(k => k.KgNr); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
| @@ -62,6 +64,8 @@ namespace Elwig.Helpers.Export { | |||||||
|                     List<MemberEmailAddr> EmailAddresses, |                     List<MemberEmailAddr> EmailAddresses, | ||||||
|                     List<AreaCom> AreaCommitments, |                     List<AreaCom> AreaCommitments, | ||||||
|                     List<WbRd> Riede, |                     List<WbRd> Riede, | ||||||
|  |                     List<WbKg> WbKgs, | ||||||
|  |                     List<WbGl> WbGls, | ||||||
|                     List<Delivery> Deliveries, |                     List<Delivery> Deliveries, | ||||||
|                     List<DeliveryPart> DeliveryParts, |                     List<DeliveryPart> DeliveryParts, | ||||||
|                     List<DeliveryPartModifier> Modifiers, |                     List<DeliveryPartModifier> Modifiers, | ||||||
| @@ -97,13 +101,28 @@ namespace Elwig.Helpers.Export { | |||||||
|                         areaComCount, areaComFilters != null ? string.Join(" / ", areaComFilters) : null, |                         areaComCount, areaComFilters != null ? string.Join(" / ", areaComFilters) : null, | ||||||
|                         deliveryCount, deliveryFilters != null ? string.Join(" / ", deliveryFilters) : null)); |                         deliveryCount, deliveryFilters != null ? string.Join(" / ", deliveryFilters) : null)); | ||||||
|  |  | ||||||
|                     data.Add(new([], [], [], [], [], [], [], new([], [], new() { |                     data.Add(new([], [], [], [], [], [], [], new([], [], [], [], new() { | ||||||
|                         ["member"] = [], |                         ["member"] = [], | ||||||
|                         ["area_commitment"] = [], |                         ["area_commitment"] = [], | ||||||
|                         ["delivery"] = [], |                         ["delivery"] = [], | ||||||
|                     }))); |                     }))); | ||||||
|                     var r = data[^1]; |                     var r = data[^1]; | ||||||
|  |  | ||||||
|  |                     var wbKgsJson = zip.GetEntry("wb_kgs.json"); | ||||||
|  |                     if (wbKgsJson != null) { | ||||||
|  |                         using var reader = new StreamReader(wbKgsJson.Open(), Utils.UTF8); | ||||||
|  |                         string? line; | ||||||
|  |                         while ((line = await reader.ReadLineAsync()) != null) { | ||||||
|  |                             var obj = JsonNode.Parse(line)!.AsObject(); | ||||||
|  |                             var (k, g) = obj.ToWbKg(currentWbGls); | ||||||
|  |                             r.WbKgs.Add(k); | ||||||
|  |                             if (g != null) { | ||||||
|  |                                 currentWbGls[g.GlNr] = g; | ||||||
|  |                                 r.WbGls.Add(g); | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |  | ||||||
|                     var membersJson = zip.GetEntry("members.json"); |                     var membersJson = zip.GetEntry("members.json"); | ||||||
|                     if (membersJson != null) { |                     if (membersJson != null) { | ||||||
|                         using var reader = new StreamReader(membersJson.Open(), Utils.UTF8); |                         using var reader = new StreamReader(membersJson.Open(), Utils.UTF8); | ||||||
| @@ -126,10 +145,9 @@ namespace Elwig.Helpers.Export { | |||||||
|                         string? line; |                         string? line; | ||||||
|                         while ((line = await reader.ReadLineAsync()) != null) { |                         while ((line = await reader.ReadLineAsync()) != null) { | ||||||
|                             var obj = JsonNode.Parse(line)!.AsObject(); |                             var obj = JsonNode.Parse(line)!.AsObject(); | ||||||
|                             var (areaCom, wbrd, timestamps) = obj.ToAreaCom(kgs, currentWbRde); |                             var (areaCom, wbrd, timestamps) = obj.ToAreaCom(currentWbRde); | ||||||
|                             r.AreaCommitments.Add(areaCom); |                             r.AreaCommitments.Add(areaCom); | ||||||
|                             if (wbrd != null) { |                             if (wbrd != null) { | ||||||
|                                 currentWbRde[wbrd.KgNr].Add(wbrd); |  | ||||||
|                                 r.Riede.Add(wbrd); |                                 r.Riede.Add(wbrd); | ||||||
|                             } |                             } | ||||||
|                             if (timestamps.HasValue) |                             if (timestamps.HasValue) | ||||||
| @@ -143,10 +161,11 @@ namespace Elwig.Helpers.Export { | |||||||
|                         string? line; |                         string? line; | ||||||
|                         while ((line = await reader.ReadLineAsync()) != null) { |                         while ((line = await reader.ReadLineAsync()) != null) { | ||||||
|                             var obj = JsonNode.Parse(line)!.AsObject(); |                             var obj = JsonNode.Parse(line)!.AsObject(); | ||||||
|                             var (d, parts, mods, timestamps) = obj.ToDelivery(currentLsNrs, currentDids); |                             var (d, parts, mods, rde, timestamps) = obj.ToDelivery(currentLsNrs, currentDids, kgs, currentWbRde); | ||||||
|                             r.Deliveries.Add(d); |                             r.Deliveries.Add(d); | ||||||
|                             r.DeliveryParts.AddRange(parts); |                             r.DeliveryParts.AddRange(parts); | ||||||
|                             r.Modifiers.AddRange(mods); |                             r.Modifiers.AddRange(mods); | ||||||
|  |                             r.Riede.AddRange(rde); | ||||||
|                             if (timestamps.HasValue) |                             if (timestamps.HasValue) | ||||||
|                                 r.Timestamps["delivery"].Add((d.Year, d.DId, timestamps.Value.CreatedAt, timestamps.Value.ModifiedAt)); |                                 r.Timestamps["delivery"].Add((d.Year, d.DId, timestamps.Value.CreatedAt, timestamps.Value.ModifiedAt)); | ||||||
|                         } |                         } | ||||||
| @@ -157,12 +176,18 @@ namespace Elwig.Helpers.Export { | |||||||
|                 var importedAreaComs = new List<(string FileName, string ZwstId, string Device, int Imported, int NotImported, string Filters)>(); |                 var importedAreaComs = new List<(string FileName, string ZwstId, string Device, int Imported, int NotImported, string Filters)>(); | ||||||
|                 var importedDeliveries = new List<(string FileName, string ZwstId, string Device, int New, int Overwritten, int NotImported, string Filters)>(); |                 var importedDeliveries = new List<(string FileName, string ZwstId, string Device, int New, int Overwritten, int NotImported, string Filters)>(); | ||||||
|  |  | ||||||
|                 foreach (var ((members, billingAddresses, telephoneNumbers, emailAddresses, areaCommitments, riede, deliveries, deliveryParts, modifiers, timestamps), meta) in data.Zip(metaData)) { |                 foreach (var ((members, billingAddresses, telephoneNumbers, emailAddresses, areaCommitments, riede, wbKgs, wbGls, deliveries, deliveryParts, modifiers, timestamps), meta) in data.Zip(metaData)) { | ||||||
|                     var branch = branches[meta.ZwstId]; |                     var branch = branches[meta.ZwstId]; | ||||||
|                     var device = meta.Device; |                     var device = meta.Device; | ||||||
|  |  | ||||||
|                     using var ctx = new AppDbContext(); |                     using var ctx = new AppDbContext(); | ||||||
|  |  | ||||||
|  |                     var kgnrs = wbKgs.Select(k => k.KgNr).ToList(); | ||||||
|  |                     var duplicateKgNrs = await ctx.WbKgs | ||||||
|  |                         .Where(k => kgnrs.Contains(k.KgNr)) | ||||||
|  |                         .Select(k => k.KgNr) | ||||||
|  |                         .ToListAsync(); | ||||||
|  |  | ||||||
|                     var mgnrs = members.Select(m => m.MgNr).ToList(); |                     var mgnrs = members.Select(m => m.MgNr).ToList(); | ||||||
|                     var duplicateMgNrs = await ctx.Members |                     var duplicateMgNrs = await ctx.Members | ||||||
|                         .Where(m => mgnrs.Contains(m.MgNr)) |                         .Where(m => mgnrs.Contains(m.MgNr)) | ||||||
| @@ -216,6 +241,12 @@ namespace Elwig.Helpers.Export { | |||||||
|                             importDuplicateDeliveries = ImportQuestion(branch.Name, device, "Lieferungen", true, duplicateLsNrs.Count); |                             importDuplicateDeliveries = ImportQuestion(branch.Name, device, "Lieferungen", true, duplicateLsNrs.Count); | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|  |                     if (importDuplicateMembers || importNewMembers || importDuplicateDeliveries || importNewDeliveries) { | ||||||
|  |                         ctx.AddRange(wbGls); | ||||||
|  |                         ctx.UpdateRange(wbKgs.Where(k => duplicateKgNrs.Contains(k.KgNr))); | ||||||
|  |                         ctx.AddRange(wbKgs.Where(k => !duplicateKgNrs.Contains(k.KgNr))); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|                     if (importDuplicateMembers) { |                     if (importDuplicateMembers) { | ||||||
|                         ctx.RemoveRange(ctx.BillingAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr))); |                         ctx.RemoveRange(ctx.BillingAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr))); | ||||||
|                         ctx.RemoveRange(ctx.MemberTelephoneNrs.Where(n => duplicateMgNrs.Contains(n.MgNr))); |                         ctx.RemoveRange(ctx.MemberTelephoneNrs.Where(n => duplicateMgNrs.Contains(n.MgNr))); | ||||||
| @@ -352,22 +383,25 @@ namespace Elwig.Helpers.Export { | |||||||
|             ) == MessageBoxResult.Yes; |             ) == MessageBoxResult.Yes; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public static Task Export(string filename, IEnumerable<Member> members, IEnumerable<string> filters) { |         public static Task Export(string filename, IEnumerable<Member> members, IEnumerable<WbKg> wbKgs, IEnumerable<string> filters) { | ||||||
|             return new ElwigExport { |             return new ElwigExport { | ||||||
|                 Members = (members, filters) |                 Members = (members, filters), | ||||||
|  |                 WbKgs = (wbKgs, ["von exportierten Mitgliedern"]), | ||||||
|             }.Export(filename); |             }.Export(filename); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public static Task Export(string filename, IEnumerable<Member> members, IEnumerable<AreaCom> areaComs, IEnumerable<string> filters) { |         public static Task Export(string filename, IEnumerable<Member> members, IEnumerable<AreaCom> areaComs, IEnumerable<WbKg> wbKgs, IEnumerable<string> filters) { | ||||||
|             return new ElwigExport { |             return new ElwigExport { | ||||||
|                 Members = (members, filters), |                 Members = (members, filters), | ||||||
|                 AreaComs = (areaComs, ["von exportierten Mitgliedern"]), |                 AreaComs = (areaComs, ["von exportierten Mitgliedern"]), | ||||||
|  |                 WbKgs = (wbKgs, ["von exportierten Mitgliedern und Flächenbindungen"]), | ||||||
|             }.Export(filename); |             }.Export(filename); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public static Task Export(string filename, IEnumerable<Delivery> deliveries, IEnumerable<string> filters) { |         public static Task Export(string filename, IEnumerable<Delivery> deliveries, IEnumerable<WbKg> wbKgs, IEnumerable<string> filters) { | ||||||
|             return new ElwigExport { |             return new ElwigExport { | ||||||
|                 Deliveries = (deliveries, filters) |                 Deliveries = (deliveries, filters), | ||||||
|  |                 WbKgs = (wbKgs, ["von exportierten Lieferungen"]), | ||||||
|             }.Export(filename); |             }.Export(filename); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -395,6 +429,7 @@ namespace Elwig.Helpers.Export { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         public class ElwigExport { |         public class ElwigExport { | ||||||
|  |             public (IEnumerable<WbKg> WbKgs, IEnumerable<string> Filters)? WbKgs { get; set; } | ||||||
|             public (IEnumerable<Member> Members, IEnumerable<string> Filters)? Members { get; set; } |             public (IEnumerable<Member> Members, IEnumerable<string> Filters)? Members { get; set; } | ||||||
|             public (IEnumerable<AreaCom> AreaComs, IEnumerable<string> Filters)? AreaComs { get; set; } |             public (IEnumerable<AreaCom> AreaComs, IEnumerable<string> Filters)? AreaComs { get; set; } | ||||||
|             public (IEnumerable<Delivery> Deliveries, IEnumerable<string> Filters)? Deliveries { get; set; } |             public (IEnumerable<Delivery> Deliveries, IEnumerable<string> Filters)? Deliveries { get; set; } | ||||||
| @@ -415,6 +450,12 @@ namespace Elwig.Helpers.Export { | |||||||
|                         ["zwstid"] = App.ZwstId, |                         ["zwstid"] = App.ZwstId, | ||||||
|                         ["device"] = Environment.MachineName, |                         ["device"] = Environment.MachineName, | ||||||
|                     }; |                     }; | ||||||
|  |                     if (WbKgs != null) { | ||||||
|  |                         obj["wb_kgs"] = new JsonObject { | ||||||
|  |                             ["count"] = WbKgs.Value.WbKgs.Count(), | ||||||
|  |                             ["filters"] = new JsonArray(WbKgs.Value.Filters.Select(f => (JsonNode)f).ToArray()), | ||||||
|  |                         }; | ||||||
|  |                     } | ||||||
|                     if (Members != null) |                     if (Members != null) | ||||||
|                         obj["members"] = new JsonObject { |                         obj["members"] = new JsonObject { | ||||||
|                             ["count"] = Members.Value.Members.Count(), |                             ["count"] = Members.Value.Members.Count(), | ||||||
| @@ -435,6 +476,13 @@ namespace Elwig.Helpers.Export { | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 // TODO encrypt files |                 // TODO encrypt files | ||||||
|  |                 if (WbKgs != null) { | ||||||
|  |                     var json = zip.CreateEntry("wb_kgs.json", CompressionLevel.SmallestSize); | ||||||
|  |                     using var writer = new StreamWriter(json.Open(), Utils.UTF8); | ||||||
|  |                     foreach (var k in WbKgs.Value.WbKgs) { | ||||||
|  |                         await writer.WriteLineAsync(k.ToJson().ToJsonString(JsonOpts)); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|                 if (Members != null) { |                 if (Members != null) { | ||||||
|                     var json = zip.CreateEntry("members.json", CompressionLevel.SmallestSize); |                     var json = zip.CreateEntry("members.json", CompressionLevel.SmallestSize); | ||||||
|                     using var writer = new StreamWriter(json.Open(), Utils.UTF8); |                     using var writer = new StreamWriter(json.Open(), Utils.UTF8); | ||||||
| @@ -459,6 +507,34 @@ namespace Elwig.Helpers.Export { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         public static JsonObject ToJson(this WbKg k) { | ||||||
|  |             return new JsonObject { | ||||||
|  |                 ["kgnr"] = k.KgNr, | ||||||
|  |                 ["großlage"] = k.Gl?.Name, | ||||||
|  |             }; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public static (WbKg, WbGl?) ToWbKg(this JsonNode json, List<WbGl> gls) { | ||||||
|  |             var grosslage = json["großlage"]?.AsValue().GetValue<string>(); | ||||||
|  |             WbGl? gl = null; | ||||||
|  |             bool newGl = false; | ||||||
|  |             if (grosslage != null) { | ||||||
|  |                 gl = gls.FirstOrDefault(g => g.Name == grosslage); | ||||||
|  |                 if (gl == null) { | ||||||
|  |                     newGl = true; | ||||||
|  |                     gl = new WbGl { | ||||||
|  |                         GlNr = (gls.Count == 0 ? 1 : gls.Max(g => g.GlNr)) + 1, | ||||||
|  |                         Name = grosslage, | ||||||
|  |                     }; | ||||||
|  |                     gls[gl.GlNr] = gl; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             return (new WbKg { | ||||||
|  |                 KgNr = json["kgnr"]!.AsValue().GetValue<int>(), | ||||||
|  |                 GlNr = gl?.GlNr, | ||||||
|  |             }, newGl ? gl : null); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         public static JsonObject ToJson(this Member m) { |         public static JsonObject ToJson(this Member m) { | ||||||
|             return new JsonObject { |             return new JsonObject { | ||||||
|                 ["mgnr"] = m.MgNr, |                 ["mgnr"] = m.MgNr, | ||||||
| @@ -604,23 +680,23 @@ namespace Elwig.Helpers.Export { | |||||||
|             }; |             }; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public static (AreaCom, WbRd?, (DateTime CreatedAt, DateTime ModifiedAt)?) ToAreaCom(this JsonNode json, Dictionary<int, AT_Kg> kgs, Dictionary<int, List<WbRd>> riede) { |         public static (AreaCom, WbRd?, (DateTime CreatedAt, DateTime ModifiedAt)?) ToAreaCom(this JsonNode json, Dictionary<int, List<WbRd>> riede) { | ||||||
|             var kgnr = json["kgnr"]!.AsValue().GetValue<int>(); |             var kgnr = json["kgnr"]!.AsValue().GetValue<int>(); | ||||||
|             var ried = json["ried"]?.AsValue().GetValue<string>(); |             var ried = json["ried"]?.AsValue().GetValue<string>(); | ||||||
|             WbRd? rd = null; |             WbRd? rd = null; | ||||||
|             bool newRd = false; |             bool newRd = false; | ||||||
|             if (ried != null) { |             if (ried != null) { | ||||||
|                 if (!riede.TryGetValue(kgnr, out var rde)) |                 var rde = riede.GetValueOrDefault(kgnr, []); | ||||||
|                     throw new ArgumentException($"Für KG {(kgs.TryGetValue(kgnr, out var k) ? k.Name : "?")} ({kgnr:00000}) ist noch keine Großlage festgelegt!\n(Stammdaten → Herkunftshierarchie)"); |  | ||||||
|                 rd = rde.FirstOrDefault(r => r.Name == ried); |                 rd = rde.FirstOrDefault(r => r.Name == ried); | ||||||
|                 if (rd == null) { |                 if (rd == null) { | ||||||
|                     newRd = true; |                     newRd = true; | ||||||
|                     rd = new WbRd { |                     rd = new WbRd { | ||||||
|                         KgNr = kgnr, |                         KgNr = kgnr, | ||||||
|                         RdNr = (rde.Count == 0 ? 0 : rde.Max(r => r.RdNr)) + 1, |                         RdNr = (rde.Count == 0 ? 1 : rde.Max(r => r.RdNr)) + 1, | ||||||
|                         Name = ried, |                         Name = ried, | ||||||
|                     }; |                     }; | ||||||
|                     rde.Add(rd); |                     rde.Add(rd); | ||||||
|  |                     riede[rd.KgNr] = rde; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             var createdAt = json["created_at"]?.AsValue().GetValue<string>(); |             var createdAt = json["created_at"]?.AsValue().GetValue<string>(); | ||||||
| @@ -633,7 +709,7 @@ namespace Elwig.Helpers.Export { | |||||||
|                 Area = json["area"]!.AsValue().GetValue<int>(), |                 Area = json["area"]!.AsValue().GetValue<int>(), | ||||||
|                 KgNr = kgnr, |                 KgNr = kgnr, | ||||||
|                 GstNr = json["gstnr"]?.AsValue().GetValue<string>() ?? "-", |                 GstNr = json["gstnr"]?.AsValue().GetValue<string>() ?? "-", | ||||||
|                 RdNr = rd?.RdNr, |                 RdNr = rd?.RdNr ?? json["rdnr"]?.AsValue().GetValue<int>(), | ||||||
|                 YearFrom = json["year_from"]?.AsValue().GetValue<int>(), |                 YearFrom = json["year_from"]?.AsValue().GetValue<int>(), | ||||||
|                 YearTo = json["year_to"]?.AsValue().GetValue<int>(), |                 YearTo = json["year_to"]?.AsValue().GetValue<int>(), | ||||||
|                 Comment = json["comment"]?.AsValue().GetValue<string>(), |                 Comment = json["comment"]?.AsValue().GetValue<string>(), | ||||||
| @@ -664,7 +740,7 @@ namespace Elwig.Helpers.Export { | |||||||
|                         ["qualid"] = p.QualId, |                         ["qualid"] = p.QualId, | ||||||
|                         ["hkid"] = p.HkId, |                         ["hkid"] = p.HkId, | ||||||
|                         ["kgnr"] = p.KgNr, |                         ["kgnr"] = p.KgNr, | ||||||
|                         ["rdnr"] = p.RdNr, |                         ["ried"] = p.Rd?.Name, | ||||||
|                         ["net_weight"] = p.IsNetWeight, |                         ["net_weight"] = p.IsNetWeight, | ||||||
|                         ["manual_weighing"] = p.IsManualWeighing, |                         ["manual_weighing"] = p.IsManualWeighing, | ||||||
|                         ["modids"] = new JsonArray(p.Modifiers.Select(m => (JsonNode)m.ModId).ToArray()), |                         ["modids"] = new JsonArray(p.Modifiers.Select(m => (JsonNode)m.ModId).ToArray()), | ||||||
| @@ -689,7 +765,7 @@ namespace Elwig.Helpers.Export { | |||||||
|             }; |             }; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public static (Delivery, List<DeliveryPart>, List<DeliveryPartModifier>, (DateTime CreatedAt, DateTime ModifiedAt)?) ToDelivery(this JsonNode json, Dictionary<string, int> currentLsNrs, Dictionary<int, int> currentDids) { |         public static (Delivery, List<DeliveryPart>, List<DeliveryPartModifier>, List<WbRd>, (DateTime CreatedAt, DateTime ModifiedAt)?) ToDelivery(this JsonNode json, Dictionary<string, int> currentLsNrs, Dictionary<int, int> currentDids, Dictionary<int, AT_Kg> kgs, Dictionary<int, List<WbRd>> riede) { | ||||||
|             var year = json["year"]!.AsValue().GetValue<int>(); |             var year = json["year"]!.AsValue().GetValue<int>(); | ||||||
|             var lsnr = json["lsnr"]!.AsValue().GetValue<string>(); |             var lsnr = json["lsnr"]!.AsValue().GetValue<string>(); | ||||||
|             var did = currentLsNrs.GetValueOrDefault(lsnr, -1); |             var did = currentLsNrs.GetValueOrDefault(lsnr, -1); | ||||||
| @@ -700,6 +776,7 @@ namespace Elwig.Helpers.Export { | |||||||
|             currentLsNrs[lsnr] = did; |             currentLsNrs[lsnr] = did; | ||||||
|             var createdAt = json["created_at"]?.AsValue().GetValue<string>(); |             var createdAt = json["created_at"]?.AsValue().GetValue<string>(); | ||||||
|             var modifiedAt = json["modified_at"]?.AsValue().GetValue<string>(); |             var modifiedAt = json["modified_at"]?.AsValue().GetValue<string>(); | ||||||
|  |             var wbRde = new List<WbRd>(); | ||||||
|             return (new Delivery { |             return (new Delivery { | ||||||
|                 Year = year, |                 Year = year, | ||||||
|                 DId = did, |                 DId = did, | ||||||
| @@ -711,37 +788,57 @@ namespace Elwig.Helpers.Export { | |||||||
|                 MgNr = json["mgnr"]!.AsValue().GetValue<int>(), |                 MgNr = json["mgnr"]!.AsValue().GetValue<int>(), | ||||||
|                 Comment = json["comment"]?.AsValue().GetValue<string>(), |                 Comment = json["comment"]?.AsValue().GetValue<string>(), | ||||||
|                 ImportedAt = DateTime.Now, |                 ImportedAt = DateTime.Now, | ||||||
|             }, json["parts"]!.AsArray().Select(p => p!.AsObject()).Select(p => new DeliveryPart { |             }, json["parts"]!.AsArray().Select(p => p!.AsObject()).Select(p => { | ||||||
|                 Year = year, |                 var kgnr = p["kgnr"]!.AsValue().GetValue<int>(); | ||||||
|                 DId = did, |                 var ried = p["ried"]?.AsValue().GetValue<string>(); | ||||||
|                 DPNr = p["dpnr"]!.AsValue().GetValue<int>(), |                 WbRd? rd = null; | ||||||
|                 SortId = p["sortid"]!.AsValue().GetValue<string>(), |                 if (ried != null) { | ||||||
|                 AttrId = p["attrid"]?.AsValue().GetValue<string>(), |                     var rde = riede.GetValueOrDefault(kgnr, []); | ||||||
|                 CultId = p["cultid"]?.AsValue().GetValue<string>(), |                     rd = rde.FirstOrDefault(r => r.Name == ried); | ||||||
|                 Weight = p["weight"]!.AsValue().GetValue<int>(), |                     if (rd == null) { | ||||||
|                 Kmw = p["kmw"]!.AsValue().GetValue<double>(), |                         rd = new WbRd { | ||||||
|                 QualId = p["qualid"]!.AsValue().GetValue<string>(), |                             KgNr = kgnr, | ||||||
|                 HkId = p["hkid"]!.AsValue().GetValue<string>(), |                             RdNr = (rde.Count == 0 ? 1 : rde.Max(r => r.RdNr)) + 1, | ||||||
|                 KgNr = p["kgnr"]?.AsValue().GetValue<int>(), |                             Name = ried, | ||||||
|                 RdNr = p["rdnr"]?.AsValue().GetValue<int>(), |                         }; | ||||||
|                 IsNetWeight = p["net_weight"]!.AsValue().GetValue<bool>(), |                         rde.Add(rd); | ||||||
|                 IsManualWeighing = p["manual_weighing"]!.AsValue().GetValue<bool>(), |                         riede[rd.KgNr] = rde; | ||||||
|                 Comment = p["comment"]?.AsValue().GetValue<string>(), |                         wbRde.Add(rd); | ||||||
|                 IsSplCheck = p["spl_check"]?.AsValue().GetValue<bool>() ?? false, |                     } | ||||||
|                 IsHandPicked = p["hand_picked"]?.AsValue().GetValue<bool>(), |                 } | ||||||
|                 IsLesewagen = p["lesewagen"]?.AsValue().GetValue<bool>(), |                 return new DeliveryPart { | ||||||
|                 IsGebunden = p["gebunden"]?.AsValue().GetValue<bool>(), |                     Year = year, | ||||||
|                 Temperature = p["temperature"]?.AsValue().GetValue<double>(), |                     DId = did, | ||||||
|                 Acid = p["acid"]?.AsValue().GetValue<double>(), |                     DPNr = p["dpnr"]!.AsValue().GetValue<int>(), | ||||||
|                 ScaleId = p["scale_id"]?.AsValue().GetValue<string>(), |                     SortId = p["sortid"]!.AsValue().GetValue<string>(), | ||||||
|                 WeighingData = p["weighing_data"]?.AsObject().ToJsonString(JsonOpts), |                     AttrId = p["attrid"]?.AsValue().GetValue<string>(), | ||||||
|                 WeighingReason = p["weighing_reason"]?.AsValue().GetValue<string>(), |                     CultId = p["cultid"]?.AsValue().GetValue<string>(), | ||||||
|  |                     Weight = p["weight"]!.AsValue().GetValue<int>(), | ||||||
|  |                     Kmw = p["kmw"]!.AsValue().GetValue<double>(), | ||||||
|  |                     QualId = p["qualid"]!.AsValue().GetValue<string>(), | ||||||
|  |                     HkId = p["hkid"]!.AsValue().GetValue<string>(), | ||||||
|  |                     KgNr = p["kgnr"]?.AsValue().GetValue<int>(), | ||||||
|  |                     RdNr = rd?.RdNr ?? p["rdnr"]?.AsValue().GetValue<int>(), | ||||||
|  |                     IsNetWeight = p["net_weight"]!.AsValue().GetValue<bool>(), | ||||||
|  |                     IsManualWeighing = p["manual_weighing"]!.AsValue().GetValue<bool>(), | ||||||
|  |                     Comment = p["comment"]?.AsValue().GetValue<string>(), | ||||||
|  |                     IsSplCheck = p["spl_check"]?.AsValue().GetValue<bool>() ?? false, | ||||||
|  |                     IsHandPicked = p["hand_picked"]?.AsValue().GetValue<bool>(), | ||||||
|  |                     IsLesewagen = p["lesewagen"]?.AsValue().GetValue<bool>(), | ||||||
|  |                     IsGebunden = p["gebunden"]?.AsValue().GetValue<bool>(), | ||||||
|  |                     Temperature = p["temperature"]?.AsValue().GetValue<double>(), | ||||||
|  |                     Acid = p["acid"]?.AsValue().GetValue<double>(), | ||||||
|  |                     ScaleId = p["scale_id"]?.AsValue().GetValue<string>(), | ||||||
|  |                     WeighingData = p["weighing_data"]?.AsObject().ToJsonString(JsonOpts), | ||||||
|  |                     WeighingReason = p["weighing_reason"]?.AsValue().GetValue<string>(), | ||||||
|  |                 }; | ||||||
|             }).ToList(), json["parts"]!.AsArray().SelectMany(p => p!["modids"]!.AsArray().Select(m => new DeliveryPartModifier { |             }).ToList(), json["parts"]!.AsArray().SelectMany(p => p!["modids"]!.AsArray().Select(m => new DeliveryPartModifier { | ||||||
|                 Year = year, |                 Year = year, | ||||||
|                 DId = did, |                 DId = did, | ||||||
|                 DPNr = p["dpnr"]!.AsValue().GetValue<int>(), |                 DPNr = p["dpnr"]!.AsValue().GetValue<int>(), | ||||||
|                 ModId = m!.AsValue().GetValue<string>(), |                 ModId = m!.AsValue().GetValue<string>(), | ||||||
|             })).ToList(), |             })).ToList(), | ||||||
|  |             wbRde, | ||||||
|             createdAt == null || modifiedAt == null ? null : |             createdAt == null || modifiedAt == null ? null : | ||||||
|             (DateTime.ParseExact(createdAt, "yyyy-MM-ddTHH:mm:ssK", CultureInfo.InvariantCulture, DateTimeStyles.None), |             (DateTime.ParseExact(createdAt, "yyyy-MM-ddTHH:mm:ssK", CultureInfo.InvariantCulture, DateTimeStyles.None), | ||||||
|              DateTime.ParseExact(modifiedAt, "yyyy-MM-ddTHH:mm:ssK", CultureInfo.InvariantCulture, DateTimeStyles.None))); |              DateTime.ParseExact(modifiedAt, "yyyy-MM-ddTHH:mm:ssK", CultureInfo.InvariantCulture, DateTimeStyles.None))); | ||||||
|   | |||||||
| @@ -6,10 +6,10 @@ namespace Elwig.Models.Entities { | |||||||
|     [Table("wb_gl"), PrimaryKey("GlNr")] |     [Table("wb_gl"), PrimaryKey("GlNr")] | ||||||
|     public class WbGl { |     public class WbGl { | ||||||
|         [Column("glnr")] |         [Column("glnr")] | ||||||
|         public int GlNr { get; private set; } |         public int GlNr { get; set; } | ||||||
|  |  | ||||||
|         [Column("name")] |         [Column("name")] | ||||||
|         public string Name { get; private set; } = null!; |         public string Name { get; set; } = null!; | ||||||
|  |  | ||||||
|         [InverseProperty(nameof(WbKg.Gl))] |         [InverseProperty(nameof(WbKg.Gl))] | ||||||
|         public virtual ICollection<WbKg> Kgs { get; private set; } = null!; |         public virtual ICollection<WbKg> Kgs { get; private set; } = null!; | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ namespace Elwig.Models.Entities { | |||||||
|         public virtual AT_Kg AtKg { get; private set; } = null!; |         public virtual AT_Kg AtKg { get; private set; } = null!; | ||||||
|  |  | ||||||
|         [ForeignKey("GlNr")] |         [ForeignKey("GlNr")] | ||||||
|         public virtual WbGl Gl { get; private set; } = null!; |         public virtual WbGl? Gl { get; private set; } = null!; | ||||||
|  |  | ||||||
|         [InverseProperty(nameof(WbRd.Kg))] |         [InverseProperty(nameof(WbRd.Kg))] | ||||||
|         public virtual ICollection<WbRd> Rds { get; private set; } = null!; |         public virtual ICollection<WbRd> Rds { get; private set; } = null!; | ||||||
|   | |||||||
| @@ -727,13 +727,21 @@ namespace Elwig.Services { | |||||||
|                     Mouse.OverrideCursor = Cursors.Wait; |                     Mouse.OverrideCursor = Cursors.Wait; | ||||||
|                     await Task.Run(async () => { |                     await Task.Run(async () => { | ||||||
|                         try { |                         try { | ||||||
|                             await ElwigData.Export(d.FileName, await query |                             var list = await query | ||||||
|                                 .Select(p => p.Delivery) |                                 .Select(p => p.Delivery) | ||||||
|                                 .Distinct() |                                 .Distinct() | ||||||
|                                 .Include(d => d.Parts) |                                 .Include(d => d.Parts).ThenInclude(p => p.PartModifiers) | ||||||
|                                 .ThenInclude(p => p.PartModifiers) |                                 .Include(d => d.Parts).ThenInclude(p => p.Kg!.Gl) | ||||||
|                                 .AsSplitQuery() |                                 .AsSplitQuery() | ||||||
|                                 .ToListAsync(), filterNames); |                                 .ToListAsync(); | ||||||
|  |                             var wbKgs = list | ||||||
|  |                                 .SelectMany(d => d.Parts) | ||||||
|  |                                 .Where(p => p.Kg != null) | ||||||
|  |                                 .Select(p => p.Kg!) | ||||||
|  |                                 .DistinctBy(k => k.KgNr) | ||||||
|  |                                 .OrderBy(k => k.KgNr) | ||||||
|  |                                 .ToList(); | ||||||
|  |                             await ElwigData.Export(d.FileName, list, wbKgs, filterNames); | ||||||
|                         } catch (Exception exc) { |                         } catch (Exception exc) { | ||||||
|                             MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); |                             MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); | ||||||
|                         } |                         } | ||||||
| @@ -749,15 +757,22 @@ namespace Elwig.Services { | |||||||
|                         var list = await query |                         var list = await query | ||||||
|                             .Select(p => p.Delivery) |                             .Select(p => p.Delivery) | ||||||
|                             .Distinct() |                             .Distinct() | ||||||
|                             .Include(d => d.Parts) |                             .Include(d => d.Parts).ThenInclude(p => p.PartModifiers) | ||||||
|                             .ThenInclude(p => p.PartModifiers) |                             .Include(d => d.Parts).ThenInclude(p => p.Kg!.Gl) | ||||||
|                             .AsSplitQuery() |                             .AsSplitQuery() | ||||||
|                             .ToListAsync(); |                             .ToListAsync(); | ||||||
|  |                         var wbKgs = list | ||||||
|  |                             .SelectMany(d => d.Parts) | ||||||
|  |                             .Where(p => p.Kg != null) | ||||||
|  |                             .Select(p => p.Kg!) | ||||||
|  |                             .DistinctBy(k => k.KgNr) | ||||||
|  |                             .OrderBy(k => k.KgNr) | ||||||
|  |                             .ToList(); | ||||||
|                         if (list.Count == 0) { |                         if (list.Count == 0) { | ||||||
|                             MessageBox.Show("Es wurden keine Lieferungen zum Hochladen ausgewählt!", "Lieferungen hochladen", |                             MessageBox.Show("Es wurden keine Lieferungen zum Hochladen ausgewählt!", "Lieferungen hochladen", | ||||||
|                                 MessageBoxButton.OK, MessageBoxImage.Error); |                                 MessageBoxButton.OK, MessageBoxImage.Error); | ||||||
|                         } else { |                         } else { | ||||||
|                             await ElwigData.Export(path, list, filterNames); |                             await ElwigData.Export(path, list, wbKgs, filterNames); | ||||||
|                             await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword); |                             await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword); | ||||||
|                             MessageBox.Show($"Hochladen von {list.Count:N0} Lieferungen erfolgreich!", "Lieferungen hochgeladen", |                             MessageBox.Show($"Hochladen von {list.Count:N0} Lieferungen erfolgreich!", "Lieferungen hochgeladen", | ||||||
|                                 MessageBoxButton.OK, MessageBoxImage.Information); |                                 MessageBoxButton.OK, MessageBoxImage.Information); | ||||||
|   | |||||||
| @@ -509,13 +509,22 @@ namespace Elwig.Services { | |||||||
|                                 .Include(m => m.BillingAddress) |                                 .Include(m => m.BillingAddress) | ||||||
|                                 .Include(m => m.TelephoneNumbers) |                                 .Include(m => m.TelephoneNumbers) | ||||||
|                                 .Include(m => m.EmailAddresses) |                                 .Include(m => m.EmailAddresses) | ||||||
|  |                                 .Include(m => m.DefaultWbKg!.Gl) | ||||||
|                                 .AsSplitQuery() |                                 .AsSplitQuery() | ||||||
|                                 .ToListAsync(); |                                 .ToListAsync(); | ||||||
|                             var areaComs = await query |                             var areaComs = await query | ||||||
|                                 .SelectMany(m => m.AreaCommitments) |                                 .SelectMany(m => m.AreaCommitments) | ||||||
|                                 .Include(c => c.Rd) |                                 .Include(c => c.Rd) | ||||||
|  |                                 .Include(c => c.Kg.Gl) | ||||||
|                                 .ToListAsync(); |                                 .ToListAsync(); | ||||||
|                             await ElwigData.Export(d.FileName, members, areaComs, filterNames); |                             var wbKgs = members | ||||||
|  |                                 .Where(m => m.DefaultWbKg != null) | ||||||
|  |                                 .Select(m => m.DefaultWbKg!) | ||||||
|  |                                 .Union(areaComs.Select(c => c.Kg)) | ||||||
|  |                                 .Distinct() | ||||||
|  |                                 .OrderBy(k => k.KgNr) | ||||||
|  |                                 .ToList(); | ||||||
|  |                             await ElwigData.Export(d.FileName, members, areaComs, wbKgs, filterNames); | ||||||
|                         } catch (Exception exc) { |                         } catch (Exception exc) { | ||||||
|                             MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); |                             MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); | ||||||
|                         } |                         } | ||||||
| @@ -533,17 +542,27 @@ namespace Elwig.Services { | |||||||
|                             .Include(m => m.BillingAddress) |                             .Include(m => m.BillingAddress) | ||||||
|                             .Include(m => m.TelephoneNumbers) |                             .Include(m => m.TelephoneNumbers) | ||||||
|                             .Include(m => m.EmailAddresses) |                             .Include(m => m.EmailAddresses) | ||||||
|  |                             .Include(m => m.DefaultWbKg!.Gl) | ||||||
|                             .AsSplitQuery() |                             .AsSplitQuery() | ||||||
|                             .ToListAsync(); |                             .ToListAsync(); | ||||||
|                         var areaComs = await query |                         var areaComs = await query | ||||||
|                             .SelectMany(m => m.AreaCommitments) |                             .SelectMany(m => m.AreaCommitments) | ||||||
|  |                             .OrderBy(c => c.MgNr).ThenBy(c => c.FbNr) | ||||||
|                             .Include(c => c.Rd) |                             .Include(c => c.Rd) | ||||||
|  |                             .Include(c => c.Kg.Gl) | ||||||
|                             .ToListAsync(); |                             .ToListAsync(); | ||||||
|  |                         var wbKgs = members | ||||||
|  |                             .Where(m => m.DefaultWbKg != null) | ||||||
|  |                             .Select(m => m.DefaultWbKg!) | ||||||
|  |                             .Union(areaComs.Select(c => c.Kg)) | ||||||
|  |                             .Distinct() | ||||||
|  |                             .OrderBy(k => k.KgNr) | ||||||
|  |                             .ToList(); | ||||||
|                         if (members.Count == 0) { |                         if (members.Count == 0) { | ||||||
|                             MessageBox.Show("Es wurden keine Mitglieder zum Hochladen ausgewählt!", "Mitglieder hochladen", |                             MessageBox.Show("Es wurden keine Mitglieder zum Hochladen ausgewählt!", "Mitglieder hochladen", | ||||||
|                                 MessageBoxButton.OK, MessageBoxImage.Error); |                                 MessageBoxButton.OK, MessageBoxImage.Error); | ||||||
|                         } else { |                         } else { | ||||||
|                             await ElwigData.Export(path, members, areaComs, filterNames); |                             await ElwigData.Export(path, members, areaComs, wbKgs, filterNames); | ||||||
|                             await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword); |                             await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword); | ||||||
|                             MessageBox.Show($"Hochladen von {members.Count:N0} Mitgliedern erfolgreich!", "Mitglieder hochgeladen", |                             MessageBox.Show($"Hochladen von {members.Count:N0} Mitgliedern erfolgreich!", "Mitglieder hochgeladen", | ||||||
|                                 MessageBoxButton.OK, MessageBoxImage.Information); |                                 MessageBoxButton.OK, MessageBoxImage.Information); | ||||||
|   | |||||||
| @@ -202,16 +202,25 @@ namespace Elwig.Windows { | |||||||
|                         .Where(d => d.Year == Utils.CurrentLastSeason && d.ZwstId == App.ZwstId) |                         .Where(d => d.Year == Utils.CurrentLastSeason && d.ZwstId == App.ZwstId) | ||||||
|                         .Include(d => d.Parts) |                         .Include(d => d.Parts) | ||||||
|                         .ThenInclude(p => p.PartModifiers) |                         .ThenInclude(p => p.PartModifiers) | ||||||
|  |                         .Include(d => d.Parts) | ||||||
|  |                         .ThenInclude(p => p.Kg) | ||||||
|  |                         .ThenInclude(k => k!.Gl) | ||||||
|                         .OrderBy(d => d.DateString) |                         .OrderBy(d => d.DateString) | ||||||
|                         .ThenBy(d => d.TimeString) |                         .ThenBy(d => d.TimeString) | ||||||
|                         .ThenBy(d => d.LsNr) |                         .ThenBy(d => d.LsNr) | ||||||
|                         .AsSplitQuery() |                         .AsSplitQuery() | ||||||
|                         .ToListAsync(); |                         .ToListAsync(); | ||||||
|  |                     var wbKgs = deliveries | ||||||
|  |                         .SelectMany(d => d.Parts) | ||||||
|  |                         .Where(p => p.Kg != null) | ||||||
|  |                         .Select(p => p.Kg!) | ||||||
|  |                         .DistinctBy(k => k.KgNr) | ||||||
|  |                         .ToList(); | ||||||
|                     if (deliveries.Count == 0) { |                     if (deliveries.Count == 0) { | ||||||
|                         MessageBox.Show("Es gibt keine Lieferungen, die hochgeladen werden können!", "Lieferungen hochladen", |                         MessageBox.Show("Es gibt keine Lieferungen, die hochgeladen werden können!", "Lieferungen hochladen", | ||||||
|                             MessageBoxButton.OK, MessageBoxImage.Error); |                             MessageBoxButton.OK, MessageBoxImage.Error); | ||||||
|                     } else { |                     } else { | ||||||
|                         await ElwigData.Export(path, deliveries, [$"{Utils.CurrentLastSeason}", $"Zweigstelle {App.BranchName}"]); |                         await ElwigData.Export(path, deliveries, wbKgs, [$"{Utils.CurrentLastSeason}", $"Zweigstelle {App.BranchName}"]); | ||||||
|                         await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword); |                         await Utils.UploadExportData(path, App.Config.SyncUrl, App.Config.SyncUsername, App.Config.SyncPassword); | ||||||
|                         MessageBox.Show($"Hochladen von {deliveries.Count:N0} Lieferungen erfolgreich!", "Lieferungen hochladen", |                         MessageBox.Show($"Hochladen von {deliveries.Count:N0} Lieferungen erfolgreich!", "Lieferungen hochladen", | ||||||
|                             MessageBoxButton.OK, MessageBoxImage.Information); |                             MessageBoxButton.OK, MessageBoxImage.Information); | ||||||
|   | |||||||
| @@ -22,9 +22,9 @@ | |||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" /> | ||||||
|     <PackageReference Include="Appium.WebDriver" Version="4.4.5" /> |     <PackageReference Include="Appium.WebDriver" Version="4.4.5" /> | ||||||
|     <PackageReference Include="NReco.PdfRenderer" Version="1.6.0" /> |     <PackageReference Include="NReco.PdfRenderer" Version="1.6.0" /> | ||||||
|     <PackageReference Include="NUnit" Version="4.3.2" /> |     <PackageReference Include="NUnit" Version="4.4.0" /> | ||||||
|     <PackageReference Include="NUnit3TestAdapter" Version="5.0.0" /> |     <PackageReference Include="NUnit3TestAdapter" Version="5.1.0" /> | ||||||
|     <PackageReference Include="NUnit.Analyzers" Version="4.9.2"> |     <PackageReference Include="NUnit.Analyzers" Version="4.10.0"> | ||||||
|       <PrivateAssets>all</PrivateAssets> |       <PrivateAssets>all</PrivateAssets> | ||||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||||
|     </PackageReference> |     </PackageReference> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user