- InvoiceBaseOids werden gespeichert

- GkvAbrechnungResponseDC
- usw...
This commit is contained in:
2024-04-23 14:50:01 +02:00
parent 597ac13795
commit 3521c706e0
25 changed files with 290 additions and 52 deletions

View File

@@ -2049,7 +2049,8 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungViewFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))]
@@ -6049,7 +6050,8 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.Collections.Generic.List<BS.Shared.DataContracts.GkvAbrechnungDC>))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungViewFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungFilterDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungRequestDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.DataContracts.GkvAbrechnungResponseDC))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BS.Shared.InvoiceType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.MemoryStream))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(System.IO.Stream))]
@@ -9389,7 +9391,11 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/MakeNewGkvAbrechnung", ReplyAction="http://tempuri.org/IAccountingService/MakeNewGkvAbrechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/MakeNewGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.GkvAbrechnungDC MakeNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungFilterDC abrechnungFilterDC);
BS.Shared.DataContracts.GkvAbrechnungDC MakeNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungRequestDC abrechnungFilterDC);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccountingService/CreateNewGkvAbrechnung", ReplyAction="http://tempuri.org/IAccountingService/CreateNewGkvAbrechnungResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IAccountingService/CreateNewGkvAbrechnungBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungRequestDC request);
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
@@ -9601,10 +9607,15 @@ namespace BeWo.ServiceProxy
return base.Channel.GetFilteredGkvAbrechnungen(gkvAbrechnungViewFilter);
}
public BS.Shared.DataContracts.GkvAbrechnungDC MakeNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungFilterDC abrechnungFilterDC)
public BS.Shared.DataContracts.GkvAbrechnungDC MakeNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungRequestDC abrechnungFilterDC)
{
return base.Channel.MakeNewGkvAbrechnung(abrechnungFilterDC);
}
public BS.Shared.DataContracts.GkvAbrechnungResponseDC CreateNewGkvAbrechnung(BS.Shared.DataContracts.GkvAbrechnungRequestDC request)
{
return base.Channel.CreateNewGkvAbrechnung(request);
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

View File

@@ -906,8 +906,6 @@ namespace BeWo.ServiceProxy
else
{
String allMessage = String.Format("{0}", e);
if (!String.IsNullOrEmpty(allMessage) && allMessage.IndexOf("Es war kein an https://") >= 0 && allMessage.IndexOf("lauschender Endpunkt") >= 0)
{

View File

@@ -44,5 +44,10 @@ namespace BeWo.View
return beWoWindow;
}
public static void ShowErrorMessageBox(string text)
{
MessageBox.Show(text, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
}
}

View File

@@ -64,6 +64,7 @@
<!--<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Nutzdatendatei" Header="Nutzdatendatei" Width="80" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Auftragsdatei" Header="Auftragsdatei" Width="80" />-->
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Transfername" Header="Transfername" Width="80" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="Datenaustauschreferenz" Header="Datenaustauschreferenz" Width="80" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="ErstelltAm" Header="Erstellt" Width="80" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="VerschluesseltAm" Header="Verschlüsselt" Width="80" />
<dxg:GridColumn ReadOnly="True" AllowEditing="False" FieldName="UebertragenAm" Header="Übertragen" Width="80" />

View File

@@ -61,16 +61,22 @@ namespace BeWo.View.Detail.Accounting
this.MainControl.CloseCurrentPopUp();
var checked_invoice_bases = _NewGkvAbrechnungPopUpView.ViewModel.InvoiceBases.Where(x => x.IsChecked).Select(x => x.DataContract.InvoiceBaseOid.Value).ToList();
var gkv_abrechnung = e.Data.First();
var gkv_filter = new GkvAbrechnungFilterDC(gkv_abrechnung);
var gkv_filter = new GkvAbrechnungRequestDC(gkv_abrechnung);
gkv_filter.SelectedInvoiceBases = checked_invoice_bases;
ServiceFacade.DoAccountingServiceAsync(
svc => svc.MakeNewGkvAbrechnung(gkv_filter),
() => Dispatcher.BeginInvoke(DispatcherPriority.Normal,
ServiceFacade.DoAccountingServiceAsync(x => x.CreateNewGkvAbrechnung(gkv_filter),
cb => Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(Action)delegate
{
RefreshGkvAbrechnungenList();
if (cb.Success)
{
RefreshGkvAbrechnungenList();
}
else
{
BeWoWindowBuilder.ShowErrorMessageBox(cb.Error);
}
}));
};
@@ -317,10 +323,10 @@ namespace BeWo.View.Detail.Accounting
GkvAbrechnungDC gkvAbrechnungDC = new GkvAbrechnungDC();
int year = DateTime.Now.Year;
int month = DateTime.Now.Month - 1;
gkvAbrechnungDC.AbrechnungsZeitraumStart = new DateTime(1999, 1, 1);
//new DateTime(year, month, 1);
gkvAbrechnungDC.AbrechnungsZeitraumStart = new DateTime(year, month, 1);
gkvAbrechnungDC.AbrechnungsZeitraumEnde = new DateTime(year, month, DateTime.DaysInMonth(year, month));
GkvAbrechnungVM gkvAbrechnungVM = new GkvAbrechnungVM(gkvAbrechnungDC);
_NewGkvAbrechnungPopUpView.Clear();
_NewGkvAbrechnungPopUpView.ViewModel = gkvAbrechnungVM;
this.MainControl.ShowControlAsModalPopup(this._NewGkvAbrechnungPopUpView);
}
@@ -354,7 +360,6 @@ namespace BeWo.View.Detail.Accounting
return list;
}
}
}

