From f80b2bb0a7b52a71fa02b23f02081f5e918d40f3 Mon Sep 17 00:00:00 2001 From: Rene Evertz Date: Wed, 18 Dec 2024 11:52:17 +0100 Subject: [PATCH] Protokoll wird erst nach erfolgreicher Erstellung gespeichert --- Dakota/Models/Daten/Datenelement.cs | 32 +++---- .../AccountingServiceImp.cs | 91 ++++++++++--------- 2 files changed, 64 insertions(+), 59 deletions(-) diff --git a/Dakota/Models/Daten/Datenelement.cs b/Dakota/Models/Daten/Datenelement.cs index cc493c670..14d4d5195 100644 --- a/Dakota/Models/Daten/Datenelement.cs +++ b/Dakota/Models/Daten/Datenelement.cs @@ -85,30 +85,30 @@ namespace Dakota.Models.Daten } public void SetValue(string value) { + if (value is null) + return; + + value = value.Trim(); + + if (value.Length < MinStellen) + { + throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben"); + } + + if (value.Length > MaxStellen) + { + throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben"); + } + try { - if (value is null) - return; - - if (value.Length < MinStellen) - { - throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben"); - } - - if (value.Length > MaxStellen) - { - throw new GkvException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben"); - } - var mod_value = DakotaUtils.ClearTextString(value); _Value = mod_value; } catch (Exception e) { - var msg = e.ToString(); - - throw new GkvException(msg, $"Fehler bei Feld {Title}"); + throw new Exception($"Fehler bei Feld {Title}", e); } } } diff --git a/Service/ServiceImplementations/AccountingServiceImp.cs b/Service/ServiceImplementations/AccountingServiceImp.cs index 6fd7863e3..1ba283a37 100644 --- a/Service/ServiceImplementations/AccountingServiceImp.cs +++ b/Service/ServiceImplementations/AccountingServiceImp.cs @@ -669,18 +669,18 @@ namespace BeWo.Service.ServiceImplementations } } - public List UpdateServiceInvoices(List invoices) - { - try - { - var acc = PluginLoader.FindClass(); - return acc.UpdateServiceInvoices(invoices); - } - catch (Exception e) - { - throw Utils.CreateBeWoFaultException(e); - } - } + public List UpdateServiceInvoices(List invoices) + { + try + { + var acc = PluginLoader.FindClass(); + return acc.UpdateServiceInvoices(invoices); + } + catch (Exception e) + { + throw Utils.CreateBeWoFaultException(e); + } + } public void UpdateSettlementInvoice(List invoices) { @@ -928,24 +928,26 @@ namespace BeWo.Service.ServiceImplementations return response; } - var protokoll = new GkvTransferProtokoll + var protokoll = CreateGkvTransferProtokoll(entity, out var error); + if (error is object) { - ErstelltAm = DateTime.Now, - GkvAbrechnungOid = entity.Oid.Value - }; + MailUtils.SendGkvModuleErrorMail("SendNewGkvAbrechnung - CreateGkvTransferProtokoll", error, Tenant); + + response.TitleMessage = "Protokoll Erstellung"; + response.Message = error; + return response; + } if (entity.GkvTransferProtokolle is null) entity.GkvTransferProtokolle = new List(); + entity.GkvTransferProtokolle.Add(protokoll); + + // Protokoll braucht Oid + DAOFactory.GenericDAO.Update(entity); + try { - CreateGkvTransferProtokoll(oid, entity, protokoll); - - entity.GkvTransferProtokolle.Add(protokoll); - - // Protokoll braucht Oid - DAOFactory.GenericDAO.Update(entity); - var app8_response = SendApp8SendNewRequest(protokoll); var app8_protokoll = app8_response.GkvTransferProtokollDC; @@ -1006,7 +1008,7 @@ namespace BeWo.Service.ServiceImplementations { var orgas = DAOFactory.SearchDAO.GetAllOrganisationByIKKrankenkasse(req.IKKrankenkasse); - if(req.OrganisationOid is long oid) + if (req.OrganisationOid is long oid) { orgas.RemoveAll(x => x.Oid == oid); } @@ -1026,8 +1028,16 @@ namespace BeWo.Service.ServiceImplementations } } - private void CreateGkvTransferProtokoll(long oid, GkvAbrechnung gkvAbrechnung, GkvTransferProtokoll protokoll) + private GkvTransferProtokoll CreateGkvTransferProtokoll(GkvAbrechnung gkvAbrechnung, out string error) { + var protokoll = new GkvTransferProtokoll + { + ErstelltAm = DateTime.Now, + GkvAbrechnungOid = gkvAbrechnung.Oid.Value + }; + + error = null; + try { ValidatorExtended.ValidateGkvAbrechnung(gkvAbrechnung, gkvAbrechnung.InvoiceBases); @@ -1046,9 +1056,6 @@ namespace BeWo.Service.ServiceImplementations var (datenaustauschreferenz, transfernummer) = GetNextDatenaustauschreferenzTransfernummer(gkvAbrechnung, datenannahmestelle); var (dat_short, tra_short) = ClearDatenaustauschreferenzTransfernummer(datenaustauschreferenz, transfernummer); - protokoll.Datenaustauschreferenz = datenaustauschreferenz; - protokoll.Transfernummer = transfernummer; - var first_cost = gkvAbrechnung.InvoiceBases.First().CostBearer2SupportConcept.SupportConcept.Customer; var plugin = PluginLoader.FindClass(); @@ -1106,8 +1113,6 @@ namespace BeWo.Service.ServiceImplementations // TEXT | 65,535(2^16−1) bytes = 64 KiB // MEDIUMTEXT | 16,777,215(2^24−1) bytes = 16 MiB // LONGTEXT | 4,294,967,295(2^32−1) bytes = 4 GiB - - if (nutzdatendatei.Length > 16777215) { var msg = $"nutzdatendatei - Länger als 16777215: {nutzdatendatei.Length}"; @@ -1115,6 +1120,9 @@ namespace BeWo.Service.ServiceImplementations throw new GkvException(msg); } + protokoll.Datenaustauschreferenz = datenaustauschreferenz; + protokoll.Transfernummer = transfernummer; + protokoll.IKDatenannahmestelle = file_from_manager.GetIKDatenannahmestelle(); protokoll.IKKostentrager = file_from_manager.GetIKKostenträger(); protokoll.IKLeistungserbringer = file_from_manager.GetIKLeistungserbringer(); @@ -1131,22 +1139,19 @@ namespace BeWo.Service.ServiceImplementations protokoll.AbsenderBezeichnung = "ownSoft GmbH"; protokoll.EmpfangerBezeichnung = orgadc.BezDatenannahmestelle; + + return protokoll; } catch (GkvException de) { - if (string.IsNullOrEmpty(de.Title)) - de.Title = "Protokoll Erstellung"; - - MailUtils.SendGkvModuleErrorMail("CreateGkvTransferProtokoll", de, Tenant); - - throw de; + error = de.ToString(); } catch (Exception e) { - MailUtils.SendGkvModuleErrorMail("CreateGkvTransferProtokoll", e, Tenant); - - throw new GkvException(e.Message, "Erstellung"); + error = e.ToString(); } + + return null; } private Tuple GetNextDatenaustauschreferenzTransfernummer(GkvAbrechnung gkvAbrechnung, string datenannahmestelle) @@ -1239,7 +1244,7 @@ namespace BeWo.Service.ServiceImplementations if (!response_app8.Success) throw new GkvException("Success false - " + response_app8.Message); - + if (response_app8.Results is null) throw new GkvException("Result null - " + response_app8.Message); @@ -1284,7 +1289,7 @@ namespace BeWo.Service.ServiceImplementations protokolls.Add(protokoll); } - if(protokolls.Any()) + if (protokolls.Any()) DAOFactory.GenericDAO.Update(protokolls); var follows = results.Where(x => x.ResultType == GkvTransferResultType.FailFollowUp); @@ -1322,14 +1327,14 @@ namespace BeWo.Service.ServiceImplementations request.Password = user.BCryptPassword; request.Tenant = MultitenancyOperationContextExt.Current.Tenant; - if(request is GkvServerSendNewRequestDC send_new_req) + if (request is GkvServerSendNewRequestDC send_new_req) { send_new_req.ApplicationUserOid = user.Oid.Value; } return GkvSender.SendApp8Request(request, request.Tenant); } - + #endregion } } \ No newline at end of file