MailWindow: Fix small bugs and persist all settings
All checks were successful
Test / Run tests (push) Successful in 1m54s
All checks were successful
Test / Run tests (push) Successful in 1m54s
This commit is contained in:
@ -67,6 +67,12 @@ namespace Elwig.Helpers {
|
|||||||
public string? TextEmailSubject;
|
public string? TextEmailSubject;
|
||||||
public string? TextEmailBody;
|
public string? TextEmailBody;
|
||||||
|
|
||||||
|
public bool MailIncludeNonDeliverers;
|
||||||
|
public bool MailDoublePaged;
|
||||||
|
public int MailSendPostal;
|
||||||
|
public int MailSendEmail;
|
||||||
|
public int MailOrdering;
|
||||||
|
|
||||||
public int ExportEbicsVersion;
|
public int ExportEbicsVersion;
|
||||||
public int ExportEbicsAddress;
|
public int ExportEbicsAddress;
|
||||||
|
|
||||||
@ -117,7 +123,7 @@ namespace Elwig.Helpers {
|
|||||||
case "KMW/5": ModeWineQualityStatistics = 3; break;
|
case "KMW/5": ModeWineQualityStatistics = 3; break;
|
||||||
case "KMW/10": ModeWineQualityStatistics = 4; break;
|
case "KMW/10": ModeWineQualityStatistics = 4; break;
|
||||||
}
|
}
|
||||||
switch (parameters.GetValueOrDefault("ORDERING_MEMBERLIST", "")?.ToUpper()) {
|
switch (parameters.GetValueOrDefault("ORDERING_MEMBERLIST", "MGNR")?.ToUpper()) {
|
||||||
case "MGNR": OrderingMemberList = 0; break;
|
case "MGNR": OrderingMemberList = 0; break;
|
||||||
case "NAME": OrderingMemberList = 1; break;
|
case "NAME": OrderingMemberList = 1; break;
|
||||||
case "KG": OrderingMemberList = 2; break;
|
case "KG": OrderingMemberList = 2; break;
|
||||||
@ -135,6 +141,31 @@ namespace Elwig.Helpers {
|
|||||||
TextEmailBody = parameters.GetValueOrDefault("TEXT_EMAIL_BODY");
|
TextEmailBody = parameters.GetValueOrDefault("TEXT_EMAIL_BODY");
|
||||||
if (TextEmailBody == "") TextEmailBody = null;
|
if (TextEmailBody == "") TextEmailBody = null;
|
||||||
|
|
||||||
|
MailIncludeNonDeliverers = (parameters.GetValueOrDefault("MAIL_INCLUDE_NON_DELIVERERS")?.ToUpper()) switch {
|
||||||
|
"1" or "TRUE" or "YES" or "JA" => true,
|
||||||
|
_ => false,
|
||||||
|
};
|
||||||
|
MailDoublePaged = (parameters.GetValueOrDefault("MAIL_DOUBLE_PAGED")?.ToUpper()) switch {
|
||||||
|
"1" or "TRUE" or "YES" or "JA" => true,
|
||||||
|
_ => false,
|
||||||
|
};
|
||||||
|
switch (parameters.GetValueOrDefault("MAIL_SEND_POSTAL", "WISH")?.ToUpper()) {
|
||||||
|
case "ALL": MailSendPostal = 3; break;
|
||||||
|
case "WISH": MailSendPostal = 2; break;
|
||||||
|
case "NO_EMAIL": MailSendPostal = 1; break;
|
||||||
|
case "NONE": MailSendPostal = 0; break;
|
||||||
|
}
|
||||||
|
switch (parameters.GetValueOrDefault("MAIL_SEND_EMAIL", "WISH")?.ToUpper()) {
|
||||||
|
case "ALL": MailSendEmail = 2; break;
|
||||||
|
case "WISH": MailSendEmail = 1; break;
|
||||||
|
case "NONE": MailSendEmail = 0; break;
|
||||||
|
}
|
||||||
|
switch (parameters.GetValueOrDefault("MAIL_ORDERING", "MGNR")?.ToUpper()) {
|
||||||
|
case "MGNR": MailOrdering = 0; break;
|
||||||
|
case "NAME": MailOrdering = 1; break;
|
||||||
|
case "PLZ": MailOrdering = 2; break;
|
||||||
|
}
|
||||||
|
|
||||||
ExportEbicsVersion = int.TryParse(parameters.GetValueOrDefault("EXPORT_EBICS_VERSION"), out var v) ? v : 9;
|
ExportEbicsVersion = int.TryParse(parameters.GetValueOrDefault("EXPORT_EBICS_VERSION"), out var v) ? v : 9;
|
||||||
switch (parameters.GetValueOrDefault("EXPORT_EBICS_ADDRESS", "FULL")?.ToUpper()) {
|
switch (parameters.GetValueOrDefault("EXPORT_EBICS_ADDRESS", "FULL")?.ToUpper()) {
|
||||||
case "OMIT": ExportEbicsAddress = 0; break;
|
case "OMIT": ExportEbicsAddress = 0; break;
|
||||||
@ -177,6 +208,25 @@ namespace Elwig.Helpers {
|
|||||||
case 1: orderingMemberList = "NAME"; break;
|
case 1: orderingMemberList = "NAME"; break;
|
||||||
case 2: orderingMemberList = "KG"; break;
|
case 2: orderingMemberList = "KG"; break;
|
||||||
}
|
}
|
||||||
|
string mailSendPostal = "MGNR";
|
||||||
|
switch (MailOrdering) {
|
||||||
|
case 0: mailSendPostal = "NONE"; break;
|
||||||
|
case 1: mailSendPostal = "NO_EMAIL"; break;
|
||||||
|
case 2: mailSendPostal = "WISH"; break;
|
||||||
|
case 3: mailSendPostal = "ALL"; break;
|
||||||
|
}
|
||||||
|
string mailSendEmail = "MGNR";
|
||||||
|
switch (MailOrdering) {
|
||||||
|
case 0: mailSendEmail = "NONE"; break;
|
||||||
|
case 1: mailSendEmail = "WISH"; break;
|
||||||
|
case 2: mailSendEmail = "ALL"; break;
|
||||||
|
}
|
||||||
|
string mailOrdering = "MGNR";
|
||||||
|
switch (MailOrdering) {
|
||||||
|
case 0: mailOrdering = "MGNR"; break;
|
||||||
|
case 1: mailOrdering = "NAME"; break;
|
||||||
|
case 2: mailOrdering = "PLZ"; break;
|
||||||
|
}
|
||||||
string exportEbicsAddress = "FULL";
|
string exportEbicsAddress = "FULL";
|
||||||
switch (ExportEbicsAddress) {
|
switch (ExportEbicsAddress) {
|
||||||
case 0: exportEbicsAddress = "OMIT"; break;
|
case 0: exportEbicsAddress = "OMIT"; break;
|
||||||
@ -212,6 +262,11 @@ namespace Elwig.Helpers {
|
|||||||
("TEXT_CREDITNOTE", TextCreditNote),
|
("TEXT_CREDITNOTE", TextCreditNote),
|
||||||
("TEXT_EMAIL_SUBJECT", TextEmailSubject),
|
("TEXT_EMAIL_SUBJECT", TextEmailSubject),
|
||||||
("TEXT_EMAIL_BODY", TextEmailBody),
|
("TEXT_EMAIL_BODY", TextEmailBody),
|
||||||
|
("MAIL_INCLUDE_NON_DELIVERERS", MailIncludeNonDeliverers ? "YES" : "NO"),
|
||||||
|
("MAIL_DOUBLE_PAGED", MailDoublePaged ? "YES" : "NO"),
|
||||||
|
("MAIL_SEND_POSTAL", mailSendPostal),
|
||||||
|
("MAIL_SEND_EMAIL", mailSendEmail),
|
||||||
|
("MAIL_ORDERING", mailOrdering),
|
||||||
("EXPORT_EBICS_VERSION", ExportEbicsVersion.ToString()),
|
("EXPORT_EBICS_VERSION", ExportEbicsVersion.ToString()),
|
||||||
("EXPORT_EBICS_ADDRESS", exportEbicsAddress),
|
("EXPORT_EBICS_ADDRESS", exportEbicsAddress),
|
||||||
("AUTOADJUST_BUSINESSSHARES", autoAdjust),
|
("AUTOADJUST_BUSINESSSHARES", autoAdjust),
|
||||||
|
@ -122,6 +122,26 @@ namespace Elwig.Windows {
|
|||||||
DeliveryConfirmationFooterInput.Text = App.Client.TextDeliveryConfirmation;
|
DeliveryConfirmationFooterInput.Text = App.Client.TextDeliveryConfirmation;
|
||||||
CreditNoteFooterInput.Text = App.Client.TextCreditNote;
|
CreditNoteFooterInput.Text = App.Client.TextCreditNote;
|
||||||
|
|
||||||
|
DocumentNonDeliverersInput.IsChecked = App.Client.MailIncludeNonDeliverers;
|
||||||
|
DoublePagedInput.IsChecked = App.Client.MailDoublePaged;
|
||||||
|
|
||||||
|
switch (App.Client.MailSendPostal) {
|
||||||
|
case 0: PostalNobodyInput.IsChecked = true; break;
|
||||||
|
case 1: PostalNoEmailInput.IsChecked = true; break;
|
||||||
|
case 2: PostalWishInput.IsChecked = true; break;
|
||||||
|
case 3: PostalAllInput.IsChecked = true; break;
|
||||||
|
}
|
||||||
|
switch (App.Client.MailSendEmail) {
|
||||||
|
case 0: EmailNobodyInput.IsChecked = true; break;
|
||||||
|
case 1: EmailWishInput.IsChecked = true; break;
|
||||||
|
case 2: EmailAllInput.IsChecked = true; break;
|
||||||
|
}
|
||||||
|
switch (App.Client.MailOrdering) {
|
||||||
|
case 0: OrderMgNrInput.IsChecked = true; break;
|
||||||
|
case 1: OrderNameInput.IsChecked = true; break;
|
||||||
|
case 2: OrderPlzInput.IsChecked = true; break;
|
||||||
|
}
|
||||||
|
|
||||||
PostalSender1.Text = App.Client.Sender1;
|
PostalSender1.Text = App.Client.Sender1;
|
||||||
PostalSender2.Text = App.Client.Sender2;
|
PostalSender2.Text = App.Client.Sender2;
|
||||||
PostalLocation.Text = App.BranchLocation;
|
PostalLocation.Text = App.BranchLocation;
|
||||||
@ -312,7 +332,7 @@ namespace Elwig.Windows {
|
|||||||
if (idx == 0) {
|
if (idx == 0) {
|
||||||
SelectedDocs.Add(new(DocType.MemberDataSheet, s, null));
|
SelectedDocs.Add(new(DocType.MemberDataSheet, s, null));
|
||||||
} else if (idx == 1) {
|
} else if (idx == 1) {
|
||||||
SelectedDocs.Add(new(DocType.DeliveryConfirmation, s, (Year, DocumentNonDeliverersInput.IsChecked == true)));
|
SelectedDocs.Add(new(DocType.DeliveryConfirmation, s, Year));
|
||||||
RecipientsDeliveryMembersInput.IsChecked = true;
|
RecipientsDeliveryMembersInput.IsChecked = true;
|
||||||
} else if (idx >= 2) {
|
} else if (idx >= 2) {
|
||||||
var name = s.Split(" – ")[^1];
|
var name = s.Split(" – ")[^1];
|
||||||
@ -449,18 +469,26 @@ namespace Elwig.Windows {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void UpdatePostalEmailRecipients() {
|
private void UpdatePostalEmailRecipients() {
|
||||||
|
var modeEmail = EmailAllInput.IsChecked == true ? 2 : EmailWishInput.IsChecked == true ? 1 : 0;
|
||||||
|
var modePostal = PostalAllInput.IsChecked == true ? 3 : PostalWishInput.IsChecked == true ? 2 : PostalNoEmailInput.IsChecked == true ? 1 : 0;
|
||||||
EmailAllCount = Recipients.Count(m => m.EmailAddresses.Count > 0);
|
EmailAllCount = Recipients.Count(m => m.EmailAddresses.Count > 0);
|
||||||
EmailWishCount = Recipients.Count(m => m.EmailAddresses.Count > 0 && m.ContactViaEmail);
|
EmailWishCount = Recipients.Count(m => m.EmailAddresses.Count > 0 && m.ContactViaEmail);
|
||||||
PostalAllCount = Recipients.Count();
|
PostalAllCount = Recipients.Count();
|
||||||
PostalWishCount = Recipients.Count(m => m.ContactViaPost);
|
PostalWishCount = Recipients.Count(m => m.ContactViaPost);
|
||||||
var m = EmailAllInput.IsChecked == true ? 3 : EmailWishInput.IsChecked == true ? 2 : 1;
|
var countEmail = (modeEmail == 2 ? EmailAllCount : modeEmail == 1 ? EmailWishCount : 0);
|
||||||
PostalNoEmailCount = PostalAllCount - (m == 3 ? EmailAllCount : m == 2 ? EmailWishCount : 0);
|
PostalNoEmailCount = PostalAllCount - countEmail;
|
||||||
ResetDocuments();
|
ResetDocuments();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task UpdateTextParameters() {
|
private async Task UpdateClientParameters() {
|
||||||
var changed = false;
|
var changed = false;
|
||||||
|
|
||||||
|
var dcInclude = DocumentNonDeliverersInput.IsChecked ?? false;
|
||||||
|
if (dcInclude != App.Client.MailIncludeNonDeliverers) {
|
||||||
|
App.Client.MailIncludeNonDeliverers = dcInclude;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
var dcText = DeliveryConfirmationFooterInput.Text.Trim();
|
var dcText = DeliveryConfirmationFooterInput.Text.Trim();
|
||||||
if (dcText.Length == 0) dcText = null;
|
if (dcText.Length == 0) dcText = null;
|
||||||
if (dcText != App.Client.TextDeliveryConfirmation) {
|
if (dcText != App.Client.TextDeliveryConfirmation) {
|
||||||
@ -475,6 +503,53 @@ namespace Elwig.Windows {
|
|||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sendPostal = 0;
|
||||||
|
if (PostalAllInput.IsChecked ?? false) {
|
||||||
|
sendPostal = 3;
|
||||||
|
} else if (PostalWishInput.IsChecked ?? false) {
|
||||||
|
sendPostal = 2;
|
||||||
|
} else if (PostalNoEmailInput.IsChecked ?? false) {
|
||||||
|
sendPostal = 1;
|
||||||
|
}
|
||||||
|
if (sendPostal != App.Client.MailSendPostal) {
|
||||||
|
App.Client.MailSendPostal = sendPostal;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sendEmail = 0;
|
||||||
|
if (EmailAllInput.IsChecked ?? false) {
|
||||||
|
sendEmail = 2;
|
||||||
|
} else if (EmailWishInput.IsChecked ?? false) {
|
||||||
|
sendEmail = 1;
|
||||||
|
}
|
||||||
|
if (sendEmail != App.Client.MailSendEmail) {
|
||||||
|
App.Client.MailSendEmail = sendEmail;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var ordering = 0;
|
||||||
|
if (OrderNameInput.IsChecked ?? false) {
|
||||||
|
ordering = 1;
|
||||||
|
} else if (OrderPlzInput.IsChecked ?? false) {
|
||||||
|
ordering = 2;
|
||||||
|
}
|
||||||
|
if (ordering != App.Client.MailOrdering) {
|
||||||
|
App.Client.MailOrdering = ordering;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var mailDoublePaged = DoublePagedInput.IsChecked ?? false;
|
||||||
|
if (mailDoublePaged != App.Client.MailDoublePaged) {
|
||||||
|
App.Client.MailDoublePaged = mailDoublePaged;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sender2 = PostalSender2.Text.Trim();
|
||||||
|
if (sender2 != App.Client.Sender2) {
|
||||||
|
App.Client.Sender2 = sender2;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
var emailSubject = EmailSubjectInput.Text.Trim();
|
var emailSubject = EmailSubjectInput.Text.Trim();
|
||||||
if (emailSubject.Length == 0) emailSubject = null;
|
if (emailSubject.Length == 0) emailSubject = null;
|
||||||
if (emailSubject != App.Client.TextEmailSubject) {
|
if (emailSubject != App.Client.TextEmailSubject) {
|
||||||
@ -519,7 +594,7 @@ namespace Elwig.Windows {
|
|||||||
GenerateButton.IsEnabled = false;
|
GenerateButton.IsEnabled = false;
|
||||||
|
|
||||||
DisposeDocs();
|
DisposeDocs();
|
||||||
await UpdateTextParameters();
|
await UpdateClientParameters();
|
||||||
|
|
||||||
using var ctx = new AppDbContext();
|
using var ctx = new AppDbContext();
|
||||||
|
|
||||||
@ -562,8 +637,7 @@ namespace Elwig.Windows {
|
|||||||
Dictionary<(int, int), (IDictionary<int, CreditNoteDeliveryData>, IDictionary<int, PaymentMember>, BillingData)> cnData = [];
|
Dictionary<(int, int), (IDictionary<int, CreditNoteDeliveryData>, IDictionary<int, PaymentMember>, BillingData)> cnData = [];
|
||||||
foreach (var doc in docs) {
|
foreach (var doc in docs) {
|
||||||
if (doc.Type == DocType.DeliveryConfirmation) {
|
if (doc.Type == DocType.DeliveryConfirmation) {
|
||||||
var details = ((int, bool))doc.Details!;
|
var year = (int)doc.Details!;
|
||||||
var year = details.Item1;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var b = new Billing(year);
|
var b = new Billing(year);
|
||||||
@ -610,13 +684,11 @@ namespace Elwig.Windows {
|
|||||||
} else if (doc.Type == DocType.MemberDataSheet) {
|
} else if (doc.Type == DocType.MemberDataSheet) {
|
||||||
return [new GeneratedDoc(new MemberDataSheet(m, ctx) { Date = postalDate })];
|
return [new GeneratedDoc(new MemberDataSheet(m, ctx) { Date = postalDate })];
|
||||||
} else if (doc.Type == DocType.DeliveryConfirmation) {
|
} else if (doc.Type == DocType.DeliveryConfirmation) {
|
||||||
var details = ((int, bool))doc.Details!;
|
var year = (int)doc.Details!;
|
||||||
var year = details.Item1;
|
|
||||||
var include = details.Item2;
|
|
||||||
DeliveryConfirmationDeliveryData data;
|
DeliveryConfirmationDeliveryData data;
|
||||||
if (dcData[year].TryGetValue(m.MgNr, out var d)) {
|
if (dcData[year].TryGetValue(m.MgNr, out var d)) {
|
||||||
data = d;
|
data = d;
|
||||||
} else if (include) {
|
} else if (App.Client.MailIncludeNonDeliverers) {
|
||||||
data = DeliveryConfirmationDeliveryData.CreateEmpty(year, m);
|
data = DeliveryConfirmationDeliveryData.CreateEmpty(year, m);
|
||||||
} else {
|
} else {
|
||||||
return [];
|
return [];
|
||||||
@ -727,6 +799,8 @@ namespace Elwig.Windows {
|
|||||||
Mouse.OverrideCursor = null;
|
Mouse.OverrideCursor = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
PrintDocument = null;
|
||||||
}
|
}
|
||||||
ProgressBar.Value = 100.0;
|
ProgressBar.Value = 100.0;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user