View File

@@ -35,7 +35,8 @@ namespace BeWo.View.Detail.Accounting
(s, e) =>
{
this._InvoiceBaseDCs?.Clear();
this.Fire();
if (CancelButtonClicked != null)
CancelButtonClicked.Invoke(s, e);
}));
this.grid_newInvoices.View.Loaded += (s, e) => ((TableView)this.grid_newInvoices.View).BestFitColumns();
@@ -85,6 +86,12 @@ namespace BeWo.View.Detail.Accounting
}
}
public void Clear()
{
popupedit_GkvSearch.Text = string.Empty;
popupedit_GkvSearch.Focus();
}
private void btn_cancel_Click(object sender, RoutedEventArgs e)
{
if (ViewModel.InvoiceBases != null)
@@ -97,11 +104,6 @@ namespace BeWo.View.Detail.Accounting
this.Fire();
}
private void btn_delete_Click(object sender, RoutedEventArgs e)
{
this._InvoiceBaseDCs.Remove(this.grid_newInvoices.GetCurrentValue<InvoiceBaseDC>());
}
private void TableView_CellValueChanging(object sender, CellValueChangedEventArgs e)
{
var si = e.Row as InvoiceBaseDC;
@@ -133,6 +135,7 @@ namespace BeWo.View.Detail.Accounting
{
popup_organisation.IsOpen = false;
gkvsearchview.ItemSelected -= gkvsearchview_OrganisationSelected;
ViewModel.IKVersichertenKarte = e.Data.IKKrankenkasse;
ViewModel.IKDatenannahmestelle = e.Data.IKDatenannahmestelle;

View File

@@ -55,6 +55,7 @@ AntwortEntschluesseltAm
private string _Nutzdatendatei;
private string _Auftragsdatei;
private string _Transfername;
private int _Datenaustauschreferenz;
private DateTime? _ErstelltAm;
private DateTime? _VerschluesseltAm;
@@ -223,6 +224,22 @@ AntwortEntschluesseltAm
}
}
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public int Datenaustauschreferenz
{
get { return this._Datenaustauschreferenz; }
set
{
if (this.AreDifferent(this._Datenaustauschreferenz, value))
{
this._Datenaustauschreferenz = value;
this.StoreDirtyInformation(this.AreDifferent(this.DataContract.Datenaustauschreferenz, value), nameof(Datenaustauschreferenz));
this.FirePropertyChanged(nameof(Datenaustauschreferenz));
}
}
}
[Validation(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
public DateTime? ErstelltAm
{
@@ -402,6 +419,7 @@ AntwortEntschluesseltAm
_AntwortErhaltenAm = pDataContract.AntwortErhaltenAm;
_AntwortEntschluesseltAm = pDataContract.AntwortEntschluesseltAm;
_ErstelltAm = pDataContract.ErstelltAm;
_Datenaustauschreferenz = pDataContract.Datenaustauschreferenz;
_GkvAbrechnungOid = pDataContract.GkvAbrechnungOid;
_GkvAbrechnungVersion = pDataContract.GkvAbrechnungVersion;
@@ -431,6 +449,7 @@ AntwortEntschluesseltAm
pDataContract.Notice = _Notice;
pDataContract.Betrag = _Betrag;
pDataContract.Datenaustauschreferenz = _Datenaustauschreferenz;
return pDataContract;
}

View File

@@ -50,6 +50,7 @@
<Compile Include="Models\Auftragsdatei\AuftragssatzPart4.cs" />
<Compile Include="Models\DakotaEnums.cs" />
<Compile Include="DakotaExtensions.cs" />
<Compile Include="Models\DakotaException.cs" />
<Compile Include="Models\DakotaFile.cs" />
<Compile Include="Logic\DakotaFileCreator.cs" />
<Compile Include="DakotaValidator.cs" />

View File

@@ -1,4 +1,6 @@
using System;
using BS.Shared.DataContracts;
using Dakota.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -15,5 +17,63 @@ namespace Dakota
input = input.Replace(specialChar, DakotaConfig.Aufhebungszeichen + specialChar);
}
}
/// <summary>
/// Validiert in erster Phase die Daten. Bei Fehler wird eine DakotaException geworfen.
/// </summary>
public static void ValidateFirstStep(MandatorDC mandatordc)
{
if (mandatordc == null)
throw new DakotaException("Mandator ist null");
if (!ValidateIKNumber(mandatordc.IKLeistungserbringer))
throw new DakotaException("Die IK Nummer des Leistungserbringers ist ungültig.");
}
/// <summary>
/// Validiert in zweiter Phase die Daten. Bei Fehler wird eine DakotaException geworfen.
/// </summary>
public static void ValidateSecondStep(OrganisationDC orgadc, CustomerDC customerDC)
{
string error = null;
if (orgadc == null)
error = "Organisation ist null";
else if (customerDC == null)
error = "Customer ist null";
else if (!ValidateIKNumber(orgadc.IKDatenannahmestelle))
error = $"Die Organisation \"{orgadc.Name}\" hat keine gültige IK Nummer für die Datenannahmestelle.";
else if (!ValidateIKNumber(orgadc.IKKostentrager))
error = $"Die Organisation \"{orgadc.Name}\" hat keine gültige IK Nummer für die Kostenträger.";
else if (!ValidateIKNumber(orgadc.IKKrankenkasse))
error = $"Die Organisation \"{orgadc.Name}\" hat keine gültige IK Nummer für die Krankenkasse.";
else if (!ValidateVersichertenstatus(customerDC.VersichertenStatus))
error = $"Der Klient \"{customerDC.LastName}, {customerDC.FirstName}\" hat keinen gültigen Versichertenstatus";
if (error != null)
throw new DakotaException(error);
}
private static bool ValidateIKNumber(string iknummer)
{
if (iknummer == null)
return false;
if (iknummer.Length != 9)
return false;
return int.TryParse(iknummer, out int x);
}
private static bool ValidateVersichertenstatus(string status)
{
if (status == null)
return false;
if (status.Length != 5)
return false;
return true;
}
}
}

