Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
7749f6ab45 | |||
cf05a0c658 | |||
5567d9f25a | |||
4403754ada | |||
8db6007264 | |||
944270744a | |||
10ee1d6548 | |||
db4de5b5fe | |||
f69d2809f3 | |||
1c2e0baa68 | |||
39f93da0ba | |||
91717f8efb | |||
7786fb421a |
48
CHANGELOG.md
48
CHANGELOG.md
@ -3,6 +3,54 @@ Changelog
|
|||||||
=========
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
[v0.9.3][v0.9.3] (2024-08-02) {#v0.9.3}
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
### Sonstiges {#v0.9.3-misc}
|
||||||
|
|
||||||
|
* Das Lieferjournal als Excel-Liste beinhaltet nun auch Liefer-Zweigstelle und Stamm-Zweigstelle des Liefernaten. (cf05a0c658)
|
||||||
|
|
||||||
|
[v0.9.3]: https://git.necronda.net/winzer/elwig/releases/tag/v0.9.3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[v0.9.2][v0.9.2] (2024-08-01) {#v0.9.2}
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
### Behobene Fehler {#v0.9.2-bugfixes}
|
||||||
|
|
||||||
|
* Verhalten beim Schließen des Haupt-Fensters (`MainWindow`) nicht immer richtig. (8db6007264)
|
||||||
|
* Im Mitglieder-Fenster (`MemberAdminWindow`) führt beim Erstellen eines Mitglied das Eingeben einer Tel.-Nr. zu einem Fehler. (4403754ada)
|
||||||
|
|
||||||
|
[v0.9.2]: https://git.necronda.net/winzer/elwig/releases/tag/v0.9.2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[v0.9.1][v0.9.1] (2024-08-01) {#v0.9.1}
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
### Neue Funktionen {#v0.9.1-features}
|
||||||
|
|
||||||
|
* Im Rundschreiben-Fenster (`MailWindow`) können E-Mails ohne Anhänge verschickt werden. (f69d2809f3)
|
||||||
|
* Im Mitglieder-Fenster (`MemberAdminWindow`) und Lieferungen-Fenster (`DeliveryAdminWindow`) kann das/die momentan ausgewählte Mitglied/Lieferung alleine exportiert werden. (db4de5b5fe)
|
||||||
|
* Exporte für Mitglieder enthalten nun auch deren Flächenbindungen. (10ee1d6548)
|
||||||
|
|
||||||
|
### Behobene Fehler {#v0.9.1-bugfixes}
|
||||||
|
|
||||||
|
* Sortierung der Wiegen-Knöpfe im Übernahme-Fenster (`DeliveryAdminWindow`). (7786fb421a)
|
||||||
|
|
||||||
|
### Sonstiges {#v0.9.1-misc}
|
||||||
|
|
||||||
|
* Deutsche Fehlermeldung beim Hochladen/Herunterladen im Haupt-Fenster (`MainWindow`). (91717f8efb)
|
||||||
|
* Waagen-Fehler _Brutto negativ_ implementiert. (39f93da0ba)
|
||||||
|
|
||||||
|
[v0.9.1]: https://git.necronda.net/winzer/elwig/releases/tag/v0.9.1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[v0.9.0][v0.9.0] (2024-07-28) {#v0.9.0}
|
[v0.9.0][v0.9.0] (2024-07-28) {#v0.9.0}
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
<td class="center">@(Model.BillingData.ConsiderContractPenalties ? "Ja" : "Nein")</td>
|
<td class="center">@(Model.BillingData.ConsiderContractPenalties ? "Ja" : "Nein")</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="overflow: visible;">Nto./bto.-Zuschl:</th>
|
<th style="overflow: visible;">Rebel-Zuschl.:</th>
|
||||||
<td colspan="3" class="center">
|
<td colspan="3" class="center">
|
||||||
@($"{Utils.GetSign(Model.BillingData.NetWeightModifier)}{Math.Abs(Model.BillingData.NetWeightModifier) * 100:N2}") % /
|
@($"{Utils.GetSign(Model.BillingData.NetWeightModifier)}{Math.Abs(Model.BillingData.NetWeightModifier) * 100:N2}") % /
|
||||||
@($"{Utils.GetSign(Model.BillingData.GrossWeightModifier)}{Math.Abs(Model.BillingData.GrossWeightModifier) * 100:N2}") %
|
@($"{Utils.GetSign(Model.BillingData.GrossWeightModifier)}{Math.Abs(Model.BillingData.GrossWeightModifier) * 100:N2}") %
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<UseWPF>true</UseWPF>
|
<UseWPF>true</UseWPF>
|
||||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||||
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
<ApplicationIcon>Resources\Images\Elwig.ico</ApplicationIcon>
|
||||||
<Version>0.9.0</Version>
|
<Version>0.9.3</Version>
|
||||||
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
<SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
@ -87,7 +87,7 @@ namespace Elwig.Helpers {
|
|||||||
SmtpPassword = config["smtp:password"];
|
SmtpPassword = config["smtp:password"];
|
||||||
SmtpFrom = config["smtp:from"];
|
SmtpFrom = config["smtp:from"];
|
||||||
|
|
||||||
var scales = config.AsEnumerable().Where(i => i.Key.StartsWith("scale.")).GroupBy(i => i.Key.Split(':')[0][6..]).Select(i => i.Key);
|
var scales = config.AsEnumerable().Where(i => i.Key.StartsWith("scale.")).GroupBy(i => i.Key.Split(':')[0][6..]).Select(i => i.Key).Order();
|
||||||
ScaleList.Clear();
|
ScaleList.Clear();
|
||||||
Scales = ScaleList;
|
Scales = ScaleList;
|
||||||
foreach (var s in scales) {
|
foreach (var s in scales) {
|
||||||
|
@ -136,6 +136,7 @@ namespace Elwig.Helpers.Export {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var importedMembers = new List<(string FileName, string ZwstId, string Device, int New, int Overwritten, int NotImported, string Filters)>();
|
var importedMembers = new List<(string FileName, string ZwstId, string Device, int New, int Overwritten, 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), meta) in data.Zip(metaData)) {
|
foreach (var ((members, billingAddresses, telephoneNumbers, emailAddresses, areaCommitments, riede, deliveries, deliveryParts, modifiers), meta) in data.Zip(metaData)) {
|
||||||
@ -159,6 +160,12 @@ namespace Elwig.Helpers.Export {
|
|||||||
if (duplicateMgNrs.Count > 0)
|
if (duplicateMgNrs.Count > 0)
|
||||||
importDuplicateMembers = ImportQuestion(branch.Name, device, "Mitglieder", true, duplicateMgNrs.Count);
|
importDuplicateMembers = ImportQuestion(branch.Name, device, "Mitglieder", true, duplicateMgNrs.Count);
|
||||||
|
|
||||||
|
var fbnrs = areaCommitments.Select(c => c.FbNr).ToList();
|
||||||
|
var duplicateFbNrs = await ctx.AreaCommitments
|
||||||
|
.Where(c => fbnrs.Contains(c.FbNr))
|
||||||
|
.Select(c => c.FbNr)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
var lsnrs = deliveries.Select(d => d.LsNr).ToList();
|
var lsnrs = deliveries.Select(d => d.LsNr).ToList();
|
||||||
var duplicateLsNrs = await ctx.Deliveries
|
var duplicateLsNrs = await ctx.Deliveries
|
||||||
.Where(d => lsnrs.Contains(d.LsNr))
|
.Where(d => lsnrs.Contains(d.LsNr))
|
||||||
@ -199,18 +206,26 @@ namespace Elwig.Helpers.Export {
|
|||||||
ctx.AddRange(billingAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr)));
|
ctx.AddRange(billingAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr)));
|
||||||
ctx.AddRange(telephoneNumbers.Where(n => duplicateMgNrs.Contains(n.MgNr)));
|
ctx.AddRange(telephoneNumbers.Where(n => duplicateMgNrs.Contains(n.MgNr)));
|
||||||
ctx.AddRange(emailAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr)));
|
ctx.AddRange(emailAddresses.Where(a => duplicateMgNrs.Contains(a.MgNr)));
|
||||||
|
ctx.UpdateRange(areaCommitments.Where(c => duplicateMgNrs.Contains(c.MgNr) && duplicateFbNrs.Contains(c.FbNr)));
|
||||||
|
ctx.AddRange(areaCommitments.Where(c => duplicateMgNrs.Contains(c.MgNr) && !duplicateFbNrs.Contains(c.FbNr)));
|
||||||
}
|
}
|
||||||
if (importNewMembers) {
|
if (importNewMembers) {
|
||||||
ctx.AddRange(members.Where(m => !duplicateMgNrs.Contains(m.MgNr)));
|
ctx.AddRange(members.Where(m => !duplicateMgNrs.Contains(m.MgNr)));
|
||||||
ctx.AddRange(billingAddresses.Where(a => !duplicateMgNrs.Contains(a.MgNr)));
|
ctx.AddRange(billingAddresses.Where(a => !duplicateMgNrs.Contains(a.MgNr)));
|
||||||
ctx.AddRange(telephoneNumbers.Where(n => !duplicateMgNrs.Contains(n.MgNr)));
|
ctx.AddRange(telephoneNumbers.Where(n => !duplicateMgNrs.Contains(n.MgNr)));
|
||||||
ctx.AddRange(emailAddresses.Where(a => !duplicateMgNrs.Contains(a.MgNr)));
|
ctx.AddRange(emailAddresses.Where(a => !duplicateMgNrs.Contains(a.MgNr)));
|
||||||
|
ctx.UpdateRange(areaCommitments.Where(c => !duplicateMgNrs.Contains(c.MgNr) && duplicateFbNrs.Contains(c.FbNr)));
|
||||||
|
ctx.AddRange(areaCommitments.Where(c => !duplicateMgNrs.Contains(c.MgNr) && !duplicateFbNrs.Contains(c.FbNr)));
|
||||||
}
|
}
|
||||||
if (members.Count > 0) {
|
if (members.Count > 0) {
|
||||||
var n = importNewMembers ? members.Count - duplicateMgNrs.Count : 0;
|
var n = importNewMembers ? members.Count - duplicateMgNrs.Count : 0;
|
||||||
var o = importDuplicateMembers ? duplicateMgNrs.Count : 0;
|
var o = importDuplicateMembers ? duplicateMgNrs.Count : 0;
|
||||||
importedMembers.Add((meta.FileName, meta.ZwstId, meta.Device, n, o, members.Count - n - o, meta.MemberFilters));
|
importedMembers.Add((meta.FileName, meta.ZwstId, meta.Device, n, o, members.Count - n - o, meta.MemberFilters));
|
||||||
}
|
}
|
||||||
|
if (areaCommitments.Count > 0) {
|
||||||
|
var imported = areaCommitments.Where(c => (importNewMembers && !duplicateMgNrs.Contains(c.MgNr)) || (importDuplicateMembers && duplicateMgNrs.Contains(c.MgNr))).ToList();
|
||||||
|
importedAreaComs.Add((meta.FileName, meta.ZwstId, meta.Device, imported.Count, areaCommitments.Count - imported.Count, meta.AreaComFilters));
|
||||||
|
}
|
||||||
|
|
||||||
if (allowedDuplicateLsNrs.Count > 0) {
|
if (allowedDuplicateLsNrs.Count > 0) {
|
||||||
var dids = deliveries
|
var dids = deliveries
|
||||||
@ -265,6 +280,12 @@ namespace Elwig.Helpers.Export {
|
|||||||
$" ({d.New} neu, {d.Overwritten} überschrieben, {d.NotImported} nicht importiert)\n" +
|
$" ({d.New} neu, {d.Overwritten} überschrieben, {d.NotImported} nicht importiert)\n" +
|
||||||
$" Zweigstelle: {branches[d.ZwstId].Name} (Gerät {d.Device})\n" +
|
$" Zweigstelle: {branches[d.ZwstId].Name} (Gerät {d.Device})\n" +
|
||||||
$" Filter: {d.Filters}"),
|
$" Filter: {d.Filters}"),
|
||||||
|
$"Flächenbindungen: {importedAreaComs.Sum(d => d.Imported)}",
|
||||||
|
..importedAreaComs.Select(d =>
|
||||||
|
$" {d.FileName} ({d.Imported})\n" +
|
||||||
|
$" ({d.Imported} importiert, {d.NotImported} nicht importiert)\n" +
|
||||||
|
$" Zweigstelle: {branches[d.ZwstId].Name} (Gerät {d.Device})\n" +
|
||||||
|
$" Filter: {d.Filters}"),
|
||||||
$"Lieferungen: {importedDeliveries.Sum(d => d.New + d.Overwritten)}",
|
$"Lieferungen: {importedDeliveries.Sum(d => d.New + d.Overwritten)}",
|
||||||
..importedDeliveries.Select(d =>
|
..importedDeliveries.Select(d =>
|
||||||
$" {d.FileName} ({d.New + d.Overwritten})\n" +
|
$" {d.FileName} ({d.New + d.Overwritten})\n" +
|
||||||
@ -298,6 +319,13 @@ namespace Elwig.Helpers.Export {
|
|||||||
}.Export(filename);
|
}.Export(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Task Export(string filename, IEnumerable<Member> members, IEnumerable<AreaCom> areaComs, IEnumerable<string> filters) {
|
||||||
|
return new ElwigExport {
|
||||||
|
Members = (members, filters),
|
||||||
|
AreaComs = (areaComs, ["von exportierten Mitgliedern"]),
|
||||||
|
}.Export(filename);
|
||||||
|
}
|
||||||
|
|
||||||
public static Task Export(string filename, IEnumerable<Delivery> deliveries, IEnumerable<string> filters) {
|
public static Task Export(string filename, IEnumerable<Delivery> deliveries, IEnumerable<string> filters) {
|
||||||
return new ElwigExport {
|
return new ElwigExport {
|
||||||
Deliveries = (deliveries, filters)
|
Deliveries = (deliveries, filters)
|
||||||
|
@ -197,7 +197,7 @@ namespace Elwig.Helpers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void MailTo(string emailAddress) {
|
public static void MailTo(string emailAddress) {
|
||||||
MailTo(new string[] { emailAddress });
|
MailTo([emailAddress]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void MailTo(IEnumerable<string> emailAddresses) {
|
public static void MailTo(IEnumerable<string> emailAddresses) {
|
||||||
|
@ -38,12 +38,12 @@ namespace Elwig.Helpers.Weighing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var error = line[1..3];
|
var error = line[1..3];
|
||||||
|
string msg = $"Unbekannter Fehler (Fehler code {error})";
|
||||||
if (error[0] == '0') {
|
if (error[0] == '0') {
|
||||||
if (error[1] != '0') {
|
if (error[1] != '0') {
|
||||||
throw new IOException($"Invalid response from scale (error code {error})");
|
throw new IOException($"Invalid response from scale (error code {error})");
|
||||||
}
|
}
|
||||||
} else if (error[0] == '1') {
|
} else if (error[0] == '1') {
|
||||||
string msg = $"Unbekannter Fehler (Fehler code {error})";
|
|
||||||
switch (error[1]) {
|
switch (error[1]) {
|
||||||
case '1': msg = "Allgemeiner Waagenfehler"; break;
|
case '1': msg = "Allgemeiner Waagenfehler"; break;
|
||||||
case '2': msg = "Waage in Überlast"; break;
|
case '2': msg = "Waage in Überlast"; break;
|
||||||
@ -53,8 +53,12 @@ namespace Elwig.Helpers.Weighing {
|
|||||||
case '7': msg = "Druckmuster enthält ungültiges Kommando"; break;
|
case '7': msg = "Druckmuster enthält ungültiges Kommando"; break;
|
||||||
}
|
}
|
||||||
throw new IOException($"Waagenfehler {error}: {msg}");
|
throw new IOException($"Waagenfehler {error}: {msg}");
|
||||||
|
} else if (error[0] == '2') {
|
||||||
|
switch (error[1]) {
|
||||||
|
case '0': msg = "Brutto negativ"; break;
|
||||||
|
}
|
||||||
|
throw new IOException($"Fehler {error}: {msg}");
|
||||||
} else if (error[0] == '3') {
|
} else if (error[0] == '3') {
|
||||||
string msg = $"Unbekannter Fehler (Fehler code {error})";
|
|
||||||
switch (error[1]) {
|
switch (error[1]) {
|
||||||
case '1': msg = "Übertragunsfehler"; break;
|
case '1': msg = "Übertragunsfehler"; break;
|
||||||
case '2': msg = "Ungültiger Befehl"; break;
|
case '2': msg = "Ungültiger Befehl"; break;
|
||||||
|
@ -14,16 +14,18 @@ namespace Elwig.Models.Dtos {
|
|||||||
("Pos", "Pos.", null, 10),
|
("Pos", "Pos.", null, 10),
|
||||||
("Date", "Datum", null, 20),
|
("Date", "Datum", null, 20),
|
||||||
("Time", "Zeit", null, 20),
|
("Time", "Zeit", null, 20),
|
||||||
|
("DeliveryBranch", "Zweigstelle", null, 30),
|
||||||
("MgNr", "MgNr.", null, 12),
|
("MgNr", "MgNr.", null, 12),
|
||||||
("Name1", "Name", null, 40),
|
("Name1", "Name", null, 40),
|
||||||
("Name2", "Vorname", null, 40),
|
("Name2", "Vorname", null, 40),
|
||||||
|
("MemberBranch", "Stamm-Zwst.", null, 30),
|
||||||
("SortId", "Sorte", null, 10),
|
("SortId", "Sorte", null, 10),
|
||||||
("AttrId", "Attr.", null, 15),
|
("AttrId", "Attr.", null, 15),
|
||||||
("CultId", "Bewirt.", null, 15),
|
("CultId", "Bewirt.", null, 15),
|
||||||
("QualId", "Qualität", null, 15),
|
("QualId", "Qualität", null, 15),
|
||||||
("Gradation", "Gradation", "°Oe|°KMW", 40),
|
("Gradation", "Gradation", "°Oe|°KMW", 40),
|
||||||
("Weight", "Gewicht", "kg", 20),
|
("Weight", "Gewicht", "kg", 20),
|
||||||
("NetGross", "bto./nto.", null, 20),
|
("IsNetWeight", "Gerebelt", null, 20),
|
||||||
("HkId", "Herkunft", null, 20),
|
("HkId", "Herkunft", null, 20),
|
||||||
("Modifiers", "Zu-/Abschläge", null, 40),
|
("Modifiers", "Zu-/Abschläge", null, 40),
|
||||||
("Comment", "Anmerkung", null, 60),
|
("Comment", "Anmerkung", null, 60),
|
||||||
@ -35,7 +37,7 @@ namespace Elwig.Models.Dtos {
|
|||||||
|
|
||||||
public static async Task<DeliveryJournalData> FromQuery(IQueryable<DeliveryPart> query, List<string> filterNames) {
|
public static async Task<DeliveryJournalData> FromQuery(IQueryable<DeliveryPart> query, List<string> filterNames) {
|
||||||
return new((await query
|
return new((await query
|
||||||
.Include(p => p.Delivery.Member)
|
.Include(p => p.Delivery.Member.Branch)
|
||||||
.Include(p => p.Delivery.Branch)
|
.Include(p => p.Delivery.Branch)
|
||||||
.Include(p => p.PartModifiers).ThenInclude(m => m.Modifier)
|
.Include(p => p.PartModifiers).ThenInclude(m => m.Modifier)
|
||||||
.Include(p => p.Variety)
|
.Include(p => p.Variety)
|
||||||
@ -53,10 +55,12 @@ namespace Elwig.Models.Dtos {
|
|||||||
public int Pos;
|
public int Pos;
|
||||||
public DateOnly Date;
|
public DateOnly Date;
|
||||||
public TimeOnly? Time;
|
public TimeOnly? Time;
|
||||||
|
public string DeliveryBranch;
|
||||||
public int MgNr;
|
public int MgNr;
|
||||||
public string Name1;
|
public string Name1;
|
||||||
public string Name2;
|
public string Name2;
|
||||||
public string AdministrativeName;
|
public string AdministrativeName;
|
||||||
|
public string? MemberBranch;
|
||||||
public string SortId;
|
public string SortId;
|
||||||
public string Variety;
|
public string Variety;
|
||||||
public string? AttrId;
|
public string? AttrId;
|
||||||
@ -71,7 +75,6 @@ namespace Elwig.Models.Dtos {
|
|||||||
public double Oe => Gradation.Oe;
|
public double Oe => Gradation.Oe;
|
||||||
public int Weight { get; set; }
|
public int Weight { get; set; }
|
||||||
public bool IsNetWeight;
|
public bool IsNetWeight;
|
||||||
public string NetGross => IsNetWeight ? "n" : "b";
|
|
||||||
public string? Modifiers;
|
public string? Modifiers;
|
||||||
public string? Comment;
|
public string? Comment;
|
||||||
|
|
||||||
@ -83,10 +86,12 @@ namespace Elwig.Models.Dtos {
|
|||||||
Pos = p.DPNr;
|
Pos = p.DPNr;
|
||||||
Date = d.Date;
|
Date = d.Date;
|
||||||
Time = d.Time;
|
Time = d.Time;
|
||||||
|
DeliveryBranch = d.Branch.Name;
|
||||||
MgNr = m.MgNr;
|
MgNr = m.MgNr;
|
||||||
Name1 = m.FamilyName;
|
Name1 = m.FamilyName;
|
||||||
Name2 = m.AdministrativeName2;
|
Name2 = m.AdministrativeName2;
|
||||||
AdministrativeName = m.AdministrativeName;
|
AdministrativeName = m.AdministrativeName;
|
||||||
|
MemberBranch = m.Branch?.Name;
|
||||||
|
|
||||||
SortId = p.SortId;
|
SortId = p.SortId;
|
||||||
Variety = p.Variety.Name;
|
Variety = p.Variety.Name;
|
||||||
|
@ -23,6 +23,10 @@ using System.Net.Http;
|
|||||||
namespace Elwig.Services {
|
namespace Elwig.Services {
|
||||||
public static class DeliveryService {
|
public static class DeliveryService {
|
||||||
|
|
||||||
|
public enum ExportSubject {
|
||||||
|
FromFilters, FromToday, FromSeasonAndBranch, Selected,
|
||||||
|
};
|
||||||
|
|
||||||
public static async Task<Member?> GetMemberAsync(int mgnr) {
|
public static async Task<Member?> GetMemberAsync(int mgnr) {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
return await ctx.Members
|
return await ctx.Members
|
||||||
@ -522,23 +526,31 @@ namespace Elwig.Services {
|
|||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task GenerateDeliveryJournal(this DeliveryAdminViewModel vm, int modeWho, ExportMode exportMode) {
|
public static async Task GenerateDeliveryJournal(this DeliveryAdminViewModel vm, ExportSubject subject, ExportMode mode) {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
IQueryable<DeliveryPart> query;
|
IQueryable<DeliveryPart> query;
|
||||||
List<string> filterNames = [];
|
List<string> filterNames = [];
|
||||||
if (modeWho == 0) {
|
if (subject == ExportSubject.FromFilters) {
|
||||||
var (f, _, q, _, _) = await vm.GetFilters(ctx);
|
var (f, _, q, _, _) = await vm.GetFilters(ctx);
|
||||||
query = q;
|
query = q;
|
||||||
filterNames.AddRange(f);
|
filterNames.AddRange(f);
|
||||||
} else if (modeWho == 2) {
|
} else if (subject == ExportSubject.FromToday) {
|
||||||
query = ctx.DeliveryParts
|
|
||||||
.Where(p => p.Year == Utils.CurrentLastSeason && p.Delivery.ZwstId == App.ZwstId);
|
|
||||||
filterNames.AddRange([$"{Utils.CurrentLastSeason}", $"Zweigstelle {App.BranchName}"]);
|
|
||||||
} else {
|
|
||||||
var date = $"{Utils.Today:yyyy-MM-dd}";
|
var date = $"{Utils.Today:yyyy-MM-dd}";
|
||||||
query = ctx.DeliveryParts
|
query = ctx.DeliveryParts
|
||||||
.Where(p => p.Delivery.DateString == date);
|
.Where(p => p.Delivery.DateString == date);
|
||||||
filterNames.Add($"{Utils.Today:dd.MM.yyyy}");
|
filterNames.Add($"{Utils.Today:dd.MM.yyyy}");
|
||||||
|
} else if (subject == ExportSubject.FromSeasonAndBranch) {
|
||||||
|
query = ctx.DeliveryParts
|
||||||
|
.Where(p => p.Year == Utils.CurrentLastSeason && p.Delivery.ZwstId == App.ZwstId);
|
||||||
|
filterNames.AddRange([$"{Utils.CurrentLastSeason}", $"Zweigstelle {App.BranchName}"]);
|
||||||
|
} else if (subject == ExportSubject.Selected) {
|
||||||
|
var lsnr = vm.SelectedDelivery?.LsNr;
|
||||||
|
if (lsnr == null) return;
|
||||||
|
query = ctx.DeliveryParts
|
||||||
|
.Where(p => p.Delivery.LsNr == lsnr);
|
||||||
|
filterNames.Add(lsnr);
|
||||||
|
} else {
|
||||||
|
throw new ArgumentException("Invalid value for ExportSubject");
|
||||||
}
|
}
|
||||||
|
|
||||||
query = query
|
query = query
|
||||||
@ -547,7 +559,7 @@ namespace Elwig.Services {
|
|||||||
.ThenBy(p => p.Delivery.LsNr)
|
.ThenBy(p => p.Delivery.LsNr)
|
||||||
.ThenBy(p => p.DPNr);
|
.ThenBy(p => p.DPNr);
|
||||||
|
|
||||||
if (exportMode == ExportMode.SaveList) {
|
if (mode == ExportMode.SaveList) {
|
||||||
var d = new SaveFileDialog() {
|
var d = new SaveFileDialog() {
|
||||||
FileName = $"{DeliveryJournal.Name}.ods",
|
FileName = $"{DeliveryJournal.Name}.ods",
|
||||||
DefaultExt = "ods",
|
DefaultExt = "ods",
|
||||||
@ -565,11 +577,11 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
} else if (exportMode == ExportMode.Export) {
|
} else if (mode == ExportMode.Export) {
|
||||||
var d = new SaveFileDialog() {
|
var d = new SaveFileDialog() {
|
||||||
FileName = $"Lieferungen_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip",
|
FileName = subject == ExportSubject.Selected ? $"Lieferung_{vm.SelectedDelivery?.LsNr}.elwig.zip" : $"Lieferungen_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip",
|
||||||
DefaultExt = "zip",
|
DefaultExt = "elwig.zip",
|
||||||
Filter = "ZIP-Datei (*.zip)|*.zip",
|
Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
|
||||||
Title = $"{DeliveryJournal.Name} speichern unter - Elwig"
|
Title = $"{DeliveryJournal.Name} speichern unter - Elwig"
|
||||||
};
|
};
|
||||||
if (d.ShowDialog() == true) {
|
if (d.ShowDialog() == true) {
|
||||||
@ -587,7 +599,7 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
} else if (exportMode == ExportMode.Upload && App.Config.SyncUrl != null) {
|
} else if (mode == ExportMode.Upload && App.Config.SyncUrl != null) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
try {
|
try {
|
||||||
var filename = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip";
|
var filename = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip";
|
||||||
@ -610,6 +622,8 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
} catch (TaskCanceledException exc) {
|
||||||
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
@ -619,7 +633,7 @@ namespace Elwig.Services {
|
|||||||
try {
|
try {
|
||||||
var data = await DeliveryJournalData.FromQuery(query, filterNames);
|
var data = await DeliveryJournalData.FromQuery(query, filterNames);
|
||||||
using var doc = new DeliveryJournal(string.Join(" / ", filterNames), data);
|
using var doc = new DeliveryJournal(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, exportMode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
@ -627,26 +641,28 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task GenerateWineQualityStatistics(this DeliveryAdminViewModel vm, int modeWho, ExportMode exportMode) {
|
public static async Task GenerateWineQualityStatistics(this DeliveryAdminViewModel vm, ExportSubject subject, ExportMode mode) {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
IQueryable<DeliveryPart> query;
|
IQueryable<DeliveryPart> query;
|
||||||
List<string> filterNames = [];
|
List<string> filterNames = [];
|
||||||
if (modeWho == 0) {
|
if (subject == ExportSubject.FromFilters) {
|
||||||
var (f, _, q, _, _) = await vm.GetFilters(ctx);
|
var (f, _, q, _, _) = await vm.GetFilters(ctx);
|
||||||
query = q;
|
query = q;
|
||||||
filterNames.AddRange(f);
|
filterNames.AddRange(f);
|
||||||
} else {
|
} else if (subject == ExportSubject.FromToday) {
|
||||||
var date = $"{Utils.Today:yyyy-MM-dd}";
|
var date = $"{Utils.Today:yyyy-MM-dd}";
|
||||||
query = ctx.DeliveryParts
|
query = ctx.DeliveryParts
|
||||||
.Where(p => p.Delivery.DateString == date);
|
.Where(p => p.Delivery.DateString == date);
|
||||||
filterNames.Add($"{Utils.Today:dd.MM.yyyy}");
|
filterNames.Add($"{Utils.Today:dd.MM.yyyy}");
|
||||||
|
} else {
|
||||||
|
throw new ArgumentException("Invalid value for ExportSubject");
|
||||||
}
|
}
|
||||||
|
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
try {
|
try {
|
||||||
var data = await WineQualityStatisticsData.FromQuery(query, App.Client.OrderingMemberList);
|
var data = await WineQualityStatisticsData.FromQuery(query, App.Client.OrderingMemberList);
|
||||||
using var doc = new WineQualityStatistics(string.Join(" / ", filterNames), data);
|
using var doc = new WineQualityStatistics(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, exportMode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,10 @@ using System.Net.Http;
|
|||||||
namespace Elwig.Services {
|
namespace Elwig.Services {
|
||||||
public static class MemberService {
|
public static class MemberService {
|
||||||
|
|
||||||
|
public enum ExportSubject {
|
||||||
|
All, AllActive, FromFilters, Selected,
|
||||||
|
};
|
||||||
|
|
||||||
public static async Task InitInputs(this MemberAdminViewModel vm) {
|
public static async Task InitInputs(this MemberAdminViewModel vm) {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
vm.MgNrString = $"{await ctx.NextMgNr()}";
|
vm.MgNrString = $"{await ctx.NextMgNr()}";
|
||||||
@ -359,19 +363,26 @@ namespace Elwig.Services {
|
|||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task GenerateMemberList(this MemberAdminViewModel vm, int modeWho, ExportMode exportMode) {
|
public static async Task GenerateMemberList(this MemberAdminViewModel vm, ExportSubject subject, ExportMode mode) {
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
IQueryable<Member> query;
|
IQueryable<Member> query;
|
||||||
List<string> filterNames = [];
|
List<string> filterNames = [];
|
||||||
if (modeWho == 0) {
|
if (subject == ExportSubject.All) {
|
||||||
|
query = ctx.Members;
|
||||||
|
} else if (subject == ExportSubject.AllActive) {
|
||||||
query = ctx.Members.Where(m => m.IsActive);
|
query = ctx.Members.Where(m => m.IsActive);
|
||||||
filterNames.Add("aktive Mitglieder");
|
filterNames.Add("aktive Mitglieder");
|
||||||
} else if (modeWho == 1) {
|
} else if (subject == ExportSubject.FromFilters) {
|
||||||
var (f, q, _) = await vm.GetFilters(ctx);
|
var (f, q, _) = await vm.GetFilters(ctx);
|
||||||
query = q;
|
query = q;
|
||||||
filterNames.AddRange(f);
|
filterNames.AddRange(f);
|
||||||
|
} else if (subject == ExportSubject.Selected) {
|
||||||
|
var mgnr = vm.SelectedMember?.MgNr;
|
||||||
|
if (mgnr == null) return;
|
||||||
|
query = ctx.Members.Where(m => m.MgNr == mgnr);
|
||||||
|
filterNames.Add($"{mgnr}");
|
||||||
} else {
|
} else {
|
||||||
query = ctx.Members;
|
throw new ArgumentException("Invalid value for ExportSubject");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vm.MemberListOrderByMgNr) {
|
if (vm.MemberListOrderByMgNr) {
|
||||||
@ -393,7 +404,7 @@ namespace Elwig.Services {
|
|||||||
.ThenBy(m => m.MgNr);
|
.ThenBy(m => m.MgNr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exportMode == ExportMode.SaveList) {
|
if (mode == ExportMode.SaveList) {
|
||||||
var d = new SaveFileDialog() {
|
var d = new SaveFileDialog() {
|
||||||
FileName = $"{MemberList.Name}.ods",
|
FileName = $"{MemberList.Name}.ods",
|
||||||
DefaultExt = "ods",
|
DefaultExt = "ods",
|
||||||
@ -411,29 +422,34 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
} else if (exportMode == ExportMode.Export) {
|
} else if (mode == ExportMode.Export) {
|
||||||
var d = new SaveFileDialog() {
|
var d = new SaveFileDialog() {
|
||||||
FileName = $"Mitglieder_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip",
|
FileName = subject == ExportSubject.Selected ? $"Mitglied_{vm.SelectedMember?.MgNr}.elwig.zip" : $"Mitglieder_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip",
|
||||||
DefaultExt = "zip",
|
DefaultExt = ".elwig.zip",
|
||||||
Filter = "ZIP-Datei (*.zip)|*.zip",
|
Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
|
||||||
Title = $"{MemberList.Name} speichern unter - Elwig"
|
Title = $"{MemberList.Name} speichern unter - Elwig"
|
||||||
};
|
};
|
||||||
if (d.ShowDialog() == true) {
|
if (d.ShowDialog() == true) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
try {
|
try {
|
||||||
await ElwigData.Export(d.FileName, await query
|
var members = await query
|
||||||
.OrderBy(m => m.MgNr)
|
.OrderBy(m => m.MgNr)
|
||||||
.Include(m => m.BillingAddress)
|
.Include(m => m.BillingAddress)
|
||||||
.Include(m => m.TelephoneNumbers)
|
.Include(m => m.TelephoneNumbers)
|
||||||
.Include(m => m.EmailAddresses)
|
.Include(m => m.EmailAddresses)
|
||||||
.AsSplitQuery()
|
.AsSplitQuery()
|
||||||
.ToListAsync(), filterNames);
|
.ToListAsync();
|
||||||
|
var areaComs = await query
|
||||||
|
.SelectMany(m => m.AreaCommitments)
|
||||||
|
.Include(c => c.Rd)
|
||||||
|
.ToListAsync();
|
||||||
|
await ElwigData.Export(d.FileName, members, areaComs, 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);
|
||||||
}
|
}
|
||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
}
|
}
|
||||||
} else if (exportMode == ExportMode.Upload && App.Config.SyncUrl != null) {
|
} else if (mode == ExportMode.Upload && App.Config.SyncUrl != null) {
|
||||||
Mouse.OverrideCursor = Cursors.AppStarting;
|
Mouse.OverrideCursor = Cursors.AppStarting;
|
||||||
try {
|
try {
|
||||||
var filename = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip";
|
var filename = $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss}_{App.ZwstId}.elwig.zip";
|
||||||
@ -456,6 +472,8 @@ namespace Elwig.Services {
|
|||||||
}
|
}
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
} catch (TaskCanceledException exc) {
|
||||||
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
@ -465,7 +483,7 @@ namespace Elwig.Services {
|
|||||||
try {
|
try {
|
||||||
var data = await MemberListData.FromQuery(query, filterNames);
|
var data = await MemberListData.FromQuery(query, filterNames);
|
||||||
using var doc = new MemberList(string.Join(" / ", filterNames), data);
|
using var doc = new MemberList(string.Join(" / ", filterNames), data);
|
||||||
await Utils.ExportDocument(doc, exportMode);
|
await Utils.ExportDocument(doc, mode);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
@ -531,7 +549,7 @@ namespace Elwig.Services {
|
|||||||
|
|
||||||
ctx.RemoveRange(ctx.MemberTelephoneNrs.Where(t => t.MgNr == oldMgNr));
|
ctx.RemoveRange(ctx.MemberTelephoneNrs.Where(t => t.MgNr == oldMgNr));
|
||||||
ctx.AddRange(vm.PhoneNrs
|
ctx.AddRange(vm.PhoneNrs
|
||||||
.Where(input => input.Number != null)
|
.Where(input => input.Number != null && input.Number != "")
|
||||||
.Select((input, i) => new MemberTelNr {
|
.Select((input, i) => new MemberTelNr {
|
||||||
MgNr = m.MgNr,
|
MgNr = m.MgNr,
|
||||||
Nr = i + 1,
|
Nr = i + 1,
|
||||||
|
@ -402,7 +402,7 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
protected bool InputLostFocus(TextBox input, ValidationResult res, string? msg = null) {
|
protected bool InputLostFocus(TextBox input, ValidationResult res, string? msg = null) {
|
||||||
if (DoShowWarningWindows && !res.IsValid && !IsClosing && (IsEditing || IsCreating))
|
if (DoShowWarningWindows && !res.IsValid && !IsClosing && (IsEditing || IsCreating))
|
||||||
MessageBox.Show(res.ErrorContent.ToString(), msg ?? res.ErrorContent.ToString(), MessageBoxButton.OK, MessageBoxImage.Warning);
|
MessageBox.Show(res.ErrorContent?.ToString(), msg ?? res.ErrorContent?.ToString(), MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||||
return res.IsValid;
|
return res.IsValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,6 +124,11 @@
|
|||||||
<MenuItem x:Name="Menu_Bki_SaveList" Header="Traubentransportscheinliste speichern..."/>
|
<MenuItem x:Name="Menu_Bki_SaveList" Header="Traubentransportscheinliste speichern..."/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="Export">
|
<MenuItem Header="Export">
|
||||||
|
<MenuItem x:Name="Menu_Export_ExportSelected" Header="...von ausgewählter Lieferung speichern..." IsEnabled="False"
|
||||||
|
Click="Menu_Export_ExportSelected_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_Export_UploadSelected" Header="...von ausgewählter Lieferung hochladen" IsEnabled="False"
|
||||||
|
Click="Menu_Export_UploadSelected_Click"/>
|
||||||
|
<Separator/>
|
||||||
<MenuItem x:Name="Menu_Export_ExportFilters" Header="...aus Filtern speichern..."
|
<MenuItem x:Name="Menu_Export_ExportFilters" Header="...aus Filtern speichern..."
|
||||||
Click="Menu_Export_ExportFilters_Click"/>
|
Click="Menu_Export_ExportFilters_Click"/>
|
||||||
<MenuItem x:Name="Menu_Export_UploadFilters" Header="...aus Filtern hochladen"
|
<MenuItem x:Name="Menu_Export_UploadFilters" Header="...aus Filtern hochladen"
|
||||||
@ -192,6 +197,7 @@
|
|||||||
HorizontalAlignment="Right" Margin="0,24,10,0" VerticalAlignment="Top" Grid.Column="1" Grid.ColumnSpan="2"
|
HorizontalAlignment="Right" Margin="0,24,10,0" VerticalAlignment="Top" Grid.Column="1" Grid.ColumnSpan="2"
|
||||||
Checked="AllSeasonsInput_Changed" Unchecked="AllSeasonsInput_Changed"/>
|
Checked="AllSeasonsInput_Changed" Unchecked="AllSeasonsInput_Changed"/>
|
||||||
<DataGrid x:Name="DeliveryList" AutoGenerateColumns="False" HeadersVisibility="Column" IsReadOnly="True" GridLinesVisibility="None" SelectionMode="Single"
|
<DataGrid x:Name="DeliveryList" AutoGenerateColumns="False" HeadersVisibility="Column" IsReadOnly="True" GridLinesVisibility="None" SelectionMode="Single"
|
||||||
|
ItemsSource="{Binding Deliveries, Mode=TwoWay}" SelectedItem="{Binding SelectedDelivery, Mode=TwoWay}"
|
||||||
SelectionChanged="DeliveryList_SelectionChanged"
|
SelectionChanged="DeliveryList_SelectionChanged"
|
||||||
CanUserDeleteRows="False" CanUserResizeRows="False" CanUserAddRows="False"
|
CanUserDeleteRows="False" CanUserResizeRows="False" CanUserAddRows="False"
|
||||||
Margin="5,0,5,0" Grid.Row="1" FontSize="14" Grid.ColumnSpan="3">
|
Margin="5,0,5,0" Grid.Row="1" FontSize="14" Grid.ColumnSpan="3">
|
||||||
|
@ -175,33 +175,55 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_DeliveryJournal_SaveToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.SaveList); }
|
private async void Menu_DeliveryJournal_SaveToday_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_DeliveryJournal_SavePdfToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.SavePdf); }
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.SaveList);
|
||||||
private async void Menu_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.Show); }
|
private async void Menu_DeliveryJournal_SavePdfToday_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_Export_ExportSeason_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(2, ExportMode.Export); }
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.SavePdf);
|
||||||
private async void Menu_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(1, ExportMode.Print); }
|
private async void Menu_DeliveryJournal_ShowToday_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_DeliveryJournal_SaveFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.SaveList); }
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.Show);
|
||||||
private async void Menu_DeliveryJournal_SavePdfFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.SavePdf); }
|
private async void Menu_DeliveryJournal_PrintToday_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_DeliveryJournal_ShowFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.Show); }
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromToday, ExportMode.Print);
|
||||||
private async void Menu_DeliveryJournal_PrintFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.Print); }
|
private async void Menu_DeliveryJournal_SaveFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateDeliveryJournal(0, ExportMode.Export); }
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.SaveList);
|
||||||
|
private async void Menu_DeliveryJournal_SavePdfFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.SavePdf);
|
||||||
|
private async void Menu_DeliveryJournal_ShowFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Show);
|
||||||
|
private async void Menu_DeliveryJournal_PrintFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Print);
|
||||||
|
|
||||||
|
private async void Menu_Export_ExportSeason_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromSeasonAndBranch, ExportMode.Export);
|
||||||
|
private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Export);
|
||||||
|
private async void Menu_Export_ExportSelected_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.Selected, ExportMode.Export);
|
||||||
|
|
||||||
private async void Menu_Export_UploadSeason_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Export_UploadSeason_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (App.Config.SyncUrl == null) return;
|
if (App.Config.SyncUrl == null) return;
|
||||||
await ViewModel.GenerateDeliveryJournal(2, ExportMode.Upload);
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromSeasonAndBranch, ExportMode.Upload);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Export_UploadFilters_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Export_UploadFilters_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (App.Config.SyncUrl == null) return;
|
if (App.Config.SyncUrl == null) return;
|
||||||
await ViewModel.GenerateDeliveryJournal(0, ExportMode.Upload);
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromFilters, ExportMode.Upload);
|
||||||
|
}
|
||||||
|
private async void Menu_Export_UploadSelected_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
if (App.Config.SyncUrl == null) return;
|
||||||
|
await ViewModel.GenerateDeliveryJournal(DeliveryService.ExportSubject.FromSeasonAndBranch, ExportMode.Upload);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_WineQualityStatistics_ShowToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(1, ExportMode.Show); }
|
private async void Menu_WineQualityStatistics_ShowToday_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_WineQualityStatistics_SavePdfToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(1, ExportMode.SavePdf); }
|
await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromToday, ExportMode.Show);
|
||||||
private async void Menu_WineQualityStatistics_PrintToday_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(1, ExportMode.Print); }
|
private async void Menu_WineQualityStatistics_SavePdfToday_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_WineQualityStatistics_ShowFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(0, ExportMode.Show); }
|
await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromToday, ExportMode.SavePdf);
|
||||||
private async void Menu_WineQualityStatistics_SavePdfFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(0, ExportMode.SavePdf); }
|
private async void Menu_WineQualityStatistics_PrintToday_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_WineQualityStatistics_PrintFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateWineQualityStatistics(0, ExportMode.Print); }
|
await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromToday, ExportMode.Print);
|
||||||
|
private async void Menu_WineQualityStatistics_ShowFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromFilters, ExportMode.Show);
|
||||||
|
private async void Menu_WineQualityStatistics_SavePdfFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromFilters, ExportMode.SavePdf);
|
||||||
|
private async void Menu_WineQualityStatistics_PrintFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateWineQualityStatistics(DeliveryService.ExportSubject.FromFilters, ExportMode.Print);
|
||||||
|
|
||||||
private async void Menu_WineQualityStatistics_Mode_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_WineQualityStatistics_Mode_Click(object sender, RoutedEventArgs evt) {
|
||||||
Menu_WineQualityStatistics.IsSubmenuOpen = true;
|
Menu_WineQualityStatistics.IsSubmenuOpen = true;
|
||||||
@ -598,12 +620,16 @@ namespace Elwig.Windows {
|
|||||||
Menu_DeliveryNote_SavePdf.IsEnabled = !IsEditing && !IsCreating;
|
Menu_DeliveryNote_SavePdf.IsEnabled = !IsEditing && !IsCreating;
|
||||||
Menu_DeliveryNote_Print.IsEnabled = !IsEditing && !IsCreating;
|
Menu_DeliveryNote_Print.IsEnabled = !IsEditing && !IsCreating;
|
||||||
Menu_DeliveryNote_Email.IsEnabled = !IsEditing && !IsCreating && App.Config.Smtp != null && d.Member.EmailAddresses.Count > 0;
|
Menu_DeliveryNote_Email.IsEnabled = !IsEditing && !IsCreating && App.Config.Smtp != null && d.Member.EmailAddresses.Count > 0;
|
||||||
|
Menu_Export_ExportSelected.IsEnabled = !IsEditing && !IsCreating;
|
||||||
|
Menu_Export_UploadSelected.IsEnabled = !IsEditing && !IsCreating && App.Config.SyncUrl != null;
|
||||||
} else {
|
} else {
|
||||||
DeleteDeliveryButton.IsEnabled = false;
|
DeleteDeliveryButton.IsEnabled = false;
|
||||||
Menu_DeliveryNote_Show.IsEnabled = false;
|
Menu_DeliveryNote_Show.IsEnabled = false;
|
||||||
Menu_DeliveryNote_SavePdf.IsEnabled = false;
|
Menu_DeliveryNote_SavePdf.IsEnabled = false;
|
||||||
Menu_DeliveryNote_Print.IsEnabled = false;
|
Menu_DeliveryNote_Print.IsEnabled = false;
|
||||||
Menu_DeliveryNote_Email.IsEnabled = false;
|
Menu_DeliveryNote_Email.IsEnabled = false;
|
||||||
|
Menu_Export_ExportSelected.IsEnabled = false;
|
||||||
|
Menu_Export_UploadSelected.IsEnabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ namespace Elwig.Windows {
|
|||||||
private void SelectDocumentButton_Click(object sender, RoutedEventArgs evt) {
|
private void SelectDocumentButton_Click(object sender, RoutedEventArgs evt) {
|
||||||
var d = new OpenFileDialog() {
|
var d = new OpenFileDialog() {
|
||||||
Title = "Dokument auswählen - Elwig",
|
Title = "Dokument auswählen - Elwig",
|
||||||
DefaultExt = ".pdf",
|
DefaultExt = "pdf",
|
||||||
Filter = "PDF-Dokument (*.pdf)|*.pdf",
|
Filter = "PDF-Dokument (*.pdf)|*.pdf",
|
||||||
Multiselect = true,
|
Multiselect = true,
|
||||||
};
|
};
|
||||||
@ -561,7 +561,7 @@ namespace Elwig.Windows {
|
|||||||
double totalNum = printNum + emailNum;
|
double totalNum = printNum + emailNum;
|
||||||
|
|
||||||
var email = memberDocs
|
var email = memberDocs
|
||||||
.Where(d => d.Docs.Count > 0 && d.Member.EmailAddresses.Count > 0 && (emailMode == 2 || (emailMode == 1 && d.Member.ContactViaEmail)))
|
.Where(d => d.Member.EmailAddresses.Count > 0 && (emailMode == 2 || (emailMode == 1 && d.Member.ContactViaEmail)))
|
||||||
.ToDictionary(d => d.Member, m => {
|
.ToDictionary(d => d.Member, m => {
|
||||||
var docs = m.Docs.Select(d => d.Doc).ToList();
|
var docs = m.Docs.Select(d => d.Doc).ToList();
|
||||||
foreach (var doc in docs) {
|
foreach (var doc in docs) {
|
||||||
|
@ -13,6 +13,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
@ -37,7 +38,14 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Window_Closing(object sender, CancelEventArgs evt) {
|
private void Window_Closing(object sender, CancelEventArgs evt) {
|
||||||
if (App.NumWindows > 1 && !App.ForceShutdown && !App.Current.Windows.Cast<Window>().Any(w => ((w as AdministrationWindow)?.IsEditing ?? false) || ((w as AdministrationWindow)?.IsCreating ?? false))) {
|
if (App.NumWindows > 1 && !App.ForceShutdown) {
|
||||||
|
foreach (var w in App.Current.Windows.Cast<Window>().Where(w => ((w as AdministrationWindow)?.IsEditing ?? false) || ((w as AdministrationWindow)?.IsCreating ?? false))) {
|
||||||
|
try {
|
||||||
|
w.Close();
|
||||||
|
} catch { }
|
||||||
|
}
|
||||||
|
Thread.Sleep(100);
|
||||||
|
if (App.NumWindows > 1 && !App.Current.Windows.Cast<Window>().Any(w => ((w as AdministrationWindow)?.IsEditing ?? false) || ((w as AdministrationWindow)?.IsCreating ?? false))) {
|
||||||
var res = MessageBox.Show("Es sind noch weitere Fenster geöffnet.\nSollen alle Fenster geschlossen werden?",
|
var res = MessageBox.Show("Es sind noch weitere Fenster geöffnet.\nSollen alle Fenster geschlossen werden?",
|
||||||
"Elwig beenden", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
"Elwig beenden", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
|
||||||
if (res != MessageBoxResult.Yes) {
|
if (res != MessageBoxResult.Yes) {
|
||||||
@ -47,6 +55,7 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async void Menu_Help_Update_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Help_Update_Click(object sender, RoutedEventArgs evt) {
|
||||||
await App.CheckForUpdates(true);
|
await App.CheckForUpdates(true);
|
||||||
@ -99,7 +108,7 @@ namespace Elwig.Windows {
|
|||||||
try {
|
try {
|
||||||
var d = new OpenFileDialog() {
|
var d = new OpenFileDialog() {
|
||||||
Title = "Export-Datei auswählen - Elwig",
|
Title = "Export-Datei auswählen - Elwig",
|
||||||
DefaultExt = ".elwig.zip",
|
DefaultExt = "elwig.zip",
|
||||||
Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
|
Filter = "Elwig-Export-Datei (*.elwig.zip)|*.elwig.zip",
|
||||||
Multiselect = true,
|
Multiselect = true,
|
||||||
};
|
};
|
||||||
@ -147,6 +156,8 @@ namespace Elwig.Windows {
|
|||||||
await ElwigData.Import(paths, ElwigData.ImportMode.FromBranches);
|
await ElwigData.Import(paths, ElwigData.ImportMode.FromBranches);
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
} catch (TaskCanceledException exc) {
|
||||||
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
@ -180,6 +191,8 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
} catch (HttpRequestException exc) {
|
} catch (HttpRequestException exc) {
|
||||||
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
} catch (TaskCanceledException exc) {
|
||||||
|
MessageBox.Show("Eventuell Internetverbindung prüfen!\n\n" + exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
} catch (Exception exc) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Lieferungen hochladen", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,11 @@
|
|||||||
Click="Menu_List_Order_Click"/>
|
Click="Menu_List_Order_Click"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem Header="Export">
|
<MenuItem Header="Export">
|
||||||
|
<MenuItem x:Name="Menu_Export_ExportSelected" Header="...von ausgewähltem Mitglied speichern..." IsEnabled="False"
|
||||||
|
Click="Menu_Export_ExportSelected_Click"/>
|
||||||
|
<MenuItem x:Name="Menu_Export_UploadSelected" Header="...von ausgewähltem Mitglied hochladen" IsEnabled="False"
|
||||||
|
Click="Menu_Export_UploadSelected_Click"/>
|
||||||
|
<Separator/>
|
||||||
<MenuItem x:Name="Menu_Export_ExportFilters" Header="...aus Filtern speichern..."
|
<MenuItem x:Name="Menu_Export_ExportFilters" Header="...aus Filtern speichern..."
|
||||||
Click="Menu_Export_ExportFilters_Click"/>
|
Click="Menu_Export_ExportFilters_Click"/>
|
||||||
<MenuItem x:Name="Menu_Export_UploadFilters" Header="...aus Filtern hochladen"
|
<MenuItem x:Name="Menu_Export_UploadFilters" Header="...aus Filtern hochladen"
|
||||||
|
@ -282,6 +282,13 @@ namespace Elwig.Windows {
|
|||||||
|
|
||||||
private async void MemberList_SelectionChanged(object sender, RoutedEventArgs evt) {
|
private async void MemberList_SelectionChanged(object sender, RoutedEventArgs evt) {
|
||||||
await RefreshInputs();
|
await RefreshInputs();
|
||||||
|
if (MemberList.SelectedItem is Member m) {
|
||||||
|
Menu_Export_ExportSelected.IsEnabled = !IsEditing && !IsCreating;
|
||||||
|
Menu_Export_UploadSelected.IsEnabled = !IsEditing && !IsCreating && App.Config.SyncUrl != null;
|
||||||
|
} else {
|
||||||
|
Menu_Export_ExportSelected.IsEnabled = false;
|
||||||
|
Menu_Export_UploadSelected.IsEnabled = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void ActiveMemberInput_Changed(object sender, RoutedEventArgs evt) {
|
private async void ActiveMemberInput_Changed(object sender, RoutedEventArgs evt) {
|
||||||
@ -551,32 +558,52 @@ namespace Elwig.Windows {
|
|||||||
await MemberService.GenerateCreditNote(m, (int)year, (int)avnr, ExportMode.Email);
|
await MemberService.GenerateCreditNote(m, (int)year, (int)avnr, ExportMode.Email);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_List_SaveActive_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(0, ExportMode.SaveList); }
|
private async void Menu_List_SaveActive_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_List_ShowActive_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(0, ExportMode.Show); }
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.SaveList);
|
||||||
private async void Menu_List_SavePdfActive_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(0, ExportMode.SavePdf); }
|
private async void Menu_List_ShowActive_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_List_PrintActive_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(0, ExportMode.Print); }
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.Show);
|
||||||
private async void Menu_List_SaveFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(1, ExportMode.SaveList); }
|
private async void Menu_List_SavePdfActive_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_List_ShowFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(1, ExportMode.Show); }
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.SavePdf);
|
||||||
private async void Menu_List_SavePdfFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(1, ExportMode.SavePdf); }
|
private async void Menu_List_PrintActive_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_List_PrintFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(1, ExportMode.Print); }
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.AllActive, ExportMode.Print);
|
||||||
private async void Menu_List_SaveAll_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(2, ExportMode.SaveList); }
|
private async void Menu_List_SaveFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_List_ShowAll_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(2, ExportMode.Show); }
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.SaveList);
|
||||||
private async void Menu_List_SavePdfAll_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(2, ExportMode.SavePdf); }
|
private async void Menu_List_ShowFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_List_PrintAll_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(2, ExportMode.Print); }
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Show);
|
||||||
|
private async void Menu_List_SavePdfFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.SavePdf);
|
||||||
|
private async void Menu_List_PrintFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Print);
|
||||||
|
private async void Menu_List_SaveAll_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.SaveList);
|
||||||
|
private async void Menu_List_ShowAll_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Show);
|
||||||
|
private async void Menu_List_SavePdfAll_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.SavePdf);
|
||||||
|
private async void Menu_List_PrintAll_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Print);
|
||||||
|
|
||||||
private async void Menu_Export_ExportAll_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(2, ExportMode.Export); }
|
private async void Menu_Export_ExportAll_Click(object sender, RoutedEventArgs evt) =>
|
||||||
private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) { await ViewModel.GenerateMemberList(1, ExportMode.Export); }
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Export);
|
||||||
|
private async void Menu_Export_ExportFilters_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Export);
|
||||||
|
private async void Menu_Export_ExportSelected_Click(object sender, RoutedEventArgs evt) =>
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.Selected, ExportMode.Export);
|
||||||
|
|
||||||
private async void Menu_Export_UploadAll_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Export_UploadAll_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (App.Config.SyncUrl == null) return;
|
if (App.Config.SyncUrl == null) return;
|
||||||
await ViewModel.GenerateMemberList(2, ExportMode.Upload);
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.All, ExportMode.Upload);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Menu_Export_UploadFilters_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_Export_UploadFilters_Click(object sender, RoutedEventArgs evt) {
|
||||||
if (App.Config.SyncUrl == null) return;
|
if (App.Config.SyncUrl == null) return;
|
||||||
await ViewModel.GenerateMemberList(1, ExportMode.Upload);
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.FromFilters, ExportMode.Upload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void Menu_Export_UploadSelected_Click(object sender, RoutedEventArgs evt) {
|
||||||
|
if (App.Config.SyncUrl == null) return;
|
||||||
|
await ViewModel.GenerateMemberList(MemberService.ExportSubject.Selected, ExportMode.Upload);
|
||||||
|
}
|
||||||
|
|
||||||
private async void Menu_List_Order_Click(object sender, RoutedEventArgs evt) {
|
private async void Menu_List_Order_Click(object sender, RoutedEventArgs evt) {
|
||||||
Menu_List.IsSubmenuOpen = true;
|
Menu_List.IsSubmenuOpen = true;
|
||||||
|
Reference in New Issue
Block a user