MailWindow: Add try/catch block around document creation

This commit is contained in:
2024-03-02 18:57:03 +01:00
parent 9139557cc4
commit 376af72700

View File

@ -427,41 +427,46 @@ namespace Elwig.Windows {
var memberDocs = recipients.Select(m => new {
Member = m,
Docs = docs.SelectMany<SelectedDoc, GeneratedDoc>(doc => {
if (doc.Type == DocType.Custom) {
return [new GeneratedDoc((string)doc.Details!)];
} else if (doc.Type == DocType.MemberDataSheet) {
return [new GeneratedDoc(new MemberDataSheet(m, Context))];
} else if (doc.Type == DocType.DeliveryConfirmation) {
var details = ((int, bool))doc.Details!;
var year = details.Item1;
var include = details.Item2;
DeliveryConfirmationDeliveryData data;
if (dcData[year].TryGetValue(m.MgNr, out var d)) {
data = d;
} else if (include) {
data = DeliveryConfirmationDeliveryData.CreateEmpty(year, m);
} else {
return [];
}
return [new GeneratedDoc(new DeliveryConfirmation(Context, year, m, data))];
} else if (doc.Type == DocType.CreditNote) {
var details = ((int, int))doc.Details!;
var year = details.Item1;
var avnr = details.Item2;
var data = cnData[(year, avnr)];
try {
return [new GeneratedDoc(new CreditNote(
try {
if (doc.Type == DocType.Custom) {
return [new GeneratedDoc((string)doc.Details!)];
} else if (doc.Type == DocType.MemberDataSheet) {
return [new GeneratedDoc(new MemberDataSheet(m, Context))];
} else if (doc.Type == DocType.DeliveryConfirmation) {
var details = ((int, bool))doc.Details!;
var year = details.Item1;
var include = details.Item2;
DeliveryConfirmationDeliveryData data;
if (dcData[year].TryGetValue(m.MgNr, out var d)) {
data = d;
} else if (include) {
data = DeliveryConfirmationDeliveryData.CreateEmpty(year, m);
} else {
return [];
}
return [new GeneratedDoc(new DeliveryConfirmation(Context, year, m, data))];
} else if (doc.Type == DocType.CreditNote) {
var details = ((int, int))doc.Details!;
var year = details.Item1;
var avnr = details.Item2;
var data = cnData[(year, avnr)];
try {
return [new GeneratedDoc(new CreditNote(
Context, data.Item2[m.MgNr], data.Item1[m.MgNr],
data.Item3.ConsiderContractPenalties,
data.Item3.ConsiderTotalPenalty,
data.Item3.ConsiderAutoBusinessShares,
Context.GetMemberUnderDelivery(year, m.MgNr).GetAwaiter().GetResult()
))];
} catch (Exception) {
return [];
} catch (Exception) {
return [];
}
} else {
throw new NotImplementedException("Invalid DocType");
}
} else {
throw new NotImplementedException("Invalid DocType");
} catch (Exception exc) {
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return [];
}
}).ToList()
}).ToList();