View File

@@ -228,7 +228,7 @@ namespace Dakota.Logic
var info = new InfoAbrechnungsfall();
info.VersichtertenNummer = infoParameter.Customer.InsuranceNumber;
info.Versichertenstatus = "50000";
info.Versichertenstatus = infoParameter.Customer.VersichertenStatus;
//infoParameter.Customer.VersichertenStatus;
info.Beleginformation = SchlüsselBeleginformation.KeineBeleguebermittlung;
info.Belegnummer = infoParameter.Customer.CustomerOid.ToString();

View File

@@ -62,7 +62,7 @@ namespace Dakota.Logic
}
catch(Exception e)
{
throw e;
}
}

View File

@@ -0,0 +1,24 @@
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models
{
public class DakotaException : ArgumentException
{
public string Message { get; set; }
public DakotaException(string message) : this()
{
Message = message;
}
public DakotaException()
{
}
}
}

View File

@@ -36,8 +36,7 @@ namespace Dakota.Models.Daten
if (Feldart == Feldart.Muss)
{
// Auffüllen
throw new ArgumentOutOfRangeException(Title, _Value, "muss gefühlt sein");
// throw new NotImplementedException("Error Code: 3483091097896");
throw new DakotaException($"Das Feld \"{Title}\" muss gefüllt sein!");
}
else
{
@@ -47,9 +46,16 @@ namespace Dakota.Models.Daten
}
}
if (!_IgnoreCheck && (_Value.Length < MinStellen || _Value.Length > MaxStellen))
if (!_IgnoreCheck)
{
throw new NotImplementedException("Error Code: 3483091097897");
if(_Value.Length < MinStellen)
{
throw new DakotaException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe muss es jedoch mindestens {MinStellen} Stellen haben");
}
else if (_Value.Length > MaxStellen)
{
throw new DakotaException($"Das Feld \"{Title}\" hat bei der Auswertung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
}
return _Value;
@@ -81,14 +87,15 @@ namespace Dakota.Models.Daten
if (value is null)
return;
if (value.Length < MinStellen || value.Length > MaxStellen)
if (value.Length < MinStellen)
{
throw new ArgumentOutOfRangeException(Title, value, $"Wertebereich: min:max = ({MinStellen}:{MaxStellen})");
throw new DakotaException($"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 DakotaException($"Das Feld \"{Title}\" hat bei der Erstellung {_Value.Length} Stellen ergeben! Nach Vorgabe darf es jedoch maximal {MaxStellen} Stellen haben");
}
//else
//{
// throw new ArgumentOutOfRangeException(Title, value, "value ist kein string");
//}
DakotaValidator.ClearTextString(value);

View File

@@ -21,7 +21,7 @@ namespace Dakota.Models.Infos
get { return _Datenaustauschreferenz; }
set
{
if (value < 1)
if (value < 0)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht negativ sein");
else if (value == 0)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht gleich null sein");

View File

@@ -5923,5 +5923,22 @@ namespace BeWo.Data.Access
return criteria.List<Bargeldtransaktionshistory>().ToList();
}
public int GetLastDatenaustauschreferenz(string datenannahmestelle)
{
var criteria = CreateCriteria<GkvAbrechnung>()
.Add(Restrictions.Where<GkvAbrechnung>(x => x.IKDatenannahmestelle == datenannahmestelle));
criteria.AddOrder(Order.Desc(nameof(GkvAbrechnung.Oid)));
criteria.SetMaxResults(1);
var list = criteria.List<GkvAbrechnung>().ToList();
if (!list.Any())
return 0;
return list.First().Datenaustauschreferenz;
}
}
}

