diff --git a/Elwig/Helpers/ClientParameters.cs b/Elwig/Helpers/ClientParameters.cs index 873c130..2192a8d 100644 --- a/Elwig/Helpers/ClientParameters.cs +++ b/Elwig/Helpers/ClientParameters.cs @@ -67,6 +67,12 @@ namespace Elwig.Helpers { public string? TextEmailSubject; public string? TextEmailBody; + public bool MailIncludeNonDeliverers; + public bool MailDoublePaged; + public int MailSendPostal; + public int MailSendEmail; + public int MailOrdering; + public int ExportEbicsVersion; public int ExportEbicsAddress; @@ -117,7 +123,7 @@ namespace Elwig.Helpers { case "KMW/5": ModeWineQualityStatistics = 3; 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 "NAME": OrderingMemberList = 1; break; case "KG": OrderingMemberList = 2; break; @@ -135,6 +141,31 @@ namespace Elwig.Helpers { TextEmailBody = parameters.GetValueOrDefault("TEXT_EMAIL_BODY"); 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; switch (parameters.GetValueOrDefault("EXPORT_EBICS_ADDRESS", "FULL")?.ToUpper()) { case "OMIT": ExportEbicsAddress = 0; break; @@ -177,6 +208,25 @@ namespace Elwig.Helpers { case 1: orderingMemberList = "NAME"; 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"; switch (ExportEbicsAddress) { case 0: exportEbicsAddress = "OMIT"; break; @@ -212,6 +262,11 @@ namespace Elwig.Helpers { ("TEXT_CREDITNOTE", TextCreditNote), ("TEXT_EMAIL_SUBJECT", TextEmailSubject), ("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_ADDRESS", exportEbicsAddress), ("AUTOADJUST_BUSINESSSHARES", autoAdjust), diff --git a/Elwig/Windows/MailWindow.xaml.cs b/Elwig/Windows/MailWindow.xaml.cs index 473f0dd..ef6737f 100644 --- a/Elwig/Windows/MailWindow.xaml.cs +++ b/Elwig/Windows/MailWindow.xaml.cs @@ -122,6 +122,26 @@ namespace Elwig.Windows { DeliveryConfirmationFooterInput.Text = App.Client.TextDeliveryConfirmation; 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; PostalSender2.Text = App.Client.Sender2; PostalLocation.Text = App.BranchLocation; @@ -312,7 +332,7 @@ namespace Elwig.Windows { if (idx == 0) { SelectedDocs.Add(new(DocType.MemberDataSheet, s, null)); } else if (idx == 1) { - SelectedDocs.Add(new(DocType.DeliveryConfirmation, s, (Year, DocumentNonDeliverersInput.IsChecked == true))); + SelectedDocs.Add(new(DocType.DeliveryConfirmation, s, Year)); RecipientsDeliveryMembersInput.IsChecked = true; } else if (idx >= 2) { var name = s.Split(" – ")[^1]; @@ -449,18 +469,26 @@ namespace Elwig.Windows { } 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); EmailWishCount = Recipients.Count(m => m.EmailAddresses.Count > 0 && m.ContactViaEmail); PostalAllCount = Recipients.Count(); PostalWishCount = Recipients.Count(m => m.ContactViaPost); - var m = EmailAllInput.IsChecked == true ? 3 : EmailWishInput.IsChecked == true ? 2 : 1; - PostalNoEmailCount = PostalAllCount - (m == 3 ? EmailAllCount : m == 2 ? EmailWishCount : 0); + var countEmail = (modeEmail == 2 ? EmailAllCount : modeEmail == 1 ? EmailWishCount : 0); + PostalNoEmailCount = PostalAllCount - countEmail; ResetDocuments(); } - private async Task UpdateTextParameters() { + private async Task UpdateClientParameters() { var changed = false; + var dcInclude = DocumentNonDeliverersInput.IsChecked ?? false; + if (dcInclude != App.Client.MailIncludeNonDeliverers) { + App.Client.MailIncludeNonDeliverers = dcInclude; + changed = true; + } + var dcText = DeliveryConfirmationFooterInput.Text.Trim(); if (dcText.Length == 0) dcText = null; if (dcText != App.Client.TextDeliveryConfirmation) { @@ -475,6 +503,53 @@ namespace Elwig.Windows { 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(); if (emailSubject.Length == 0) emailSubject = null; if (emailSubject != App.Client.TextEmailSubject) { @@ -519,7 +594,7 @@ namespace Elwig.Windows { GenerateButton.IsEnabled = false; DisposeDocs(); - await UpdateTextParameters(); + await UpdateClientParameters(); using var ctx = new AppDbContext(); @@ -562,8 +637,7 @@ namespace Elwig.Windows { Dictionary<(int, int), (IDictionary, IDictionary, BillingData)> cnData = []; foreach (var doc in docs) { if (doc.Type == DocType.DeliveryConfirmation) { - var details = ((int, bool))doc.Details!; - var year = details.Item1; + var year = (int)doc.Details!; try { var b = new Billing(year); @@ -610,13 +684,11 @@ namespace Elwig.Windows { } else if (doc.Type == DocType.MemberDataSheet) { return [new GeneratedDoc(new MemberDataSheet(m, ctx) { Date = postalDate })]; } else if (doc.Type == DocType.DeliveryConfirmation) { - var details = ((int, bool))doc.Details!; - var year = details.Item1; - var include = details.Item2; + var year = (int)doc.Details!; DeliveryConfirmationDeliveryData data; if (dcData[year].TryGetValue(m.MgNr, out var d)) { data = d; - } else if (include) { + } else if (App.Client.MailIncludeNonDeliverers) { data = DeliveryConfirmationDeliveryData.CreateEmpty(year, m); } else { return []; @@ -727,6 +799,8 @@ namespace Elwig.Windows { Mouse.OverrideCursor = null; return; } + } else { + PrintDocument = null; } ProgressBar.Value = 100.0;