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();