View File

@@ -32,6 +32,8 @@ namespace BeWo.Data.Entities
public virtual string Transfername { get; set; }
public virtual int Datenaustauschreferenz { get; set; }
public virtual DateTime? ErstelltAm { get; set; }
public virtual DateTime? VerschluesseltAm { get; set; }

View File

@@ -17,6 +17,7 @@
<property column="Nutzdatendatei" type="string" name="Nutzdatendatei" />
<property column="Auftragsdatei" type="string" name="Auftragsdatei" />
<property column="Transfername" type="string" name="Transfername" />
<property column="Datenaustauschreferenz" type="int" name="Datenaustauschreferenz" />
<property column="ErstelltAm" type="DateTime" name="ErstelltAm" />
<property column="VerschluesseltAm" type="DateTime" name="VerschluesseltAm" />
<property column="UebertragenAm" type="DateTime" name="UebertragenAm" />

View File

@@ -0,0 +1,29 @@
CREATE TABLE `gkvabrechnung` (
`Oid` bigint NOT NULL AUTO_INCREMENT,
`Tid` int NOT NULL,
`Notice` varchar(1024) DEFAULT NULL,
`InsTs` datetime DEFAULT NULL,
`InsUser` varchar(256) DEFAULT NULL,
`Version` bigint DEFAULT NULL,
`UdpUser` varchar(256) DEFAULT NULL,
`IsActive` tinyint DEFAULT NULL,
`SystemEntryID` int DEFAULT NULL,
`Kundennummer` varchar(256) DEFAULT NULL,
`IKLeistungserbringer` varchar(256) DEFAULT NULL,
`IKVersichertenKarte` varchar(256) DEFAULT NULL,
`IKKostentrager` varchar(256) DEFAULT NULL,
`IKDatenannahmestelle` varchar(256) DEFAULT NULL,
`AbrechnungsZeitraumStart` datetime DEFAULT NULL,
`AbrechnungsZeitraumEnde` datetime DEFAULT NULL,
`Nutzdatendatei` text,
`Auftragsdatei` varchar(1024) DEFAULT NULL,
`Transfername` varchar(256) DEFAULT NULL,
`Datenaustauschreferenz` int DEFAULT NULL,
`ErstelltAm` datetime DEFAULT NULL,
`VerschluesseltAm` datetime DEFAULT NULL,
`UebertragenAm` datetime DEFAULT NULL,
`AntwortErhaltenAm` datetime DEFAULT NULL,
`AntwortEntschluesseltAm` datetime DEFAULT NULL,
`Betrag` decimal(18,10) DEFAULT NULL,
PRIMARY KEY (`Oid`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1

View File

@@ -26,6 +26,7 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.Nutzdatendatei = pEntity.Nutzdatendatei;
pDataContract.Auftragsdatei = pEntity.Auftragsdatei;
pDataContract.Transfername = pEntity.Transfername;
pDataContract.Datenaustauschreferenz = pEntity.Datenaustauschreferenz;
pDataContract.UebertragenAm = pEntity.UebertragenAm;
pDataContract.AntwortErhaltenAm = pEntity.AntwortErhaltenAm;
@@ -59,6 +60,7 @@ namespace BeWo.Service.DCEntityMapper
pEntity.Nutzdatendatei = pDataContract.Nutzdatendatei;
pEntity.Auftragsdatei = pDataContract.Auftragsdatei;
pEntity.Transfername = pDataContract.Transfername;
pEntity.Datenaustauschreferenz = pDataContract.Datenaustauschreferenz;
pEntity.ErstelltAm = pDataContract.ErstelltAm;
pEntity.VerschluesseltAm = pDataContract.VerschluesseltAm;

View File

@@ -154,6 +154,10 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
GkvAbrechnungDC MakeNewGkvAbrechnung(GkvAbrechnungFilterDC abrechnungFilterDC);
GkvAbrechnungDC MakeNewGkvAbrechnung(GkvAbrechnungRequestDC abrechnungFilterDC);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
GkvAbrechnungResponseDC CreateNewGkvAbrechnung(GkvAbrechnungRequestDC request);
}
}

