diff --git a/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs b/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs index ce36d8efe..3b8568443 100644 --- a/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs +++ b/BeWo/View/Detail/Accounting/GkvAbrechnungOverview.xaml.cs @@ -265,7 +265,11 @@ namespace BeWo.View.Detail.Accounting private void SaveBezahltChange(GkvAbrechnungVM vm, bool b) { - var dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(vm.CommitToDataContract())); + var dc_in = vm.CommitToDataContract(); + + dc_in.Bezahlt = b; + + var dc = ServiceFacade.DoAccountingServiceSync(x => x.UpdateGkvAbrechnung(dc_in)); vm.Update(dc); } diff --git a/BeWo/ViewModel/GkvAbrechnungVM.cs b/BeWo/ViewModel/GkvAbrechnungVM.cs index 57972e346..a9b44ecdf 100644 --- a/BeWo/ViewModel/GkvAbrechnungVM.cs +++ b/BeWo/ViewModel/GkvAbrechnungVM.cs @@ -527,6 +527,9 @@ AntwortEntschluesseltAm { _GkvAbrechnungVersion = dc.GkvAbrechnungVersion; + Notice = dc.Notice; + Bezahlt = dc.Bezahlt; + if(Notice != dc.Notice || Bezahlt != dc.Bezahlt) { throw new NotImplementedException("Notiz/Bezahlt wurde nicht korrekt übernommen"); diff --git a/Dakota/DakotaValidator.cs b/Dakota/DakotaValidator.cs index d240b34bc..ca13c8836 100644 --- a/Dakota/DakotaValidator.cs +++ b/Dakota/DakotaValidator.cs @@ -1,4 +1,5 @@ using BS.Shared.DataContracts; +using BS.Shared.DataContracts.GkvAbrechnung; using Dakota.Models; using System; using System.Collections.Generic; @@ -21,7 +22,7 @@ namespace Dakota /// /// Validiert in erster Phase die Daten. Bei Fehler wird eine DakotaException geworfen. /// - public static void ValidateFirstStep(MandatorDC mandatordc) + public static void ValidateFirstStep(MandatorDC mandatordc, GkvAbrechnungRequestDC request) { if (mandatordc == null) throw new DakotaException("Mandator ist null"); diff --git a/Dakota/Logic/DakotaInfoCreator.cs b/Dakota/Logic/DakotaInfoCreator.cs index bd9520468..b1137cc0b 100644 --- a/Dakota/Logic/DakotaInfoCreator.cs +++ b/Dakota/Logic/DakotaInfoCreator.cs @@ -48,7 +48,7 @@ namespace Dakota.Logic // return info; //} - internal static InfoDateiNutzdaten GetEmptyInfoNutzdatendatei(string absender, string empfang, string logischerDateiname) + internal static InfoDateiNutzdaten GetEmptyInfoNutzdatendatei(string absender, string empfang, string logischerDateiname, int datenaustauschreferenz) { var info = new InfoDateiNutzdaten(); @@ -56,15 +56,17 @@ namespace Dakota.Logic info.SyntaxVersion = "3"; info.Absenderbezeichnung = absender; info.Empfangerbezeichnung = empfang; - info.Datenaustauschreferenz = 1; + info.Datenaustauschreferenz = datenaustauschreferenz; info.Leistungsbereich = SchlüsselLeistungserbringerSammelgruppenschlussel.SoziotherapeutischerLeistungserbringer; info.Anwendungsreferenz = logischerDateiname; info.Testindikator = SchlüsselTestindikator.Testdatei; return info; } - internal static InfoDateiAuftrags GetEmptyInfoAuftragsdatei(string empfang) + internal static InfoDateiAuftrags GetEmptyInfoAuftragsdatei(string empfang, int datenaustauschreferenz) { + var transfernummer = datenaustauschreferenz % 1000; + var info = new InfoDateiAuftrags(); info.Identifikator = 500000; @@ -72,7 +74,7 @@ namespace Dakota.Logic info.LangeAuftrag = 348; info.SequenzNummer = 000; info.VerfahrenKennung = "TSOL0"; - info.TransferNummer = 000; + info.TransferNummer = transfernummer; info.VerfahrenKennungSpezifikation = "SGB1K"; info.AbsenderEigner = DakotaConfig.IKAbsender; info.AbsenderPhysikalisch = DakotaConfig.IKAbsender; diff --git a/Dakota/Logic/DakotaManager.cs b/Dakota/Logic/DakotaManager.cs index f7ea852a6..a77445b86 100644 --- a/Dakota/Logic/DakotaManager.cs +++ b/Dakota/Logic/DakotaManager.cs @@ -34,7 +34,7 @@ namespace Dakota.Logic DakotaInfoAufDict = new Dictionary(); } - public void Add(ServiceInvoiceDC serviceInvoice, OrganisationDC organisation, CustomerDC customer, MandatorDC mandator) + public void Add(ServiceInvoiceDC serviceInvoice, OrganisationDC organisation, CustomerDC customer, MandatorDC mandator, int datenaustauschreferenz) { try { @@ -44,8 +44,8 @@ namespace Dakota.Logic if (!success) { - var info_nutz_add = DakotaInfoCreator.GetEmptyInfoNutzdatendatei(DakotaConfig.IKAbsender, organisation.IKDatenannahmestelle, DakotaConfig.GetLogischerDateiname(Month)); - var info_auf_add = DakotaInfoCreator.GetEmptyInfoAuftragsdatei(organisation.IKDatenannahmestelle); + var info_nutz_add = DakotaInfoCreator.GetEmptyInfoNutzdatendatei(DakotaConfig.IKAbsender, organisation.IKDatenannahmestelle, DakotaConfig.GetLogischerDateiname(Month), datenaustauschreferenz); + var info_auf_add = DakotaInfoCreator.GetEmptyInfoAuftragsdatei(organisation.IKDatenannahmestelle, datenaustauschreferenz); DakotaInfoNutzDict.Add(ik_datenannahmestelle, info_nutz_add); DakotaInfoAufDict.Add(ik_datenannahmestelle, info_auf_add); diff --git a/Dakota/Models/DakotaFile.cs b/Dakota/Models/DakotaFile.cs index 575d40767..5f44667c6 100644 --- a/Dakota/Models/DakotaFile.cs +++ b/Dakota/Models/DakotaFile.cs @@ -32,6 +32,11 @@ namespace Dakota Created = created; } + public int GetDatenaustauschreferenz() + { + return Nutzdatendatei.SegmentUNB.Datenaustauschreferenz.Value; + } + public string GetTransferName() { return Verfahrenskennung + Transfernummer; diff --git a/Host/GkvAbrechnungView.aspx.cs b/Host/GkvAbrechnungView.aspx.cs index 64660fb7b..33c9d21d0 100644 --- a/Host/GkvAbrechnungView.aspx.cs +++ b/Host/GkvAbrechnungView.aspx.cs @@ -55,22 +55,23 @@ namespace Host { case GkvAbrechnungApp8RequestTypeDC.SendNew: SendNew(JsonConvert.DeserializeObject(str)); - break; + return; case GkvAbrechnungApp8RequestTypeDC.GetStatus: GetStatus(JsonConvert.DeserializeObject(str)); - break; + return; case GkvAbrechnungApp8RequestTypeDC.GetIKNumber: GetIK(JsonConvert.DeserializeObject(str)); - break; + return; default: SendErrorResponse("GkvAbrechnungType unbekannt."); - break; + return; } } catch (Exception ex) { var ex_text = ex.Message + "\n\n" + ex.StackTrace; SendErrorResponse(ex_text); + return; } SendErrorResponse("Unbekannter Fehler"); diff --git a/Service/ServiceImplementations/AccountingServiceImp.cs b/Service/ServiceImplementations/AccountingServiceImp.cs index 65a65e59f..1c268668b 100644 --- a/Service/ServiceImplementations/AccountingServiceImp.cs +++ b/Service/ServiceImplementations/AccountingServiceImp.cs @@ -745,8 +745,9 @@ namespace BeWo.Service.ServiceImplementations var loaded_invoicebases = new List(); - DakotaValidator.ValidateFirstStep(mandatordc); + DakotaValidator.ValidateFirstStep(mandatordc, request); + int? datenaustauschreferenz = null; foreach (var invoicebase_oid in request.SelectedInvoiceBases) { var service = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoicebase_oid); @@ -756,6 +757,9 @@ namespace BeWo.Service.ServiceImplementations var invoicebase_dc = MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDC(invoicebase); + if(!datenaustauschreferenz.HasValue) + datenaustauschreferenz = DAOFactory.SearchDAO.GetLastDatenaustauschreferenz(orga.IKDatenannahmestelle) + 1; + loaded_invoicebases.Add(invoicebase_dc); var servicedc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(service); @@ -764,7 +768,7 @@ namespace BeWo.Service.ServiceImplementations DakotaValidator.ValidateSecondStep(orgadc, customerdc); - manager.Add(servicedc, orgadc, customerdc, mandatordc); + manager.Add(servicedc, orgadc, customerdc, mandatordc, datenaustauschreferenz.Value); } manager.Apply(); @@ -788,10 +792,7 @@ namespace BeWo.Service.ServiceImplementations throw new DakotaException($"nutzdatendatei - Länger als 65535: {nutzdatendatei.Length}"); } - var datenannahmestelle = file_from_manager.GetIKDatenannahmestelle(); - var datenaustauschreferenz = DAOFactory.SearchDAO.GetLastDatenaustauschreferenz(datenannahmestelle); - - gkv_abrechnung_dc.IKDatenannahmestelle = datenannahmestelle; + gkv_abrechnung_dc.IKDatenannahmestelle = file_from_manager.GetIKDatenannahmestelle(); gkv_abrechnung_dc.IKKostenträger = file_from_manager.GetIKKostenträger(); gkv_abrechnung_dc.IKLeistungserbringer = file_from_manager.GetIKLeistungserbringer(); gkv_abrechnung_dc.IKVersichertenKarte = file_from_manager.GetIKVersichertenKarte(); @@ -799,7 +800,7 @@ namespace BeWo.Service.ServiceImplementations gkv_abrechnung_dc.Auftragsdatei = file_from_manager.GetAuftragsdatei(); gkv_abrechnung_dc.Nutzdatendatei = file_from_manager.GetNutzdatendatei(); gkv_abrechnung_dc.Transfername = file_from_manager.GetTransferName(); - gkv_abrechnung_dc.Datenaustauschreferenz = datenaustauschreferenz + 1; + gkv_abrechnung_dc.Datenaustauschreferenz = file_from_manager.GetDatenaustauschreferenz(); gkv_abrechnung_dc.ErstelltAm = file_from_manager.Created; gkv_abrechnung_dc.Betrag = file_from_manager.GetBetrag();