Bug fix: Bezahlt Flag wird nicht richtig aktuallisiert

This commit is contained in:
2024-05-06 15:01:32 +02:00
parent 0851e1ab68
commit 154ceccceb
8 changed files with 37 additions and 20 deletions

View File

@@ -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);
}

View File

@@ -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");

View File

@@ -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
/// <summary>
/// Validiert in erster Phase die Daten. Bei Fehler wird eine DakotaException geworfen.
/// </summary>
public static void ValidateFirstStep(MandatorDC mandatordc)
public static void ValidateFirstStep(MandatorDC mandatordc, GkvAbrechnungRequestDC request)
{
if (mandatordc == null)
throw new DakotaException("Mandator ist null");

View File

@@ -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;

View File

@@ -34,7 +34,7 @@ namespace Dakota.Logic
DakotaInfoAufDict = new Dictionary<string, InfoDateiAuftrags>();
}
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);

View File

@@ -32,6 +32,11 @@ namespace Dakota
Created = created;
}
public int GetDatenaustauschreferenz()
{
return Nutzdatendatei.SegmentUNB.Datenaustauschreferenz.Value;
}
public string GetTransferName()
{
return Verfahrenskennung + Transfernummer;

View File

@@ -55,22 +55,23 @@ namespace Host
{
case GkvAbrechnungApp8RequestTypeDC.SendNew:
SendNew(JsonConvert.DeserializeObject<GkvApp8SendNewRequest>(str));
break;
return;
case GkvAbrechnungApp8RequestTypeDC.GetStatus:
GetStatus(JsonConvert.DeserializeObject<GkvApp8GetStatusRequest>(str));
break;
return;
case GkvAbrechnungApp8RequestTypeDC.GetIKNumber:
GetIK(JsonConvert.DeserializeObject<GkvApp8GetIKRequest>(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");

View File

@@ -745,8 +745,9 @@ namespace BeWo.Service.ServiceImplementations
var loaded_invoicebases = new List<InvoiceBaseDC>();
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();