View File

@@ -18,6 +18,8 @@ using BS.Shared.DataContracts;
using Utils = BeWo.Service.Core.Utils;
using BeWo.Service.Invoicing;
using Dakota.Logic;
using Dakota;
using Dakota.Models;
namespace BeWo.Service.ServiceImplementations
{
@@ -719,11 +721,15 @@ namespace BeWo.Service.ServiceImplementations
}
}
public GkvAbrechnungDC MakeNewGkvAbrechnung(GkvAbrechnungFilterDC abrechnungFilterDC)
public GkvAbrechnungResponseDC CreateNewGkvAbrechnung(GkvAbrechnungRequestDC request)
{
var response = new GkvAbrechnungResponseDC();
try
{
var test_datetime = abrechnungFilterDC.GkvAbrechnungDC.AbrechnungsZeitraumStart.Value;
var gkv_abrechnung_dc = request.GkvAbrechnungDC;
var test_datetime = gkv_abrechnung_dc.AbrechnungsZeitraumStart.Value;
var manager = new DakotaManager(test_datetime.Month, DateTime.Now);
@@ -731,7 +737,9 @@ namespace BeWo.Service.ServiceImplementations
var loaded_invoicebases = new List<InvoiceBaseDC>();
foreach (var invoicebase_oid in abrechnungFilterDC.SelectedInvoiceBases)
DakotaValidator.ValidateFirstStep(mandatordc);
foreach (var invoicebase_oid in request.SelectedInvoiceBases)
{
var service = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(invoicebase_oid);
var invoicebase = DAOFactory.GenericDAO.GetByID<InvoiceBase>(invoicebase_oid);
@@ -746,18 +754,19 @@ namespace BeWo.Service.ServiceImplementations
var orgadc = MapperFactory.OrganisationDC_OrganisationMapper.MapToNewDC(orga);
var customerdc = MapperFactory.CustomerDC_Customer.MapToNewDC(customer);
DakotaValidator.ValidateSecondStep(orgadc, customerdc);
manager.Add(servicedc, orgadc, customerdc, mandatordc);
}
manager.Apply();
if(manager.DakotaFileDict.Count != 1 || manager.DakotaFileDict.First().Value.GetKostenträgerCount() != 1)
if (manager.DakotaFileDict.Count != 1 || manager.DakotaFileDict.First().Value.GetKostenträgerCount() != 1)
{
throw new NotImplementedException();
throw new DakotaException("Unerwartete Anzahl an Dakota Files berechnet.");
}
var file_from_manager = manager.DakotaFileDict.First().Value;
var gkv_abrechnung_dc = abrechnungFilterDC.GkvAbrechnungDC;
var nutzdatendatei = file_from_manager.GetNutzdatendatei();
@@ -768,22 +777,24 @@ namespace BeWo.Service.ServiceImplementations
// that indicates the number of bytes in the value.
if (nutzdatendatei.Length > 65535)
{
throw new ArgumentOutOfRangeException("nutzdatendatei", $"Länger als 65535: {nutzdatendatei.Length}");
throw new DakotaException($"nutzdatendatei - Länger als 65535: {nutzdatendatei.Length}");
}
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();
var datenannahmestelle = file_from_manager.GetIKDatenannahmestelle();
var datenaustauschreferenz = DAOFactory.SearchDAO.GetLastDatenaustauschreferenz(datenannahmestelle);
gkv_abrechnung_dc.IKDatenannahmestelle = datenannahmestelle;
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();
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.ErstelltAm = file_from_manager.Created;
gkv_abrechnung_dc.Betrag = file_from_manager.GetBetrag();
gkv_abrechnung_dc.InvoiceBases = loaded_invoicebases;
var gkv_abrechnung = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewEntity(gkv_abrechnung_dc);
@@ -792,12 +803,24 @@ namespace BeWo.Service.ServiceImplementations
var new_gkv_abrechnung_dc = MapperFactory.GkvAbrechnungDC_GkvAbrechnung.MapToNewDC(gkv_abrechnung);
return new_gkv_abrechnung_dc;
response.Success = true;
response.GkvAbrechnungDC = new_gkv_abrechnung_dc;
}
catch(DakotaException exc)
{
response.Error = exc.Message;
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
return response;
}
public GkvAbrechnungDC MakeNewGkvAbrechnung(GkvAbrechnungRequestDC abrechnungFilterDC)
{
return null;
}
public List<long> InsertNewGkvAbrechnungen(List<GkvAbrechnungDC> dcList)

View File

@@ -44,6 +44,9 @@ namespace BS.Shared.DataContracts
[DataMember]
public string Transfername { get; set; }
[DataMember]
public int Datenaustauschreferenz { get; set; }
[DataMember]
public DateTime? ErstelltAm { get; set; }

View File

@@ -8,13 +8,13 @@ using System.Threading.Tasks;
namespace BS.Shared.DataContracts
{
[DataContract]
public class GkvAbrechnungFilterDC : IDataContract
public class GkvAbrechnungRequestDC : IDataContract
{
public GkvAbrechnungFilterDC(GkvAbrechnungDC gkvAbrechnungDC) : base()
public GkvAbrechnungRequestDC(GkvAbrechnungDC gkvAbrechnungDC) : base()
{
GkvAbrechnungDC = gkvAbrechnungDC;
}
public GkvAbrechnungFilterDC()
public GkvAbrechnungRequestDC()
{
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.DataContracts
{
[DataContract]
public class GkvAbrechnungResponseDC : IDataContract
{
[DataMember]
public bool Success { get; set; }
[DataMember]
public string Error { get; set; }
[DataMember]
public GkvAbrechnungDC GkvAbrechnungDC { get; set; }
}
}

View File

@@ -184,8 +184,9 @@
<Compile Include="DataContracts\DokumentvorlageDC.cs" />
<Compile Include="DataContracts\AdditionalServiceNoticeDC.cs" />
<Compile Include="DataContracts\GeschenkterUrlaubstagDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungResponseDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungViewFilterDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungFilterDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungRequestDC.cs" />
<Compile Include="DataContracts\GoalRatingDC.cs" />
<Compile Include="DataContracts\GkvAbrechnungDC.cs" />
<Compile Include="DataContracts\PlatzhalterDC.cs" />