From 413004d161a319a83646a76a14235822f2feb81c Mon Sep 17 00:00:00 2001 From: Elias Fierke Date: Wed, 10 Jun 2026 14:55:17 +0200 Subject: [PATCH] [feat:] split into german and international addresses --- Tasks/PdfBuilder.cs | 59 +++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/Tasks/PdfBuilder.cs b/Tasks/PdfBuilder.cs index ef6a3a1..58bbb7a 100644 --- a/Tasks/PdfBuilder.cs +++ b/Tasks/PdfBuilder.cs @@ -101,6 +101,12 @@ public class PdfBuilder { // Find the AddressSet by ID var addressSet = Settings._instance.addressSets.GetAddressSetByID(addressSetId); + // foreach (var pers in addressSet.KasPersons) + // { + // AddressCreator.CreateFinalMarkdownString(pers.id); + // } + // addressSet.KasPersons = addressSet.KasPersons.OrderBy(x => x.IsGermany()).ThenBy(y => y.used_plz).ToList(); + if (addressSet == null) throw new ArgumentException($"AddressSet with ID {addressSetId} not found"); @@ -109,7 +115,8 @@ public class PdfBuilder // Generate markdown addresses from all KasPersons in the set //var addresses = new string?[addressSet.KasPersons.Count]; - var addresses = new List(); + var addresses_german = new List(); + var addresses_inter = new List(); // find customer (owner) to include sender_address string senderLine = null; @@ -124,28 +131,50 @@ public class PdfBuilder senderLine = null; } - for (var i = 0; i < addressSet.KasPersons.Count; i++) + for (var i = 0; i < addressSet.KasPersons.Count; i++) { + if (!addressSet.KasPersons[i].IsGermany()) continue; var addr = AddressCreator.CreateFinalMarkdownString(addressSet.KasPersons[i].id); if (string.IsNullOrWhiteSpace(addr)) continue; if (!string.IsNullOrEmpty(senderLine)) - addresses.Add(senderLine + (addr ?? "")); + addresses_german.Add(senderLine + (addr ?? "")); else - addresses.Add(addr); + addresses_german.Add(addr); } + + for (var i = 0; i < addressSet.KasPersons.Count; i++) + { + if (addressSet.KasPersons[i].IsGermany()) continue; + var addr = AddressCreator.CreateFinalMarkdownString(addressSet.KasPersons[i].id); + if (string.IsNullOrWhiteSpace(addr)) continue; + if (!string.IsNullOrEmpty(senderLine)) + addresses_inter.Add(senderLine + (addr ?? "")); + else + addresses_inter.Add(addr); + } + + - if (addresses.Count == 0) - { - MessageBox.Show(MainWindow._instance, "Keine validen Adressen konnten generiert werden. Abbruch.", "Fehler"); - return; - } - CreateAddressLabelPdfWithPlaceholder(addresses, placeholderText, outputPath); + if (addresses_german.Count == 0 && addresses_inter.Count == 0) + { + MessageBox.Show(MainWindow._instance, "Keine validen Adressen konnten generiert werden. Abbruch.", "Fehler"); + return; + } + + string output_inter = outputPath.Replace(".pdf", "-internation.pdf"); + + if(addresses_german.Count > 0) CreateAddressLabelPdfWithPlaceholder(addresses_german, placeholderText, outputPath); + if(addresses_inter.Count > 0) CreateAddressLabelPdfWithPlaceholder(addresses_inter, placeholderText, outputPath); - if (_settings.exportRunningSheets) - { - ExportRunningSheets(addressSetId, outputPath); - } - CreateAddressLabelPdfWithPlaceholder(addresses, placeholderText, outputPath); + if (_settings.exportRunningSheets) + { + ExportRunningSheets(addressSetId, outputPath); + } + //CreateAddressLabelPdfWithPlaceholder(addresses_german, placeholderText, outputPath); + //CreateAddressLabelPdfWithPlaceholder(addresses_inter, placeholderText, output_inter); + + + } catch (Exception ex) {